diff --git a/404.html b/404.html new file mode 100644 index 000000000..ad5cf1660 --- /dev/null +++ b/404.html @@ -0,0 +1,26 @@ + + + + + + 404 | Import-meta-env + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..01514528e --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +import-meta-env.org \ No newline at end of file diff --git a/api.html b/api.html new file mode 100644 index 000000000..cc25bbb4b --- /dev/null +++ b/api.html @@ -0,0 +1,169 @@ + + + + + + API | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

API

@import-meta-env/babel

ts
export interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace `import.meta.env.KEY` with `"value"`
+   * Runtime: statically replace `import.meta.env` with a global accessor
+   *
+   * @default
+   * process.env.NODE_ENV === "production" ? "runtime" : "compile-time"
+   */
+  transformMode?: "compile-time" | "runtime";
+}

@import-meta-env/cli

sh
$ npx import-meta-env --help
Usage: import-meta-env [options]
+
+Populates your environment variables from the system or `.env` file.
+
+Options:
+  -V, --version           output the version number
+  -e, --env <path>        The .env file path to load. You can out-out this by
+                          passing an empty string. (default: ".env")
+  -x, --example <path>    The .env example file path to load
+  -o, --output <path...>  [deprecated: use --path] The file/dir paths to inject
+                          in-place (default:
+                          ["dist/**/*",".next/**/*",".nuxt/**/*",".output/**/*","build/**/*"])
+  -p, --path <path...>    The file/dir paths to inject in-place (default:
+                          ["dist/**/*",".next/**/*",".nuxt/**/*",".output/**/*","build/**/*"])
+  --disposable            Do not create backup files and restore from backup
+                          files. In local development, disable this option to
+                          avoid rebuilding the project when environment
+                          variable changes, In production, enable this option
+                          to avoid generating unnecessary backup files.
+  -h, --help              display help for command

@import-meta-env/flow

sh
$ npx import-meta-env-flow --help
Usage: import-meta-env-flow [options]
+
+Generate flow type from .env.example
+
+Options:
+  -V, --version         output the version number
+  -x, --example <path>  The .env example file path to load
+  -o, --outDir <path>   Specify an output folder for emitted file. (default:
+                        ".")
+  -h, --help            display help for command

@import-meta-env/prepare

sh
$ npx import-meta-env-prepare --help
Usage: import-meta-env-prepare [options]
+
+Generate `.env` file from `.env.*` files.
+
+Options:
+  -V, --version           output the version number
+  -e, --env <path>        .env file path to write (default: ".env")
+  -x, --example <path>    .env.example file path to read
+  -p, --path <path...>    .env.* file paths to read (default:
+                          [".env.local.defaults",".env.local"])
+  -u, --user-environment  whether to load user environment variables (i.e.,
+                          process.env.*) (default: false)
+  -h, --help              display help for command

@import-meta-env/swc

rs
use serde;
+
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct Config {
+    /**
+     * The .env file path to load, related to current working directory.
+     *
+     * Defaults to ".env"
+     */
+    pub env: Option<String>,
+
+    /**
+     * The public .env example file path to load, related to current working directory.
+     */
+    pub example: String,
+
+    /**
+     * Compile-time: statically replace `import.meta.env.KEY` with `"value"`
+     * Runtime: statically replace `import.meta.env` with a global accessor
+     *
+     * Default:
+     *
+     * if `TransformPluginMetadataContextKind::Env` equals to `"production"`
+     * then `Some(TransformMode::Runtime)`
+     * otherwise `Some(TransformMode::CompileTime)`
+     */
+    #[serde(rename = "transformMode")]
+    pub transform_mode: Option<TransformMode>,
+}
+
+#[derive(serde::Serialize, serde::Deserialize)]
+pub enum TransformMode {
+    #[serde(rename = "compile-time")]
+    CompileTime,
+
+    #[serde(rename = "runtime")]
+    Runtime,
+}

@import-meta-env/typescript

sh
$ npx import-meta-env-typescript --help
Usage: import-meta-env-typescript [options]
+
+Generate declaration file from .env.example
+
+Options:
+  -V, --version         output the version number
+  -x, --example <path>  The .env example file path to load
+  -o, --outDir <path>   Specify an output folder for emitted file. (default:
+                        ".")
+  -h, --help            display help for command

@import-meta-env/unplugin

ts
export type Env = Record<string, string>;
+
+export interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace `import.meta.env.KEY` with `"value"`
+   * Runtime: statically replace `import.meta.env` with a global accessor
+   *
+   * @default
+   *
+   * ```text
+   * vite:    if mode is not `"production"` then `"compile-time"`, otherwise `"runtime"`
+   * webpack: if mode is `"development"` or `"none"` then `"compile-time"`, otherwise `"runtime"`
+   * rollup:  if `NODE_ENV` is not `"production"` then `"compile-time"`, otherwise `"runtime"`
+   * esbuild: (needs to be set explicitly)
+   * ```
+   */
+  transformMode?: "compile-time" | "runtime";
+}

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/assets/api.md.w5r8-ef1.js b/assets/api.md.w5r8-ef1.js new file mode 100644 index 000000000..00b9331f1 --- /dev/null +++ b/assets/api.md.w5r8-ef1.js @@ -0,0 +1,141 @@ +import{_ as a,c as i,a0 as n,o as p}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md"}'),e={name:"api.md"};function t(l,s,h,k,r,o){return p(),i("div",null,s[0]||(s[0]=[n(`

API

@import-meta-env/babel

ts
export interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+   * Runtime: statically replace \`import.meta.env\` with a global accessor
+   *
+   * @default
+   * process.env.NODE_ENV === "production" ? "runtime" : "compile-time"
+   */
+  transformMode?: "compile-time" | "runtime";
+}

@import-meta-env/cli

sh
$ npx import-meta-env --help
Usage: import-meta-env [options]
+
+Populates your environment variables from the system or \`.env\` file.
+
+Options:
+  -V, --version           output the version number
+  -e, --env <path>        The .env file path to load. You can out-out this by
+                          passing an empty string. (default: ".env")
+  -x, --example <path>    The .env example file path to load
+  -o, --output <path...>  [deprecated: use --path] The file/dir paths to inject
+                          in-place (default:
+                          ["dist/**/*",".next/**/*",".nuxt/**/*",".output/**/*","build/**/*"])
+  -p, --path <path...>    The file/dir paths to inject in-place (default:
+                          ["dist/**/*",".next/**/*",".nuxt/**/*",".output/**/*","build/**/*"])
+  --disposable            Do not create backup files and restore from backup
+                          files. In local development, disable this option to
+                          avoid rebuilding the project when environment
+                          variable changes, In production, enable this option
+                          to avoid generating unnecessary backup files.
+  -h, --help              display help for command

@import-meta-env/flow

sh
$ npx import-meta-env-flow --help
Usage: import-meta-env-flow [options]
+
+Generate flow type from .env.example
+
+Options:
+  -V, --version         output the version number
+  -x, --example <path>  The .env example file path to load
+  -o, --outDir <path>   Specify an output folder for emitted file. (default:
+                        ".")
+  -h, --help            display help for command

@import-meta-env/prepare

sh
$ npx import-meta-env-prepare --help
Usage: import-meta-env-prepare [options]
+
+Generate \`.env\` file from \`.env.*\` files.
+
+Options:
+  -V, --version           output the version number
+  -e, --env <path>        .env file path to write (default: ".env")
+  -x, --example <path>    .env.example file path to read
+  -p, --path <path...>    .env.* file paths to read (default:
+                          [".env.local.defaults",".env.local"])
+  -u, --user-environment  whether to load user environment variables (i.e.,
+                          process.env.*) (default: false)
+  -h, --help              display help for command

@import-meta-env/swc

rs
use serde;
+
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct Config {
+    /**
+     * The .env file path to load, related to current working directory.
+     *
+     * Defaults to ".env"
+     */
+    pub env: Option<String>,
+
+    /**
+     * The public .env example file path to load, related to current working directory.
+     */
+    pub example: String,
+
+    /**
+     * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+     * Runtime: statically replace \`import.meta.env\` with a global accessor
+     *
+     * Default:
+     *
+     * if \`TransformPluginMetadataContextKind::Env\` equals to \`"production"\`
+     * then \`Some(TransformMode::Runtime)\`
+     * otherwise \`Some(TransformMode::CompileTime)\`
+     */
+    #[serde(rename = "transformMode")]
+    pub transform_mode: Option<TransformMode>,
+}
+
+#[derive(serde::Serialize, serde::Deserialize)]
+pub enum TransformMode {
+    #[serde(rename = "compile-time")]
+    CompileTime,
+
+    #[serde(rename = "runtime")]
+    Runtime,
+}

@import-meta-env/typescript

sh
$ npx import-meta-env-typescript --help
Usage: import-meta-env-typescript [options]
+
+Generate declaration file from .env.example
+
+Options:
+  -V, --version         output the version number
+  -x, --example <path>  The .env example file path to load
+  -o, --outDir <path>   Specify an output folder for emitted file. (default:
+                        ".")
+  -h, --help            display help for command

@import-meta-env/unplugin

ts
export type Env = Record<string, string>;
+
+export interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+   * Runtime: statically replace \`import.meta.env\` with a global accessor
+   *
+   * @default
+   *
+   * \`\`\`text
+   * vite:    if mode is not \`"production"\` then \`"compile-time"\`, otherwise \`"runtime"\`
+   * webpack: if mode is \`"development"\` or \`"none"\` then \`"compile-time"\`, otherwise \`"runtime"\`
+   * rollup:  if \`NODE_ENV\` is not \`"production"\` then \`"compile-time"\`, otherwise \`"runtime"\`
+   * esbuild: (needs to be set explicitly)
+   * \`\`\`
+   */
+  transformMode?: "compile-time" | "runtime";
+}
`,19)]))}const g=a(e,[["render",t]]);export{c as __pageData,g as default}; diff --git a/assets/api.md.w5r8-ef1.lean.js b/assets/api.md.w5r8-ef1.lean.js new file mode 100644 index 000000000..00b9331f1 --- /dev/null +++ b/assets/api.md.w5r8-ef1.lean.js @@ -0,0 +1,141 @@ +import{_ as a,c as i,a0 as n,o as p}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md"}'),e={name:"api.md"};function t(l,s,h,k,r,o){return p(),i("div",null,s[0]||(s[0]=[n(`

API

@import-meta-env/babel

ts
export interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+   * Runtime: statically replace \`import.meta.env\` with a global accessor
+   *
+   * @default
+   * process.env.NODE_ENV === "production" ? "runtime" : "compile-time"
+   */
+  transformMode?: "compile-time" | "runtime";
+}

@import-meta-env/cli

sh
$ npx import-meta-env --help
Usage: import-meta-env [options]
+
+Populates your environment variables from the system or \`.env\` file.
+
+Options:
+  -V, --version           output the version number
+  -e, --env <path>        The .env file path to load. You can out-out this by
+                          passing an empty string. (default: ".env")
+  -x, --example <path>    The .env example file path to load
+  -o, --output <path...>  [deprecated: use --path] The file/dir paths to inject
+                          in-place (default:
+                          ["dist/**/*",".next/**/*",".nuxt/**/*",".output/**/*","build/**/*"])
+  -p, --path <path...>    The file/dir paths to inject in-place (default:
+                          ["dist/**/*",".next/**/*",".nuxt/**/*",".output/**/*","build/**/*"])
+  --disposable            Do not create backup files and restore from backup
+                          files. In local development, disable this option to
+                          avoid rebuilding the project when environment
+                          variable changes, In production, enable this option
+                          to avoid generating unnecessary backup files.
+  -h, --help              display help for command

@import-meta-env/flow

sh
$ npx import-meta-env-flow --help
Usage: import-meta-env-flow [options]
+
+Generate flow type from .env.example
+
+Options:
+  -V, --version         output the version number
+  -x, --example <path>  The .env example file path to load
+  -o, --outDir <path>   Specify an output folder for emitted file. (default:
+                        ".")
+  -h, --help            display help for command

@import-meta-env/prepare

sh
$ npx import-meta-env-prepare --help
Usage: import-meta-env-prepare [options]
+
+Generate \`.env\` file from \`.env.*\` files.
+
+Options:
+  -V, --version           output the version number
+  -e, --env <path>        .env file path to write (default: ".env")
+  -x, --example <path>    .env.example file path to read
+  -p, --path <path...>    .env.* file paths to read (default:
+                          [".env.local.defaults",".env.local"])
+  -u, --user-environment  whether to load user environment variables (i.e.,
+                          process.env.*) (default: false)
+  -h, --help              display help for command

@import-meta-env/swc

rs
use serde;
+
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct Config {
+    /**
+     * The .env file path to load, related to current working directory.
+     *
+     * Defaults to ".env"
+     */
+    pub env: Option<String>,
+
+    /**
+     * The public .env example file path to load, related to current working directory.
+     */
+    pub example: String,
+
+    /**
+     * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+     * Runtime: statically replace \`import.meta.env\` with a global accessor
+     *
+     * Default:
+     *
+     * if \`TransformPluginMetadataContextKind::Env\` equals to \`"production"\`
+     * then \`Some(TransformMode::Runtime)\`
+     * otherwise \`Some(TransformMode::CompileTime)\`
+     */
+    #[serde(rename = "transformMode")]
+    pub transform_mode: Option<TransformMode>,
+}
+
+#[derive(serde::Serialize, serde::Deserialize)]
+pub enum TransformMode {
+    #[serde(rename = "compile-time")]
+    CompileTime,
+
+    #[serde(rename = "runtime")]
+    Runtime,
+}

@import-meta-env/typescript

sh
$ npx import-meta-env-typescript --help
Usage: import-meta-env-typescript [options]
+
+Generate declaration file from .env.example
+
+Options:
+  -V, --version         output the version number
+  -x, --example <path>  The .env example file path to load
+  -o, --outDir <path>   Specify an output folder for emitted file. (default:
+                        ".")
+  -h, --help            display help for command

@import-meta-env/unplugin

ts
export type Env = Record<string, string>;
+
+export interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+   * Runtime: statically replace \`import.meta.env\` with a global accessor
+   *
+   * @default
+   *
+   * \`\`\`text
+   * vite:    if mode is not \`"production"\` then \`"compile-time"\`, otherwise \`"runtime"\`
+   * webpack: if mode is \`"development"\` or \`"none"\` then \`"compile-time"\`, otherwise \`"runtime"\`
+   * rollup:  if \`NODE_ENV\` is not \`"production"\` then \`"compile-time"\`, otherwise \`"runtime"\`
+   * esbuild: (needs to be set explicitly)
+   * \`\`\`
+   */
+  transformMode?: "compile-time" | "runtime";
+}
`,19)]))}const g=a(e,[["render",t]]);export{c as __pageData,g as default}; diff --git a/assets/app.De9Ase_Z.js b/assets/app.De9Ase_Z.js new file mode 100644 index 000000000..40e38ecad --- /dev/null +++ b/assets/app.De9Ase_Z.js @@ -0,0 +1 @@ +import{t as i}from"./chunks/theme.sAfGMW6S.js";import{R as o,a1 as u,a2 as c,a3 as l,a4 as f,a5 as d,a6 as m,a7 as h,a8 as g,a9 as A,aa as v,d as P,u as y,v as C,s as b,ab as w,ac as R,ad as E,ae as S}from"./chunks/framework.CGHvQLJz.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=p(i),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{b(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),R(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),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:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(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&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/chunks/framework.CGHvQLJz.js b/assets/chunks/framework.CGHvQLJz.js new file mode 100644 index 000000000..eba4db978 --- /dev/null +++ b/assets/chunks/framework.CGHvQLJz.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Cs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const te={},xt=[],Ue=()=>{},bo=()=>!1,Yt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Es=e=>e.startsWith("onUpdate:"),oe=Object.assign,Ts=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},wo=Object.prototype.hasOwnProperty,z=(e,t)=>wo.call(e,t),B=Array.isArray,St=e=>Cn(e)==="[object Map]",$r=e=>Cn(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",qe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",Dr=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),jr=Object.prototype.toString,Cn=e=>jr.call(e),xo=e=>Cn(e).slice(8,-1),Vr=e=>Cn(e)==="[object Object]",As=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Cs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),En=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},So=/-(\w)/g,Pe=En(e=>e.replace(So,(t,n)=>n?n.toUpperCase():"")),Co=/\B([A-Z])/g,st=En(e=>e.replace(Co,"-$1").toLowerCase()),Tn=En(e=>e.charAt(0).toUpperCase()+e.slice(1)),un=En(e=>e?`on${Tn(e)}`:""),et=(e,t)=>!Object.is(e,t),kn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Eo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},To=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Ys;const An=()=>Ys||(Ys=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rs(e){if(B(e)){const t={};for(let n=0;n{if(n){const s=n.split(Ro);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Os(e){let t="";if(re(e))t=e;else if(B(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Lo=e=>re(e)?e:e==null?"":B(e)||ne(e)&&(e.toString===jr||!q(e.toString))?kr(e)?Lo(e.value):JSON.stringify(e,Wr,2):String(e),Wr=(e,t)=>kr(t)?Wr(e,t.value):St(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Wn(s,i)+" =>"]=r,n),{})}:$r(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Wn(n))}:qe(t)?Wn(t):ne(t)&&!B(t)&&!Vr(t)?String(t):t,Wn=(e,t="")=>{var n;return qe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let be;class No{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(Ht){let t=Ht;for(Ht=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Ft;){let t=Ft;for(Ft=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Xr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Jr(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ps(s),Ho(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function fs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(zr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function zr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Vt))return;e.globalVersion=Vt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!fs(e)){e.flags&=-3;return}const n=ee,s=Ne;ee=e,Ne=!0;try{Xr(e);const r=e.fn(e._value);(t.version===0||et(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ee=n,Ne=s,Jr(e),e.flags&=-3}}function Ps(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ps(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ho(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const Qr=[];function rt(){Qr.push(Ne),Ne=!1}function it(){const e=Qr.pop();Ne=e===void 0?!0:e}function Xs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ee;ee=void 0;try{t()}finally{ee=n}}}let Vt=0;class $o{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Rn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!ee||!Ne||ee===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ee)n=this.activeLink=new $o(ee,this),ee.deps?(n.prevDep=ee.depsTail,ee.depsTail.nextDep=n,ee.depsTail=n):ee.deps=ee.depsTail=n,Zr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ee.depsTail,n.nextDep=void 0,ee.depsTail.nextDep=n,ee.depsTail=n,ee.deps===n&&(ee.deps=s)}return n}trigger(t){this.version++,Vt++,this.notify(t)}notify(t){Ms();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Is()}}}function Zr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Zr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const mn=new WeakMap,dt=Symbol(""),us=Symbol(""),Ut=Symbol("");function ge(e,t,n){if(Ne&&ee){let s=mn.get(e);s||mn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Rn),r.map=s,r.key=n),r.track()}}function We(e,t,n,s,r,i){const o=mn.get(e);if(!o){Vt++;return}const l=c=>{c&&c.trigger()};if(Ms(),t==="clear")o.forEach(l);else{const c=B(e),u=c&&As(n);if(c&&n==="length"){const f=Number(s);o.forEach((h,y)=>{(y==="length"||y===Ut||!qe(y)&&y>=f)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),u&&l(o.get(Ut)),t){case"add":c?u&&l(o.get("length")):(l(o.get(dt)),St(e)&&l(o.get(us)));break;case"delete":c||(l(o.get(dt)),St(e)&&l(o.get(us)));break;case"set":St(e)&&l(o.get(dt));break}}Is()}function Do(e,t){const n=mn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(ge(t,"iterate",Ut),Ie(e)?t:t.map(me))}function On(e){return ge(e=J(e),"iterate",Ut),e}const jo={__proto__:null,[Symbol.iterator](){return qn(this,Symbol.iterator,me)},concat(...e){return _t(this).concat(...e.map(t=>B(t)?_t(t):t))},entries(){return qn(this,"entries",e=>(e[1]=me(e[1]),e))},every(e,t){return Be(this,"every",e,t,void 0,arguments)},filter(e,t){return Be(this,"filter",e,t,n=>n.map(me),arguments)},find(e,t){return Be(this,"find",e,t,me,arguments)},findIndex(e,t){return Be(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Be(this,"findLast",e,t,me,arguments)},findLastIndex(e,t){return Be(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Be(this,"forEach",e,t,void 0,arguments)},includes(...e){return Gn(this,"includes",e)},indexOf(...e){return Gn(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return Gn(this,"lastIndexOf",e)},map(e,t){return Be(this,"map",e,t,void 0,arguments)},pop(){return Pt(this,"pop")},push(...e){return Pt(this,"push",e)},reduce(e,...t){return Js(this,"reduce",e,t)},reduceRight(e,...t){return Js(this,"reduceRight",e,t)},shift(){return Pt(this,"shift")},some(e,t){return Be(this,"some",e,t,void 0,arguments)},splice(...e){return Pt(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Pt(this,"unshift",e)},values(){return qn(this,"values",me)}};function qn(e,t,n){const s=On(e),r=s[t]();return s!==e&&!Ie(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const Vo=Array.prototype;function Be(e,t,n,s,r,i){const o=On(e),l=o!==e&&!Ie(e),c=o[t];if(c!==Vo[t]){const h=c.apply(e,i);return l?me(h):h}let u=n;o!==e&&(l?u=function(h,y){return n.call(this,me(h),y,e)}:n.length>2&&(u=function(h,y){return n.call(this,h,y,e)}));const f=c.call(o,u,s);return l&&r?r(f):f}function Js(e,t,n,s){const r=On(e);let i=n;return r!==e&&(Ie(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,me(l),c,e)}),r[t](i,...s)}function Gn(e,t,n){const s=J(e);ge(s,"iterate",Ut);const r=s[t](...n);return(r===-1||r===!1)&&Fs(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Pt(e,t,n=[]){rt(),Ms();const s=J(e)[t].apply(e,n);return Is(),it(),s}const Uo=Cs("__proto__,__v_isRef,__isVue"),ei=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(qe));function Bo(e){qe(e)||(e=String(e));const t=J(this);return ge(t,"has",e),t.hasOwnProperty(e)}class ti{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Qo:ii:i?ri:si).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=B(t);if(!r){let c;if(o&&(c=jo[n]))return c;if(n==="hasOwnProperty")return Bo}const l=Reflect.get(t,n,ce(t)?t:s);return(qe(n)?ei.has(n):Uo(n))||(r||ge(t,"get",n),i)?l:ce(l)?o&&As(n)?l:l.value:ne(l)?r?In(l):Mn(l):l}}class ni extends ti{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Ie(s)&&!yt(s)&&(i=J(i),s=J(s)),!B(t)&&ce(i)&&!ce(s))return c?!1:(i.value=s,!0)}const o=B(t)&&As(n)?Number(n)e,Zt=e=>Reflect.getPrototypeOf(e);function Go(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=St(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),f=n?ds:t?hs:me;return!t&&ge(i,"iterate",c?us:dt),{next(){const{value:h,done:y}=u.next();return y?{value:h,done:y}:{value:l?[f(h[0]),f(h[1])]:f(h),done:y}},[Symbol.iterator](){return this}}}}function en(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Yo(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(et(r,l)&&ge(o,"get",r),ge(o,"get",l));const{has:c}=Zt(o),u=t?ds:e?hs:me;if(c.call(o,r))return u(i.get(r));if(c.call(o,l))return u(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ge(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(et(r,l)&&ge(o,"has",r),ge(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),u=t?ds:e?hs:me;return!e&&ge(c,"iterate",dt),l.forEach((f,h)=>r.call(i,u(f),u(h),o))}};return oe(n,e?{add:en("add"),set:en("set"),delete:en("delete"),clear:en("clear")}:{add(r){!t&&!Ie(r)&&!yt(r)&&(r=J(r));const i=J(this);return Zt(i).has.call(i,r)||(i.add(r),We(i,"add",r,r)),this},set(r,i){!t&&!Ie(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=Zt(o);let u=l.call(o,r);u||(r=J(r),u=l.call(o,r));const f=c.call(o,r);return o.set(r,i),u?et(i,f)&&We(o,"set",r,i):We(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=Zt(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const u=i.delete(r);return c&&We(i,"delete",r,void 0),u},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&We(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Go(r,e,t)}),n}function Ls(e,t){const n=Yo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const Xo={get:Ls(!1,!1)},Jo={get:Ls(!1,!0)},zo={get:Ls(!0,!1)};const si=new WeakMap,ri=new WeakMap,ii=new WeakMap,Qo=new WeakMap;function Zo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function el(e){return e.__v_skip||!Object.isExtensible(e)?0:Zo(xo(e))}function Mn(e){return yt(e)?e:Ns(e,!1,Wo,Xo,si)}function tl(e){return Ns(e,!1,qo,Jo,ri)}function In(e){return Ns(e,!0,Ko,zo,ii)}function Ns(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=el(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function Fs(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!z(e,"__v_skip")&&Object.isExtensible(e)&&Ur(e,"__v_skip",!0),e}const me=e=>ne(e)?Mn(e):e,hs=e=>ne(e)?In(e):e;function ce(e){return e?e.__v_isRef===!0:!1}function ue(e){return li(e,!1)}function oi(e){return li(e,!0)}function li(e,t){return ce(e)?e:new nl(e,t)}class nl{constructor(t,n){this.dep=new Rn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ie(t)||yt(t);t=s?t:J(t),et(t,n)&&(this._rawValue=t,this._value=s?t:me(t),this.dep.trigger())}}function ci(e){return ce(e)?e.value:e}const sl={get:(e,t,n)=>t==="__v_raw"?e:ci(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ce(r)&&!ce(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ai(e){return ht(e)?e:new Proxy(e,sl)}class rl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Rn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function il(e){return new rl(e)}class ol{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Do(J(this._object),this._key)}}class ll{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function cl(e,t,n){return ce(e)?e:q(e)?new ll(e):ne(e)&&arguments.length>1?al(e,t,n):ue(e)}function al(e,t,n){const s=e[t];return ce(s)?s:new ol(e,t,n)}class fl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Rn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Vt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ee!==this)return Yr(this,!0),!0}get value(){const t=this.dep.track();return zr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ul(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new fl(s,r,n)}const tn={},yn=new WeakMap;let ft;function dl(e,t=!1,n=ft){if(n){let s=yn.get(n);s||yn.set(n,s=[]),s.push(e)}}function hl(e,t,n=te){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,u=p=>r?p:Ie(p)||r===!1||r===0?Ze(p,1):Ze(p);let f,h,y,b,P=!1,O=!1;if(ce(e)?(h=()=>e.value,P=Ie(e)):ht(e)?(h=()=>u(e),P=!0):B(e)?(O=!0,P=e.some(p=>ht(p)||Ie(p)),h=()=>e.map(p=>{if(ce(p))return p.value;if(ht(p))return u(p);if(q(p))return c?c(p,2):p()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const p=ft;ft=f;try{return c?c(e,3,[b]):e(b)}finally{ft=p}}:h=Ue,t&&r){const p=h,R=r===!0?1/0:r;h=()=>Ze(p(),R)}const G=Kr(),U=()=>{f.stop(),G&&Ts(G.effects,f)};if(i&&t){const p=t;t=(...R)=>{p(...R),U()}}let W=O?new Array(e.length).fill(tn):tn;const g=p=>{if(!(!(f.flags&1)||!f.dirty&&!p))if(t){const R=f.run();if(r||P||(O?R.some((D,j)=>et(D,W[j])):et(R,W))){y&&y();const D=ft;ft=f;try{const j=[R,W===tn?void 0:O&&W[0]===tn?[]:W,b];c?c(t,3,j):t(...j),W=R}finally{ft=D}}}else f.run()};return l&&l(g),f=new qr(h),f.scheduler=o?()=>o(g,!1):g,b=p=>dl(p,!1,f),y=f.onStop=()=>{const p=yn.get(f);if(p){if(c)c(p,4);else for(const R of p)R();yn.delete(f)}},t?s?g(!0):W=f.run():o?o(g.bind(null,!0),!0):f.run(),U.pause=f.pause.bind(f),U.resume=f.resume.bind(f),U.stop=U,U}function Ze(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ce(e))Ze(e.value,t,n);else if(B(e))for(let s=0;s{Ze(s,t,n)});else if(Vr(e)){for(const s in e)Ze(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ze(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Xt(e,t,n,s){try{return s?e(...s):e()}catch(r){Pn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=Xt(e,t,n,s);return r&&Dr(r)&&r.catch(i=>{Pn(i,t,n)}),r}if(B(e)){const r=[];for(let i=0;i>>1,r=we[s],i=Bt(r);i=Bt(n)?we.push(e):we.splice(gl(t),0,e),e.flags|=1,ui()}}function ui(){vn||(vn=fi.then(di))}function ml(e){B(e)?Et.push(...e):Je&&e.id===-1?Je.splice(wt+1,0,e):e.flags&1||(Et.push(e),e.flags|=1),ui()}function zs(e,t,n=je+1){for(;nBt(n)-Bt(s));if(Et.length=0,Je){Je.push(...t);return}for(Je=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function di(e){try{for(je=0;je{s._d&&ar(-1);const i=bn(t);let o;try{o=e(...r)}finally{bn(i),s._d&&ar(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Ve(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;oe.__isTeleport,ze=Symbol("_leaveCb"),nn=Symbol("_enterCb");function _l(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ot(()=>{e.isMounted=!0}),Si(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],gi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},mi=e=>{const t=e.subTree;return t.component?mi(t.component):t},bl={name:"BaseTransition",props:gi,setup(e,{slots:t}){const n=jn(),s=_l();return()=>{const r=t.default&&_i(t.default(),!0);if(!r||!r.length)return;const i=yi(r),o=J(e),{mode:l}=o;if(s.isLeaving)return Yn(i);const c=Qs(i);if(!c)return Yn(i);let u=ps(c,o,s,n,y=>u=y);c.type!==ye&&kt(c,u);const f=n.subTree,h=f&&Qs(f);if(h&&h.type!==ye&&!ut(c,h)&&mi(n).type!==ye){const y=ps(h,o,s,n);if(kt(h,y),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,y.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete y.afterLeave},Yn(i);l==="in-out"&&c.type!==ye&&(y.delayLeave=(b,P,O)=>{const G=vi(s,h);G[String(h.key)]=h,b[ze]=()=>{P(),b[ze]=void 0,delete u.delayedLeave},u.delayedLeave=O})}return i}}};function yi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const wl=bl;function vi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function ps(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:y,onLeave:b,onAfterLeave:P,onLeaveCancelled:O,onBeforeAppear:G,onAppear:U,onAfterAppear:W,onAppearCancelled:g}=t,p=String(e.key),R=vi(n,e),D=(I,_)=>{I&&He(I,s,9,_)},j=(I,_)=>{const L=_[1];D(I,_),B(I)?I.every(x=>x.length<=1)&&L():I.length<=1&&L()},K={mode:o,persisted:l,beforeEnter(I){let _=c;if(!n.isMounted)if(i)_=G||c;else return;I[ze]&&I[ze](!0);const L=R[p];L&&ut(e,L)&&L.el[ze]&&L.el[ze](),D(_,[I])},enter(I){let _=u,L=f,x=h;if(!n.isMounted)if(i)_=U||u,L=W||f,x=g||h;else return;let V=!1;const se=I[nn]=le=>{V||(V=!0,le?D(x,[I]):D(L,[I]),K.delayedLeave&&K.delayedLeave(),I[nn]=void 0)};_?j(_,[I,se]):se()},leave(I,_){const L=String(e.key);if(I[nn]&&I[nn](!0),n.isUnmounting)return _();D(y,[I]);let x=!1;const V=I[ze]=se=>{x||(x=!0,_(),se?D(O,[I]):D(P,[I]),I[ze]=void 0,R[L]===e&&delete R[L])};R[L]=e,b?j(b,[I,V]):V()},clone(I){const _=ps(I,t,n,s,r);return r&&r(_),_}};return K}function Yn(e){if(Nn(e))return e=nt(e),e.children=null,e}function Qs(e){if(!Nn(e))return pi(e.type)&&e.children?yi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function kt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,kt(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 _i(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iwn(P,t&&(B(t)?t[O]:t),n,s,r));return}if(pt(s)&&!r)return;const i=s.shapeFlag&4?Vs(s.component):s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,f=l.refs===te?l.refs={}:l.refs,h=l.setupState,y=J(h),b=h===te?()=>!1:P=>z(y,P);if(u!=null&&u!==c&&(re(u)?(f[u]=null,b(u)&&(h[u]=null)):ce(u)&&(u.value=null)),q(c))Xt(c,l,12,[o,f]);else{const P=re(c),O=ce(c);if(P||O){const G=()=>{if(e.f){const U=P?b(c)?h[c]:f[c]:c.value;r?B(U)&&Ts(U,i):B(U)?U.includes(i)||U.push(i):P?(f[c]=[i],b(c)&&(h[c]=f[c])):(c.value=[i],e.k&&(f[e.k]=c.value))}else P?(f[c]=o,b(c)&&(h[c]=o)):O&&(c.value=o,e.k&&(f[e.k]=o))};o?(G.id=-1,Te(G,n)):G()}}}let Zs=!1;const bt=()=>{Zs||(console.error("Hydration completed but contains mismatches."),Zs=!0)},xl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Sl=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(e.nodeType===1){if(xl(e))return"svg";if(Sl(e))return"mathml"}},rn=e=>e.nodeType===8;function Cl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,f=(g,p)=>{if(!p.hasChildNodes()){n(null,g,p),_n(),p._vnode=g;return}h(p.firstChild,g,null,null,null),_n(),p._vnode=g},h=(g,p,R,D,j,K=!1)=>{K=K||!!p.dynamicChildren;const I=rn(g)&&g.data==="[",_=()=>O(g,p,R,D,j,I),{type:L,ref:x,shapeFlag:V,patchFlag:se}=p;let le=g.nodeType;p.el=g,se===-2&&(K=!1,p.dynamicChildren=null);let H=null;switch(L){case gt:le!==3?p.children===""?(c(p.el=r(""),o(g),g),H=g):H=_():(g.data!==p.children&&(bt(),g.data=p.children),H=i(g));break;case ye:W(g)?(H=i(g),U(p.el=g.content.firstChild,g,R)):le!==8||I?H=_():H=i(g);break;case Dt:if(I&&(g=i(g),le=g.nodeType),le===1||le===3){H=g;const Y=!p.children.length;for(let F=0;F{K=K||!!p.dynamicChildren;const{type:I,props:_,patchFlag:L,shapeFlag:x,dirs:V,transition:se}=p,le=I==="input"||I==="option";if(le||L!==-1){V&&Ve(p,null,R,"created");let H=!1;if(W(g)){H=ji(null,se)&&R&&R.vnode.props&&R.vnode.props.appear;const F=g.content.firstChild;H&&se.beforeEnter(F),U(F,g,R),p.el=g=F}if(x&16&&!(_&&(_.innerHTML||_.textContent))){let F=b(g.firstChild,p,g,R,D,j,K);for(;F;){on(g,1)||bt();const ae=F;F=F.nextSibling,l(ae)}}else if(x&8){let F=p.children;F[0]===` +`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(F=F.slice(1)),g.textContent!==F&&(on(g,0)||bt(),g.textContent=p.children)}if(_){if(le||!K||L&48){const F=g.tagName.includes("-");for(const ae in _)(le&&(ae.endsWith("value")||ae==="indeterminate")||Yt(ae)&&!Ct(ae)||ae[0]==="."||F)&&s(g,ae,null,_[ae],void 0,R)}else if(_.onClick)s(g,"onClick",null,_.onClick,void 0,R);else if(L&4&&ht(_.style))for(const F in _.style)_.style[F]}let Y;(Y=_&&_.onVnodeBeforeMount)&&Oe(Y,R,p),V&&Ve(p,null,R,"beforeMount"),((Y=_&&_.onVnodeMounted)||V||H)&&qi(()=>{Y&&Oe(Y,R,p),H&&se.enter(g),V&&Ve(p,null,R,"mounted")},D)}return g.nextSibling},b=(g,p,R,D,j,K,I)=>{I=I||!!p.dynamicChildren;const _=p.children,L=_.length;for(let x=0;x{const{slotScopeIds:I}=p;I&&(j=j?j.concat(I):I);const _=o(g),L=b(i(g),p,_,R,D,j,K);return L&&rn(L)&&L.data==="]"?i(p.anchor=L):(bt(),c(p.anchor=u("]"),_,L),L)},O=(g,p,R,D,j,K)=>{if(on(g.parentElement,1)||bt(),p.el=null,K){const L=G(g);for(;;){const x=i(g);if(x&&x!==L)l(x);else break}}const I=i(g),_=o(g);return l(g),n(null,p,_,I,R,D,sn(_),j),I},G=(g,p="[",R="]")=>{let D=0;for(;g;)if(g=i(g),g&&rn(g)&&(g.data===p&&D++,g.data===R)){if(D===0)return i(g);D--}return g},U=(g,p,R)=>{const D=p.parentNode;D&&D.replaceChild(g,p);let j=R;for(;j;)j.vnode.el===p&&(j.vnode.el=j.subTree.el=g),j=j.parent},W=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[f,h]}const er="data-allow-mismatch",El={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function on(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(er);)e=e.parentElement;const n=e&&e.getAttribute(er);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(El[t])}}An().requestIdleCallback;An().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,Nn=e=>e.type.__isKeepAlive;function Tl(e,t){xi(e,"a",t)}function Al(e,t){xi(e,"da",t)}function xi(e,t,n=fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Fn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Nn(r.parent.vnode)&&Rl(s,t,n,r),r=r.parent}}function Rl(e,t,n,s){const r=Fn(t,e,s,!0);Hn(()=>{Ts(s[t],r)},n)}function Fn(e,t,n=fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=Jt(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Ge=e=>(t,n=fe)=>{(!qt||e==="sp")&&Fn(e,(...s)=>t(...s),n)},Ol=Ge("bm"),Ot=Ge("m"),Ml=Ge("bu"),Il=Ge("u"),Si=Ge("bum"),Hn=Ge("um"),Pl=Ge("sp"),Ll=Ge("rtg"),Nl=Ge("rtc");function Fl(e,t=fe){Fn("ec",e,t)}const Ci="components";function Ja(e,t){return Ti(Ci,e,!0,t)||e}const Ei=Symbol.for("v-ndc");function za(e){return re(e)?Ti(Ci,e,!1)||e:e||Ei}function Ti(e,t,n=!0,s=!1){const r=ve||fe;if(r){const i=r.type;{const l=bc(i,!1);if(l&&(l===t||l===Pe(t)||l===Tn(Pe(t))))return i}const o=tr(r[e]||i[e],t)||tr(r.appContext[e],t);return!o&&s?i:o}}function tr(e,t){return e&&(e[t]||e[Pe(t)]||e[Tn(Pe(t))])}function Qa(e,t,n,s){let r;const i=n,o=B(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Ie(e),e=On(e)),r=new Array(e.length);for(let u=0,f=e.length;ut(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,u=l.length;cKt(t)?!(t.type===ye||t.type===xe&&!Ai(t.children)):!0)?e:null}function ef(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:un(s)]=e[s];return n}const gs=e=>e?zi(e)?Vs(e):gs(e.parent):null,$t=oe(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=>gs(e.parent),$root:e=>gs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>$s(e),$forceUpdate:e=>e.f||(e.f=()=>{Hs(e.update)}),$nextTick:e=>e.n||(e.n=Ln.bind(e.proxy)),$watch:e=>sc.bind(e)}),Xn=(e,t)=>e!==te&&!e.__isScriptSetup&&z(e,t),Hl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const b=o[t];if(b!==void 0)switch(b){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Xn(s,t))return o[t]=1,s[t];if(r!==te&&z(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&z(u,t))return o[t]=3,i[t];if(n!==te&&z(n,t))return o[t]=4,n[t];ms&&(o[t]=0)}}const f=$t[t];let h,y;if(f)return t==="$attrs"&&ge(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Xn(r,t)?(r[t]=n,!0):s!==te&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&z(e,o)||Xn(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z($t,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function tf(){return $l().slots}function $l(){const e=jn();return e.setupContext||(e.setupContext=Zi(e))}function nr(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ms=!0;function Dl(e){const t=$s(e),n=e.proxy,s=e.ctx;ms=!1,t.beforeCreate&&sr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:f,beforeMount:h,mounted:y,beforeUpdate:b,updated:P,activated:O,deactivated:G,beforeDestroy:U,beforeUnmount:W,destroyed:g,unmounted:p,render:R,renderTracked:D,renderTriggered:j,errorCaptured:K,serverPrefetch:I,expose:_,inheritAttrs:L,components:x,directives:V,filters:se}=t;if(u&&jl(u,s,null),o)for(const Y in o){const F=o[Y];q(F)&&(s[Y]=F.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=Mn(Y))}if(ms=!0,i)for(const Y in i){const F=i[Y],ae=q(F)?F.bind(n,n):q(F.get)?F.get.bind(n,n):Ue,zt=!q(F)&&q(F.set)?F.set.bind(n):Ue,ot=ie({get:ae,set:zt});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:$e=>ot.value=$e})}if(l)for(const Y in l)Ri(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(F=>{Kl(F,Y[F])})}f&&sr(f,e,"c");function H(Y,F){B(F)?F.forEach(ae=>Y(ae.bind(n))):F&&Y(F.bind(n))}if(H(Ol,h),H(Ot,y),H(Ml,b),H(Il,P),H(Tl,O),H(Al,G),H(Fl,K),H(Nl,D),H(Ll,j),H(Si,W),H(Hn,p),H(Pl,I),B(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach(F=>{Object.defineProperty(Y,F,{get:()=>n[F],set:ae=>n[F]=ae})})}else e.exposed||(e.exposed={});R&&e.render===Ue&&(e.render=R),L!=null&&(e.inheritAttrs=L),x&&(e.components=x),V&&(e.directives=V),I&&wi(e)}function jl(e,t,n=Ue){B(e)&&(e=ys(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=At(r.from||s,r.default,!0):i=At(r.from||s):i=At(r),ce(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function sr(e,t,n){He(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ri(e,t,n,s){let r=s.includes(".")?ki(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(B(e))e.forEach(i=>Ri(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function $s(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>xn(c,u,o,!0)),xn(c,t,o)),ne(t)&&i.set(t,c),c}function xn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&xn(e,i,n,!0),r&&r.forEach(o=>xn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Vl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Vl={data:rr,props:ir,emits:ir,methods:Nt,computed:Nt,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:Nt,directives:Nt,watch:Bl,provide:rr,inject:Ul};function rr(e,t){return t?e?function(){return oe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Ul(e,t){return Nt(ys(e),ys(t))}function ys(e){if(B(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Mi={},Ii=()=>Object.create(Mi),Pi=e=>Object.getPrototypeOf(e)===Mi;function ql(e,t,n,s=!1){const r={},i=Ii();e.propsDefaults=Object.create(null),Li(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:tl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Gl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,b]=Ni(h,t,!0);oe(o,y),b&&l.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!c)return ne(e)&&s.set(e,xt),xt;if(B(i))for(let f=0;fe[0]==="_"||e==="$stable",Ds=e=>B(e)?e.map(Me):[Me(e)],Xl=(e,t,n)=>{if(t._n)return t;const s=yl((...r)=>Ds(t(...r)),n);return s._c=!1,s},Hi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Fi(r))continue;const i=e[r];if(q(i))t[r]=Xl(r,i,s);else if(i!=null){const o=Ds(i);t[r]=()=>o}}},$i=(e,t)=>{const n=Ds(t);e.slots.default=()=>n},Di=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Jl=(e,t,n)=>{const s=e.slots=Ii();if(e.vnode.shapeFlag&32){const r=t._;r?(Di(s,t,n),n&&Ur(s,"_",r,!0)):Hi(t,s)}else t&&$i(e,t)},zl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Di(r,t,n):(i=!t.$stable,Hi(t,r)),o=t}else t&&($i(e,t),o={default:1});if(i)for(const l in r)!Fi(l)&&o[l]==null&&delete r[l]},Te=qi;function Ql(e){return Zl(e,Cl)}function Zl(e,t){const n=An();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:f,parentNode:h,nextSibling:y,setScopeId:b=Ue,insertStaticContent:P}=e,O=(a,d,m,S=null,v=null,w=null,A=void 0,T=null,E=!!d.dynamicChildren)=>{if(a===d)return;a&&!ut(a,d)&&(S=Qt(a),$e(a,v,w,!0),a=null),d.patchFlag===-2&&(E=!1,d.dynamicChildren=null);const{type:C,ref:$,shapeFlag:M}=d;switch(C){case gt:G(a,d,m,S);break;case ye:U(a,d,m,S);break;case Dt:a==null&&W(d,m,S,A);break;case xe:x(a,d,m,S,v,w,A,T,E);break;default:M&1?R(a,d,m,S,v,w,A,T,E):M&6?V(a,d,m,S,v,w,A,T,E):(M&64||M&128)&&C.process(a,d,m,S,v,w,A,T,E,vt)}$!=null&&v&&wn($,a&&a.ref,w,d||a,!d)},G=(a,d,m,S)=>{if(a==null)s(d.el=l(d.children),m,S);else{const v=d.el=a.el;d.children!==a.children&&u(v,d.children)}},U=(a,d,m,S)=>{a==null?s(d.el=c(d.children||""),m,S):d.el=a.el},W=(a,d,m,S)=>{[a.el,a.anchor]=P(a.children,d,m,S,a.el,a.anchor)},g=({el:a,anchor:d},m,S)=>{let v;for(;a&&a!==d;)v=y(a),s(a,m,S),a=v;s(d,m,S)},p=({el:a,anchor:d})=>{let m;for(;a&&a!==d;)m=y(a),r(a),a=m;r(d)},R=(a,d,m,S,v,w,A,T,E)=>{d.type==="svg"?A="svg":d.type==="math"&&(A="mathml"),a==null?D(d,m,S,v,w,A,T,E):I(a,d,v,w,A,T,E)},D=(a,d,m,S,v,w,A,T)=>{let E,C;const{props:$,shapeFlag:M,transition:N,dirs:k}=a;if(E=a.el=o(a.type,w,$&&$.is,$),M&8?f(E,a.children):M&16&&K(a.children,E,null,S,v,Jn(a,w),A,T),k&&Ve(a,null,S,"created"),j(E,a,a.scopeId,A,S),$){for(const Z in $)Z!=="value"&&!Ct(Z)&&i(E,Z,null,$[Z],w,S);"value"in $&&i(E,"value",null,$.value,w),(C=$.onVnodeBeforeMount)&&Oe(C,S,a)}k&&Ve(a,null,S,"beforeMount");const X=ji(v,N);X&&N.beforeEnter(E),s(E,d,m),((C=$&&$.onVnodeMounted)||X||k)&&Te(()=>{C&&Oe(C,S,a),X&&N.enter(E),k&&Ve(a,null,S,"mounted")},v)},j=(a,d,m,S,v)=>{if(m&&b(a,m),S)for(let w=0;w{for(let C=E;C{const T=d.el=a.el;let{patchFlag:E,dynamicChildren:C,dirs:$}=d;E|=a.patchFlag&16;const M=a.props||te,N=d.props||te;let k;if(m&<(m,!1),(k=N.onVnodeBeforeUpdate)&&Oe(k,m,d,a),$&&Ve(d,a,m,"beforeUpdate"),m&<(m,!0),(M.innerHTML&&N.innerHTML==null||M.textContent&&N.textContent==null)&&f(T,""),C?_(a.dynamicChildren,C,T,m,S,Jn(d,v),w):A||F(a,d,T,null,m,S,Jn(d,v),w,!1),E>0){if(E&16)L(T,M,N,m,v);else if(E&2&&M.class!==N.class&&i(T,"class",null,N.class,v),E&4&&i(T,"style",M.style,N.style,v),E&8){const X=d.dynamicProps;for(let Z=0;Z{k&&Oe(k,m,d,a),$&&Ve(d,a,m,"updated")},S)},_=(a,d,m,S,v,w,A)=>{for(let T=0;T{if(d!==m){if(d!==te)for(const w in d)!Ct(w)&&!(w in m)&&i(a,w,d[w],null,v,S);for(const w in m){if(Ct(w))continue;const A=m[w],T=d[w];A!==T&&w!=="value"&&i(a,w,T,A,v,S)}"value"in m&&i(a,"value",d.value,m.value,v)}},x=(a,d,m,S,v,w,A,T,E)=>{const C=d.el=a?a.el:l(""),$=d.anchor=a?a.anchor:l("");let{patchFlag:M,dynamicChildren:N,slotScopeIds:k}=d;k&&(T=T?T.concat(k):k),a==null?(s(C,m,S),s($,m,S),K(d.children||[],m,$,v,w,A,T,E)):M>0&&M&64&&N&&a.dynamicChildren?(_(a.dynamicChildren,N,m,v,w,A,T),(d.key!=null||v&&d===v.subTree)&&Vi(a,d,!0)):F(a,d,m,$,v,w,A,T,E)},V=(a,d,m,S,v,w,A,T,E)=>{d.slotScopeIds=T,a==null?d.shapeFlag&512?v.ctx.activate(d,m,S,A,E):se(d,m,S,v,w,A,E):le(a,d,E)},se=(a,d,m,S,v,w,A)=>{const T=a.component=mc(a,S,v);if(Nn(a)&&(T.ctx.renderer=vt),yc(T,!1,A),T.asyncDep){if(v&&v.registerDep(T,H,A),!a.el){const E=T.subTree=de(ye);U(null,E,d,m)}}else H(T,a,d,m,v,w,A)},le=(a,d,m)=>{const S=d.component=a.component;if(cc(a,d,m))if(S.asyncDep&&!S.asyncResolved){Y(S,d,m);return}else S.next=d,S.update();else d.el=a.el,S.vnode=d},H=(a,d,m,S,v,w,A)=>{const T=()=>{if(a.isMounted){let{next:M,bu:N,u:k,parent:X,vnode:Z}=a;{const Ce=Ui(a);if(Ce){M&&(M.el=Z.el,Y(a,M,A)),Ce.asyncDep.then(()=>{a.isUnmounted||T()});return}}let Q=M,Se;lt(a,!1),M?(M.el=Z.el,Y(a,M,A)):M=Z,N&&kn(N),(Se=M.props&&M.props.onVnodeBeforeUpdate)&&Oe(Se,X,M,Z),lt(a,!0);const he=zn(a),Le=a.subTree;a.subTree=he,O(Le,he,h(Le.el),Qt(Le),a,v,w),M.el=he.el,Q===null&&ac(a,he.el),k&&Te(k,v),(Se=M.props&&M.props.onVnodeUpdated)&&Te(()=>Oe(Se,X,M,Z),v)}else{let M;const{el:N,props:k}=d,{bm:X,m:Z,parent:Q,root:Se,type:he}=a,Le=pt(d);if(lt(a,!1),X&&kn(X),!Le&&(M=k&&k.onVnodeBeforeMount)&&Oe(M,Q,d),lt(a,!0),N&&Bn){const Ce=()=>{a.subTree=zn(a),Bn(N,a.subTree,a,v,null)};Le&&he.__asyncHydrate?he.__asyncHydrate(N,a,Ce):Ce()}else{Se.ce&&Se.ce._injectChildStyle(he);const Ce=a.subTree=zn(a);O(null,Ce,m,S,a,v,w),d.el=Ce.el}if(Z&&Te(Z,v),!Le&&(M=k&&k.onVnodeMounted)){const Ce=d;Te(()=>Oe(M,Q,Ce),v)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&a.a&&Te(a.a,v),a.isMounted=!0,d=m=S=null}};a.scope.on();const E=a.effect=new qr(T);a.scope.off();const C=a.update=E.run.bind(E),$=a.job=E.runIfDirty.bind(E);$.i=a,$.id=a.uid,E.scheduler=()=>Hs($),lt(a,!0),C()},Y=(a,d,m)=>{d.component=a;const S=a.vnode.props;a.vnode=d,a.next=null,Gl(a,d.props,S,m),zl(a,d.children,m),rt(),zs(a),it()},F=(a,d,m,S,v,w,A,T,E=!1)=>{const C=a&&a.children,$=a?a.shapeFlag:0,M=d.children,{patchFlag:N,shapeFlag:k}=d;if(N>0){if(N&128){zt(C,M,m,S,v,w,A,T,E);return}else if(N&256){ae(C,M,m,S,v,w,A,T,E);return}}k&8?($&16&&Mt(C,v,w),M!==C&&f(m,M)):$&16?k&16?zt(C,M,m,S,v,w,A,T,E):Mt(C,v,w,!0):($&8&&f(m,""),k&16&&K(M,m,S,v,w,A,T,E))},ae=(a,d,m,S,v,w,A,T,E)=>{a=a||xt,d=d||xt;const C=a.length,$=d.length,M=Math.min(C,$);let N;for(N=0;N$?Mt(a,v,w,!0,!1,M):K(d,m,S,v,w,A,T,E,M)},zt=(a,d,m,S,v,w,A,T,E)=>{let C=0;const $=d.length;let M=a.length-1,N=$-1;for(;C<=M&&C<=N;){const k=a[C],X=d[C]=E?Qe(d[C]):Me(d[C]);if(ut(k,X))O(k,X,m,null,v,w,A,T,E);else break;C++}for(;C<=M&&C<=N;){const k=a[M],X=d[N]=E?Qe(d[N]):Me(d[N]);if(ut(k,X))O(k,X,m,null,v,w,A,T,E);else break;M--,N--}if(C>M){if(C<=N){const k=N+1,X=k<$?d[k].el:S;for(;C<=N;)O(null,d[C]=E?Qe(d[C]):Me(d[C]),m,X,v,w,A,T,E),C++}}else if(C>N)for(;C<=M;)$e(a[C],v,w,!0),C++;else{const k=C,X=C,Z=new Map;for(C=X;C<=N;C++){const Ee=d[C]=E?Qe(d[C]):Me(d[C]);Ee.key!=null&&Z.set(Ee.key,C)}let Q,Se=0;const he=N-X+1;let Le=!1,Ce=0;const It=new Array(he);for(C=0;C=he){$e(Ee,v,w,!0);continue}let De;if(Ee.key!=null)De=Z.get(Ee.key);else for(Q=X;Q<=N;Q++)if(It[Q-X]===0&&ut(Ee,d[Q])){De=Q;break}De===void 0?$e(Ee,v,w,!0):(It[De-X]=C+1,De>=Ce?Ce=De:Le=!0,O(Ee,d[De],m,null,v,w,A,T,E),Se++)}const qs=Le?ec(It):xt;for(Q=qs.length-1,C=he-1;C>=0;C--){const Ee=X+C,De=d[Ee],Gs=Ee+1<$?d[Ee+1].el:S;It[C]===0?O(null,De,m,Gs,v,w,A,T,E):Le&&(Q<0||C!==qs[Q]?ot(De,m,Gs,2):Q--)}}},ot=(a,d,m,S,v=null)=>{const{el:w,type:A,transition:T,children:E,shapeFlag:C}=a;if(C&6){ot(a.component.subTree,d,m,S);return}if(C&128){a.suspense.move(d,m,S);return}if(C&64){A.move(a,d,m,vt);return}if(A===xe){s(w,d,m);for(let M=0;MT.enter(w),v);else{const{leave:M,delayLeave:N,afterLeave:k}=T,X=()=>s(w,d,m),Z=()=>{M(w,()=>{X(),k&&k()})};N?N(w,X,Z):Z()}else s(w,d,m)},$e=(a,d,m,S=!1,v=!1)=>{const{type:w,props:A,ref:T,children:E,dynamicChildren:C,shapeFlag:$,patchFlag:M,dirs:N,cacheIndex:k}=a;if(M===-2&&(v=!1),T!=null&&wn(T,null,m,a,!0),k!=null&&(d.renderCache[k]=void 0),$&256){d.ctx.deactivate(a);return}const X=$&1&&N,Z=!pt(a);let Q;if(Z&&(Q=A&&A.onVnodeBeforeUnmount)&&Oe(Q,d,a),$&6)_o(a.component,m,S);else{if($&128){a.suspense.unmount(m,S);return}X&&Ve(a,null,d,"beforeUnmount"),$&64?a.type.remove(a,d,m,vt,S):C&&!C.hasOnce&&(w!==xe||M>0&&M&64)?Mt(C,d,m,!1,!0):(w===xe&&M&384||!v&&$&16)&&Mt(E,d,m),S&&Ws(a)}(Z&&(Q=A&&A.onVnodeUnmounted)||X)&&Te(()=>{Q&&Oe(Q,d,a),X&&Ve(a,null,d,"unmounted")},m)},Ws=a=>{const{type:d,el:m,anchor:S,transition:v}=a;if(d===xe){vo(m,S);return}if(d===Dt){p(a);return}const w=()=>{r(m),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(a.shapeFlag&1&&v&&!v.persisted){const{leave:A,delayLeave:T}=v,E=()=>A(m,w);T?T(a.el,w,E):E()}else w()},vo=(a,d)=>{let m;for(;a!==d;)m=y(a),r(a),a=m;r(d)},_o=(a,d,m)=>{const{bum:S,scope:v,job:w,subTree:A,um:T,m:E,a:C}=a;lr(E),lr(C),S&&kn(S),v.stop(),w&&(w.flags|=8,$e(A,a,d,m)),T&&Te(T,d),Te(()=>{a.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Mt=(a,d,m,S=!1,v=!1,w=0)=>{for(let A=w;A{if(a.shapeFlag&6)return Qt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=y(a.anchor||a.el),m=d&&d[vl];return m?y(m):d};let Vn=!1;const Ks=(a,d,m)=>{a==null?d._vnode&&$e(d._vnode,null,null,!0):O(d._vnode||null,a,d,null,null,null,m),d._vnode=a,Vn||(Vn=!0,zs(),_n(),Vn=!1)},vt={p:O,um:$e,m:ot,r:Ws,mt:se,mc:K,pc:F,pbc:_,n:Qt,o:e};let Un,Bn;return t&&([Un,Bn]=t(vt)),{render:Ks,hydrate:Un,createApp:Wl(Ks,Un)}}function Jn({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 lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ji(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Vi(e,t,n=!1){const s=e.children,r=t.children;if(B(s)&&B(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Ui(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ui(t)}function lr(e){if(e)for(let t=0;tAt(tc);function Bi(e,t){return $n(e,null,t)}function nf(e,t){return $n(e,null,{flush:"post"})}function Fe(e,t,n){return $n(e,t,n)}function $n(e,t,n=te){const{immediate:s,deep:r,flush:i,once:o}=n,l=oe({},n),c=t&&s||!t&&i!=="post";let u;if(qt){if(i==="sync"){const b=nc();u=b.__watcherHandles||(b.__watcherHandles=[])}else if(!c){const b=()=>{};return b.stop=Ue,b.resume=Ue,b.pause=Ue,b}}const f=fe;l.call=(b,P,O)=>He(b,f,P,O);let h=!1;i==="post"?l.scheduler=b=>{Te(b,f&&f.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(b,P)=>{P?b():Hs(b)}),l.augmentJob=b=>{t&&(b.flags|=4),h&&(b.flags|=2,f&&(b.id=f.uid,b.i=f))};const y=hl(e,t,l);return qt&&(u?u.push(y):c&&y()),y}function sc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?ki(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=Jt(this),l=$n(r,i.bind(s),n);return o(),l}function ki(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Pe(t)}Modifiers`]||e[`${st(t)}Modifiers`];function ic(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||te;let r=n;const i=t.startsWith("update:"),o=i&&rc(s,t.slice(7));o&&(o.trim&&(r=n.map(f=>re(f)?f.trim():f)),o.number&&(r=n.map(Eo)));let l,c=s[l=un(t)]||s[l=un(Pe(t))];!c&&i&&(c=s[l=un(st(t))]),c&&He(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(u,e,6,r)}}function Wi(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=u=>{const f=Wi(u,t,!0);f&&(l=!0,oe(o,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(B(i)?i.forEach(c=>o[c]=null):oe(o,i),ne(e)&&s.set(e,o),o)}function Dn(e,t){return!e||!Yt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function zn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:f,props:h,data:y,setupState:b,ctx:P,inheritAttrs:O}=e,G=bn(e);let U,W;try{if(n.shapeFlag&4){const p=r||s,R=p;U=Me(u.call(R,p,f,h,b,y,P)),W=l}else{const p=t;U=Me(p.length>1?p(h,{attrs:l,slots:o,emit:c}):p(h,null)),W=t.props?l:oc(l)}}catch(p){jt.length=0,Pn(p,e,1),U=de(ye)}let g=U;if(W&&O!==!1){const p=Object.keys(W),{shapeFlag:R}=g;p.length&&R&7&&(i&&p.some(Es)&&(W=lc(W,i)),g=nt(g,W,!1,!0))}return n.dirs&&(g=nt(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&kt(g,n.transition),U=g,bn(G),U}const oc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Yt(n))&&((t||(t={}))[n]=e[n]);return t},lc=(e,t)=>{const n={};for(const s in e)(!Es(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function cc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?cr(s,o,u):!!o;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function qi(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):ml(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Dt=Symbol.for("v-stc"),jt=[];let Ae=null;function _s(e=!1){jt.push(Ae=e?null:[])}function fc(){jt.pop(),Ae=jt[jt.length-1]||null}let Wt=1;function ar(e){Wt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function Gi(e){return e.dynamicChildren=Wt>0?Ae||xt:null,fc(),Wt>0&&Ae&&Ae.push(e),e}function sf(e,t,n,s,r,i){return Gi(Xi(e,t,n,s,r,i,!0))}function bs(e,t,n,s,r){return Gi(de(e,t,n,s,r,!0))}function Kt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const Yi=({key:e})=>e??null,hn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ce(e)||q(e)?{i:ve,r:e,k:t,f:!!n}:e:null);function Xi(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yi(t),ref:t&&hn(t),scopeId:hi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ve};return l?(js(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Wt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const de=uc;function uc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Ei)&&(e=ye),Kt(e)){const l=nt(e,t,!0);return n&&js(l,n),Wt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(wc(e)&&(e=e.__vccOpts),t){t=dc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Os(l)),ne(c)&&(Fs(c)&&!B(c)&&(c=oe({},c)),t.style=Rs(c))}const o=re(e)?1:Ki(e)?128:pi(e)?64:ne(e)?4:q(e)?2:0;return Xi(e,t,n,s,r,o,i,!0)}function dc(e){return e?Fs(e)||Pi(e)?oe({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?hc(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Yi(u),ref:t&&t.ref?n&&i?B(i)?i.concat(hn(t)):[i,hn(t)]:hn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&kt(f,c.clone(f)),f}function Ji(e=" ",t=0){return de(gt,null,e,t)}function rf(e,t){const n=de(Dt,null,e);return n.staticCount=t,n}function of(e="",t=!1){return t?(_s(),bs(ye,null,e)):de(ye,null,e)}function Me(e){return e==null||typeof e=="boolean"?de(ye):B(e)?de(xe,null,e.slice()):Kt(e)?Qe(e):de(gt,null,String(e))}function Qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function js(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),js(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Pi(t)?t._ctx=ve:r===3&&ve&&(ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ve},n=32):(t=String(t),s&64?(n=16,t=[Ji(t)]):n=8);e.children=t,e.shapeFlag|=n}function hc(...e){const t={};for(let n=0;nfe||ve;let Sn,ws;{const e=An(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Sn=t("__VUE_INSTANCE_SETTERS__",n=>fe=n),ws=t("__VUE_SSR_SETTERS__",n=>qt=n)}const Jt=e=>{const t=fe;return Sn(e),e.scope.on(),()=>{e.scope.off(),Sn(t)}},fr=()=>{fe&&fe.scope.off(),Sn(null)};function zi(e){return e.vnode.shapeFlag&4}let qt=!1;function yc(e,t=!1,n=!1){t&&ws(t);const{props:s,children:r}=e.vnode,i=zi(e);ql(e,s,i,t),Jl(e,r,n);const o=i?vc(e,t):void 0;return t&&ws(!1),o}function vc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Hl);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?Zi(e):null,i=Jt(e),o=Xt(s,e,0,[e.props,r]),l=Dr(o);if(it(),i(),(l||e.sp)&&!pt(e)&&wi(e),l){if(o.then(fr,fr),t)return o.then(c=>{ur(e,c,t)}).catch(c=>{Pn(c,e,0)});e.asyncDep=o}else ur(e,o,t)}else Qi(e,t)}function ur(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=ai(t)),Qi(e,n)}let dr;function Qi(e,t,n){const s=e.type;if(!e.render){if(!t&&dr&&!s.render){const r=s.template||$s(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=oe(oe({isCustomElement:i,delimiters:l},o),c);s.render=dr(r,u)}}e.render=s.render||Ue}{const r=Jt(e);rt();try{Dl(e)}finally{it(),r()}}}const _c={get(e,t){return ge(e,"get",""),e[t]}};function Zi(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,_c),slots:e.slots,emit:e.emit,expose:t}}function Vs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ai(dn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in $t)return $t[n](e)},has(t,n){return n in t||n in $t}})):e.proxy}function bc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function wc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>ul(e,t,qt);function xs(e,t,n){const s=arguments.length;return s===2?ne(t)&&!B(t)?Kt(t)?de(e,null,[t]):de(e,t):de(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Kt(n)&&(n=[n]),de(e,t,n))}const xc="3.5.12";/** +* @vue/runtime-dom v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ss;const hr=typeof window<"u"&&window.trustedTypes;if(hr)try{Ss=hr.createPolicy("vue",{createHTML:e=>e})}catch{}const eo=Ss?e=>Ss.createHTML(e):e=>e,Sc="http://www.w3.org/2000/svg",Cc="http://www.w3.org/1998/Math/MathML",ke=typeof document<"u"?document:null,pr=ke&&ke.createElement("template"),Ec={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?ke.createElementNS(Sc,e):t==="mathml"?ke.createElementNS(Cc,e):n?ke.createElement(e,{is:n}):ke.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>ke.createTextNode(e),createComment:e=>ke.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ke.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{pr.innerHTML=eo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=pr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ye="transition",Lt="animation",Gt=Symbol("_vtc"),to={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},Tc=oe({},gi,to),Ac=e=>(e.displayName="Transition",e.props=Tc,e),lf=Ac((e,{slots:t})=>xs(wl,Rc(e),t)),ct=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},gr=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Rc(e){const t={};for(const x in e)x in to||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:b=`${n}-leave-to`}=e,P=Oc(r),O=P&&P[0],G=P&&P[1],{onBeforeEnter:U,onEnter:W,onEnterCancelled:g,onLeave:p,onLeaveCancelled:R,onBeforeAppear:D=U,onAppear:j=W,onAppearCancelled:K=g}=t,I=(x,V,se)=>{at(x,V?f:l),at(x,V?u:o),se&&se()},_=(x,V)=>{x._isLeaving=!1,at(x,h),at(x,b),at(x,y),V&&V()},L=x=>(V,se)=>{const le=x?j:W,H=()=>I(V,x,se);ct(le,[V,H]),mr(()=>{at(V,x?c:i),Xe(V,x?f:l),gr(le)||yr(V,s,O,H)})};return oe(t,{onBeforeEnter(x){ct(U,[x]),Xe(x,i),Xe(x,o)},onBeforeAppear(x){ct(D,[x]),Xe(x,c),Xe(x,u)},onEnter:L(!1),onAppear:L(!0),onLeave(x,V){x._isLeaving=!0;const se=()=>_(x,V);Xe(x,h),Xe(x,y),Pc(),mr(()=>{x._isLeaving&&(at(x,h),Xe(x,b),gr(p)||yr(x,s,G,se))}),ct(p,[x,se])},onEnterCancelled(x){I(x,!1),ct(g,[x])},onAppearCancelled(x){I(x,!0),ct(K,[x])},onLeaveCancelled(x){_(x),ct(R,[x])}})}function Oc(e){if(e==null)return null;if(ne(e))return[Qn(e.enter),Qn(e.leave)];{const t=Qn(e);return[t,t]}}function Qn(e){return To(e)}function Xe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Gt]||(e[Gt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Gt];n&&(n.delete(t),n.size||(e[Gt]=void 0))}function mr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Mc=0;function yr(e,t,n,s){const r=e._endId=++Mc,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=Ic(e,t);if(!o)return s();const u=o+"end";let f=0;const h=()=>{e.removeEventListener(u,y),i()},y=b=>{b.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[P]||"").split(", "),r=s(`${Ye}Delay`),i=s(`${Ye}Duration`),o=vr(r,i),l=s(`${Lt}Delay`),c=s(`${Lt}Duration`),u=vr(l,c);let f=null,h=0,y=0;t===Ye?o>0&&(f=Ye,h=o,y=i.length):t===Lt?u>0&&(f=Lt,h=u,y=c.length):(h=Math.max(o,u),f=h>0?o>u?Ye:Lt:null,y=f?f===Ye?i.length:c.length:0);const b=f===Ye&&/\b(transform|all)(,|$)/.test(s(`${Ye}Property`).toString());return{type:f,timeout:h,propCount:y,hasTransform:b}}function vr(e,t){for(;e.length_r(n)+_r(e[s])))}function _r(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Pc(){return document.body.offsetHeight}function Lc(e,t,n){const s=e[Gt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const br=Symbol("_vod"),Nc=Symbol("_vsh"),Fc=Symbol(""),Hc=/(^|;)\s*display\s*:/;function $c(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&pn(s,l,"")}else for(const o in t)n[o]==null&&pn(s,o,"");for(const o in n)o==="display"&&(i=!0),pn(s,o,n[o])}else if(r){if(t!==n){const o=s[Fc];o&&(n+=";"+o),s.cssText=n,i=Hc.test(n)}}else t&&e.removeAttribute("style");br in e&&(e[br]=i?s.display:"",e[Nc]&&(s.display="none"))}const wr=/\s*!important$/;function pn(e,t,n){if(B(n))n.forEach(s=>pn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Dc(e,t);wr.test(n)?e.setProperty(st(s),n.replace(wr,""),"important"):e[s]=n}}const xr=["Webkit","Moz","ms"],Zn={};function Dc(e,t){const n=Zn[t];if(n)return n;let s=Pe(t);if(s!=="filter"&&s in e)return Zn[t]=s;s=Tn(s);for(let r=0;res||(kc.then(()=>es=0),es=Date.now());function Kc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(qc(s,n.value),t,5,[s])};return n.value=e,n.attached=Wc(),n}function qc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Rr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Gc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Lc(e,s,o):t==="style"?$c(e,n,s):Yt(t)?Es(t)||Uc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Yc(e,t,s,o))?(Er(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Cr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Er(e,Pe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Cr(e,t,s,o))};function Yc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Rr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Rr(t)&&re(n)?!1:t in e}const Xc=["ctrl","shift","alt","meta"],Jc={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)=>Xc.some(n=>e[`${n}Key`]&&!t.includes(n))},cf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||zc[o]===i))return e(r)})},Qc=oe({patchProp:Gc},Ec);let ts,Or=!1;function Zc(){return ts=Or?ts:Ql(Qc),Or=!0,ts}const ff=(...e)=>{const t=Zc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=ta(s);if(r)return n(r,!0,ea(r))},t};function ea(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ta(e){return re(e)?document.querySelector(e):e}const uf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},na=window.__VP_SITE_DATA__;function Us(e){return Kr()?(Fo(e),!0):!1}function tt(e){return typeof e=="function"?e():ci(e)}const no=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const sa=Object.prototype.toString,ra=e=>sa.call(e)==="[object Object]",so=()=>{},Mr=ia();function ia(){var e,t;return no&&((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 oa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const ro=e=>e();function la(e=ro){const t=ue(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:In(t),pause:n,resume:s,eventFilter:r}}function ca(e){return jn()}function io(...e){if(e.length!==1)return cl(...e);const t=e[0];return typeof t=="function"?In(il(()=>({get:t,set:so}))):ue(t)}function aa(e,t,n={}){const{eventFilter:s=ro,...r}=n;return Fe(e,oa(s,t),r)}function fa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=la(s);return{stop:aa(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Bs(e,t=!0,n){ca()?Ot(e,n):t?e():Ln(e)}const Ke=no?window:void 0;function oo(e){var t;const n=tt(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Rt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=Ke):[t,n,s,r]=e,!t)return so;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(f=>f()),i.length=0},l=(f,h,y,b)=>(f.addEventListener(h,y,b),()=>f.removeEventListener(h,y,b)),c=Fe(()=>[oo(t),tt(r)],([f,h])=>{if(o(),!f)return;const y=ra(h)?{...h}:h;i.push(...n.flatMap(b=>s.map(P=>l(f,b,P,y))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return Us(u),u}function ua(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function df(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=Ke,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=ua(t);return Rt(r,i,f=>{f.repeat&&tt(l)||c(f)&&n(f)},o)}function da(){const e=ue(!1),t=jn();return t&&Ot(()=>{e.value=!0},t),e}function ha(e){const t=da();return ie(()=>(t.value,!!e()))}function lo(e,t={}){const{window:n=Ke}=t,s=ha(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=ue(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Bi(()=>{s.value&&(l(),r=n.matchMedia(tt(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Us(()=>{c(),l(),r=void 0}),i}const ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cn="__vueuse_ssr_handlers__",pa=ga();function ga(){return cn in ln||(ln[cn]=ln[cn]||{}),ln[cn]}function co(e,t){return pa[e]||t}function ks(e){return lo("(prefers-color-scheme: dark)",e)}function ma(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 ya={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()}},Ir="vueuse-storage";function va(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:h=Ke,eventFilter:y,onError:b=_=>{console.error(_)},initOnMounted:P}=s,O=(f?oi:ue)(typeof t=="function"?t():t);if(!n)try{n=co("getDefaultStorage",()=>{var _;return(_=Ke)==null?void 0:_.localStorage})()}catch(_){b(_)}if(!n)return O;const G=tt(t),U=ma(G),W=(r=s.serializer)!=null?r:ya[U],{pause:g,resume:p}=fa(O,()=>D(O.value),{flush:i,deep:o,eventFilter:y});h&&l&&Bs(()=>{n instanceof Storage?Rt(h,"storage",K):Rt(h,Ir,I),P&&K()}),P||K();function R(_,L){if(h){const x={key:e,oldValue:_,newValue:L,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Ir,{detail:x}))}}function D(_){try{const L=n.getItem(e);if(_==null)R(L,null),n.removeItem(e);else{const x=W.write(_);L!==x&&(n.setItem(e,x),R(L,x))}}catch(L){b(L)}}function j(_){const L=_?_.newValue:n.getItem(e);if(L==null)return c&&G!=null&&n.setItem(e,W.write(G)),G;if(!_&&u){const x=W.read(L);return typeof u=="function"?u(x,G):U==="object"&&!Array.isArray(x)?{...G,...x}:x}else return typeof L!="string"?L:W.read(L)}function K(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){O.value=G;return}if(!(_&&_.key!==e)){g();try{(_==null?void 0:_.newValue)!==W.write(O.value)&&(O.value=j(_))}catch(L){b(L)}finally{_?Ln(p):p()}}}}function I(_){K(_.detail)}return O}const _a="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function ba(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=Ke,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=ks({window:r}),b=ie(()=>y.value?"dark":"light"),P=c||(o==null?io(s):va(o,s,i,{window:r,listenToStorageChanges:l})),O=ie(()=>P.value==="auto"?b.value:P.value),G=co("updateHTMLAttrs",(p,R,D)=>{const j=typeof p=="string"?r==null?void 0:r.document.querySelector(p):oo(p);if(!j)return;const K=new Set,I=new Set;let _=null;if(R==="class"){const x=D.split(/\s/g);Object.values(h).flatMap(V=>(V||"").split(/\s/g)).filter(Boolean).forEach(V=>{x.includes(V)?K.add(V):I.add(V)})}else _={key:R,value:D};if(K.size===0&&I.size===0&&_===null)return;let L;f&&(L=r.document.createElement("style"),L.appendChild(document.createTextNode(_a)),r.document.head.appendChild(L));for(const x of K)j.classList.add(x);for(const x of I)j.classList.remove(x);_&&j.setAttribute(_.key,_.value),f&&(r.getComputedStyle(L).opacity,document.head.removeChild(L))});function U(p){var R;G(t,n,(R=h[p])!=null?R:p)}function W(p){e.onChanged?e.onChanged(p,U):U(p)}Fe(O,W,{flush:"post",immediate:!0}),Bs(()=>W(O.value));const g=ie({get(){return u?P.value:O.value},set(p){P.value=p}});try{return Object.assign(g,{store:P,system:b,state:O})}catch{return g}}function wa(e={}){const{valueDark:t="dark",valueLight:n="",window:s=Ke}=e,r=ba({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:ks({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function ns(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function ao(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 ss=new WeakMap;function hf(e,t=!1){const n=ue(t);let s=null,r="";Fe(io(e),l=>{const c=ns(tt(l));if(c){const u=c;if(ss.get(u)||ss.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(r=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=ns(tt(e));!l||n.value||(Mr&&(s=Rt(l,"touchmove",c=>{xa(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ns(tt(e));!l||!n.value||(Mr&&(s==null||s()),l.style.overflow=r,ss.delete(l),n.value=!1)};return Us(o),ie({get(){return n.value},set(l){l?i():o()}})}function pf(e={}){const{window:t=Ke,behavior:n="auto"}=e;if(!t)return{x:ue(0),y:ue(0)};const s=ue(t.scrollX),r=ue(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Rt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function gf(e={}){const{window:t=Ke,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=ue(n),c=ue(s),u=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(u(),Bs(u),Rt("resize",u,{passive:!0}),r){const f=lo("(orientation: portrait)");Fe(f,()=>u())}return{width:l,height:c}}const rs={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var is={};const fo=/^(?:[a-z]+:|\/\/)/i,Sa="vitepress-theme-appearance",Ca=/#.*$/,Ea=/[?#].*$/,Ta=/(?:(^|\/)index)?\.(?:md|html)$/,pe=typeof document<"u",uo={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Aa(e,t,n=!1){if(t===void 0)return!1;if(e=Pr(`/${e}`),n)return new RegExp(t).test(e);if(Pr(t)!==e)return!1;const s=t.match(Ca);return s?(pe?location.hash:"")===s[0]:!0}function Pr(e){return decodeURI(e).replace(Ea,"").replace(Ta,"$1")}function Ra(e){return fo.test(e)}function Oa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ra(n)&&Aa(t,`/${n}/`,!0))||"root"}function Ma(e,t){var s,r,i,o,l,c,u;const n=Oa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:po(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function ho(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Ia(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Ia(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Pa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function po(e,t){return[...e.filter(n=>!Pa(t,n)),...t]}const La=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Na=/^[a-z]:/i;function Lr(e){const t=Na.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(La,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const os=new Set;function Fa(e){if(os.size===0){const n=typeof process=="object"&&(is==null?void 0:is.VITE_EXTRA_EXTENSIONS)||(rs==null?void 0:rs.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>os.add(s))}const t=e.split(".").pop();return t==null||!os.has(t.toLowerCase())}const Ha=Symbol(),mt=oi(na);function mf(e){const t=ie(()=>Ma(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?ue(!0):n==="force-auto"?ks():n?wa({storageKey:Sa,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):ue(!1),r=ue(pe?location.hash:"");return pe&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=pe?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>ho(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function $a(){const e=At(Ha);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Da(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Nr(e){return fo.test(e)||!e.startsWith("/")?e:Da(mt.value.base,e)}function ja(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),pe){const n="/";t=Lr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Lr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let gn=[];function yf(e){gn.push(e),Hn(()=>{gn=gn.filter(t=>t!==e)})}function Va(){let e=mt.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=Fr(e,n);else if(Array.isArray(e))for(const s of e){const r=Fr(s,n);if(r){t=r;break}}return t}function Fr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ua=Symbol(),go="http://a.com",Ba=()=>({path:"/",component:null,data:uo});function vf(e,t){const n=Mn(Ba()),s={route:n,go:r};async function r(l=pe?location.href:"/"){var c,u;l=ls(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(pe&&l!==ls(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let i=null;async function o(l,c=0,u=!1){var y,b;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const f=new URL(l,go),h=i=f.pathname;try{let P=await e(h);if(!P)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:O,__pageData:G}=P;if(!O)throw new Error(`Invalid route component: ${O}`);await((b=s.onAfterPageLoad)==null?void 0:b.call(s,l)),n.path=pe?h:Nr(h),n.component=dn(O),n.data=dn(G),pe&&Ln(()=>{let U=mt.value.base+G.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!U.endsWith("/")&&(U+=".html"),U!==f.pathname&&(f.pathname=U,l=U+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(g){console.warn(g)}if(W){Hr(W,f.hash);return}}window.scrollTo(0,c)})}}catch(P){if(!/fetch|Page not found/.test(P.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(P),!u)try{const O=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await O.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=pe?h:Nr(h),n.component=t?dn(t):null;const O=pe?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...uo,relativePath:O}}}}return pe&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:f,origin:h,pathname:y,hash:b,search:P}=new URL(u,c.baseURI),O=new URL(location.href);h===O.origin&&Fa(y)&&(l.preventDefault(),y===O.pathname&&P===O.search?(b!==O.hash&&(history.pushState({},"",f),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:O.href,newURL:f}))),b?Hr(c,b,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(f))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(ls(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ka(){const e=At(Ua);if(!e)throw new Error("useRouter() is called without provider.");return e}function mo(){return ka().route}function Hr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Va()+i;requestAnimationFrame(r)}}function ls(e){const t=new URL(e,go);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.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 an=()=>gn.forEach(e=>e()),_f=bi({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=mo(),{frontmatter:n,site:s}=$a();return Fe(n,an,{deep:!0,flush:"post"}),()=>xs(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?xs(t.component,{onVnodeMounted:an,onVnodeUpdated:an,onVnodeUnmounted:an}):"404 Page Not Found"])}}),bf=bi({setup(e,{slots:t}){const n=ue(!1);return Ot(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function wf(){pe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function xf(){if(pe){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),Wa(u).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 Wa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Sf(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=cs(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(cs);s.forEach((l,c)=>{const u=o.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Bi(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=ho(o,i);u!==document.title&&(document.title=u);const f=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):cs(["meta",{name:"description",content:f}]),r(po(o.head,qa(c)))})}function cs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function Ka(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function qa(e){return e.filter(t=>!Ka(t))}const as=new Set,yo=()=>document.createElement("link"),Ga=e=>{const t=yo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ya=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let fn;const Xa=pe&&(fn=yo())&&fn.relList&&fn.relList.supports&&fn.relList.supports("prefetch")?Ga:Ya;function Cf(){if(!pe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!as.has(c)){as.add(c);const u=ja(c);u&&Xa(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):as.add(l))})})};Ot(s);const r=mo();Fe(()=>r.path,s),Hn(()=>{n&&n.disconnect()})}export{tf as $,Va as A,Ja as B,Qa as C,oi as D,yf as E,xe as F,de as G,za as H,fo as I,mo as J,hc as K,At as L,gf as M,Rs as N,df as O,Ln as P,pf as Q,pe as R,In as S,lf as T,hf as U,Kl as V,af as W,ef as X,Si as Y,cf as Z,uf as _,Ji as a,rf as a0,Sf as a1,Ua as a2,mf as a3,Ha as a4,_f as a5,bf as a6,mt as a7,ff as a8,vf as a9,ja as aa,Cf as ab,xf as ac,wf as ad,xs as ae,bs as b,sf as c,bi as d,of as e,Fa as f,Nr as g,ie as h,Ra as i,Xi as j,ci as k,Aa as l,lo as m,Os as n,_s as o,ue as p,Fe as q,Za as r,Bi as s,Lo as t,$a as u,Ot as v,yl as w,Hn as x,nf as y,Il as z}; diff --git a/assets/chunks/theme.sAfGMW6S.js b/assets/chunks/theme.sAfGMW6S.js new file mode 100644 index 000000000..080a18936 --- /dev/null +++ b/assets/chunks/theme.sAfGMW6S.js @@ -0,0 +1 @@ +import{d as m,o as a,c as u,r as c,n as N,a as z,t as M,b as k,w as p,e as h,T as ce,_ as b,u as Ae,i as Be,f as Ce,g as ue,h as $,j as v,k as r,l as W,m as ae,p as T,q as D,s as Q,v as j,x as de,y as ve,z as Ee,A as Fe,B as q,F as w,C as B,D as ge,E as X,G as _,H as E,I as $e,J as Z,K as U,L as x,M as De,N as ye,O as Oe,P as Pe,Q as Le,R as ee,S as Ge,U as Ve,V as Se,W as Ue,X as je,Y as ze,Z as We,$ as qe}from"./framework.CGHvQLJz.js";const Ke=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:N(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[z(M(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Re=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),k(ce,{name:"fade"},{default:p(()=>[e.show?(a(),u("div",Je)):h("",!0)]),_:1}))}}),Ye=b(Re,[["__scopeId","data-v-ad108c61"]]),P=Ae;function Qe(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function re(s){return/^\//.test(s)?s:`/${s}`}function pe(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(Be(s)||s.startsWith("#")||!n.startsWith("http")||!Ce(e))return s;const{site:i}=P(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${o}`);return ue(l)}function J({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:i}=P(),l=$(()=>{var d,y;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((y=e.value.locales[t.value])==null?void 0:y.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:$(()=>Object.entries(e.value.locales).flatMap(([d,y])=>l.value.label===y.label?[]:{text:y.label,link:Xe(y.link||(d==="root"?"/":`/${d}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function Xe(s,e,t,o){return e?s.replace(/\/$/,"")+re(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const Ze={class:"NotFound"},xe={class:"code"},et={class:"title"},tt={class:"quote"},nt={class:"action"},ot=["href","aria-label"],st=m({__name:"NotFound",setup(s){const{theme:e}=P(),{currentLang:t}=J();return(o,n)=>{var i,l,f,d,y;return a(),u("div",Ze,[v("p",xe,M(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",et,M(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=v("div",{class:"divider"},null,-1)),v("blockquote",tt,M(((f=r(e).notFound)==null?void 0:f.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",nt,[v("a",{class:"link",href:r(ue)(r(t).link),"aria-label":((d=r(e).notFound)==null?void 0:d.linkLabel)??"go to home"},M(((y=r(e).notFound)==null?void 0:y.linkText)??"Take me home"),9,ot)])])}}}),at=b(st,[["__scopeId","data-v-b4a4aa55"]]);function Te(s,e){if(Array.isArray(s))return R(s);if(s==null)return[];e=re(e);const t=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(re(n))),o=t?s[t]:[];return Array.isArray(o)?R(o):R(o.items,o.base)}function rt(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function it(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function ie(s,e){return Array.isArray(e)?e.some(t=>ie(s,t)):W(s,e.link)?!0:e.items?ie(s,e.items):!1}function R(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=R(o.items,n)),o})}function O(){const{frontmatter:s,page:e,theme:t}=P(),o=ae("(min-width: 960px)"),n=T(!1),i=$(()=>{const A=t.value.sidebar,S=e.value.relativePath;return A?Te(A,S):[]}),l=T(i.value);D(i,(A,S)=>{JSON.stringify(A)!==JSON.stringify(S)&&(l.value=i.value)});const f=$(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),d=$(()=>y?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),y=$(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),L=$(()=>f.value&&o.value),g=$(()=>f.value?rt(l.value):[]);function V(){n.value=!0}function I(){n.value=!1}function H(){n.value?I():V()}return{isOpen:n,sidebar:l,sidebarGroups:g,hasSidebar:f,hasAside:y,leftAside:d,isSidebarEnabled:L,open:V,close:I,toggle:H}}function lt(s,e){let t;Q(()=>{t=s.value?document.activeElement:void 0}),j(()=>{window.addEventListener("keyup",o)}),de(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function ct(s){const{page:e,hash:t}=P(),o=T(!1),n=$(()=>s.value.collapsed!=null),i=$(()=>!!s.value.link),l=T(!1),f=()=>{l.value=W(e.value.relativePath,s.value.link)};D([e,s,t],f),j(f);const d=$(()=>l.value?!0:s.value.items?ie(e.value.relativePath,s.value.items):!1),y=$(()=>!!(s.value.items&&s.value.items.length));Q(()=>{o.value=!!(n.value&&s.value.collapsed)}),ve(()=>{(l.value||d.value)&&(o.value=!1)});function L(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:d,hasChildren:y,toggle:L}}function ut(){const{hasSidebar:s}=O(),e=ae("(min-width: 960px)"),t=ae("(min-width: 1280px)");return{isAsideEnabled:$(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const le=[];function Ne(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function fe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:dt(t),link:"#"+t.id,level:o}});return vt(e,s)}function dt(s){let e="";for(const t of s.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 vt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return ht(s,o,n)}function pt(s,e){const{isAsideEnabled:t}=ut(),o=Qe(i,100);let n=null;j(()=>{requestAnimationFrame(i),window.addEventListener("scroll",o)}),Ee(()=>{l(location.hash)}),de(()=>{window.removeEventListener("scroll",o)});function i(){if(!t.value)return;const f=window.scrollY,d=window.innerHeight,y=document.body.offsetHeight,L=Math.abs(f+d-y)<1,g=le.map(({element:I,link:H})=>({link:H,top:ft(I)})).filter(({top:I})=>!Number.isNaN(I)).sort((I,H)=>I.top-H.top);if(!g.length){l(null);return}if(f<1){l(null);return}if(L){l(g[g.length-1].link);return}let V=null;for(const{link:I,top:H}of g){if(H>f+Fe()+4)break;V=I}l(V)}function l(f){n&&n.classList.remove("active"),f==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(f)}"]`);const d=n;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function ft(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function ht(s,e,t){le.length=0;const o=[],n=[];return s.forEach(i=>{const l={...i,children:[]};let f=n[n.length-1];for(;f&&f.level>=l.level;)n.pop(),f=n[n.length-1];if(l.element.classList.contains("ignore-header")||f&&"shouldIgnore"in f){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=q("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(w,null,B(t.headers,({children:i,link:l,title:f})=>(a(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:e,title:f},M(f),9,mt),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Me=b(_t,[["__scopeId","data-v-fe88e948"]]),kt={class:"content"},bt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},gt=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=P(),o=ge([]);X(()=>{o.value=fe(e.value.outline??t.value.outline)});const n=T(),i=T();return pt(n,i),(l,f)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[v("div",kt,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",bt,M(r(Ne)(r(t))),1),_(Me,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),$t=b(gt,[["__scopeId","data-v-b0a37e16"]]),yt={class:"VPDocAsideCarbonAds"},Pt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",yt,[_(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Lt={class:"VPDocAside"},Vt=m({__name:"VPDocAside",setup(s){const{theme:e}=P();return(t,o)=>(a(),u("div",Lt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),_($t),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=v("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(Pt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),St=b(Vt,[["__scopeId","data-v-1b9b814f"]]);function Tt(){const{theme:s,page:e}=P();return $(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Nt(){const{page:s,theme:e,frontmatter:t}=P();return $(()=>{var y,L,g,V,I,H,A,S;const o=Te(e.value.sidebar,s.value.relativePath),n=it(o),i=Mt(n,C=>C.link.replace(/[?#].*$/,"")),l=i.findIndex(C=>W(s.value.relativePath,C.link)),f=((y=e.value.docFooter)==null?void 0:y.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:f?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((g=i[l-1])==null?void 0:g.docFooterText)??((V=i[l-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((I=i[l-1])==null?void 0:I.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((H=i[l+1])==null?void 0:H.docFooterText)??((A=i[l+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[l+1])==null?void 0:S.link)}}})}function Mt(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=$(()=>e.tag??(e.href?"a":"span")),o=$(()=>e.href&&$e.test(e.href)||e.target==="_blank");return(n,i)=>(a(),k(E(t.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(pe)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:p(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),It={class:"VPLastUpdated"},wt=["datetime"],Ht=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=P(),n=$(()=>new Date(t.value.lastUpdated)),i=$(()=>n.value.toISOString()),l=T("");return j(()=>{Q(()=>{var f,d,y;l.value=new Intl.DateTimeFormat((d=(f=e.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&d.forceLocale?o.value:void 0,((y=e.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(f,d)=>{var y;return a(),u("p",It,[z(M(((y=r(e).lastUpdated)==null?void 0:y.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:i.value},M(l.value),9,wt)])}}}),At=b(Ht,[["__scopeId","data-v-5910f7e6"]]),Bt={key:0,class:"VPDocFooter"},Ct={key:0,class:"edit-info"},Et={key:0,class:"edit-link"},Ft={key:1,class:"last-updated"},Dt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ot={class:"pager"},Gt=["innerHTML"],Ut=["innerHTML"],jt={class:"pager"},zt=["innerHTML"],Wt=["innerHTML"],qt=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=P(),n=Tt(),i=Nt(),l=$(()=>e.value.editLink&&o.value.editLink!==!1),f=$(()=>t.value.lastUpdated),d=$(()=>l.value||f.value||i.value.prev||i.value.next);return(y,L)=>{var g,V,I,H;return d.value?(a(),u("footer",Bt,[c(y.$slots,"doc-footer-before",{},void 0,!0),l.value||f.value?(a(),u("div",Ct,[l.value?(a(),u("div",Et,[_(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:p(()=>[L[0]||(L[0]=v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+M(r(n).text),1)]),_:1},8,["href"])])):h("",!0),f.value?(a(),u("div",Ft,[_(At)])):h("",!0)])):h("",!0),(g=r(i).prev)!=null&&g.link||(V=r(i).next)!=null&&V.link?(a(),u("nav",Dt,[L[1]||(L[1]=v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),v("div",Ot,[(I=r(i).prev)!=null&&I.link?(a(),k(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:p(()=>{var A;return[v("span",{class:"desc",innerHTML:((A=r(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,Gt),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,Ut)]}),_:1},8,["href"])):h("",!0)]),v("div",jt,[(H=r(i).next)!=null&&H.link?(a(),k(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:p(()=>{var A;return[v("span",{class:"desc",innerHTML:((A=r(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,zt),v("span",{class:"title",innerHTML:r(i).next.text},null,8,Wt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Kt=b(qt,[["__scopeId","data-v-adb6f4a6"]]),Jt={class:"container"},Rt={class:"aside-container"},Yt={class:"aside-content"},Qt={class:"content"},Xt={class:"content-container"},Zt={class:"main"},xt=m({__name:"VPDoc",setup(s){const{theme:e}=P(),t=Z(),{hasSidebar:o,hasAside:n,leftAside:i}=O(),l=$(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,d)=>{const y=q("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(f.$slots,"doc-top",{},void 0,!0),v("div",Jt,[r(n)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[d[0]||(d[0]=v("div",{class:"aside-curtain"},null,-1)),v("div",Rt,[v("div",Yt,[_(St,null,{"aside-top":p(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),v("div",Qt,[v("div",Xt,[c(f.$slots,"doc-before",{},void 0,!0),v("main",Zt,[_(y,{class:N(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(Kt,null,{"doc-footer-before":p(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(f.$slots,"doc-after",{},void 0,!0)])])]),c(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),en=b(xt,[["__scopeId","data-v-ebc4b343"]]),tn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=$(()=>e.href&&$e.test(e.href)),o=$(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(a(),k(E(o.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(pe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:p(()=>[z(M(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),nn=b(tn,[["__scopeId","data-v-25c615d3"]]),on=["src","alt"],sn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=q("VPImage",!0);return e.image?(a(),u(w,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",U({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,on)):(a(),u(w,{key:1},[_(o,U({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(o,U({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Y=b(sn,[["__scopeId","data-v-bee8f0e0"]]),an={class:"container"},rn={class:"main"},ln={key:0,class:"name"},cn=["innerHTML"],un=["innerHTML"],dn=["innerHTML"],vn={key:0,class:"actions"},pn={key:0,class:"image"},fn={class:"image-container"},hn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=x("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[v("div",an,[v("div",rn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",ln,[v("span",{innerHTML:t.name,class:"clip"},null,8,cn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,un)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,dn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",vn,[(a(!0),u(w,null,B(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[_(nn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",pn,[v("div",fn,[o[0]||(o[0]=v("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Y,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),mn=b(hn,[["__scopeId","data-v-284a0e6d"]]),_n=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=P();return(t,o)=>r(e).hero?(a(),k(mn,{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":p(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),kn={class:"box"},bn={key:0,class:"icon"},gn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:4,class:"link-text"},Ln={class:"link-text-value"},Vn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),k(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:p(()=>[v("article",kn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",bn,[_(Y,{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(),k(Y,{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(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,gn)):h("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,$n),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,yn)):h("",!0),e.linkText?(a(),u("div",Pn,[v("p",Ln,[z(M(e.linkText)+" ",1),t[0]||(t[0]=v("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Sn=b(Vn,[["__scopeId","data-v-a1afa55c"]]),Tn={key:0,class:"VPFeatures"},Nn={class:"container"},Mn={class:"items"},In=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=$(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",Tn,[v("div",Nn,[v("div",Mn,[(a(!0),u(w,null,B(o.features,i=>(a(),u("div",{key:i.title,class:N(["item",[t.value]])},[_(Sn,{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))])])])):h("",!0)}}),wn=b(In,[["__scopeId","data-v-dc93de81"]]),Hn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=P();return(t,o)=>r(e).features?(a(),k(wn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),An=m({__name:"VPHomeContent",setup(s){const{width:e}=De({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:ye(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Bn=b(An,[["__scopeId","data-v-54c7f21e"]]),Cn={class:"VPHome"},En=m({__name:"VPHome",setup(s){const{frontmatter:e}=P();return(t,o)=>{const n=q("Content");return a(),u("div",Cn,[c(t.$slots,"home-hero-before",{},void 0,!0),_(_n,null,{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),_(Hn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(Bn,{key:0},{default:p(()=>[_(n)]),_:1})):(a(),k(n,{key:1}))])}}}),Fn=b(En,[["__scopeId","data-v-37e2fff1"]]),Dn={},On={class:"VPPage"};function Gn(s,e){const t=q("Content");return a(),u("div",On,[c(s.$slots,"page-top"),_(t),c(s.$slots,"page-bottom")])}const Un=b(Dn,[["render",Gn]]),jn=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=P(),{hasSidebar:o}=O();return(n,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(o),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[_(at)],!0):r(t).layout==="page"?(a(),k(Un,{key:1},{"page-top":p(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(Fn,{key:2},{"home-hero-before":p(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(E(r(t).layout),{key:3})):(a(),k(en,{key:4},{"doc-top":p(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),zn=b(jn,[["__scopeId","data-v-dc605918"]]),Wn={class:"container"},qn=["innerHTML"],Kn=["innerHTML"],Jn=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:o}=O();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(o)}])},[v("div",Wn,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,qn)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Kn)):h("",!0)])],2)):h("",!0)}}),Rn=b(Jn,[["__scopeId","data-v-a8ce4c99"]]);function Yn(){const{theme:s,frontmatter:e}=P(),t=ge([]),o=$(()=>t.value.length>0);return X(()=>{t.value=fe(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const Qn={class:"menu-text"},Xn={class:"header"},Zn={class:"outline"},xn=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=P(),o=T(!1),n=T(0),i=T(),l=T();function f(g){var V;(V=i.value)!=null&&V.contains(g.target)||(o.value=!1)}D(o,g=>{if(g){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),Oe("Escape",()=>{o.value=!1}),X(()=>{o.value=!1});function d(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function y(g){g.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Pe(()=>{o.value=!1}))}function L(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(g,V)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:ye({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[g.headers.length>0?(a(),u("button",{key:0,onClick:d,class:N({open:o.value})},[v("span",Qn,M(r(Ne)(r(t))),1),V[0]||(V[0]=v("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},M(r(t).returnToTopLabel||"Return to top"),1)),_(ce,{name:"flyout"},{default:p(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:y},[v("div",Xn,[v("a",{class:"top-link",href:"#",onClick:L},M(r(t).returnToTopLabel||"Return to top"),1)]),v("div",Zn,[_(Me,{headers:g.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),eo=b(xn,[["__scopeId","data-v-df54f306"]]),to={class:"container"},no=["aria-expanded"],oo={class:"menu-text"},so=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:o}=O(),{headers:n}=Yn(),{y:i}=Le(),l=T(0);j(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),X(()=>{n.value=fe(t.value.outline??e.value.outline)});const f=$(()=>n.value.length===0),d=$(()=>f.value&&!o.value),y=$(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:f.value,fixed:d.value}));return(L,g)=>r(t).layout!=="home"&&(!d.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(y.value)},[v("div",to,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:g[0]||(g[0]=V=>L.$emit("open-menu"))},[g[1]||(g[1]=v("span",{class:"vpi-align-left menu-icon"},null,-1)),v("span",oo,M(r(e).sidebarMenuLabel||"Menu"),1)],8,no)):h("",!0),_(eo,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ao=b(so,[["__scopeId","data-v-1b4e439d"]]);function ro(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=Z();return D(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const io={},lo={class:"VPSwitch",type:"button",role:"switch"},co={class:"check"},uo={key:0,class:"icon"};function vo(s,e){return a(),u("button",lo,[v("span",co,[s.$slots.default?(a(),u("span",uo,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const po=b(io,[["render",vo],["__scopeId","data-v-29548788"]]),fo=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=P(),o=x("toggle-appearance",()=>{e.value=!e.value}),n=T("");return ve(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),k(po,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(o)},{default:p(()=>l[0]||(l[0]=[v("span",{class:"vpi-sun sun"},null,-1),v("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),he=b(fo,[["__scopeId","data-v-bb2093b3"]]),ho={key:0,class:"VPNavBarAppearance"},mo=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=P();return(t,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",ho,[_(he)])):h("",!0)}}),_o=b(mo,[["__scopeId","data-v-1c28547c"]]),me=T();let Ie=!1,se=0;function ko(s){const e=T(!1);if(ee){!Ie&&bo(),se++;const t=D(me,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});de(()=>{t(),se--,se||go()})}return Ge(e)}function bo(){document.addEventListener("focusin",we),Ie=!0,me.value=document.activeElement}function go(){document.removeEventListener("focusin",we)}function we(){me.value=document.activeElement}const $o={class:"VPMenuLink"},yo=["innerHTML"],Po=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,o)=>(a(),u("div",$o,[_(F,{class:N({active:r(W)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,yo)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=b(Po,[["__scopeId","data-v-73afe1df"]]),Lo={class:"VPMenuGroup"},Vo={key:0,class:"title"},So=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Lo,[e.text?(a(),u("p",Vo,M(e.text),1)):h("",!0),(a(!0),u(w,null,B(e.items,o=>(a(),u(w,null,["link"in o?(a(),k(te,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),To=b(So,[["__scopeId","data-v-fc45ab19"]]),No={class:"VPMenu"},Mo={key:0,class:"items"},Io=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",No,[e.items?(a(),u("div",Mo,[(a(!0),u(w,null,B(e.items,o=>(a(),u(w,{key:JSON.stringify(o)},["link"in o?(a(),k(te,{key:0,item:o},null,8,["item"])):"component"in o?(a(),k(E(o.component),U({key:1,ref_for:!0},o.props),null,16)):(a(),k(To,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),wo=b(Io,[["__scopeId","data-v-1619635d"]]),Ho=["aria-expanded","aria-label"],Ao={key:0,class:"text"},Bo=["innerHTML"],Co={key:1,class:"vpi-more-horizontal icon"},Eo={class:"menu"},Fo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();ko({el:t,onBlur:o});function o(){e.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Ao,[n.icon?(a(),u("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Bo)):h("",!0),i[3]||(i[3]=v("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Co))],8,Ho),v("div",Eo,[_(wo,{items:n.items},{default:p(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=b(Fo,[["__scopeId","data-v-a47cf8ed"]]),Do=["href","aria-label","innerHTML"],Oo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=T();j(async()=>{var i;await Pe();const n=(i=t.value)==null?void 0:i.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const o=$(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,i)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:o.value},null,8,Do))}}),Go=b(Oo,[["__scopeId","data-v-0b647ba7"]]),Uo={class:"VPSocialLinks"},jo=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",Uo,[(a(!0),u(w,null,B(e.links,({link:o,icon:n,ariaLabel:i})=>(a(),k(Go,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ke=b(jo,[["__scopeId","data-v-f5fed8be"]]),zo={key:0,class:"group translations"},Wo={class:"trans-title"},qo={key:1,class:"group"},Ko={class:"item appearance"},Jo={class:"label"},Ro={class:"appearance-action"},Yo={key:2,class:"group"},Qo={class:"item social-links"},Xo=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=P(),{localeLinks:o,currentLang:n}=J({correspondingLink:!0}),i=$(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,f)=>i.value?(a(),k(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[r(o).length&&r(n).label?(a(),u("div",zo,[v("p",Wo,M(r(n).label),1),(a(!0),u(w,null,B(r(o),d=>(a(),k(te,{key:d.link,item:d},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",qo,[v("div",Ko,[v("p",Jo,M(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",Ro,[_(he)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Yo,[v("div",Qo,[_(ke,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),Zo=b(Xo,[["__scopeId","data-v-a1a8e2c8"]]),xo=["aria-expanded"],es=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("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]=o=>e.$emit("click"))},t[1]||(t[1]=[v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)]),10,xo))}}),ts=b(es,[["__scopeId","data-v-ed89a0eb"]]),ns=["innerHTML"],os=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,o)=>(a(),k(F,{class:N({VPNavBarMenuLink:!0,active:r(W)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,ns)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ss=b(os,[["__scopeId","data-v-16512d1e"]]),as=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=P(),o=i=>"component"in i?!1:"link"in i?W(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(o),n=$(()=>o(e.item));return(i,l)=>(a(),k(_e,{class:N({VPNavBarMenuGroup:!0,active:r(W)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),rs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},is=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=P();return(t,o)=>r(e).nav?(a(),u("nav",rs,[o[0]||(o[0]=v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(w,null,B(r(e).nav,n=>(a(),u(w,{key:JSON.stringify(n)},["link"in n?(a(),k(ss,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),U({key:1,ref_for:!0},n.props),null,16)):(a(),k(as,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),ls=b(is,[["__scopeId","data-v-6e77563e"]]);function cs(s){const{localeIndex:e,theme:t}=P();function o(n){var H,A,S;const i=n.split("."),l=(H=t.value.search)==null?void 0:H.options,f=l&&typeof l=="object",d=f&&((S=(A=l.locales)==null?void 0:A[e.value])==null?void 0:S.translations)||null,y=f&&l.translations||null;let L=d,g=y,V=s;const I=i.pop();for(const C of i){let G=null;const K=V==null?void 0:V[C];K&&(G=V=K);const ne=g==null?void 0:g[C];ne&&(G=g=ne);const oe=L==null?void 0:L[C];oe&&(G=L=oe),K||(V=G),ne||(g=G),oe||(L=G)}return(L==null?void 0:L[I])??(g==null?void 0:g[I])??(V==null?void 0:V[I])??""}return o}const us=["aria-label"],ds={class:"DocSearch-Button-Container"},vs={class:"DocSearch-Button-Placeholder"},be=m({__name:"VPNavBarSearchButton",setup(s){const t=cs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",ds,[n[0]||(n[0]=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),v("span",vs,M(r(t)("button.buttonText")),1)]),n[1]||(n[1]=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,us))}}),ps={class:"VPNavBarSearch"},fs={id:"local-search"},hs={key:1,id:"docsearch"},ms=m({__name:"VPNavBarSearch",setup(s){const e=()=>null,t=()=>null,{theme:o}=P(),n=T(!1),i=T(!1);j(()=>{});function l(){n.value||(n.value=!0,setTimeout(f,16))}function f(){const L=new Event("keydown");L.key="k",L.metaKey=!0,window.dispatchEvent(L),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}const d=T(!1),y="";return(L,g)=>{var V;return a(),u("div",ps,[r(y)==="local"?(a(),u(w,{key:0},[d.value?(a(),k(r(e),{key:0,onClose:g[0]||(g[0]=I=>d.value=!1)})):h("",!0),v("div",fs,[_(be,{onClick:g[1]||(g[1]=I=>d.value=!0)})])],64)):r(y)==="algolia"?(a(),u(w,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((V=r(o).search)==null?void 0:V.options)??r(o).algolia,onVnodeBeforeMount:g[2]||(g[2]=I=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",hs,[_(be,{onClick:l})]))],64)):h("",!0)])}}}),_s=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=P();return(t,o)=>r(e).socialLinks?(a(),k(ke,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ks=b(_s,[["__scopeId","data-v-3f36380f"]]),bs=["href","rel","target"],gs=["innerHTML"],$s={key:2},ys=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=P(),{hasSidebar:o}=O(),{currentLang:n}=J(),i=$(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),l=$(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),f=$(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,y)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(o)}])},[v("a",{class:"title",href:i.value??r(pe)(r(n).link),rel:l.value,target:f.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(Y,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",{key:1,innerHTML:r(t).siteTitle},null,8,gs)):r(t).siteTitle===void 0?(a(),u("span",$s,M(r(e).title),1)):h("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,bs)],2))}}),Ps=b(ys,[["__scopeId","data-v-f029a965"]]),Ls={class:"items"},Vs={class:"title"},Ss=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=P(),{localeLinks:t,currentLang:o}=J({correspondingLink:!0});return(n,i)=>r(t).length&&r(o).label?(a(),k(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:p(()=>[v("div",Ls,[v("p",Vs,M(r(o).label),1),(a(!0),u(w,null,B(r(t),l=>(a(),k(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Ts=b(Ss,[["__scopeId","data-v-d39dbf0c"]]),Ns={class:"wrapper"},Ms={class:"container"},Is={class:"title"},ws={class:"content"},Hs={class:"content-body"},As=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Le(),{hasSidebar:o}=O(),{frontmatter:n}=P(),i=T({});return ve(()=>{i.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,f)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[v("div",Ns,[v("div",Ms,[v("div",Is,[_(Ps,null,{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",ws,[v("div",Hs,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),_(ms,{class:"search"}),_(ls,{class:"menu"}),_(Ts,{class:"translations"}),_(_o,{class:"appearance"}),_(ks,{class:"social-links"}),_(Zo,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),_(ts,{class:"hamburger",active:l.isScreenOpen,onClick:f[0]||(f[0]=d=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1))],2))}}),Bs=b(As,[["__scopeId","data-v-9bb0c531"]]),Cs={key:0,class:"VPNavScreenAppearance"},Es={class:"text"},Fs=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=P();return(o,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Cs,[v("p",Es,M(r(t).darkModeSwitchLabel||"Appearance"),1),_(he)])):h("",!0)}}),Ds=b(Fs,[["__scopeId","data-v-df54fe59"]]),Os=["innerHTML"],Gs=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=x("close-screen");return(t,o)=>(a(),k(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,Os)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Us=b(Gs,[["__scopeId","data-v-21e862cb"]]),js=["innerHTML"],zs=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=x("close-screen");return(t,o)=>(a(),k(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[v("span",{innerHTML:t.item.text},null,8,js)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),He=b(zs,[["__scopeId","data-v-78263250"]]),Ws={class:"VPNavScreenMenuGroupSection"},qs={key:0,class:"title"},Ks=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Ws,[e.text?(a(),u("p",qs,M(e.text),1)):h("",!0),(a(!0),u(w,null,B(e.items,o=>(a(),k(He,{key:o.text,item:o},null,8,["item"]))),128))]))}}),Js=b(Ks,[["__scopeId","data-v-8fd594bd"]]),Rs=["aria-controls","aria-expanded"],Ys=["innerHTML"],Qs=["id"],Xs={key:0,class:"item"},Zs={key:1,class:"item"},xs={key:2,class:"group"},ea=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),o=$(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:i.text},null,8,Ys),l[0]||(l[0]=v("span",{class:"vpi-plus button-icon"},null,-1))],8,Rs),v("div",{id:o.value,class:"items"},[(a(!0),u(w,null,B(i.items,f=>(a(),u(w,{key:JSON.stringify(f)},["link"in f?(a(),u("div",Xs,[_(He,{item:f},null,8,["item"])])):"component"in f?(a(),u("div",Zs,[(a(),k(E(f.component),U({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(a(),u("div",xs,[_(Js,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,Qs)],2))}}),ta=b(ea,[["__scopeId","data-v-07690d19"]]),na={key:0,class:"VPNavScreenMenu"},oa=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=P();return(t,o)=>r(e).nav?(a(),u("nav",na,[(a(!0),u(w,null,B(r(e).nav,n=>(a(),u(w,{key:JSON.stringify(n)},["link"in n?(a(),k(Us,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),U({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(ta,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),sa=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=P();return(t,o)=>r(e).socialLinks?(a(),k(ke,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),aa={class:"list"},ra=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),o=T(!1);function n(){o.value=!o.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:o.value}])},[v("button",{class:"title",onClick:n},[l[0]||(l[0]=v("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+M(r(t).label)+" ",1),l[1]||(l[1]=v("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),v("ul",aa,[(a(!0),u(w,null,B(r(e),f=>(a(),u("li",{key:f.link,class:"item"},[_(F,{class:"link",href:f.link},{default:p(()=>[z(M(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ia=b(ra,[["__scopeId","data-v-0843b20d"]]),la={class:"container"},ca=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=Ve(ee?document.body:null);return(o,n)=>(a(),k(ce,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:p(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",la,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),_(oa,{class:"menu"}),_(ia,{class:"translations"}),_(Ds,{class:"appearance"}),_(sa,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ua=b(ca,[["__scopeId","data-v-1f067d0b"]]),da={key:0,class:"VPNav"},va=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=ro(),{frontmatter:n}=P(),i=$(()=>n.value.navbar!==!1);return Se("close-screen",t),Q(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,f)=>i.value?(a(),u("header",da,[_(Bs,{"is-screen-open":r(e),onToggleScreen:r(o)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(ua,{open:r(e)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),pa=b(va,[["__scopeId","data-v-f1b792e0"]]),fa=["role","tabindex"],ha={key:1,class:"items"},ma=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:f,toggle:d}=ct($(()=>e.item)),y=$(()=>f.value?"section":"div"),L=$(()=>n.value?"a":"div"),g=$(()=>f.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=$(()=>n.value?void 0:"button"),I=$(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function H(S){"key"in S&&S.key!=="Enter"||!e.item.link&&d()}function A(){e.item.link&&d()}return(S,C)=>{const G=q("VPSidebarItem",!0);return a(),k(E(y.value),{class:N(["VPSidebarItem",I.value])},{default:p(()=>[S.item.text?(a(),u("div",U({key:0,class:"item",role:V.value},je(S.item.items?{click:H,keydown:H}:{},!0),{tabindex:S.item.items&&0}),[C[1]||(C[1]=v("div",{class:"indicator"},null,-1)),S.item.link?(a(),k(F,{key:0,tag:L.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:p(()=>[(a(),k(E(g.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(E(g.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:Ue(A,["enter"]),tabindex:"0"},C[0]||(C[0]=[v("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,fa)):h("",!0),S.item.items&&S.item.items.length?(a(),u("div",ha,[S.depth<5?(a(!0),u(w,{key:0},B(S.item.items,K=>(a(),k(G,{key:K.text,item:K,depth:S.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),_a=b(ma,[["__scopeId","data-v-bc0d3d6d"]]),ka=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=T(!0);let t=null;return j(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(w,null,B(o.items,i=>(a(),u("div",{key:i.text,class:N(["group",{"no-transition":e.value}])},[_(_a,{item:i,depth:0},null,8,["item"])],2))),128))}}),ba=b(ka,[["__scopeId","data-v-6958f2f0"]]),ga={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},$a=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=O(),o=s,n=T(null),i=Ve(ee?document.body:null);D([o,n],()=>{var f;o.open?(i.value=!0,(f=n.value)==null||f.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return D(e,()=>{l.value+=1},{deep:!0}),(f,d)=>r(t)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:f.open}]),ref_key:"navEl",ref:n,onClick:d[0]||(d[0]=We(()=>{},["stop"]))},[d[2]||(d[2]=v("div",{class:"curtain"},null,-1)),v("nav",ga,[d[1]||(d[1]=v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(f.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(ba,{items:r(e),key:l.value},null,8,["items"])),c(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),ya=b($a,[["__scopeId","data-v-5e69ec52"]]),Pa=m({__name:"VPSkipLink",setup(s){const e=Z(),t=T();D(()=>e.path,()=>t.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(w,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),La=b(Pa,[["__scopeId","data-v-0a2ba013"]]),Va=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=O(),n=Z();D(()=>n.path,o),lt(e,o);const{frontmatter:i}=P(),l=qe(),f=$(()=>!!l["home-hero-image"]);return Se("hero-image-slot-exists",f),(d,y)=>{const L=q("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),_(La),_(Ye,{class:"backdrop",show:r(e),onClick:r(o)},null,8,["show","onClick"]),_(pa,null,{"nav-bar-title-before":p(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(ao,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),_(ya,{open:r(e)},{"sidebar-nav-before":p(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(zn,null,{"page-top":p(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(Rn),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(L,{key:1}))}}}),Sa=b(Va,[["__scopeId","data-v-eecc4835"]]),Na={Layout:Sa,enhanceApp:({app:s})=>{s.component("Badge",Ke)}};export{Na as t}; diff --git a/assets/guide_extra-topic_json.md.BRXtRc0l.js b/assets/guide_extra-topic_json.md.BRXtRc0l.js new file mode 100644 index 000000000..3f663331f --- /dev/null +++ b/assets/guide_extra-topic_json.md.BRXtRc0l.js @@ -0,0 +1,15 @@ +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.CGHvQLJz.js";const E=JSON.parse('{"title":"JSON","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extra-topic/json.md","filePath":"guide/extra-topic/json.md"}'),e={name:"guide/extra-topic/json.md"};function l(p,s,h,k,o,r){return t(),a("div",null,s[0]||(s[0]=[n(`

JSON

We sometimes want to store some structural data in an environment variable, in which case we can expose the environment variable in another global variable:

  1. Define environment variables:

    ini
    # .env.example
    +FOO=
    ini
    # .env
    +FOO='["BAR","BAZ"]'
  2. Validate, parse, and expose the environment variables:

    ts
    // json-env.ts
    +// you could use other tools you like:
    +import { z } from "zod";
    +// you could export instead of expose to global it:
    +Object.defineProperty(globalThis, "jsonEnv", {
    +  configurable: false,
    +  writable: false,
    +  value: {
    +    FOO: z.array(z.string()).parse(import.meta.env.FOO),
    +  },
    +});
  3. (Recommended) Import the json-env.ts at the top of your application, then you can ensure that the rest of your application will have a valid JSON env:

    ts
    // main.ts
    +import "./json-env.ts";
  4. Then you can use it anywhere:

    ts
    console.log(jsonEnv.FOO[0]);
    +// > "BAR"
`,3)]))}const g=i(e,[["render",l]]);export{E as __pageData,g as default}; diff --git a/assets/guide_extra-topic_json.md.BRXtRc0l.lean.js b/assets/guide_extra-topic_json.md.BRXtRc0l.lean.js new file mode 100644 index 000000000..3f663331f --- /dev/null +++ b/assets/guide_extra-topic_json.md.BRXtRc0l.lean.js @@ -0,0 +1,15 @@ +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.CGHvQLJz.js";const E=JSON.parse('{"title":"JSON","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extra-topic/json.md","filePath":"guide/extra-topic/json.md"}'),e={name:"guide/extra-topic/json.md"};function l(p,s,h,k,o,r){return t(),a("div",null,s[0]||(s[0]=[n(`

JSON

We sometimes want to store some structural data in an environment variable, in which case we can expose the environment variable in another global variable:

  1. Define environment variables:

    ini
    # .env.example
    +FOO=
    ini
    # .env
    +FOO='["BAR","BAZ"]'
  2. Validate, parse, and expose the environment variables:

    ts
    // json-env.ts
    +// you could use other tools you like:
    +import { z } from "zod";
    +// you could export instead of expose to global it:
    +Object.defineProperty(globalThis, "jsonEnv", {
    +  configurable: false,
    +  writable: false,
    +  value: {
    +    FOO: z.array(z.string()).parse(import.meta.env.FOO),
    +  },
    +});
  3. (Recommended) Import the json-env.ts at the top of your application, then you can ensure that the rest of your application will have a valid JSON env:

    ts
    // main.ts
    +import "./json-env.ts";
  4. Then you can use it anywhere:

    ts
    console.log(jsonEnv.FOO[0]);
    +// > "BAR"
`,3)]))}const g=i(e,[["render",l]]);export{E as __pageData,g as default}; diff --git a/assets/guide_extra-topic_sensitive-environment-variables.md.4Do9JvPe.js b/assets/guide_extra-topic_sensitive-environment-variables.md.4Do9JvPe.js new file mode 100644 index 000000000..1a40f29d4 --- /dev/null +++ b/assets/guide_extra-topic_sensitive-environment-variables.md.4Do9JvPe.js @@ -0,0 +1,4 @@ +import{_ as s,c as e,a0 as a,o as n}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Sensitive Environment Variables","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extra-topic/sensitive-environment-variables.md","filePath":"guide/extra-topic/sensitive-environment-variables.md"}'),t={name:"guide/extra-topic/sensitive-environment-variables.md"};function l(r,i,p,h,o,d){return n(),e("div",null,i[0]||(i[0]=[a(`

Sensitive Environment Variables

Defining sensitive environment variables

It's always a good idea to provide all team members with information about required environment variables, including sensitive ones.

To do this, you can create two separate example files and pass the public file to the example option:

ini
# .env.example.public
+NAME=
ini
# .env.example.private
+SECRET_KEY=

Accessing sensitive environment variables

You should use process.env to access sensitive environment variables in your code, since it's server-side only:

js
const NAME = import.meta.env.NAME;
+const SECRET_KEY = process.env.SECRET_KEY;
`,9)]))}const k=s(t,[["render",l]]);export{c as __pageData,k as default}; diff --git a/assets/guide_extra-topic_sensitive-environment-variables.md.4Do9JvPe.lean.js b/assets/guide_extra-topic_sensitive-environment-variables.md.4Do9JvPe.lean.js new file mode 100644 index 000000000..1a40f29d4 --- /dev/null +++ b/assets/guide_extra-topic_sensitive-environment-variables.md.4Do9JvPe.lean.js @@ -0,0 +1,4 @@ +import{_ as s,c as e,a0 as a,o as n}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Sensitive Environment Variables","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extra-topic/sensitive-environment-variables.md","filePath":"guide/extra-topic/sensitive-environment-variables.md"}'),t={name:"guide/extra-topic/sensitive-environment-variables.md"};function l(r,i,p,h,o,d){return n(),e("div",null,i[0]||(i[0]=[a(`

Sensitive Environment Variables

Defining sensitive environment variables

It's always a good idea to provide all team members with information about required environment variables, including sensitive ones.

To do this, you can create two separate example files and pass the public file to the example option:

ini
# .env.example.public
+NAME=
ini
# .env.example.private
+SECRET_KEY=

Accessing sensitive environment variables

You should use process.env to access sensitive environment variables in your code, since it's server-side only:

js
const NAME = import.meta.env.NAME;
+const SECRET_KEY = process.env.SECRET_KEY;
`,9)]))}const k=s(t,[["render",l]]);export{c as __pageData,k as default}; diff --git a/assets/guide_extra-topic_server-side-rendering.md.7_2IoZgM.js b/assets/guide_extra-topic_server-side-rendering.md.7_2IoZgM.js new file mode 100644 index 000000000..559136879 --- /dev/null +++ b/assets/guide_extra-topic_server-side-rendering.md.7_2IoZgM.js @@ -0,0 +1,17 @@ +import{_ as i,c as a,a0 as n,o as e}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Server Side Rendering","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extra-topic/server-side-rendering.md","filePath":"guide/extra-topic/server-side-rendering.md"}'),t={name:"guide/extra-topic/server-side-rendering.md"};function h(l,s,p,k,r,E){return e(),a("div",null,s[0]||(s[0]=[n(`

Server Side Rendering

Since environment variables are statically injected into the client-side's globalThis.import_meta_env , you'll need to use the client-side's hook (or similar technique) to obtain these environment variables.

For example, in NEXT.js you can use the useEffect hook to access globalThis.import_meta_env:

tsx
import { useEffect, useMemo, useState } from "react";
+
+const useImportMetaEnv = () => {
+  const [env, setEnv] = useState({ HELLO: "" });
+
+  useEffect(() => {
+    setEnv({ HELLO: import.meta.env.HELLO });
+  }, []);
+
+  return useMemo(() => env, [env]);
+};
+
+export default function Home() {
+  const env = useImportMetaEnv();
+
+  return <h1>Hello: {env.HELLO}</h1>;
+}
`,4)]))}const o=i(t,[["render",h]]);export{g as __pageData,o as default}; diff --git a/assets/guide_extra-topic_server-side-rendering.md.7_2IoZgM.lean.js b/assets/guide_extra-topic_server-side-rendering.md.7_2IoZgM.lean.js new file mode 100644 index 000000000..559136879 --- /dev/null +++ b/assets/guide_extra-topic_server-side-rendering.md.7_2IoZgM.lean.js @@ -0,0 +1,17 @@ +import{_ as i,c as a,a0 as n,o as e}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Server Side Rendering","description":"","frontmatter":{},"headers":[],"relativePath":"guide/extra-topic/server-side-rendering.md","filePath":"guide/extra-topic/server-side-rendering.md"}'),t={name:"guide/extra-topic/server-side-rendering.md"};function h(l,s,p,k,r,E){return e(),a("div",null,s[0]||(s[0]=[n(`

Server Side Rendering

Since environment variables are statically injected into the client-side's globalThis.import_meta_env , you'll need to use the client-side's hook (or similar technique) to obtain these environment variables.

For example, in NEXT.js you can use the useEffect hook to access globalThis.import_meta_env:

tsx
import { useEffect, useMemo, useState } from "react";
+
+const useImportMetaEnv = () => {
+  const [env, setEnv] = useState({ HELLO: "" });
+
+  useEffect(() => {
+    setEnv({ HELLO: import.meta.env.HELLO });
+  }, []);
+
+  return useMemo(() => env, [env]);
+};
+
+export default function Home() {
+  const env = useImportMetaEnv();
+
+  return <h1>Hello: {env.HELLO}</h1>;
+}
`,4)]))}const o=i(t,[["render",h]]);export{g as __pageData,o as default}; diff --git a/assets/guide_faq_changes-to-environment-variables-is-not-updated.md.CqizDe9N.js b/assets/guide_faq_changes-to-environment-variables-is-not-updated.md.CqizDe9N.js new file mode 100644 index 000000000..ed36443c3 --- /dev/null +++ b/assets/guide_faq_changes-to-environment-variables-is-not-updated.md.CqizDe9N.js @@ -0,0 +1 @@ +import{_ as n,c as a,j as e,a as o,o as s}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Changes to environment variables is not updated","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq/changes-to-environment-variables-is-not-updated.md","filePath":"guide/faq/changes-to-environment-variables-is-not-updated.md"}'),r={name:"guide/faq/changes-to-environment-variables-is-not-updated.md"};function i(l,t,d,u,m,v){return s(),a("div",null,t[0]||(t[0]=[e("h1",{id:"changes-to-environment-variables-is-not-updated",tabindex:"-1"},[o("Changes to environment variables is not updated "),e("a",{class:"header-anchor",href:"#changes-to-environment-variables-is-not-updated","aria-label":'Permalink to "Changes to environment variables is not updated"'},"​")],-1),e("p",null,"You will need to restart your dev server after changing the environment variables.",-1),e("p",null,"This is useful, for example:",-1),e("ul",null,[e("li",null,"You want to track bugs for production, but you don't want to shut down the development environment."),e("li",null,"Or, you want to start multiple development environments at the same time and each one has its own environment variables.")],-1)]))}const h=n(r,[["render",i]]);export{c as __pageData,h as default}; diff --git a/assets/guide_faq_changes-to-environment-variables-is-not-updated.md.CqizDe9N.lean.js b/assets/guide_faq_changes-to-environment-variables-is-not-updated.md.CqizDe9N.lean.js new file mode 100644 index 000000000..ed36443c3 --- /dev/null +++ b/assets/guide_faq_changes-to-environment-variables-is-not-updated.md.CqizDe9N.lean.js @@ -0,0 +1 @@ +import{_ as n,c as a,j as e,a as o,o as s}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Changes to environment variables is not updated","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq/changes-to-environment-variables-is-not-updated.md","filePath":"guide/faq/changes-to-environment-variables-is-not-updated.md"}'),r={name:"guide/faq/changes-to-environment-variables-is-not-updated.md"};function i(l,t,d,u,m,v){return s(),a("div",null,t[0]||(t[0]=[e("h1",{id:"changes-to-environment-variables-is-not-updated",tabindex:"-1"},[o("Changes to environment variables is not updated "),e("a",{class:"header-anchor",href:"#changes-to-environment-variables-is-not-updated","aria-label":'Permalink to "Changes to environment variables is not updated"'},"​")],-1),e("p",null,"You will need to restart your dev server after changing the environment variables.",-1),e("p",null,"This is useful, for example:",-1),e("ul",null,[e("li",null,"You want to track bugs for production, but you don't want to shut down the development environment."),e("li",null,"Or, you want to start multiple development environments at the same time and each one has its own environment variables.")],-1)]))}const h=n(r,[["render",i]]);export{c as __pageData,h as default}; diff --git a/assets/guide_faq_environment-variables-types.md.BUiP4ift.js b/assets/guide_faq_environment-variables-types.md.BUiP4ift.js new file mode 100644 index 000000000..0491f336d --- /dev/null +++ b/assets/guide_faq_environment-variables-types.md.BUiP4ift.js @@ -0,0 +1 @@ +import{_ as i,c as a,a0 as e,o as t}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Environment Variables Types","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq/environment-variables-types.md","filePath":"guide/faq/environment-variables-types.md"}'),n={name:"guide/faq/environment-variables-types.md"};function p(h,s,l,k,r,d){return t(),a("div",null,s[0]||(s[0]=[e('

Environment Variables Types

Environment variables are always strings.

If you need a boolean value:

bash
$ export DEBUG="1"
js
const debug = !!import.meta.env.DEBUG; // true

If you need a number value:

bash
$ export PORT="3000"
js
const port = parseInt(import.meta.env.PORT, 10); // 3000
',8)]))}const c=i(n,[["render",p]]);export{g as __pageData,c as default}; diff --git a/assets/guide_faq_environment-variables-types.md.BUiP4ift.lean.js b/assets/guide_faq_environment-variables-types.md.BUiP4ift.lean.js new file mode 100644 index 000000000..0491f336d --- /dev/null +++ b/assets/guide_faq_environment-variables-types.md.BUiP4ift.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,a0 as e,o as t}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Environment Variables Types","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq/environment-variables-types.md","filePath":"guide/faq/environment-variables-types.md"}'),n={name:"guide/faq/environment-variables-types.md"};function p(h,s,l,k,r,d){return t(),a("div",null,s[0]||(s[0]=[e('

Environment Variables Types

Environment variables are always strings.

If you need a boolean value:

bash
$ export DEBUG="1"
js
const debug = !!import.meta.env.DEBUG; // true

If you need a number value:

bash
$ export PORT="3000"
js
const port = parseInt(import.meta.env.PORT, 10); // 3000
',8)]))}const c=i(n,[["render",p]]);export{g as __pageData,c as default}; diff --git a/assets/guide_faq_why-use-import-meta.md.nWqZF-m9.js b/assets/guide_faq_why-use-import-meta.md.nWqZF-m9.js new file mode 100644 index 000000000..a8d601792 --- /dev/null +++ b/assets/guide_faq_why-use-import-meta.md.nWqZF-m9.js @@ -0,0 +1 @@ +import{_ as o,c as r,j as e,a as t,o as s}from"./chunks/framework.CGHvQLJz.js";const h=JSON.parse('{"title":"Why use ImportMeta","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq/why-use-import-meta.md","filePath":"guide/faq/why-use-import-meta.md"}'),i={name:"guide/faq/why-use-import-meta.md"};function n(m,a,p,c,d,u){return s(),r("div",null,a[0]||(a[0]=[e("h1",{id:"why-use-importmeta",tabindex:"-1"},[t("Why use ImportMeta "),e("a",{class:"header-anchor",href:"#why-use-importmeta","aria-label":'Permalink to "Why use ImportMeta"'},"​")],-1),e("p",null,[t("Since "),e("code",null,"process.env"),t(" is a Node specific object, we should not use it in browser environment.")],-1)]))}const f=o(i,[["render",n]]);export{h as __pageData,f as default}; diff --git a/assets/guide_faq_why-use-import-meta.md.nWqZF-m9.lean.js b/assets/guide_faq_why-use-import-meta.md.nWqZF-m9.lean.js new file mode 100644 index 000000000..a8d601792 --- /dev/null +++ b/assets/guide_faq_why-use-import-meta.md.nWqZF-m9.lean.js @@ -0,0 +1 @@ +import{_ as o,c as r,j as e,a as t,o as s}from"./chunks/framework.CGHvQLJz.js";const h=JSON.parse('{"title":"Why use ImportMeta","description":"","frontmatter":{},"headers":[],"relativePath":"guide/faq/why-use-import-meta.md","filePath":"guide/faq/why-use-import-meta.md"}'),i={name:"guide/faq/why-use-import-meta.md"};function n(m,a,p,c,d,u){return s(),r("div",null,a[0]||(a[0]=[e("h1",{id:"why-use-importmeta",tabindex:"-1"},[t("Why use ImportMeta "),e("a",{class:"header-anchor",href:"#why-use-importmeta","aria-label":'Permalink to "Why use ImportMeta"'},"​")],-1),e("p",null,[t("Since "),e("code",null,"process.env"),t(" is a Node specific object, we should not use it in browser environment.")],-1)]))}const f=o(i,[["render",n]]);export{h as __pageData,f as default}; diff --git a/assets/guide_framework-specific-notes_vite.md.C11tu2Te.js b/assets/guide_framework-specific-notes_vite.md.C11tu2Te.js new file mode 100644 index 000000000..101e6b05f --- /dev/null +++ b/assets/guide_framework-specific-notes_vite.md.C11tu2Te.js @@ -0,0 +1 @@ +import{_ as a,c as t,a0 as i,o as r}from"./chunks/framework.CGHvQLJz.js";const h=JSON.parse('{"title":"Vite","description":"","frontmatter":{},"headers":[],"relativePath":"guide/framework-specific-notes/vite.md","filePath":"guide/framework-specific-notes/vite.md"}'),n={name:"guide/framework-specific-notes/vite.md"};function o(l,e,s,d,c,p){return r(),t("div",null,e[0]||(e[0]=[i('

Vite

Env Variables and Modes

During production, the following environment variables are still statically replaced:

',4)]))}const f=a(n,[["render",o]]);export{h as __pageData,f as default}; diff --git a/assets/guide_framework-specific-notes_vite.md.C11tu2Te.lean.js b/assets/guide_framework-specific-notes_vite.md.C11tu2Te.lean.js new file mode 100644 index 000000000..101e6b05f --- /dev/null +++ b/assets/guide_framework-specific-notes_vite.md.C11tu2Te.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,a0 as i,o as r}from"./chunks/framework.CGHvQLJz.js";const h=JSON.parse('{"title":"Vite","description":"","frontmatter":{},"headers":[],"relativePath":"guide/framework-specific-notes/vite.md","filePath":"guide/framework-specific-notes/vite.md"}'),n={name:"guide/framework-specific-notes/vite.md"};function o(l,e,s,d,c,p){return r(),t("div",null,e[0]||(e[0]=[i('

Vite

Env Variables and Modes

During production, the following environment variables are still statically replaced:

',4)]))}const f=a(n,[["render",o]]);export{h as __pageData,f as default}; diff --git a/assets/guide_getting-started_compile-time-transform.md.BnRhs1TX.js b/assets/guide_getting-started_compile-time-transform.md.BnRhs1TX.js new file mode 100644 index 000000000..7657c0ca3 --- /dev/null +++ b/assets/guide_getting-started_compile-time-transform.md.BnRhs1TX.js @@ -0,0 +1,75 @@ +import{_ as i,c as a,a0 as n,o as e}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Compile-time Transform","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/compile-time-transform.md","filePath":"guide/getting-started/compile-time-transform.md"}'),t={name:"guide/getting-started/compile-time-transform.md"};function l(p,s,h,k,r,o){return e(),a("div",null,s[0]||(s[0]=[n(`

Compile-time Transform

Please read the guide for how to use these plugins.

Plugin Options

All compile-time transform plugins use the same options:

js
interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+   * Runtime: statically replace \`import.meta.env\` with a global accessor
+   *
+   * @default
+   * Generally speaking, \`process.env.NODE_ENV === "production" ? "runtime" : "compile-time"\`
+   */
+  transformMode?: "compile-time" | "runtime";
+}

Babel Plugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/babel

Setup

json
{
+  "plugins": [
+    [
+      "module:@import-meta-env/babel",
+      pluginOptions
+    ]
+  ]
+}

Related examples: babel, babel-loader, jest

SWC Plugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/swc

Setup

.swcrc:

json
{
+  "$schema": "https://json.schemastore.org/swcrc",
+  "jsc": {
+    "experimental": {
+      "plugins": [
+        [
+          "@import-meta-env/swc",
+          pluginOptions
+        ]
+      ]
+    }
+  }
+}

Related examples: swc

Unplugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/unplugin

Setup

ESbuild

js
// esbuild.config.js
+const { build } = require("esbuild");
+const importMetaEnv = require("@import-meta-env/unplugin");
+
+build({
+  plugins: [importMetaEnv.esbuild(pluginOptions)],
+});

Related examples: esbuild

Farm

js
// farm.config.ts
+import { defineConfig } from "@farmfe/core";
+import importMetaEnv from "@import-meta-env/unplugin";
+
+export default defineConfig({
+  plugins: [importMetaEnv.farm(pluginOptions)],
+});

Related examples: farm

Rollup

js
// rollup.config.js
+import ImportMetaEnvPlugin from "@import-meta-env/unplugin";
+
+export default {
+  plugins: [ImportMetaEnvPlugin.rollup(pluginOptions)],
+};

Related examples: rollup

Vite

ts
// vite.config.ts
+import ImportMetaEnvPlugin from "@import-meta-env/unplugin";
+
+export default {
+  plugins: [ImportMetaEnvPlugin.vite(pluginOptions)],
+};

Related examples: vite

Webpack

js
// webpack.config.js
+const ImportMetaEnvPlugin = require("@import-meta-env/unplugin");
+
+module.exports = {
+  plugins: [ImportMetaEnvPlugin.webpack(pluginOptions)],
+};

Related examples: webpack

Rspack

js
// rspack.config.js
+const ImportMetaEnvPlugin = require("@import-meta-env/unplugin");
+
+module.exports = {
+  plugins: [ImportMetaEnvPlugin.rspack(pluginOptions)],
+};

Related examples: rspack

Compatibility

Currently we support Babel plugin, SWC plugin and Unplugin (an unified plugin system for Vite, Rollup, Webpack, and more) transforms. If your toolchain is not supported, please feel free to file an issue on GitHub.

You can choose one of these or combine multiple plugins, for example if you are using Webpack 5 and Jest:

  1. You can use babel-loader + Babel plugin for development, testing and production.
  2. Alternatively, you can use Unplugin for development and production, and babel-jest + Babel plugin for testing.
  3. Alternatively, you can use the swc-loader and SWC plugin for development and production, and the babel-jest and Babel plugin for testing.

WARNING

There are some exceptions:

  1. Vite is only compatible with Unplugin.
  2. Webpack 4 is not compatible with Unplugin.
`,48)]))}const c=i(t,[["render",l]]);export{g as __pageData,c as default}; diff --git a/assets/guide_getting-started_compile-time-transform.md.BnRhs1TX.lean.js b/assets/guide_getting-started_compile-time-transform.md.BnRhs1TX.lean.js new file mode 100644 index 000000000..7657c0ca3 --- /dev/null +++ b/assets/guide_getting-started_compile-time-transform.md.BnRhs1TX.lean.js @@ -0,0 +1,75 @@ +import{_ as i,c as a,a0 as n,o as e}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Compile-time Transform","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/compile-time-transform.md","filePath":"guide/getting-started/compile-time-transform.md"}'),t={name:"guide/getting-started/compile-time-transform.md"};function l(p,s,h,k,r,o){return e(),a("div",null,s[0]||(s[0]=[n(`

Compile-time Transform

Please read the guide for how to use these plugins.

Plugin Options

All compile-time transform plugins use the same options:

js
interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace \`import.meta.env.KEY\` with \`"value"\`
+   * Runtime: statically replace \`import.meta.env\` with a global accessor
+   *
+   * @default
+   * Generally speaking, \`process.env.NODE_ENV === "production" ? "runtime" : "compile-time"\`
+   */
+  transformMode?: "compile-time" | "runtime";
+}

Babel Plugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/babel

Setup

json
{
+  "plugins": [
+    [
+      "module:@import-meta-env/babel",
+      pluginOptions
+    ]
+  ]
+}

Related examples: babel, babel-loader, jest

SWC Plugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/swc

Setup

.swcrc:

json
{
+  "$schema": "https://json.schemastore.org/swcrc",
+  "jsc": {
+    "experimental": {
+      "plugins": [
+        [
+          "@import-meta-env/swc",
+          pluginOptions
+        ]
+      ]
+    }
+  }
+}

Related examples: swc

Unplugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/unplugin

Setup

ESbuild

js
// esbuild.config.js
+const { build } = require("esbuild");
+const importMetaEnv = require("@import-meta-env/unplugin");
+
+build({
+  plugins: [importMetaEnv.esbuild(pluginOptions)],
+});

Related examples: esbuild

Farm

js
// farm.config.ts
+import { defineConfig } from "@farmfe/core";
+import importMetaEnv from "@import-meta-env/unplugin";
+
+export default defineConfig({
+  plugins: [importMetaEnv.farm(pluginOptions)],
+});

Related examples: farm

Rollup

js
// rollup.config.js
+import ImportMetaEnvPlugin from "@import-meta-env/unplugin";
+
+export default {
+  plugins: [ImportMetaEnvPlugin.rollup(pluginOptions)],
+};

Related examples: rollup

Vite

ts
// vite.config.ts
+import ImportMetaEnvPlugin from "@import-meta-env/unplugin";
+
+export default {
+  plugins: [ImportMetaEnvPlugin.vite(pluginOptions)],
+};

Related examples: vite

Webpack

js
// webpack.config.js
+const ImportMetaEnvPlugin = require("@import-meta-env/unplugin");
+
+module.exports = {
+  plugins: [ImportMetaEnvPlugin.webpack(pluginOptions)],
+};

Related examples: webpack

Rspack

js
// rspack.config.js
+const ImportMetaEnvPlugin = require("@import-meta-env/unplugin");
+
+module.exports = {
+  plugins: [ImportMetaEnvPlugin.rspack(pluginOptions)],
+};

Related examples: rspack

Compatibility

Currently we support Babel plugin, SWC plugin and Unplugin (an unified plugin system for Vite, Rollup, Webpack, and more) transforms. If your toolchain is not supported, please feel free to file an issue on GitHub.

You can choose one of these or combine multiple plugins, for example if you are using Webpack 5 and Jest:

  1. You can use babel-loader + Babel plugin for development, testing and production.
  2. Alternatively, you can use Unplugin for development and production, and babel-jest + Babel plugin for testing.
  3. Alternatively, you can use the swc-loader and SWC plugin for development and production, and the babel-jest and Babel plugin for testing.

WARNING

There are some exceptions:

  1. Vite is only compatible with Unplugin.
  2. Webpack 4 is not compatible with Unplugin.
`,48)]))}const c=i(t,[["render",l]]);export{g as __pageData,c as default}; diff --git a/assets/guide_getting-started_introduction.md.BLxLvNLc.js b/assets/guide_getting-started_introduction.md.BLxLvNLc.js new file mode 100644 index 000000000..b87728497 --- /dev/null +++ b/assets/guide_getting-started_introduction.md.BLxLvNLc.js @@ -0,0 +1,87 @@ +import{_ as i,c as a,a0 as e,o as t}from"./chunks/framework.CGHvQLJz.js";const n="/glance.png",g=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/introduction.md","filePath":"guide/getting-started/introduction.md"}'),l={name:"guide/getting-started/introduction.md"};function p(h,s,r,o,d,k){return t(),a("div",null,s[0]||(s[0]=[e('

Introduction

Import-meta-env is a startup/runtime environment variable solution for JavaScript, it provides a set of transform plugins and tools designed to help you develop applications according to the 12-factor principle.

Published Packages

PackageVersionChangelogLicense
@import-meta-env/babelnpmCHANGELOGlicense
@import-meta-env/clinpmCHANGELOGlicense
@import-meta-env/flownpmCHANGELOGlicense
@import-meta-env/preparenpmCHANGELOGlicense
@import-meta-env/swcnpmCHANGELOGlicense
@import-meta-env/typescriptnpmCHANGELOGlicense
@import-meta-env/unpluginnpmCHANGELOGlicense

Guide

TIP

We are excited to introduce runtime-env, a framework-agnostic library that provides a runtime environment variable solution for JavaScript applications. It integrates effortlessly with any framework or build tool.

Discover it today and streamline your development workflow!

In this guide, we will use Webpack as an example, but you can also use other build tools. All supported build tools can be found on the compile-time transform plugins page.

Write your code

  1. To prevent accidentally leaking environment variables to the client, you need to list public environment variables in an example file (e.g., .env.example):

    ini
    # .env.example
    +NAME=

    See the .env.example file section for details.

  2. Obtain the environment variable:

    diff
    // src/index.js
    +- const name = process.env.NAME
    ++ const name = import.meta.env.NAME
    +document.querySelector("body").innerHTML = \`<h1>Hello, \${name}</h1>\`;

    See the syntax section for details.

Transform it

Install dotenv in order for Import-meta-env packages to work:

sh
$ npm i -D dotenv
  • During development and testing:

    1. Define environment variables:

      ini
      # .env
      +NAME=development

      See the .env file section for details.

    2. Install and setup compile-time transform plugins.

      sh
      $ npm i -D @import-meta-env/unplugin
      diff
      // webpack.config.js
      +module.exports = {
      +  plugins: [
      ++   require("@import-meta-env/unplugin").webpack({
      ++     example: ".env.example",
      ++     env: ".env",
      ++     transformMode: "compile-time",
      ++   }),
      +  ],
      +};
    3. Transform it:

      sh
      $ npx webpack --mode=development
      diff
      // dist/main.js
      +- const name = import.meta.env.NAME
      ++ const name = "development"
      +// ...
  • During production:

    1. Install and setup compile-time transform plugins.

      sh
      $ npm i -D @import-meta-env/unplugin
      diff
      // webpack.config.js
      +module.exports = {
      +  plugins: [
      +    require("@import-meta-env/unplugin").webpack({
      +      example: ".env.example",
      +      env: ".env",
      +
      +      // If you are using popular packagers such as Webpack and Vite,
      +      // @import-meta-env/unplugin will automatically switch the \`transformMode\` for you, you don't have to explicitly define it:
      +      // - for development mode, \`transformMode\` will be \`"compile-time"\`
      +      // - for production mode, \`transformMode\` will be \`"runtime"\`
      +      transformMode: undefined,
      +
      +      // Otherwise, you need to set \`transformMode\` according to your needs, for example:
      +      transformMode: process.env.NODE_ENV === "development" ? "compile-time" : "runtime",
      +
      +-     transformMode: "compile-time",
      ++     transformMode: "runtime",
      +    }),
      +  ],
      +};
    2. Transform it:

      sh
      $ npx webpack --mode=production
      diff
      // dist/main.js
      +- const name = import.meta.env.NAME
      ++ const name = globalThis.import_meta_env.NAME
      +// ...
    3. In order to obtain environment variables from globalThis.import_meta_env, you also need to add a special expression before your entry:

      diff
      <!-- public/index.html -->
      +<!DOCTYPE html>
      +<html lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      ++   <script>
      ++     globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"')
      ++   </script>
      +  </head>
      +</html>

      See the special expression section for details.

    4. Define environment variables:

      In the real world, we might define environment variables in the cloud, for example: Google Cloud Run environment variables.

      Here, we simulate this by defining our environment variables in the system:

      sh
      export NAME=production
    5. Install runtime transform tool.

      sh
      $ npm i -D @import-meta-env/cli
    6. Transform it again:

      sh
      npx import-meta-env -x .env.example -p dist/index.html
      diff
      <!-- dist/index.html -->
      +<!DOCTYPE html>
      +<html lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <script>
      +-     globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"')
      ++     globalThis.import_meta_env = JSON.parse('{"NAME":"production"}');
      +    </script>
      +    <script defer="defer" src="main.js"></script>
      +  </head>
      +</html>

See the transform section for details.

You can find the corresponding working example here, and all examples here.

.env File

By default, Import-meta-env will load environment variables from your system and the .env file (you can change or disable this using env option):

sh
$ export NAME=world
ini
# .env
+NAME=world

WARNING

You should gitignore this file because these environment variables are usually used for local development purposes, while your production environment variables are usually stored in your cloud, such as GCP or AWS, and will be loaded from the system.

TIP

It is common to temporarily change environment variables for debugging or other purposes. You can use @import-meta-env/prepare to automatically generate the final .env file from .env.local, .env.local.defaults, etc. files.

.env.example File

To prevent accidentally leaking environment variables to the client, only keys listed in an example file (e.g., .env.example) are exposed.

For example, if you have these config:

sh
$ export NAME=world
+$ export SECRET_KEY=****
ini
# .env.example
+NAME=this-value-can-be-anything

then only NAME will be exposed to your client source code, but SECRET_KEY will not.

INFO

For security reason, the example option does not have default value, you have to explicitly define it.

WARNING

Since any environment variables exposed to your source code will end up in your client bundle, the keys listed in .env.example should not contain any sensitive information.

Syntax

Import-meta-env exposes your environment variables on special environment variable expressions:

js
import.meta.env.FOO;
+import.meta.env.BAR;
+// ...

INFO

Since these environment variables expression are statically transformed. It is therefore necessary to always reference them using the full static string.

In other words, the following are invalid:

  • Entire object access, i.e. import.meta.env
  • Computed key access, e.g. import.meta.env["FOO"]

Transform

Import-meta-env provides two sets of transform:

  1. compile-time transform plugins
  2. runtime transform tool

In development and testing, you use the compile-time transform plugins to replace the environment variable expressions with environment variable strings.

In production, you need to use the compile-time transform plugins to replace the environment variable expressions with global accessors (in order to access to a special object), and then use runtime transform tool to inject environment variables to the special expression.

Compile-time Transform Modes

Since compile-time transform plugins will be used in two scenarios, it have two transform modes:

  1. compile-time: statically replace import.meta.env.KEY with "value"
  2. runtime: statically replace import.meta.env with a global accessor

Usually, you don't need to define it explicitly, because Import-meta-env determines it automatically based on your environment variables (e.g., process.env.NODE_ENV). See API for details.

Special Expression

In order to inject environment variables in production, you also need to add a special expression in your app:

js
globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');

This expression will be replaced with environment variables by using runtime transform tool as follows:

js
globalThis.import_meta_env = JSON.parse('{"NAME":"world"}');

We encourage you to put this special expression in your index.html because the Cache-Control header is usually set to no-cache when requesting index.html:

html
<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    ...
+  </head>
+  <body>
+    ...
+    <script>
+      globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');
+    </script>
+    <script src="src/index.js"></script>
+  </body>
+</html>

WARNING

The value of the expression will be statically replaced, the following will not work:

js
globalThis.import_meta_env = JSON.parse(
+  '"import_meta_env_placeholder"'
+);
+
+globalThis.import_meta_env = JSON.parse('"import_meta_env" + "_placeholder"');
+
+const placeholder = '"import_meta_env_placeholder"';
+globalThis.import_meta_env = JSON.parse(placeholder);

INFO

This expression should be placed before or at the top of your entry script, otherwise your code will end up with a TypeError:

txt
Uncaught TypeError: Cannot read properties of undefined (reading 'NAME')
+  at ...
`,52)]))}const m=i(l,[["render",p]]);export{g as __pageData,m as default}; diff --git a/assets/guide_getting-started_introduction.md.BLxLvNLc.lean.js b/assets/guide_getting-started_introduction.md.BLxLvNLc.lean.js new file mode 100644 index 000000000..b87728497 --- /dev/null +++ b/assets/guide_getting-started_introduction.md.BLxLvNLc.lean.js @@ -0,0 +1,87 @@ +import{_ as i,c as a,a0 as e,o as t}from"./chunks/framework.CGHvQLJz.js";const n="/glance.png",g=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/introduction.md","filePath":"guide/getting-started/introduction.md"}'),l={name:"guide/getting-started/introduction.md"};function p(h,s,r,o,d,k){return t(),a("div",null,s[0]||(s[0]=[e('

Introduction

Import-meta-env is a startup/runtime environment variable solution for JavaScript, it provides a set of transform plugins and tools designed to help you develop applications according to the 12-factor principle.

Published Packages

PackageVersionChangelogLicense
@import-meta-env/babelnpmCHANGELOGlicense
@import-meta-env/clinpmCHANGELOGlicense
@import-meta-env/flownpmCHANGELOGlicense
@import-meta-env/preparenpmCHANGELOGlicense
@import-meta-env/swcnpmCHANGELOGlicense
@import-meta-env/typescriptnpmCHANGELOGlicense
@import-meta-env/unpluginnpmCHANGELOGlicense

Guide

TIP

We are excited to introduce runtime-env, a framework-agnostic library that provides a runtime environment variable solution for JavaScript applications. It integrates effortlessly with any framework or build tool.

Discover it today and streamline your development workflow!

In this guide, we will use Webpack as an example, but you can also use other build tools. All supported build tools can be found on the compile-time transform plugins page.

Write your code

  1. To prevent accidentally leaking environment variables to the client, you need to list public environment variables in an example file (e.g., .env.example):

    ini
    # .env.example
    +NAME=

    See the .env.example file section for details.

  2. Obtain the environment variable:

    diff
    // src/index.js
    +- const name = process.env.NAME
    ++ const name = import.meta.env.NAME
    +document.querySelector("body").innerHTML = \`<h1>Hello, \${name}</h1>\`;

    See the syntax section for details.

Transform it

Install dotenv in order for Import-meta-env packages to work:

sh
$ npm i -D dotenv
  • During development and testing:

    1. Define environment variables:

      ini
      # .env
      +NAME=development

      See the .env file section for details.

    2. Install and setup compile-time transform plugins.

      sh
      $ npm i -D @import-meta-env/unplugin
      diff
      // webpack.config.js
      +module.exports = {
      +  plugins: [
      ++   require("@import-meta-env/unplugin").webpack({
      ++     example: ".env.example",
      ++     env: ".env",
      ++     transformMode: "compile-time",
      ++   }),
      +  ],
      +};
    3. Transform it:

      sh
      $ npx webpack --mode=development
      diff
      // dist/main.js
      +- const name = import.meta.env.NAME
      ++ const name = "development"
      +// ...
  • During production:

    1. Install and setup compile-time transform plugins.

      sh
      $ npm i -D @import-meta-env/unplugin
      diff
      // webpack.config.js
      +module.exports = {
      +  plugins: [
      +    require("@import-meta-env/unplugin").webpack({
      +      example: ".env.example",
      +      env: ".env",
      +
      +      // If you are using popular packagers such as Webpack and Vite,
      +      // @import-meta-env/unplugin will automatically switch the \`transformMode\` for you, you don't have to explicitly define it:
      +      // - for development mode, \`transformMode\` will be \`"compile-time"\`
      +      // - for production mode, \`transformMode\` will be \`"runtime"\`
      +      transformMode: undefined,
      +
      +      // Otherwise, you need to set \`transformMode\` according to your needs, for example:
      +      transformMode: process.env.NODE_ENV === "development" ? "compile-time" : "runtime",
      +
      +-     transformMode: "compile-time",
      ++     transformMode: "runtime",
      +    }),
      +  ],
      +};
    2. Transform it:

      sh
      $ npx webpack --mode=production
      diff
      // dist/main.js
      +- const name = import.meta.env.NAME
      ++ const name = globalThis.import_meta_env.NAME
      +// ...
    3. In order to obtain environment variables from globalThis.import_meta_env, you also need to add a special expression before your entry:

      diff
      <!-- public/index.html -->
      +<!DOCTYPE html>
      +<html lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      ++   <script>
      ++     globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"')
      ++   </script>
      +  </head>
      +</html>

      See the special expression section for details.

    4. Define environment variables:

      In the real world, we might define environment variables in the cloud, for example: Google Cloud Run environment variables.

      Here, we simulate this by defining our environment variables in the system:

      sh
      export NAME=production
    5. Install runtime transform tool.

      sh
      $ npm i -D @import-meta-env/cli
    6. Transform it again:

      sh
      npx import-meta-env -x .env.example -p dist/index.html
      diff
      <!-- dist/index.html -->
      +<!DOCTYPE html>
      +<html lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <script>
      +-     globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"')
      ++     globalThis.import_meta_env = JSON.parse('{"NAME":"production"}');
      +    </script>
      +    <script defer="defer" src="main.js"></script>
      +  </head>
      +</html>

See the transform section for details.

You can find the corresponding working example here, and all examples here.

.env File

By default, Import-meta-env will load environment variables from your system and the .env file (you can change or disable this using env option):

sh
$ export NAME=world
ini
# .env
+NAME=world

WARNING

You should gitignore this file because these environment variables are usually used for local development purposes, while your production environment variables are usually stored in your cloud, such as GCP or AWS, and will be loaded from the system.

TIP

It is common to temporarily change environment variables for debugging or other purposes. You can use @import-meta-env/prepare to automatically generate the final .env file from .env.local, .env.local.defaults, etc. files.

.env.example File

To prevent accidentally leaking environment variables to the client, only keys listed in an example file (e.g., .env.example) are exposed.

For example, if you have these config:

sh
$ export NAME=world
+$ export SECRET_KEY=****
ini
# .env.example
+NAME=this-value-can-be-anything

then only NAME will be exposed to your client source code, but SECRET_KEY will not.

INFO

For security reason, the example option does not have default value, you have to explicitly define it.

WARNING

Since any environment variables exposed to your source code will end up in your client bundle, the keys listed in .env.example should not contain any sensitive information.

Syntax

Import-meta-env exposes your environment variables on special environment variable expressions:

js
import.meta.env.FOO;
+import.meta.env.BAR;
+// ...

INFO

Since these environment variables expression are statically transformed. It is therefore necessary to always reference them using the full static string.

In other words, the following are invalid:

  • Entire object access, i.e. import.meta.env
  • Computed key access, e.g. import.meta.env["FOO"]

Transform

Import-meta-env provides two sets of transform:

  1. compile-time transform plugins
  2. runtime transform tool

In development and testing, you use the compile-time transform plugins to replace the environment variable expressions with environment variable strings.

In production, you need to use the compile-time transform plugins to replace the environment variable expressions with global accessors (in order to access to a special object), and then use runtime transform tool to inject environment variables to the special expression.

Compile-time Transform Modes

Since compile-time transform plugins will be used in two scenarios, it have two transform modes:

  1. compile-time: statically replace import.meta.env.KEY with "value"
  2. runtime: statically replace import.meta.env with a global accessor

Usually, you don't need to define it explicitly, because Import-meta-env determines it automatically based on your environment variables (e.g., process.env.NODE_ENV). See API for details.

Special Expression

In order to inject environment variables in production, you also need to add a special expression in your app:

js
globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');

This expression will be replaced with environment variables by using runtime transform tool as follows:

js
globalThis.import_meta_env = JSON.parse('{"NAME":"world"}');

We encourage you to put this special expression in your index.html because the Cache-Control header is usually set to no-cache when requesting index.html:

html
<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    ...
+  </head>
+  <body>
+    ...
+    <script>
+      globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');
+    </script>
+    <script src="src/index.js"></script>
+  </body>
+</html>

WARNING

The value of the expression will be statically replaced, the following will not work:

js
globalThis.import_meta_env = JSON.parse(
+  '"import_meta_env_placeholder"'
+);
+
+globalThis.import_meta_env = JSON.parse('"import_meta_env" + "_placeholder"');
+
+const placeholder = '"import_meta_env_placeholder"';
+globalThis.import_meta_env = JSON.parse(placeholder);

INFO

This expression should be placed before or at the top of your entry script, otherwise your code will end up with a TypeError:

txt
Uncaught TypeError: Cannot read properties of undefined (reading 'NAME')
+  at ...
`,52)]))}const m=i(l,[["render",p]]);export{g as __pageData,m as default}; diff --git a/assets/guide_getting-started_runtime-transform.md.DpK8cdZW.js b/assets/guide_getting-started_runtime-transform.md.DpK8cdZW.js new file mode 100644 index 000000000..253c1eb44 --- /dev/null +++ b/assets/guide_getting-started_runtime-transform.md.DpK8cdZW.js @@ -0,0 +1 @@ +import{_ as a,c as t,a0 as i,o as s}from"./chunks/framework.CGHvQLJz.js";const m=JSON.parse('{"title":"Runtime Transform","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/runtime-transform.md","filePath":"guide/getting-started/runtime-transform.md"}'),n={name:"guide/getting-started/runtime-transform.md"};function r(o,e,l,p,h,d){return s(),t("div",null,e[0]||(e[0]=[i('

Runtime Transform

Please read the guide for how to use this tool.

CLI

NPM version

Installation

bash
$ npm i -D @import-meta-env/cli

Usage

bash
$ npx import-meta-env -x .env.example

Related examples: docker

TIP

By default, import-meta-env will automatically replace all files in the common bundle output directories

You can override this behavior by passing the -p, --path <path...> option.

For more information, see API.

Without Node.js

The Single executable applications feature allows the distribution of a Node.js application conveniently to a system that does not have Node.js installed, you could use it to package the import-meta-env script into a node binary.

',12)]))}const u=a(n,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/guide_getting-started_runtime-transform.md.DpK8cdZW.lean.js b/assets/guide_getting-started_runtime-transform.md.DpK8cdZW.lean.js new file mode 100644 index 000000000..253c1eb44 --- /dev/null +++ b/assets/guide_getting-started_runtime-transform.md.DpK8cdZW.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,a0 as i,o as s}from"./chunks/framework.CGHvQLJz.js";const m=JSON.parse('{"title":"Runtime Transform","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/runtime-transform.md","filePath":"guide/getting-started/runtime-transform.md"}'),n={name:"guide/getting-started/runtime-transform.md"};function r(o,e,l,p,h,d){return s(),t("div",null,e[0]||(e[0]=[i('

Runtime Transform

Please read the guide for how to use this tool.

CLI

NPM version

Installation

bash
$ npm i -D @import-meta-env/cli

Usage

bash
$ npx import-meta-env -x .env.example

Related examples: docker

TIP

By default, import-meta-env will automatically replace all files in the common bundle output directories

You can override this behavior by passing the -p, --path <path...> option.

For more information, see API.

Without Node.js

The Single executable applications feature allows the distribution of a Node.js application conveniently to a system that does not have Node.js installed, you could use it to package the import-meta-env script into a node binary.

',12)]))}const u=a(n,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/guide_tools_flow.md.Du307EcB.js b/assets/guide_tools_flow.md.Du307EcB.js new file mode 100644 index 000000000..eea696b92 --- /dev/null +++ b/assets/guide_tools_flow.md.Du307EcB.js @@ -0,0 +1,8 @@ +import{_ as a,c as i,a0 as e,o as t}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Flow","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/flow.md","filePath":"guide/tools/flow.md"}'),n={name:"guide/tools/flow.md"};function l(p,s,h,o,r,k){return t(),i("div",null,s[0]||(s[0]=[e(`

Flow

Generate Flow type from .env.example.

Installation

NPM version

bash
$ npm i -D @import-meta-env/flow

Usage

bash
$ npx import-meta-env-flow -x .env.example

By default, when running above command, the CLI will create an import-meta-env.js file in your project root:

js
// import-meta-env.js
+// Generated by '@import-meta-env/flow'
+
+declare type Import$Meta = {
+  +env: $ReadOnly<{
+    NAME: string,
+  }>,
+};
`,9)]))}const g=a(n,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/guide_tools_flow.md.Du307EcB.lean.js b/assets/guide_tools_flow.md.Du307EcB.lean.js new file mode 100644 index 000000000..eea696b92 --- /dev/null +++ b/assets/guide_tools_flow.md.Du307EcB.lean.js @@ -0,0 +1,8 @@ +import{_ as a,c as i,a0 as e,o as t}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Flow","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/flow.md","filePath":"guide/tools/flow.md"}'),n={name:"guide/tools/flow.md"};function l(p,s,h,o,r,k){return t(),i("div",null,s[0]||(s[0]=[e(`

Flow

Generate Flow type from .env.example.

Installation

NPM version

bash
$ npm i -D @import-meta-env/flow

Usage

bash
$ npx import-meta-env-flow -x .env.example

By default, when running above command, the CLI will create an import-meta-env.js file in your project root:

js
// import-meta-env.js
+// Generated by '@import-meta-env/flow'
+
+declare type Import$Meta = {
+  +env: $ReadOnly<{
+    NAME: string,
+  }>,
+};
`,9)]))}const g=a(n,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/guide_tools_prepare.md.C1x4TUY1.js b/assets/guide_tools_prepare.md.C1x4TUY1.js new file mode 100644 index 000000000..8fc090e43 --- /dev/null +++ b/assets/guide_tools_prepare.md.C1x4TUY1.js @@ -0,0 +1,4 @@ +import{_ as e,c as s,a0 as i,o as t}from"./chunks/framework.CGHvQLJz.js";const k=JSON.parse('{"title":"Prepare","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/prepare.md","filePath":"guide/tools/prepare.md"}'),n={name:"guide/tools/prepare.md"};function p(l,a,r,o,h,d){return t(),s("div",null,a[0]||(a[0]=[i(`

Prepare

Generate .env file from .env.* files.

Installation

NPM version

bash
$ npm i -D @import-meta-env/prepare

Usage

bash
$ npx import-meta-env-prepare -x .env.example

By default, when running above command, the CLI will load environment variables from .env.local.defaults and .env.local, merge both, then create an .env file in your project root:

ini
# .env
+# Generated by '@import-meta-env/prepare'
+
+NAME=world
`,9)]))}const g=e(n,[["render",p]]);export{k as __pageData,g as default}; diff --git a/assets/guide_tools_prepare.md.C1x4TUY1.lean.js b/assets/guide_tools_prepare.md.C1x4TUY1.lean.js new file mode 100644 index 000000000..8fc090e43 --- /dev/null +++ b/assets/guide_tools_prepare.md.C1x4TUY1.lean.js @@ -0,0 +1,4 @@ +import{_ as e,c as s,a0 as i,o as t}from"./chunks/framework.CGHvQLJz.js";const k=JSON.parse('{"title":"Prepare","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/prepare.md","filePath":"guide/tools/prepare.md"}'),n={name:"guide/tools/prepare.md"};function p(l,a,r,o,h,d){return t(),s("div",null,a[0]||(a[0]=[i(`

Prepare

Generate .env file from .env.* files.

Installation

NPM version

bash
$ npm i -D @import-meta-env/prepare

Usage

bash
$ npx import-meta-env-prepare -x .env.example

By default, when running above command, the CLI will load environment variables from .env.local.defaults and .env.local, merge both, then create an .env file in your project root:

ini
# .env
+# Generated by '@import-meta-env/prepare'
+
+NAME=world
`,9)]))}const g=e(n,[["render",p]]);export{k as __pageData,g as default}; diff --git a/assets/guide_tools_typescript.md.41z6v_7Y.js b/assets/guide_tools_typescript.md.41z6v_7Y.js new file mode 100644 index 000000000..4bfadc0c4 --- /dev/null +++ b/assets/guide_tools_typescript.md.41z6v_7Y.js @@ -0,0 +1,10 @@ +import{_ as a,c as i,a0 as t,o as e}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"TypeScript","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/typescript.md","filePath":"guide/tools/typescript.md"}'),n={name:"guide/tools/typescript.md"};function p(l,s,h,r,k,o){return e(),i("div",null,s[0]||(s[0]=[t(`

TypeScript

Generate TypeScript .d.ts from .env.example.

Installation

NPM version

bash
$ npm i -D @import-meta-env/typescript

Usage

bash
$ npx import-meta-env-typescript -x .env.example

By default, when running above command, the CLI will create an import-meta-env.d.ts file in your project root:

ts
// import-meta-env.d.ts
+// Generated by '@import-meta-env/typescript'
+
+interface ImportMetaEnv {
+  readonly NAME: string;
+}
+
+interface ImportMeta {
+  readonly env: ImportMetaEnv;
+}
`,9)]))}const g=a(n,[["render",p]]);export{c as __pageData,g as default}; diff --git a/assets/guide_tools_typescript.md.41z6v_7Y.lean.js b/assets/guide_tools_typescript.md.41z6v_7Y.lean.js new file mode 100644 index 000000000..4bfadc0c4 --- /dev/null +++ b/assets/guide_tools_typescript.md.41z6v_7Y.lean.js @@ -0,0 +1,10 @@ +import{_ as a,c as i,a0 as t,o as e}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"TypeScript","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/typescript.md","filePath":"guide/tools/typescript.md"}'),n={name:"guide/tools/typescript.md"};function p(l,s,h,r,k,o){return e(),i("div",null,s[0]||(s[0]=[t(`

TypeScript

Generate TypeScript .d.ts from .env.example.

Installation

NPM version

bash
$ npm i -D @import-meta-env/typescript

Usage

bash
$ npx import-meta-env-typescript -x .env.example

By default, when running above command, the CLI will create an import-meta-env.d.ts file in your project root:

ts
// import-meta-env.d.ts
+// Generated by '@import-meta-env/typescript'
+
+interface ImportMetaEnv {
+  readonly NAME: string;
+}
+
+interface ImportMeta {
+  readonly env: ImportMetaEnv;
+}
`,9)]))}const g=a(n,[["render",p]]);export{c as __pageData,g as default}; diff --git a/assets/index.md.CW7ETkec.js b/assets/index.md.CW7ETkec.js new file mode 100644 index 000000000..cbea5c266 --- /dev/null +++ b/assets/index.md.CW7ETkec.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as i}from"./chunks/framework.CGHvQLJz.js";const u=JSON.parse('{"title":"Import-meta-env","titleTemplate":"Startup/Runtime environment variables solution for JavaScript","description":"","frontmatter":{"layout":"home","title":"Import-meta-env","titleTemplate":"Startup/Runtime environment variables solution for JavaScript","hero":{"name":"Import-meta-env","text":"Startup/Runtime environment variables solution for JavaScript","tagline":"Build once, deploy anywhere. Import-meta-env helps to developing applications following the 12-factor principles.","image":"/glance.png","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started/introduction.html#guide"},{"theme":"alt","text":"Examples","link":"https://github.com/import-meta-env/import-meta-env/tree/main/packages/examples"}]},"features":[{"title":"Security First","details":"No environment variables will be exposed to clients unless you define it in a .env.example file."},{"title":"Compile Safe","details":"No more forgetting to provide environment variables. Using Import-meta-env, if your code compiles, it works."},{"title":"Type-safe","details":"No more typos. Import-meta-env automatically generates types for your environment variables by using the .env.example file as a source of type information."},{"title":"Versatile","details":"Support for Babel, SWC, and Unplugin for ESbuild, Rollup, Vite, Webpack, etc."},{"title":"Adoptable","details":"Designed with a generic approach in mind, CSR/SSR, transpilers/bundlers, workers, service workers, and even micro frontend are all supported."},{"title":"Save Time & Money","details":"Speed up your CI/CD pipeline, you no longer need to build multiple bundles for different stages."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),a={name:"index.md"};function n(o,r,l,s,p,m){return i(),t("div")}const c=e(a,[["render",n]]);export{u as __pageData,c as default}; diff --git a/assets/index.md.CW7ETkec.lean.js b/assets/index.md.CW7ETkec.lean.js new file mode 100644 index 000000000..cbea5c266 --- /dev/null +++ b/assets/index.md.CW7ETkec.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as i}from"./chunks/framework.CGHvQLJz.js";const u=JSON.parse('{"title":"Import-meta-env","titleTemplate":"Startup/Runtime environment variables solution for JavaScript","description":"","frontmatter":{"layout":"home","title":"Import-meta-env","titleTemplate":"Startup/Runtime environment variables solution for JavaScript","hero":{"name":"Import-meta-env","text":"Startup/Runtime environment variables solution for JavaScript","tagline":"Build once, deploy anywhere. Import-meta-env helps to developing applications following the 12-factor principles.","image":"/glance.png","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started/introduction.html#guide"},{"theme":"alt","text":"Examples","link":"https://github.com/import-meta-env/import-meta-env/tree/main/packages/examples"}]},"features":[{"title":"Security First","details":"No environment variables will be exposed to clients unless you define it in a .env.example file."},{"title":"Compile Safe","details":"No more forgetting to provide environment variables. Using Import-meta-env, if your code compiles, it works."},{"title":"Type-safe","details":"No more typos. Import-meta-env automatically generates types for your environment variables by using the .env.example file as a source of type information."},{"title":"Versatile","details":"Support for Babel, SWC, and Unplugin for ESbuild, Rollup, Vite, Webpack, etc."},{"title":"Adoptable","details":"Designed with a generic approach in mind, CSR/SSR, transpilers/bundlers, workers, service workers, and even micro frontend are all supported."},{"title":"Save Time & Money","details":"Speed up your CI/CD pipeline, you no longer need to build multiple bundles for different stages."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),a={name:"index.md"};function n(o,r,l,s,p,m){return i(),t("div")}const c=e(a,[["render",n]]);export{u as __pageData,c as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 000000000..b6b603d59 Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 000000000..def40a4f6 Binary files /dev/null and b/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 000000000..e070c3d30 Binary files /dev/null and b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 000000000..a3c16ca40 Binary files /dev/null and b/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 000000000..2210a899e Binary files /dev/null and b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/assets/inter-italic-latin.C2AdPX0b.woff2 b/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 000000000..790d62dc7 Binary files /dev/null and b/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 000000000..1eec0775a Binary files /dev/null and b/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 000000000..2cfe61536 Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 000000000..e3886dd14 Binary files /dev/null and b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 000000000..36d67487d Binary files /dev/null and b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 000000000..2bed1e85e Binary files /dev/null and b/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 000000000..9a8d1e2b5 Binary files /dev/null and b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 000000000..07d3c53ae Binary files /dev/null and b/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 000000000..57bdc22ae Binary files /dev/null and b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/assets/migration.md.CYnxOdcY.js b/assets/migration.md.CYnxOdcY.js new file mode 100644 index 000000000..24948a42f --- /dev/null +++ b/assets/migration.md.CYnxOdcY.js @@ -0,0 +1,2 @@ +import{_ as s,c as a,a0 as t,o as e}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Migration","description":"","frontmatter":{},"headers":[],"relativePath":"migration.md","filePath":"migration.md"}'),n={name:"migration.md"};function p(h,i,l,k,r,o){return e(),a("div",null,i[0]||(i[0]=[t(`

Migration

Migration from v0.3.* to v0.4.*

  1. In order to support programmatically injecting script, the placeholder is changed:

    x

    html
    <script id="import_meta_env"></script>

    js
    globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');

Migration from v0.2.* to v0.3.*

  1. The entire environment variables accessing are dropped, use dedicated environment variables instead:

    x

    js
    const env = import.meta.env;
    +env.HELLO;

    js
    import.meta.env.HELLO;
  2. The computed environment variables are dropped, use static environment variables instead:

    x

    js
    import.meta.env["HELLO"];

    js
    import.meta.env.HELLO;
  3. In order to inject environment variables at runtime, you need to add a special script tag to your index.html:

    html
    <script id="import_meta_env"></script>
`,5)]))}const E=s(n,[["render",p]]);export{g as __pageData,E as default}; diff --git a/assets/migration.md.CYnxOdcY.lean.js b/assets/migration.md.CYnxOdcY.lean.js new file mode 100644 index 000000000..24948a42f --- /dev/null +++ b/assets/migration.md.CYnxOdcY.lean.js @@ -0,0 +1,2 @@ +import{_ as s,c as a,a0 as t,o as e}from"./chunks/framework.CGHvQLJz.js";const g=JSON.parse('{"title":"Migration","description":"","frontmatter":{},"headers":[],"relativePath":"migration.md","filePath":"migration.md"}'),n={name:"migration.md"};function p(h,i,l,k,r,o){return e(),a("div",null,i[0]||(i[0]=[t(`

Migration

Migration from v0.3.* to v0.4.*

  1. In order to support programmatically injecting script, the placeholder is changed:

    x

    html
    <script id="import_meta_env"></script>

    js
    globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');

Migration from v0.2.* to v0.3.*

  1. The entire environment variables accessing are dropped, use dedicated environment variables instead:

    x

    js
    const env = import.meta.env;
    +env.HELLO;

    js
    import.meta.env.HELLO;
  2. The computed environment variables are dropped, use static environment variables instead:

    x

    js
    import.meta.env["HELLO"];

    js
    import.meta.env.HELLO;
  3. In order to inject environment variables at runtime, you need to add a special script tag to your index.html:

    html
    <script id="import_meta_env"></script>
`,5)]))}const E=s(n,[["render",p]]);export{g as __pageData,E as default}; diff --git a/assets/public_glance.md.oqClkWjW.js b/assets/public_glance.md.oqClkWjW.js new file mode 100644 index 000000000..2e4d2446d --- /dev/null +++ b/assets/public_glance.md.oqClkWjW.js @@ -0,0 +1,8 @@ +import{_ as i,c as a,a0 as t,o as n}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Code","description":"","frontmatter":{},"headers":[],"relativePath":"public/glance.md","filePath":"public/glance.md"}'),e={name:"public/glance.md"};function l(h,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t(`

Code

ini
# .env.example
+HELLO=
ini
# .env
+HELLO=world
ts
// src/index.js
+const name = import.meta.env.NAME;
+document.querySelector("body").innerHTML = \`<h1>Hello, \${name}</h1>\`;
html
<!-- public/index.html -->
+<script>
+  globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');
+</script>

Development

sh
$ npx webpack --mode=development

Production

sh
$ npx webpack --mode=production
sh
$ npx import-meta-env -x .env.example -p dist/index.html
`,10)]))}const g=i(e,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/public_glance.md.oqClkWjW.lean.js b/assets/public_glance.md.oqClkWjW.lean.js new file mode 100644 index 000000000..2e4d2446d --- /dev/null +++ b/assets/public_glance.md.oqClkWjW.lean.js @@ -0,0 +1,8 @@ +import{_ as i,c as a,a0 as t,o as n}from"./chunks/framework.CGHvQLJz.js";const c=JSON.parse('{"title":"Code","description":"","frontmatter":{},"headers":[],"relativePath":"public/glance.md","filePath":"public/glance.md"}'),e={name:"public/glance.md"};function l(h,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t(`

Code

ini
# .env.example
+HELLO=
ini
# .env
+HELLO=world
ts
// src/index.js
+const name = import.meta.env.NAME;
+document.querySelector("body").innerHTML = \`<h1>Hello, \${name}</h1>\`;
html
<!-- public/index.html -->
+<script>
+  globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');
+</script>

Development

sh
$ npx webpack --mode=development

Production

sh
$ npx webpack --mode=production
sh
$ npx import-meta-env -x .env.example -p dist/index.html
`,10)]))}const g=i(e,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/style.B8KH_DFV.css b/assets/style.B8KH_DFV.css new file mode 100644 index 000000000..2beddca66 --- /dev/null +++ b/assets/style.B8KH_DFV.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, 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")}.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 h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.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;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;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,.vp-doc h4>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;-webkit-user-select:none;user-select:none;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-ad108c61]{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-ad108c61],.VPBackdrop.fade-leave-to[data-v-ad108c61]{opacity:0}.VPBackdrop.fade-leave-active[data-v-ad108c61]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-ad108c61]{display:none}}.NotFound[data-v-b4a4aa55]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-b4a4aa55]{padding:96px 32px 168px}}.code[data-v-b4a4aa55]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-b4a4aa55]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-b4a4aa55]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-b4a4aa55]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-b4a4aa55]{padding-top:20px}.link[data-v-b4a4aa55]{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-b4a4aa55]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-fe88e948]{position:relative;z-index:1}.nested[data-v-fe88e948]{padding-right:16px;padding-left:16px}.outline-link[data-v-fe88e948]{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-fe88e948]:hover,.outline-link.active[data-v-fe88e948]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-fe88e948]{padding-left:13px}.VPDocAsideOutline[data-v-b0a37e16]{display:none}.VPDocAsideOutline.has-outline[data-v-b0a37e16]{display:block}.content[data-v-b0a37e16]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b0a37e16]{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-b0a37e16]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-1b9b814f]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-1b9b814f]{flex-grow:1}.VPDocAside[data-v-1b9b814f] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-1b9b814f] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-1b9b814f] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-5910f7e6]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-5910f7e6]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-adb6f4a6]{margin-top:64px}.edit-info[data-v-adb6f4a6]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-adb6f4a6]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-adb6f4a6]{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-adb6f4a6]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-adb6f4a6]{margin-right:8px}.prev-next[data-v-adb6f4a6]{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-adb6f4a6]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-adb6f4a6]{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-adb6f4a6]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-adb6f4a6]{margin-left:auto;text-align:right}.desc[data-v-adb6f4a6]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-adb6f4a6]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-ebc4b343]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-ebc4b343]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-ebc4b343]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-ebc4b343]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-ebc4b343]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-ebc4b343]{display:flex;justify-content:center}.VPDoc .aside[data-v-ebc4b343]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-ebc4b343]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-ebc4b343]{max-width:1104px}}.container[data-v-ebc4b343]{margin:0 auto;width:100%}.aside[data-v-ebc4b343]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-ebc4b343]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-ebc4b343]{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-ebc4b343]::-webkit-scrollbar{display:none}.aside-curtain[data-v-ebc4b343]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-ebc4b343]{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-ebc4b343]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-ebc4b343]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-ebc4b343]{order:1;margin:0;min-width:640px}}.content-container[data-v-ebc4b343]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-ebc4b343]{max-width:688px}.VPButton[data-v-25c615d3]{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-25c615d3]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-25c615d3]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-25c615d3]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-25c615d3]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-25c615d3]: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-25c615d3]: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-25c615d3]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-25c615d3]: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-25c615d3]: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-25c615d3]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-25c615d3]: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-25c615d3]: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-bee8f0e0]{display:none}.dark .VPImage.light[data-v-bee8f0e0]{display:none}.VPHero[data-v-284a0e6d]{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-284a0e6d]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-284a0e6d]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-284a0e6d]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-284a0e6d]{flex-direction:row}}.main[data-v-284a0e6d]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-284a0e6d]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-284a0e6d]{text-align:left}}@media (min-width: 960px){.main[data-v-284a0e6d]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-284a0e6d]{max-width:592px}}.name[data-v-284a0e6d],.text[data-v-284a0e6d]{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-284a0e6d],.VPHero.has-image .text[data-v-284a0e6d]{margin:0 auto}.name[data-v-284a0e6d]{color:var(--vp-home-hero-name-color)}.clip[data-v-284a0e6d]{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-284a0e6d],.text[data-v-284a0e6d]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-284a0e6d],.text[data-v-284a0e6d]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-284a0e6d],.VPHero.has-image .text[data-v-284a0e6d]{margin:0}}.tagline[data-v-284a0e6d]{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-284a0e6d]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-284a0e6d]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-284a0e6d]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-284a0e6d]{margin:0}}.actions[data-v-284a0e6d]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-284a0e6d]{justify-content:center}@media (min-width: 640px){.actions[data-v-284a0e6d]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-284a0e6d]{justify-content:flex-start}}.action[data-v-284a0e6d]{flex-shrink:0;padding:6px}.image[data-v-284a0e6d]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-284a0e6d]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-284a0e6d]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-284a0e6d]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-284a0e6d]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-284a0e6d]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-284a0e6d]{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-284a0e6d]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-284a0e6d]{width:320px;height:320px}}[data-v-284a0e6d] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-284a0e6d] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-284a0e6d] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a1afa55c]{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-a1afa55c]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a1afa55c]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a1afa55c]>.VPImage{margin-bottom:20px}.icon[data-v-a1afa55c]{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-a1afa55c]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a1afa55c]{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-a1afa55c]{padding-top:8px}.link-text-value[data-v-a1afa55c]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a1afa55c]{margin-left:6px}.VPFeatures[data-v-dc93de81]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-dc93de81]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-dc93de81]{padding:0 64px}}.container[data-v-dc93de81]{margin:0 auto;max-width:1152px}.items[data-v-dc93de81]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-dc93de81]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-dc93de81],.item.grid-4[data-v-dc93de81],.item.grid-6[data-v-dc93de81]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-dc93de81],.item.grid-4[data-v-dc93de81]{width:50%}.item.grid-3[data-v-dc93de81],.item.grid-6[data-v-dc93de81]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-dc93de81]{width:25%}}.container[data-v-54c7f21e]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-54c7f21e]{padding:0 48px}}@media (min-width: 960px){.container[data-v-54c7f21e]{width:100%;padding:0 64px}}.vp-doc[data-v-54c7f21e] .VPHomeSponsors,.vp-doc[data-v-54c7f21e] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-54c7f21e] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-54c7f21e] .VPHomeSponsors a,.vp-doc[data-v-54c7f21e] .VPTeamPage a{text-decoration:none}.VPHome[data-v-37e2fff1]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-37e2fff1]{margin-bottom:128px}}.VPContent[data-v-dc605918]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-dc605918]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-dc605918]{margin:0}@media (min-width: 960px){.VPContent[data-v-dc605918]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-dc605918]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-dc605918]{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-a8ce4c99]{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-a8ce4c99]{display:none}.VPFooter[data-v-a8ce4c99] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-a8ce4c99] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-a8ce4c99]{padding:32px}}.container[data-v-a8ce4c99]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-a8ce4c99],.copyright[data-v-a8ce4c99]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-df54f306]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-df54f306]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-df54f306]{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-df54f306]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-df54f306]{color:var(--vp-c-text-1)}.icon[data-v-df54f306]{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-df54f306]{font-size:14px}.icon[data-v-df54f306]{font-size:16px}}.open>.icon[data-v-df54f306]{transform:rotate(90deg)}.items[data-v-df54f306]{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-df54f306]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-df54f306]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-df54f306]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-df54f306]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-df54f306]{transition:all .2s ease-out}.flyout-leave-active[data-v-df54f306]{transition:all .15s ease-in}.flyout-enter-from[data-v-df54f306],.flyout-leave-to[data-v-df54f306]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-1b4e439d]{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-1b4e439d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-1b4e439d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-1b4e439d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-1b4e439d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-1b4e439d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-1b4e439d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-1b4e439d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-1b4e439d]{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-1b4e439d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-1b4e439d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-1b4e439d]{display:none}}.menu-icon[data-v-1b4e439d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-1b4e439d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-1b4e439d]{padding:12px 32px 11px}}.VPSwitch[data-v-29548788]{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-29548788]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-29548788]{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-29548788]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-29548788] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-29548788] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-bb2093b3]{opacity:1}.moon[data-v-bb2093b3],.dark .sun[data-v-bb2093b3]{opacity:0}.dark .moon[data-v-bb2093b3]{opacity:1}.dark .VPSwitchAppearance[data-v-bb2093b3] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-1c28547c]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-1c28547c]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-73afe1df]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-73afe1df]{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-73afe1df]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-73afe1df]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-fc45ab19]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-fc45ab19]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-fc45ab19]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-fc45ab19]{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-1619635d]{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-1619635d] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-1619635d] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-1619635d] .group:last-child{padding-bottom:0}.VPMenu[data-v-1619635d] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-1619635d] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-1619635d] .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-1619635d] .action{padding-left:24px}.VPFlyout[data-v-a47cf8ed]{position:relative}.VPFlyout[data-v-a47cf8ed]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-a47cf8ed]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-a47cf8ed]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-a47cf8ed]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-a47cf8ed]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-a47cf8ed]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-a47cf8ed],.button[aria-expanded=true]+.menu[data-v-a47cf8ed]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-a47cf8ed]{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-a47cf8ed]{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-a47cf8ed]{margin-right:0;font-size:16px}.text-icon[data-v-a47cf8ed]{margin-left:4px;font-size:14px}.icon[data-v-a47cf8ed]{font-size:20px;transition:fill .25s}.menu[data-v-a47cf8ed]{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-0b647ba7]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-0b647ba7]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-0b647ba7]>svg,.VPSocialLink[data-v-0b647ba7]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-f5fed8be]{display:flex;justify-content:center}.VPNavBarExtra[data-v-a1a8e2c8]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-a1a8e2c8]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-a1a8e2c8]{display:none}}.trans-title[data-v-a1a8e2c8]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-a1a8e2c8],.item.social-links[data-v-a1a8e2c8]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-a1a8e2c8]{min-width:176px}.appearance-action[data-v-a1a8e2c8]{margin-right:-2px}.social-links-list[data-v-a1a8e2c8]{margin:-4px -8px}.VPNavBarHamburger[data-v-ed89a0eb]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-ed89a0eb]{display:none}}.container[data-v-ed89a0eb]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-ed89a0eb]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-ed89a0eb]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-ed89a0eb]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-ed89a0eb]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-ed89a0eb]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-ed89a0eb]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-ed89a0eb],.VPNavBarHamburger.active:hover .middle[data-v-ed89a0eb],.VPNavBarHamburger.active:hover .bottom[data-v-ed89a0eb]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-ed89a0eb],.middle[data-v-ed89a0eb],.bottom[data-v-ed89a0eb]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-ed89a0eb]{top:0;left:0;transform:translate(0)}.middle[data-v-ed89a0eb]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-ed89a0eb]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-16512d1e]{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-16512d1e],.VPNavBarMenuLink[data-v-16512d1e]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-6e77563e]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-6e77563e]{display:flex}}/*! @docsearch/css 3.6.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-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-3f36380f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-3f36380f]{display:flex;align-items:center}}.title[data-v-f029a965]{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-f029a965]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-f029a965]{border-bottom-color:var(--vp-c-divider)}}[data-v-f029a965] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-d39dbf0c]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-d39dbf0c]{display:flex;align-items:center}}.title[data-v-d39dbf0c]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-9bb0c531]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-9bb0c531]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-9bb0c531]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-9bb0c531]:not(.home){background-color:transparent}.VPNavBar[data-v-9bb0c531]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-9bb0c531]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-9bb0c531]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-9bb0c531]{padding:0}}.container[data-v-9bb0c531]{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-9bb0c531],.container>.content[data-v-9bb0c531]{pointer-events:none}.container[data-v-9bb0c531] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-9bb0c531]{max-width:100%}}.title[data-v-9bb0c531]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-9bb0c531]{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-9bb0c531]{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-9bb0c531]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-9bb0c531]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-9bb0c531]{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-9bb0c531]{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-9bb0c531]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-9bb0c531]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-9bb0c531]{column-gap:.5rem}}.menu+.translations[data-v-9bb0c531]:before,.menu+.appearance[data-v-9bb0c531]:before,.menu+.social-links[data-v-9bb0c531]:before,.translations+.appearance[data-v-9bb0c531]:before,.appearance+.social-links[data-v-9bb0c531]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-9bb0c531]:before,.translations+.appearance[data-v-9bb0c531]:before{margin-right:16px}.appearance+.social-links[data-v-9bb0c531]:before{margin-left:16px}.social-links[data-v-9bb0c531]{margin-right:-8px}.divider[data-v-9bb0c531]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-9bb0c531]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-9bb0c531]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-9bb0c531]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-9bb0c531]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-9bb0c531]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-9bb0c531]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-df54fe59]{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-df54fe59]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-21e862cb]{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-21e862cb]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-78263250]{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-78263250]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8fd594bd]{display:block}.title[data-v-8fd594bd]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-07690d19]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-07690d19]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-07690d19]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-07690d19]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-07690d19]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-07690d19]{transform:rotate(45deg)}.button[data-v-07690d19]{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-07690d19]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-07690d19]{transition:transform .25s}.group[data-v-07690d19]:first-child{padding-top:0}.group+.group[data-v-07690d19],.group+.item[data-v-07690d19]{padding-top:4px}.VPNavScreenTranslations[data-v-0843b20d]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-0843b20d]{height:auto}.title[data-v-0843b20d]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-0843b20d]{font-size:16px}.icon.lang[data-v-0843b20d]{margin-right:8px}.icon.chevron[data-v-0843b20d]{margin-left:4px}.list[data-v-0843b20d]{padding:4px 0 0 24px}.link[data-v-0843b20d]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-1f067d0b]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));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 .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-1f067d0b],.VPNavScreen.fade-leave-active[data-v-1f067d0b]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-1f067d0b],.VPNavScreen.fade-leave-active .container[data-v-1f067d0b]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-1f067d0b],.VPNavScreen.fade-leave-to[data-v-1f067d0b]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-1f067d0b],.VPNavScreen.fade-leave-to .container[data-v-1f067d0b]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-1f067d0b]{display:none}}.container[data-v-1f067d0b]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-1f067d0b],.menu+.appearance[data-v-1f067d0b],.translations+.appearance[data-v-1f067d0b]{margin-top:24px}.menu+.social-links[data-v-1f067d0b]{margin-top:16px}.appearance+.social-links[data-v-1f067d0b]{margin-top:16px}.VPNav[data-v-f1b792e0]{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-f1b792e0]{position:fixed}}.VPSidebarItem.level-0[data-v-bc0d3d6d]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-bc0d3d6d]{padding-bottom:10px}.item[data-v-bc0d3d6d]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-bc0d3d6d]{cursor:pointer}.indicator[data-v-bc0d3d6d]{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-bc0d3d6d],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-bc0d3d6d],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-bc0d3d6d],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-bc0d3d6d]{background-color:var(--vp-c-brand-1)}.link[data-v-bc0d3d6d]{display:flex;align-items:center;flex-grow:1}.text[data-v-bc0d3d6d]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-bc0d3d6d]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-bc0d3d6d],.VPSidebarItem.level-2 .text[data-v-bc0d3d6d],.VPSidebarItem.level-3 .text[data-v-bc0d3d6d],.VPSidebarItem.level-4 .text[data-v-bc0d3d6d],.VPSidebarItem.level-5 .text[data-v-bc0d3d6d]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-bc0d3d6d],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-bc0d3d6d],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-bc0d3d6d],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-bc0d3d6d],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-bc0d3d6d],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-bc0d3d6d]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-bc0d3d6d],.VPSidebarItem.level-1.has-active>.item>.text[data-v-bc0d3d6d],.VPSidebarItem.level-2.has-active>.item>.text[data-v-bc0d3d6d],.VPSidebarItem.level-3.has-active>.item>.text[data-v-bc0d3d6d],.VPSidebarItem.level-4.has-active>.item>.text[data-v-bc0d3d6d],.VPSidebarItem.level-5.has-active>.item>.text[data-v-bc0d3d6d],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-bc0d3d6d]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-bc0d3d6d],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-bc0d3d6d]{color:var(--vp-c-brand-1)}.caret[data-v-bc0d3d6d]{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-bc0d3d6d]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-bc0d3d6d]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-bc0d3d6d]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-bc0d3d6d]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-bc0d3d6d],.VPSidebarItem.level-2 .items[data-v-bc0d3d6d],.VPSidebarItem.level-3 .items[data-v-bc0d3d6d],.VPSidebarItem.level-4 .items[data-v-bc0d3d6d],.VPSidebarItem.level-5 .items[data-v-bc0d3d6d]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-bc0d3d6d]{display:none}.no-transition[data-v-6958f2f0] .caret-icon{transition:none}.group+.group[data-v-6958f2f0]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-6958f2f0]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-5e69ec52]{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-5e69ec52]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-5e69ec52]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-5e69ec52]{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-5e69ec52]{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-5e69ec52]{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-5e69ec52]{outline:0}.VPSkipLink[data-v-0a2ba013]{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-0a2ba013]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0a2ba013]{top:14px;left:16px}}.Layout[data-v-eecc4835]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-b47f7364]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-b47f7364]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-b47f7364]{margin:128px 0}}.VPHomeSponsors[data-v-b47f7364]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-b47f7364]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-b47f7364]{padding:0 64px}}.container[data-v-b47f7364]{margin:0 auto;max-width:1152px}.love[data-v-b47f7364]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-b47f7364]{display:inline-block}.message[data-v-b47f7364]{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-b47f7364]{padding-top:32px}.action[data-v-b47f7364]{padding-top:40px;text-align:center}.VPTeamPage[data-v-64e759be]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-64e759be]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-64e759be-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-64e759be-s],.VPTeamMembers+.VPTeamPageSection[data-v-64e759be-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-64e759be-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-64e759be-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-64e759be-s],.VPTeamMembers+.VPTeamPageSection[data-v-64e759be-s]{margin-top:96px}}.VPTeamMembers[data-v-64e759be-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-64e759be-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-64e759be-s]{padding:0 64px}}.VPTeamPageTitle[data-v-59a779d5]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-59a779d5]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-59a779d5]{padding:80px 64px 48px}}.title[data-v-59a779d5]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-59a779d5]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-59a779d5]{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-59a779d5]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b6340b20]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b6340b20]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b6340b20]{padding:0 64px}}.title[data-v-b6340b20]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b6340b20]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b6340b20]{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-b6340b20]{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-b6340b20]{padding-top:40px}.VPTeamMembersItem[data-v-76222e44]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-76222e44]{padding:32px}.VPTeamMembersItem.small .data[data-v-76222e44]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-76222e44]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-76222e44]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-76222e44]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-76222e44]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-76222e44]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-76222e44]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-76222e44]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-76222e44]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-76222e44]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-76222e44]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-76222e44]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-76222e44]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-76222e44]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-76222e44]{text-align:center}.avatar[data-v-76222e44]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-76222e44]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-76222e44]{margin:0;font-weight:600}.affiliation[data-v-76222e44]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-76222e44]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-76222e44]:hover{color:var(--vp-c-brand-1)}.desc[data-v-76222e44]{margin:0 auto}.desc[data-v-76222e44] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-76222e44]{display:flex;justify-content:center;height:56px}.sp-link[data-v-76222e44]{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-76222e44]:hover,.sp .sp-link.link[data-v-76222e44]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-76222e44]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-a2977d85]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-a2977d85]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-a2977d85]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-a2977d85]{max-width:876px}.VPTeamMembers.medium .container[data-v-a2977d85]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-a2977d85]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-a2977d85]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-a2977d85]{max-width:760px}.container[data-v-a2977d85]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-c-brand-1: #5599c8;--vp-c-brand-2: #2b3a42} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 000000000..d228fa19c Binary files /dev/null and b/favicon.ico differ diff --git a/glance.md b/glance.md new file mode 100644 index 000000000..d6da5e7bb --- /dev/null +++ b/glance.md @@ -0,0 +1,40 @@ +# Code + +```ini +# .env.example +HELLO= +``` + +```ini +# .env +HELLO=world +``` + +```ts +// src/index.js +const name = import.meta.env.NAME; +document.querySelector("body").innerHTML = `

Hello, ${name}

`; +``` + +```html + + +``` + +# Development + +```sh +$ npx webpack --mode=development +``` + +# Production + +```sh +$ npx webpack --mode=production +``` + +```sh +$ npx import-meta-env -x .env.example -p dist/index.html +``` diff --git a/glance.png b/glance.png new file mode 100644 index 000000000..2fae01a34 Binary files /dev/null and b/glance.png differ diff --git a/guide/extra-topic/json.html b/guide/extra-topic/json.html new file mode 100644 index 000000000..a47b2f247 --- /dev/null +++ b/guide/extra-topic/json.html @@ -0,0 +1,43 @@ + + + + + + JSON | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

JSON

We sometimes want to store some structural data in an environment variable, in which case we can expose the environment variable in another global variable:

  1. Define environment variables:

    ini
    # .env.example
    +FOO=
    ini
    # .env
    +FOO='["BAR","BAZ"]'
  2. Validate, parse, and expose the environment variables:

    ts
    // json-env.ts
    +// you could use other tools you like:
    +import { z } from "zod";
    +// you could export instead of expose to global it:
    +Object.defineProperty(globalThis, "jsonEnv", {
    +  configurable: false,
    +  writable: false,
    +  value: {
    +    FOO: z.array(z.string()).parse(import.meta.env.FOO),
    +  },
    +});
  3. (Recommended) Import the json-env.ts at the top of your application, then you can ensure that the rest of your application will have a valid JSON env:

    ts
    // main.ts
    +import "./json-env.ts";
  4. Then you can use it anywhere:

    ts
    console.log(jsonEnv.FOO[0]);
    +// > "BAR"

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/extra-topic/sensitive-environment-variables.html b/guide/extra-topic/sensitive-environment-variables.html new file mode 100644 index 000000000..ab5e4afe3 --- /dev/null +++ b/guide/extra-topic/sensitive-environment-variables.html @@ -0,0 +1,32 @@ + + + + + + Sensitive Environment Variables | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Sensitive Environment Variables

Defining sensitive environment variables

It's always a good idea to provide all team members with information about required environment variables, including sensitive ones.

To do this, you can create two separate example files and pass the public file to the example option:

ini
# .env.example.public
+NAME=
ini
# .env.example.private
+SECRET_KEY=

Accessing sensitive environment variables

You should use process.env to access sensitive environment variables in your code, since it's server-side only:

js
const NAME = import.meta.env.NAME;
+const SECRET_KEY = process.env.SECRET_KEY;

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/extra-topic/server-side-rendering.html b/guide/extra-topic/server-side-rendering.html new file mode 100644 index 000000000..1c9da2e8b --- /dev/null +++ b/guide/extra-topic/server-side-rendering.html @@ -0,0 +1,45 @@ + + + + + + Server Side Rendering | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Server Side Rendering

Since environment variables are statically injected into the client-side's globalThis.import_meta_env , you'll need to use the client-side's hook (or similar technique) to obtain these environment variables.

For example, in NEXT.js you can use the useEffect hook to access globalThis.import_meta_env:

tsx
import { useEffect, useMemo, useState } from "react";
+
+const useImportMetaEnv = () => {
+  const [env, setEnv] = useState({ HELLO: "" });
+
+  useEffect(() => {
+    setEnv({ HELLO: import.meta.env.HELLO });
+  }, []);
+
+  return useMemo(() => env, [env]);
+};
+
+export default function Home() {
+  const env = useImportMetaEnv();
+
+  return <h1>Hello: {env.HELLO}</h1>;
+}

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/faq/changes-to-environment-variables-is-not-updated.html b/guide/faq/changes-to-environment-variables-is-not-updated.html new file mode 100644 index 000000000..bc48684a7 --- /dev/null +++ b/guide/faq/changes-to-environment-variables-is-not-updated.html @@ -0,0 +1,29 @@ + + + + + + Changes to environment variables is not updated | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Changes to environment variables is not updated

You will need to restart your dev server after changing the environment variables.

This is useful, for example:

  • You want to track bugs for production, but you don't want to shut down the development environment.
  • Or, you want to start multiple development environments at the same time and each one has its own environment variables.

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/faq/environment-variables-types.html b/guide/faq/environment-variables-types.html new file mode 100644 index 000000000..0ad57947d --- /dev/null +++ b/guide/faq/environment-variables-types.html @@ -0,0 +1,29 @@ + + + + + + Environment Variables Types | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Environment Variables Types

Environment variables are always strings.

If you need a boolean value:

bash
$ export DEBUG="1"
js
const debug = !!import.meta.env.DEBUG; // true

If you need a number value:

bash
$ export PORT="3000"
js
const port = parseInt(import.meta.env.PORT, 10); // 3000

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/faq/why-use-import-meta.html b/guide/faq/why-use-import-meta.html new file mode 100644 index 000000000..b191cb2d0 --- /dev/null +++ b/guide/faq/why-use-import-meta.html @@ -0,0 +1,29 @@ + + + + + + Why use ImportMeta | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Why use ImportMeta

Since process.env is a Node specific object, we should not use it in browser environment.

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/framework-specific-notes/vite.html b/guide/framework-specific-notes/vite.html new file mode 100644 index 000000000..f3127f902 --- /dev/null +++ b/guide/framework-specific-notes/vite.html @@ -0,0 +1,29 @@ + + + + + + Vite | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Vite

Env Variables and Modes

During production, the following environment variables are still statically replaced:

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/getting-started/compile-time-transform.html b/guide/getting-started/compile-time-transform.html new file mode 100644 index 000000000..51f3e34c8 --- /dev/null +++ b/guide/getting-started/compile-time-transform.html @@ -0,0 +1,103 @@ + + + + + + Compile-time Transform | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Compile-time Transform

Please read the guide for how to use these plugins.

Plugin Options

All compile-time transform plugins use the same options:

js
interface PluginOptions {
+  /**
+   * The .env file path to load
+   *
+   * You can out-out this by passing an empty string
+   *
+   * @default ".env"
+   */
+  env?: string;
+
+  /**
+   * The public .env example file path to load
+   */
+  example: string;
+
+  /**
+   * Compile-time: statically replace `import.meta.env.KEY` with `"value"`
+   * Runtime: statically replace `import.meta.env` with a global accessor
+   *
+   * @default
+   * Generally speaking, `process.env.NODE_ENV === "production" ? "runtime" : "compile-time"`
+   */
+  transformMode?: "compile-time" | "runtime";
+}

Babel Plugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/babel

Setup

json
{
+  "plugins": [
+    [
+      "module:@import-meta-env/babel",
+      pluginOptions
+    ]
+  ]
+}

Related examples: babel, babel-loader, jest

SWC Plugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/swc

Setup

.swcrc:

json
{
+  "$schema": "https://json.schemastore.org/swcrc",
+  "jsc": {
+    "experimental": {
+      "plugins": [
+        [
+          "@import-meta-env/swc",
+          pluginOptions
+        ]
+      ]
+    }
+  }
+}

Related examples: swc

Unplugin

NPM version

Installation

bash
$ npm i -D @import-meta-env/unplugin

Setup

ESbuild

js
// esbuild.config.js
+const { build } = require("esbuild");
+const importMetaEnv = require("@import-meta-env/unplugin");
+
+build({
+  plugins: [importMetaEnv.esbuild(pluginOptions)],
+});

Related examples: esbuild

Farm

js
// farm.config.ts
+import { defineConfig } from "@farmfe/core";
+import importMetaEnv from "@import-meta-env/unplugin";
+
+export default defineConfig({
+  plugins: [importMetaEnv.farm(pluginOptions)],
+});

Related examples: farm

Rollup

js
// rollup.config.js
+import ImportMetaEnvPlugin from "@import-meta-env/unplugin";
+
+export default {
+  plugins: [ImportMetaEnvPlugin.rollup(pluginOptions)],
+};

Related examples: rollup

Vite

ts
// vite.config.ts
+import ImportMetaEnvPlugin from "@import-meta-env/unplugin";
+
+export default {
+  plugins: [ImportMetaEnvPlugin.vite(pluginOptions)],
+};

Related examples: vite

Webpack

js
// webpack.config.js
+const ImportMetaEnvPlugin = require("@import-meta-env/unplugin");
+
+module.exports = {
+  plugins: [ImportMetaEnvPlugin.webpack(pluginOptions)],
+};

Related examples: webpack

Rspack

js
// rspack.config.js
+const ImportMetaEnvPlugin = require("@import-meta-env/unplugin");
+
+module.exports = {
+  plugins: [ImportMetaEnvPlugin.rspack(pluginOptions)],
+};

Related examples: rspack

Compatibility

Currently we support Babel plugin, SWC plugin and Unplugin (an unified plugin system for Vite, Rollup, Webpack, and more) transforms. If your toolchain is not supported, please feel free to file an issue on GitHub.

You can choose one of these or combine multiple plugins, for example if you are using Webpack 5 and Jest:

  1. You can use babel-loader + Babel plugin for development, testing and production.
  2. Alternatively, you can use Unplugin for development and production, and babel-jest + Babel plugin for testing.
  3. Alternatively, you can use the swc-loader and SWC plugin for development and production, and the babel-jest and Babel plugin for testing.

WARNING

There are some exceptions:

  1. Vite is only compatible with Unplugin.
  2. Webpack 4 is not compatible with Unplugin.

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/getting-started/introduction.html b/guide/getting-started/introduction.html new file mode 100644 index 000000000..48a38d5eb --- /dev/null +++ b/guide/getting-started/introduction.html @@ -0,0 +1,115 @@ + + + + + + Introduction | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Introduction

Import-meta-env is a startup/runtime environment variable solution for JavaScript, it provides a set of transform plugins and tools designed to help you develop applications according to the 12-factor principle.

Published Packages

PackageVersionChangelogLicense
@import-meta-env/babelnpmCHANGELOGlicense
@import-meta-env/clinpmCHANGELOGlicense
@import-meta-env/flownpmCHANGELOGlicense
@import-meta-env/preparenpmCHANGELOGlicense
@import-meta-env/swcnpmCHANGELOGlicense
@import-meta-env/typescriptnpmCHANGELOGlicense
@import-meta-env/unpluginnpmCHANGELOGlicense

Guide

TIP

We are excited to introduce runtime-env, a framework-agnostic library that provides a runtime environment variable solution for JavaScript applications. It integrates effortlessly with any framework or build tool.

Discover it today and streamline your development workflow!

In this guide, we will use Webpack as an example, but you can also use other build tools. All supported build tools can be found on the compile-time transform plugins page.

Write your code

  1. To prevent accidentally leaking environment variables to the client, you need to list public environment variables in an example file (e.g., .env.example):

    ini
    # .env.example
    +NAME=

    See the .env.example file section for details.

  2. Obtain the environment variable:

    diff
    // src/index.js
    +- const name = process.env.NAME
    ++ const name = import.meta.env.NAME
    +document.querySelector("body").innerHTML = `<h1>Hello, ${name}</h1>`;

    See the syntax section for details.

Transform it

Install dotenv in order for Import-meta-env packages to work:

sh
$ npm i -D dotenv
  • During development and testing:

    1. Define environment variables:

      ini
      # .env
      +NAME=development

      See the .env file section for details.

    2. Install and setup compile-time transform plugins.

      sh
      $ npm i -D @import-meta-env/unplugin
      diff
      // webpack.config.js
      +module.exports = {
      +  plugins: [
      ++   require("@import-meta-env/unplugin").webpack({
      ++     example: ".env.example",
      ++     env: ".env",
      ++     transformMode: "compile-time",
      ++   }),
      +  ],
      +};
    3. Transform it:

      sh
      $ npx webpack --mode=development
      diff
      // dist/main.js
      +- const name = import.meta.env.NAME
      ++ const name = "development"
      +// ...
  • During production:

    1. Install and setup compile-time transform plugins.

      sh
      $ npm i -D @import-meta-env/unplugin
      diff
      // webpack.config.js
      +module.exports = {
      +  plugins: [
      +    require("@import-meta-env/unplugin").webpack({
      +      example: ".env.example",
      +      env: ".env",
      +
      +      // If you are using popular packagers such as Webpack and Vite,
      +      // @import-meta-env/unplugin will automatically switch the `transformMode` for you, you don't have to explicitly define it:
      +      // - for development mode, `transformMode` will be `"compile-time"`
      +      // - for production mode, `transformMode` will be `"runtime"`
      +      transformMode: undefined,
      +
      +      // Otherwise, you need to set `transformMode` according to your needs, for example:
      +      transformMode: process.env.NODE_ENV === "development" ? "compile-time" : "runtime",
      +
      +-     transformMode: "compile-time",
      ++     transformMode: "runtime",
      +    }),
      +  ],
      +};
    2. Transform it:

      sh
      $ npx webpack --mode=production
      diff
      // dist/main.js
      +- const name = import.meta.env.NAME
      ++ const name = globalThis.import_meta_env.NAME
      +// ...
    3. In order to obtain environment variables from globalThis.import_meta_env, you also need to add a special expression before your entry:

      diff
      <!-- public/index.html -->
      +<!DOCTYPE html>
      +<html lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      ++   <script>
      ++     globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"')
      ++   </script>
      +  </head>
      +</html>

      See the special expression section for details.

    4. Define environment variables:

      In the real world, we might define environment variables in the cloud, for example: Google Cloud Run environment variables.

      Here, we simulate this by defining our environment variables in the system:

      sh
      export NAME=production
    5. Install runtime transform tool.

      sh
      $ npm i -D @import-meta-env/cli
    6. Transform it again:

      sh
      npx import-meta-env -x .env.example -p dist/index.html
      diff
      <!-- dist/index.html -->
      +<!DOCTYPE html>
      +<html lang="en">
      +  <head>
      +    <meta charset="UTF-8" />
      +    <script>
      +-     globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"')
      ++     globalThis.import_meta_env = JSON.parse('{"NAME":"production"}');
      +    </script>
      +    <script defer="defer" src="main.js"></script>
      +  </head>
      +</html>

See the transform section for details.

You can find the corresponding working example here, and all examples here.

.env File

By default, Import-meta-env will load environment variables from your system and the .env file (you can change or disable this using env option):

sh
$ export NAME=world
ini
# .env
+NAME=world

WARNING

You should gitignore this file because these environment variables are usually used for local development purposes, while your production environment variables are usually stored in your cloud, such as GCP or AWS, and will be loaded from the system.

TIP

It is common to temporarily change environment variables for debugging or other purposes. You can use @import-meta-env/prepare to automatically generate the final .env file from .env.local, .env.local.defaults, etc. files.

.env.example File

To prevent accidentally leaking environment variables to the client, only keys listed in an example file (e.g., .env.example) are exposed.

For example, if you have these config:

sh
$ export NAME=world
+$ export SECRET_KEY=****
ini
# .env.example
+NAME=this-value-can-be-anything

then only NAME will be exposed to your client source code, but SECRET_KEY will not.

INFO

For security reason, the example option does not have default value, you have to explicitly define it.

WARNING

Since any environment variables exposed to your source code will end up in your client bundle, the keys listed in .env.example should not contain any sensitive information.

Syntax

Import-meta-env exposes your environment variables on special environment variable expressions:

js
import.meta.env.FOO;
+import.meta.env.BAR;
+// ...

INFO

Since these environment variables expression are statically transformed. It is therefore necessary to always reference them using the full static string.

In other words, the following are invalid:

  • Entire object access, i.e. import.meta.env
  • Computed key access, e.g. import.meta.env["FOO"]

Transform

Import-meta-env provides two sets of transform:

  1. compile-time transform plugins
  2. runtime transform tool

In development and testing, you use the compile-time transform plugins to replace the environment variable expressions with environment variable strings.

In production, you need to use the compile-time transform plugins to replace the environment variable expressions with global accessors (in order to access to a special object), and then use runtime transform tool to inject environment variables to the special expression.

Compile-time Transform Modes

Since compile-time transform plugins will be used in two scenarios, it have two transform modes:

  1. compile-time: statically replace import.meta.env.KEY with "value"
  2. runtime: statically replace import.meta.env with a global accessor

Usually, you don't need to define it explicitly, because Import-meta-env determines it automatically based on your environment variables (e.g., process.env.NODE_ENV). See API for details.

Special Expression

In order to inject environment variables in production, you also need to add a special expression in your app:

js
globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');

This expression will be replaced with environment variables by using runtime transform tool as follows:

js
globalThis.import_meta_env = JSON.parse('{"NAME":"world"}');

We encourage you to put this special expression in your index.html because the Cache-Control header is usually set to no-cache when requesting index.html:

html
<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    ...
+  </head>
+  <body>
+    ...
+    <script>
+      globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');
+    </script>
+    <script src="src/index.js"></script>
+  </body>
+</html>

WARNING

The value of the expression will be statically replaced, the following will not work:

js
globalThis.import_meta_env = JSON.parse(
+  '"import_meta_env_placeholder"'
+);
+
+globalThis.import_meta_env = JSON.parse('"import_meta_env" + "_placeholder"');
+
+const placeholder = '"import_meta_env_placeholder"';
+globalThis.import_meta_env = JSON.parse(placeholder);

INFO

This expression should be placed before or at the top of your entry script, otherwise your code will end up with a TypeError:

txt
Uncaught TypeError: Cannot read properties of undefined (reading 'NAME')
+  at ...

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/getting-started/runtime-transform.html b/guide/getting-started/runtime-transform.html new file mode 100644 index 000000000..8aa2c57e5 --- /dev/null +++ b/guide/getting-started/runtime-transform.html @@ -0,0 +1,29 @@ + + + + + + Runtime Transform | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Runtime Transform

Please read the guide for how to use this tool.

CLI

NPM version

Installation

bash
$ npm i -D @import-meta-env/cli

Usage

bash
$ npx import-meta-env -x .env.example

Related examples: docker

TIP

By default, import-meta-env will automatically replace all files in the common bundle output directories

You can override this behavior by passing the -p, --path <path...> option.

For more information, see API.

Without Node.js

The Single executable applications feature allows the distribution of a Node.js application conveniently to a system that does not have Node.js installed, you could use it to package the import-meta-env script into a node binary.

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/tools/flow.html b/guide/tools/flow.html new file mode 100644 index 000000000..37b087253 --- /dev/null +++ b/guide/tools/flow.html @@ -0,0 +1,36 @@ + + + + + + Flow | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Flow

Generate Flow type from .env.example.

Installation

NPM version

bash
$ npm i -D @import-meta-env/flow

Usage

bash
$ npx import-meta-env-flow -x .env.example

By default, when running above command, the CLI will create an import-meta-env.js file in your project root:

js
// import-meta-env.js
+// Generated by '@import-meta-env/flow'
+
+declare type Import$Meta = {
+  +env: $ReadOnly<{
+    NAME: string,
+  }>,
+};

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/tools/prepare.html b/guide/tools/prepare.html new file mode 100644 index 000000000..ce4aee305 --- /dev/null +++ b/guide/tools/prepare.html @@ -0,0 +1,32 @@ + + + + + + Prepare | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Prepare

Generate .env file from .env.* files.

Installation

NPM version

bash
$ npm i -D @import-meta-env/prepare

Usage

bash
$ npx import-meta-env-prepare -x .env.example

By default, when running above command, the CLI will load environment variables from .env.local.defaults and .env.local, merge both, then create an .env file in your project root:

ini
# .env
+# Generated by '@import-meta-env/prepare'
+
+NAME=world

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/guide/tools/typescript.html b/guide/tools/typescript.html new file mode 100644 index 000000000..54996d9ce --- /dev/null +++ b/guide/tools/typescript.html @@ -0,0 +1,38 @@ + + + + + + TypeScript | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

TypeScript

Generate TypeScript .d.ts from .env.example.

Installation

NPM version

bash
$ npm i -D @import-meta-env/typescript

Usage

bash
$ npx import-meta-env-typescript -x .env.example

By default, when running above command, the CLI will create an import-meta-env.d.ts file in your project root:

ts
// import-meta-env.d.ts
+// Generated by '@import-meta-env/typescript'
+
+interface ImportMetaEnv {
+  readonly NAME: string;
+}
+
+interface ImportMeta {
+  readonly env: ImportMetaEnv;
+}

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 000000000..b7be40411 --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"api.md":"w5r8-ef1","guide_extra-topic_json.md":"BRXtRc0l","guide_extra-topic_sensitive-environment-variables.md":"4Do9JvPe","guide_extra-topic_server-side-rendering.md":"7_2IoZgM","guide_faq_changes-to-environment-variables-is-not-updated.md":"CqizDe9N","guide_faq_environment-variables-types.md":"BUiP4ift","guide_faq_why-use-import-meta.md":"nWqZF-m9","guide_framework-specific-notes_vite.md":"C11tu2Te","guide_getting-started_compile-time-transform.md":"BnRhs1TX","guide_getting-started_introduction.md":"BLxLvNLc","guide_getting-started_runtime-transform.md":"DpK8cdZW","guide_tools_flow.md":"Du307EcB","guide_tools_prepare.md":"C1x4TUY1","guide_tools_typescript.md":"41z6v_7Y","index.md":"CW7ETkec","migration.md":"CYnxOdcY","public_glance.md":"oqClkWjW"} diff --git a/index.html b/index.html new file mode 100644 index 000000000..bd0285267 --- /dev/null +++ b/index.html @@ -0,0 +1,29 @@ + + + + + + Import-meta-env | Startup/Runtime environment variables solution for JavaScript + + + + + + + + + + + + + + + + + + +
Skip to content

Import-meta-env

Startup/Runtime environment variables solution for JavaScript

Build once, deploy anywhere. Import-meta-env helps to developing applications following the 12-factor principles.

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 000000000..aab82f8fc Binary files /dev/null and b/logo.png differ diff --git a/migration.html b/migration.html new file mode 100644 index 000000000..71f1e54cb --- /dev/null +++ b/migration.html @@ -0,0 +1,30 @@ + + + + + + Migration | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Migration

Migration from v0.3.* to v0.4.*

  1. In order to support programmatically injecting script, the placeholder is changed:

    x

    html
    <script id="import_meta_env"></script>

    js
    globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');

Migration from v0.2.* to v0.3.*

  1. The entire environment variables accessing are dropped, use dedicated environment variables instead:

    x

    js
    const env = import.meta.env;
    +env.HELLO;

    js
    import.meta.env.HELLO;
  2. The computed environment variables are dropped, use static environment variables instead:

    x

    js
    import.meta.env["HELLO"];

    js
    import.meta.env.HELLO;
  3. In order to inject environment variables at runtime, you need to add a special script tag to your index.html:

    html
    <script id="import_meta_env"></script>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/public/glance.html b/public/glance.html new file mode 100644 index 000000000..e172a16e6 --- /dev/null +++ b/public/glance.html @@ -0,0 +1,36 @@ + + + + + + Code | Import-meta-env + + + + + + + + + + + + + + + + + + +
Skip to content

Code

ini
# .env.example
+HELLO=
ini
# .env
+HELLO=world
ts
// src/index.js
+const name = import.meta.env.NAME;
+document.querySelector("body").innerHTML = `<h1>Hello, ${name}</h1>`;
html
<!-- public/index.html -->
+<script>
+  globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');
+</script>

Development

sh
$ npx webpack --mode=development

Production

sh
$ npx webpack --mode=production
sh
$ npx import-meta-env -x .env.example -p dist/index.html

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..f6b1babb4 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://import-meta-env.org/apihttps://import-meta-env.org/https://import-meta-env.org/migrationhttps://import-meta-env.org/guide/extra-topic/jsonhttps://import-meta-env.org/guide/faq/changes-to-environment-variables-is-not-updatedhttps://import-meta-env.org/guide/framework-specific-notes/vitehttps://import-meta-env.org/guide/getting-started/compile-time-transformhttps://import-meta-env.org/guide/tools/flowhttps://import-meta-env.org/public/glancehttps://import-meta-env.org/guide/extra-topic/sensitive-environment-variableshttps://import-meta-env.org/guide/extra-topic/server-side-renderinghttps://import-meta-env.org/guide/faq/environment-variables-typeshttps://import-meta-env.org/guide/faq/why-use-import-metahttps://import-meta-env.org/guide/getting-started/introductionhttps://import-meta-env.org/guide/getting-started/runtime-transformhttps://import-meta-env.org/guide/tools/preparehttps://import-meta-env.org/guide/tools/typescript \ No newline at end of file diff --git a/vp-icons.css b/vp-icons.css new file mode 100644 index 000000000..ddc5bd8ed --- /dev/null +++ b/vp-icons.css @@ -0,0 +1 @@ +.vpi-social-github{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-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-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .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")} \ No newline at end of file