diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..706205ad --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ + + + + + + 404 | VitePress Sidebar + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..f24473d2 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +vitepress-sidebar.cdget.com \ No newline at end of file diff --git a/advanced-usage/index.html b/advanced-usage/index.html new file mode 100644 index 00000000..03f9156b --- /dev/null +++ b/advanced-usage/index.html @@ -0,0 +1,27 @@ + + + + + + Advanced Usage | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/advanced-usage/multi-level-sidebar-with-indents.html b/advanced-usage/multi-level-sidebar-with-indents.html new file mode 100644 index 00000000..30bbd83c --- /dev/null +++ b/advanced-usage/multi-level-sidebar-with-indents.html @@ -0,0 +1,46 @@ + + + + + + Multi-level-sidebar with indents | VitePress Sidebar + + + + + + + + + + + + + + + + + +
Skip to content

Multi-level-sidebar with indents

In a multi-level sidebar, the menu is displayed with indentation for each tier. However, VitePress starts indenting from the second tier by default. For example:

Multi level docs before

Above, directory-level-2 is a subfile of directory-level-1, but it appears to be in the same hierarchy.

This is not an issue with VitePress Sidebar, so to fix it, you'll need to customize the styling of your existing theme via VitePress' Custom CSS.

Create a theme directory in the .vitepress directory to override the styles required by the existing styles. Then, inside the theme directory, create an index.js file (If you're using Typescript, use index.ts instead of index.js) and a custom.css file.

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ Add this
+│  │     ├─ custom.css     <------------ Add this
+│  │     └─ index.js       <------------ Add this
+│  ├─ example.md
+│  └─ index.md
+└─ ...

Then add the following to the index.js file:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

Next, add the following to the custom.css file:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

Now start the VitePress server. This will make it easier to see the hierarchy of the first level of the group where the child content exists.

Multi level docs before

It's important to note that the vertical divider you see here was only created with CSS; it should have been created as a div with a CSS class called indicator, so you should be aware that the vertical divider may not be selected when you build dynamic pages in the future.

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/advanced-usage/multiple-sidebars-how-to.html b/advanced-usage/multiple-sidebars-how-to.html new file mode 100644 index 00000000..10d83cf6 --- /dev/null +++ b/advanced-usage/multiple-sidebars-how-to.html @@ -0,0 +1,155 @@ + + + + + + Multiple Sidebars How-to | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Multiple Sidebars How-to

Multiple sidebars is a feature that allows you to display different sidebar menus based on a specific URI path.

This is easily implemented in vitepress-sidebar with a few simple settings. In the end, VitePress will output the options as intended.

To learn more about Multiple sidebars first, we recommend taking a look at VitePress' official documentation below:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

Basic usage

First, let's assume you have a root project called docs with subdirectories called guide and config, like this:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

When the URL is located on a /guide page, the user wants the menu to show only the submenu of guide and hide the submenu of config. Similarly, you want to hide the submenu of guide when it is located on the /config page.

To implement this in vitepress-sidebar, you need to approach it differently from the existing setup.

Use the generateSidebar function as before, but pass an array. The array will contain at least one option from vitepress-sidebar. The values in the array can be as many URLs as you want to specify. Of course, you can also configure them with different settings.

javascript
// Must pass array arguments!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

The values of these options are used in the results as follows:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // `<scanStartPath>/path/to/items`
+    }
+  ]
+}

Here's an example of the output from the above setup:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

Multiple sidebar options

The following options are available in Multiple sidebars: scanStartPath, basePath, and resolvePath. Each option is optional, but should be able to be used correctly depending on the situation.

Each option is described below. However, we recommend that you first refer to the descriptions of each option on the API page.

The descriptions below are based on the following examples:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

This option is used to specify different directories as root paths for different routing rules. While documentRootPath is the root path that will actually be scanned (where the .vitepress directory is located), scanStartPath is the root path that should actually be seen in this route rule.

For example, to include only files in the /guide directory, specify the value of scanStartPath as guide. However, the path in documentRootPath should not be included.

resolvePath

This option is used by VitePress to display the relevant menu when it encounters a specific URI. For example, if you want to display only the contents of the guide/api directory when reaching example.com/guide/api, the value of resolvePath would be /guide/api. It is recommended that you include / in front of the path.

This will usually have a similar value to scanStartPath, but sometimes you may need to specify it differently for i18n routing.

basePath

This option is primarily utilized when working with VitePress' rewrite rules, and is optional otherwise.

It replaces the value of the base path in VitePress. If this value is not specified, the value of resolvePath or the root path (/) is specified.

If the actual path to the directory is different from the path structure in the URI, you should be able to navigate to the page provided by rewrite. Typically, the sidebar will generate a path based on the root directory and will not reference the rewrite path in VitePress.

For example, suppose you have a rewrite rule that looks like this:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

The guide/one.md document is displayed in the path to help/one. However, if you do this, the sidebar will not display the menu because it will try to find help/one, which is the path as it is.

To fix this, change the path in basePath to help:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- Add this
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

Displaying menus with complex paths and URIs

The above example is typically when the path is defined in steps, but when you want to show folders that are deep in steps, especially when the URI is shorter or uses different conventions than the actual folder path, you need to use additional methods. For example, you have a folder structure like this:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

This time, we want to show the menu in docs/guide/api when we reach the one-level URI /api. The expected menu is to show only api-one.md and api-two.md.

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

However, if you configure the options like this, you won't be able to display the menu, because the api directory is a subdirectory of guide. VitePress won't detect this and will navigate to a non-existent document.

To solve this, you need to use VitePress' Routing feature in parallel, see the article below for an explanation:

https://vitepress.dev/guide/routing#route-rewrites

Following the example above, we'll add the rewrites option to VitePress' config.js file, which should be located outside the themeConfig:

javascript
export default defineConfig({
+  /* [START] Add This */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] Add This */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

Now this will show a submenu of docs/guide/api when the URI path starts with /api!

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/assets/advanced-usage_index.md.CBsLYOHq.js b/assets/advanced-usage_index.md.CBsLYOHq.js new file mode 100644 index 00000000..2bf4db6a --- /dev/null +++ b/assets/advanced-usage_index.md.CBsLYOHq.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"Advanced Usage","description":"","frontmatter":{"title":"Advanced Usage"},"headers":[],"relativePath":"advanced-usage/index.md","filePath":"en/advanced-usage/index.md","lastUpdated":1725611780000}'),d={name:"advanced-usage/index.md"};function n(s,c,r,o,i,p){return t(),a("div")}const m=e(d,[["render",n]]);export{l as __pageData,m as default}; diff --git a/assets/advanced-usage_index.md.CBsLYOHq.lean.js b/assets/advanced-usage_index.md.CBsLYOHq.lean.js new file mode 100644 index 00000000..2bf4db6a --- /dev/null +++ b/assets/advanced-usage_index.md.CBsLYOHq.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"Advanced Usage","description":"","frontmatter":{"title":"Advanced Usage"},"headers":[],"relativePath":"advanced-usage/index.md","filePath":"en/advanced-usage/index.md","lastUpdated":1725611780000}'),d={name:"advanced-usage/index.md"};function n(s,c,r,o,i,p){return t(),a("div")}const m=e(d,[["render",n]]);export{l as __pageData,m as default}; diff --git a/assets/advanced-usage_multi-level-sidebar-with-indents.md.BwM3JzfA.js b/assets/advanced-usage_multi-level-sidebar-with-indents.md.BwM3JzfA.js new file mode 100644 index 00000000..847f4daa --- /dev/null +++ b/assets/advanced-usage_multi-level-sidebar-with-indents.md.BwM3JzfA.js @@ -0,0 +1,19 @@ +import{_ as i,a as e}from"./chunks/doc-multi-level-docs-after.BybuXf3W.js";import{_ as a,c as t,a2 as n,o as l}from"./chunks/framework.Gf1jShja.js";const u=JSON.parse('{"title":"Multi-level-sidebar with indents","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-usage/multi-level-sidebar-with-indents.md","filePath":"en/advanced-usage/multi-level-sidebar-with-indents.md","lastUpdated":1724371989000}'),p={name:"advanced-usage/multi-level-sidebar-with-indents.md"};function h(d,s,r,o,k,c){return l(),t("div",null,s[0]||(s[0]=[n('

Multi-level-sidebar with indents

In a multi-level sidebar, the menu is displayed with indentation for each tier. However, VitePress starts indenting from the second tier by default. For example:

Multi level docs before

Above, directory-level-2 is a subfile of directory-level-1, but it appears to be in the same hierarchy.

This is not an issue with VitePress Sidebar, so to fix it, you'll need to customize the styling of your existing theme via VitePress' Custom CSS.

Create a theme directory in the .vitepress directory to override the styles required by the existing styles. Then, inside the theme directory, create an index.js file (If you're using Typescript, use index.ts instead of index.js) and a custom.css file.

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ Add this
+│  │     ├─ custom.css     <------------ Add this
+│  │     └─ index.js       <------------ Add this
+│  ├─ example.md
+│  └─ index.md
+└─ ...

Then add the following to the index.js file:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

Next, add the following to the custom.css file:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

Now start the VitePress server. This will make it easier to see the hierarchy of the first level of the group where the child content exists.

Multi level docs before

It's important to note that the vertical divider you see here was only created with CSS; it should have been created as a div with a CSS class called indicator, so you should be aware that the vertical divider may not be selected when you build dynamic pages in the future.

',14)]))}const E=a(p,[["render",h]]);export{u as __pageData,E as default}; diff --git a/assets/advanced-usage_multi-level-sidebar-with-indents.md.BwM3JzfA.lean.js b/assets/advanced-usage_multi-level-sidebar-with-indents.md.BwM3JzfA.lean.js new file mode 100644 index 00000000..847f4daa --- /dev/null +++ b/assets/advanced-usage_multi-level-sidebar-with-indents.md.BwM3JzfA.lean.js @@ -0,0 +1,19 @@ +import{_ as i,a as e}from"./chunks/doc-multi-level-docs-after.BybuXf3W.js";import{_ as a,c as t,a2 as n,o as l}from"./chunks/framework.Gf1jShja.js";const u=JSON.parse('{"title":"Multi-level-sidebar with indents","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-usage/multi-level-sidebar-with-indents.md","filePath":"en/advanced-usage/multi-level-sidebar-with-indents.md","lastUpdated":1724371989000}'),p={name:"advanced-usage/multi-level-sidebar-with-indents.md"};function h(d,s,r,o,k,c){return l(),t("div",null,s[0]||(s[0]=[n('

Multi-level-sidebar with indents

In a multi-level sidebar, the menu is displayed with indentation for each tier. However, VitePress starts indenting from the second tier by default. For example:

Multi level docs before

Above, directory-level-2 is a subfile of directory-level-1, but it appears to be in the same hierarchy.

This is not an issue with VitePress Sidebar, so to fix it, you'll need to customize the styling of your existing theme via VitePress' Custom CSS.

Create a theme directory in the .vitepress directory to override the styles required by the existing styles. Then, inside the theme directory, create an index.js file (If you're using Typescript, use index.ts instead of index.js) and a custom.css file.

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ Add this
+│  │     ├─ custom.css     <------------ Add this
+│  │     └─ index.js       <------------ Add this
+│  ├─ example.md
+│  └─ index.md
+└─ ...

Then add the following to the index.js file:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

Next, add the following to the custom.css file:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

Now start the VitePress server. This will make it easier to see the hierarchy of the first level of the group where the child content exists.

Multi level docs before

It's important to note that the vertical divider you see here was only created with CSS; it should have been created as a div with a CSS class called indicator, so you should be aware that the vertical divider may not be selected when you build dynamic pages in the future.

',14)]))}const E=a(p,[["render",h]]);export{u as __pageData,E as default}; diff --git a/assets/advanced-usage_multiple-sidebars-how-to.md.CyFTdfBh.js b/assets/advanced-usage_multiple-sidebars-how-to.md.CyFTdfBh.js new file mode 100644 index 00000000..ebca608d --- /dev/null +++ b/assets/advanced-usage_multiple-sidebars-how-to.md.CyFTdfBh.js @@ -0,0 +1,129 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const E=JSON.parse('{"title":"Multiple Sidebars How-to","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-usage/multiple-sidebars-how-to.md","filePath":"en/advanced-usage/multiple-sidebars-how-to.md","lastUpdated":1724371989000}'),t={name:"advanced-usage/multiple-sidebars-how-to.md"};function p(l,s,h,d,k,o){return e(),i("div",null,s[0]||(s[0]=[n(`

Multiple Sidebars How-to

Multiple sidebars is a feature that allows you to display different sidebar menus based on a specific URI path.

This is easily implemented in vitepress-sidebar with a few simple settings. In the end, VitePress will output the options as intended.

To learn more about Multiple sidebars first, we recommend taking a look at VitePress' official documentation below:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

Basic usage

First, let's assume you have a root project called docs with subdirectories called guide and config, like this:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

When the URL is located on a /guide page, the user wants the menu to show only the submenu of guide and hide the submenu of config. Similarly, you want to hide the submenu of guide when it is located on the /config page.

To implement this in vitepress-sidebar, you need to approach it differently from the existing setup.

Use the generateSidebar function as before, but pass an array. The array will contain at least one option from vitepress-sidebar. The values in the array can be as many URLs as you want to specify. Of course, you can also configure them with different settings.

javascript
// Must pass array arguments!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

The values of these options are used in the results as follows:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // \`<scanStartPath>/path/to/items\`
+    }
+  ]
+}

Here's an example of the output from the above setup:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

Multiple sidebar options

The following options are available in Multiple sidebars: scanStartPath, basePath, and resolvePath. Each option is optional, but should be able to be used correctly depending on the situation.

Each option is described below. However, we recommend that you first refer to the descriptions of each option on the API page.

The descriptions below are based on the following examples:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

This option is used to specify different directories as root paths for different routing rules. While documentRootPath is the root path that will actually be scanned (where the .vitepress directory is located), scanStartPath is the root path that should actually be seen in this route rule.

For example, to include only files in the /guide directory, specify the value of scanStartPath as guide. However, the path in documentRootPath should not be included.

resolvePath

This option is used by VitePress to display the relevant menu when it encounters a specific URI. For example, if you want to display only the contents of the guide/api directory when reaching example.com/guide/api, the value of resolvePath would be /guide/api. It is recommended that you include / in front of the path.

This will usually have a similar value to scanStartPath, but sometimes you may need to specify it differently for i18n routing.

basePath

This option is primarily utilized when working with VitePress' rewrite rules, and is optional otherwise.

It replaces the value of the base path in VitePress. If this value is not specified, the value of resolvePath or the root path (/) is specified.

If the actual path to the directory is different from the path structure in the URI, you should be able to navigate to the page provided by rewrite. Typically, the sidebar will generate a path based on the root directory and will not reference the rewrite path in VitePress.

For example, suppose you have a rewrite rule that looks like this:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

The guide/one.md document is displayed in the path to help/one. However, if you do this, the sidebar will not display the menu because it will try to find help/one, which is the path as it is.

To fix this, change the path in basePath to help:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- Add this
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

Displaying menus with complex paths and URIs

The above example is typically when the path is defined in steps, but when you want to show folders that are deep in steps, especially when the URI is shorter or uses different conventions than the actual folder path, you need to use additional methods. For example, you have a folder structure like this:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

This time, we want to show the menu in docs/guide/api when we reach the one-level URI /api. The expected menu is to show only api-one.md and api-two.md.

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

However, if you configure the options like this, you won't be able to display the menu, because the api directory is a subdirectory of guide. VitePress won't detect this and will navigate to a non-existent document.

To solve this, you need to use VitePress' Routing feature in parallel, see the article below for an explanation:

https://vitepress.dev/guide/routing#route-rewrites

Following the example above, we'll add the rewrites option to VitePress' config.js file, which should be located outside the themeConfig:

javascript
export default defineConfig({
+  /* [START] Add This */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] Add This */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

Now this will show a submenu of docs/guide/api when the URI path starts with /api!

`,47)]))}const c=a(t,[["render",p]]);export{E as __pageData,c as default}; diff --git a/assets/advanced-usage_multiple-sidebars-how-to.md.CyFTdfBh.lean.js b/assets/advanced-usage_multiple-sidebars-how-to.md.CyFTdfBh.lean.js new file mode 100644 index 00000000..ebca608d --- /dev/null +++ b/assets/advanced-usage_multiple-sidebars-how-to.md.CyFTdfBh.lean.js @@ -0,0 +1,129 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const E=JSON.parse('{"title":"Multiple Sidebars How-to","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-usage/multiple-sidebars-how-to.md","filePath":"en/advanced-usage/multiple-sidebars-how-to.md","lastUpdated":1724371989000}'),t={name:"advanced-usage/multiple-sidebars-how-to.md"};function p(l,s,h,d,k,o){return e(),i("div",null,s[0]||(s[0]=[n(`

Multiple Sidebars How-to

Multiple sidebars is a feature that allows you to display different sidebar menus based on a specific URI path.

This is easily implemented in vitepress-sidebar with a few simple settings. In the end, VitePress will output the options as intended.

To learn more about Multiple sidebars first, we recommend taking a look at VitePress' official documentation below:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

Basic usage

First, let's assume you have a root project called docs with subdirectories called guide and config, like this:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

When the URL is located on a /guide page, the user wants the menu to show only the submenu of guide and hide the submenu of config. Similarly, you want to hide the submenu of guide when it is located on the /config page.

To implement this in vitepress-sidebar, you need to approach it differently from the existing setup.

Use the generateSidebar function as before, but pass an array. The array will contain at least one option from vitepress-sidebar. The values in the array can be as many URLs as you want to specify. Of course, you can also configure them with different settings.

javascript
// Must pass array arguments!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

The values of these options are used in the results as follows:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // \`<scanStartPath>/path/to/items\`
+    }
+  ]
+}

Here's an example of the output from the above setup:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

Multiple sidebar options

The following options are available in Multiple sidebars: scanStartPath, basePath, and resolvePath. Each option is optional, but should be able to be used correctly depending on the situation.

Each option is described below. However, we recommend that you first refer to the descriptions of each option on the API page.

The descriptions below are based on the following examples:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

This option is used to specify different directories as root paths for different routing rules. While documentRootPath is the root path that will actually be scanned (where the .vitepress directory is located), scanStartPath is the root path that should actually be seen in this route rule.

For example, to include only files in the /guide directory, specify the value of scanStartPath as guide. However, the path in documentRootPath should not be included.

resolvePath

This option is used by VitePress to display the relevant menu when it encounters a specific URI. For example, if you want to display only the contents of the guide/api directory when reaching example.com/guide/api, the value of resolvePath would be /guide/api. It is recommended that you include / in front of the path.

This will usually have a similar value to scanStartPath, but sometimes you may need to specify it differently for i18n routing.

basePath

This option is primarily utilized when working with VitePress' rewrite rules, and is optional otherwise.

It replaces the value of the base path in VitePress. If this value is not specified, the value of resolvePath or the root path (/) is specified.

If the actual path to the directory is different from the path structure in the URI, you should be able to navigate to the page provided by rewrite. Typically, the sidebar will generate a path based on the root directory and will not reference the rewrite path in VitePress.

For example, suppose you have a rewrite rule that looks like this:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

The guide/one.md document is displayed in the path to help/one. However, if you do this, the sidebar will not display the menu because it will try to find help/one, which is the path as it is.

To fix this, change the path in basePath to help:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- Add this
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

Displaying menus with complex paths and URIs

The above example is typically when the path is defined in steps, but when you want to show folders that are deep in steps, especially when the URI is shorter or uses different conventions than the actual folder path, you need to use additional methods. For example, you have a folder structure like this:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

This time, we want to show the menu in docs/guide/api when we reach the one-level URI /api. The expected menu is to show only api-one.md and api-two.md.

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

However, if you configure the options like this, you won't be able to display the menu, because the api directory is a subdirectory of guide. VitePress won't detect this and will navigate to a non-existent document.

To solve this, you need to use VitePress' Routing feature in parallel, see the article below for an explanation:

https://vitepress.dev/guide/routing#route-rewrites

Following the example above, we'll add the rewrites option to VitePress' config.js file, which should be located outside the themeConfig:

javascript
export default defineConfig({
+  /* [START] Add This */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] Add This */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

Now this will show a submenu of docs/guide/api when the URI path starts with /api!

`,47)]))}const c=a(t,[["render",p]]);export{E as __pageData,c as default}; diff --git a/assets/app.D3ugLXsN.js b/assets/app.D3ugLXsN.js new file mode 100644 index 00000000..1797ad26 --- /dev/null +++ b/assets/app.D3ugLXsN.js @@ -0,0 +1 @@ +import{t as i}from"./chunks/theme.CSC3rl9h.js";import{R as o,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,ac as v,d as P,u as y,v as C,s as b,ad as w,ae as R,af as E,ag as S}from"./chunks/framework.Gf1jShja.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/changelog.md.C3QyKCQv.js b/assets/changelog.md.C3QyKCQv.js new file mode 100644 index 00000000..f6baace7 --- /dev/null +++ b/assets/changelog.md.C3QyKCQv.js @@ -0,0 +1 @@ +import{_ as o,c as a,a2 as i,o as l}from"./chunks/framework.Gf1jShja.js";const p=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"changelog.md","filePath":"en/changelog.md","lastUpdated":null}'),t={name:"changelog.md"};function d(r,e,n,c,s,h){return l(),a("div",null,e[0]||(e[0]=[i('

Changelog

1.25.3 (2024-09-03)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

1.25.1 (2024-09-03)

1.25.0 (2024-08-22)

1.24.2 (2024-08-13)

1.24.1 (2024-07-31)

1.24.0 (2024-07-06)

1.23.2 (2024-05-16)

1.23.1 (2024-05-15)

1.23.0 (2024-05-13)

1.22.0 (2024-03-28)

1.21.0 (2024-03-15)

1.20.0 (2024-03-12)

1.19.0 (2024-02-26)

1.18.6 (2024-01-03)

1.18.5 (2023-12-11)

1.18.0 (2023-10-02)

1.17.0 (2023-09-26)

1.16.5 (2023-09-22)

1.16.0 (2023-09-21)

1.15.0 (2023-09-19)

1.14.0 (2023-09-18)

1.13.0 (2023-09-13)

1.12.0 (2023-09-12)

1.11.0 (2023-08-24)

1.10.1 (2023-08-08)

1.10.0 (2023-07-25)

1.9.5 (2023-07-25)

1.9.0 (2023-07-24)

1.8.2 (2023-07-18)

1.8.1 (2023-06-15)

1.8.0 (2023-06-13)

1.7.5 (2023-05-28)

1.7.0 (2023-05-28)

1.6.5 (2023-05-27)

1.6.0 (2023-05-27)

1.5.1 (2023-05-26)

1.5.0 (2023-05-26)

1.4.0 (2023-05-26)

1.3.1 (2023-04-20)

1.3.0 (2023-04-20)

1.2.0 (2023-02-07)

1.1.5 (2023-01-12)

1.1.4 (2023-01-12)

1.1.3 (2022-12-08)

1.1.2 (2022-11-23)

1.1.1 (2022-11-02)

1.1.0 (2022-11-02)

1.0.9 (2022-11-02)

1.0.8 (2022-11-02)

1.0.7 (2022-10-31)

1.0.6 (2022-10-31)

1.0.5 (2022-10-27)

1.0.4 (2022-10-25)

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

',112)]))}const m=o(t,[["render",d]]);export{p as __pageData,m as default}; diff --git a/assets/changelog.md.C3QyKCQv.lean.js b/assets/changelog.md.C3QyKCQv.lean.js new file mode 100644 index 00000000..f6baace7 --- /dev/null +++ b/assets/changelog.md.C3QyKCQv.lean.js @@ -0,0 +1 @@ +import{_ as o,c as a,a2 as i,o as l}from"./chunks/framework.Gf1jShja.js";const p=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"changelog.md","filePath":"en/changelog.md","lastUpdated":null}'),t={name:"changelog.md"};function d(r,e,n,c,s,h){return l(),a("div",null,e[0]||(e[0]=[i('

Changelog

1.25.3 (2024-09-03)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

1.25.1 (2024-09-03)

1.25.0 (2024-08-22)

1.24.2 (2024-08-13)

1.24.1 (2024-07-31)

1.24.0 (2024-07-06)

1.23.2 (2024-05-16)

1.23.1 (2024-05-15)

1.23.0 (2024-05-13)

1.22.0 (2024-03-28)

1.21.0 (2024-03-15)

1.20.0 (2024-03-12)

1.19.0 (2024-02-26)

1.18.6 (2024-01-03)

1.18.5 (2023-12-11)

1.18.0 (2023-10-02)

1.17.0 (2023-09-26)

1.16.5 (2023-09-22)

1.16.0 (2023-09-21)

1.15.0 (2023-09-19)

1.14.0 (2023-09-18)

1.13.0 (2023-09-13)

1.12.0 (2023-09-12)

1.11.0 (2023-08-24)

1.10.1 (2023-08-08)

1.10.0 (2023-07-25)

1.9.5 (2023-07-25)

1.9.0 (2023-07-24)

1.8.2 (2023-07-18)

1.8.1 (2023-06-15)

1.8.0 (2023-06-13)

1.7.5 (2023-05-28)

1.7.0 (2023-05-28)

1.6.5 (2023-05-27)

1.6.0 (2023-05-27)

1.5.1 (2023-05-26)

1.5.0 (2023-05-26)

1.4.0 (2023-05-26)

1.3.1 (2023-04-20)

1.3.0 (2023-04-20)

1.2.0 (2023-02-07)

1.1.5 (2023-01-12)

1.1.4 (2023-01-12)

1.1.3 (2022-12-08)

1.1.2 (2022-11-23)

1.1.1 (2022-11-02)

1.1.0 (2022-11-02)

1.0.9 (2022-11-02)

1.0.8 (2022-11-02)

1.0.7 (2022-10-31)

1.0.6 (2022-10-31)

1.0.5 (2022-10-27)

1.0.4 (2022-10-25)

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

',112)]))}const m=o(t,[["render",d]]);export{p as __pageData,m as default}; diff --git a/assets/chunks/@localSearchIndexko.CuKZQh0C.js b/assets/chunks/@localSearchIndexko.CuKZQh0C.js new file mode 100644 index 00000000..4b8969de --- /dev/null +++ b/assets/chunks/@localSearchIndexko.CuKZQh0C.js @@ -0,0 +1 @@ +const e='{"documentCount":118,"nextId":118,"documentIds":{"0":"/ko/advanced-usage/multi-level-sidebar-with-indents#다중-레벨-사이드바의-들여쓰기","1":"/ko/advanced-usage/multiple-sidebars-how-to#다중-사이드바","2":"/ko/advanced-usage/multiple-sidebars-how-to#기본-사용법","3":"/ko/advanced-usage/multiple-sidebars-how-to#다중-사이드바-설정","4":"/ko/advanced-usage/multiple-sidebars-how-to#scanstartpath","5":"/ko/advanced-usage/multiple-sidebars-how-to#resolvepath","6":"/ko/advanced-usage/multiple-sidebars-how-to#basepath","7":"/ko/advanced-usage/multiple-sidebars-how-to#복잡한-경로-및-uri가-있는-메뉴-표시하기","8":"/ko/changelog#changelog","9":"/ko/changelog#_1-25-3-2024-09-03","10":"/ko/changelog#_1-25-2-2024-09-03","11":"/ko/changelog#_1-25-1-2024-09-03","12":"/ko/changelog#_1-25-0-2024-08-22","13":"/ko/changelog#_1-24-2-2024-08-13","14":"/ko/changelog#_1-24-1-2024-07-31","15":"/ko/changelog#_1-24-0-2024-07-06","16":"/ko/changelog#_1-23-2-2024-05-16","17":"/ko/changelog#_1-23-1-2024-05-15","18":"/ko/changelog#_1-23-0-2024-05-13","19":"/ko/changelog#_1-22-0-2024-03-28","20":"/ko/changelog#_1-21-0-2024-03-15","21":"/ko/changelog#_1-20-0-2024-03-12","22":"/ko/changelog#_1-19-0-2024-02-26","23":"/ko/changelog#_1-18-6-2024-01-03","24":"/ko/changelog#_1-18-5-2023-12-11","25":"/ko/changelog#_1-18-0-2023-10-02","26":"/ko/changelog#_1-17-0-2023-09-26","27":"/ko/changelog#_1-16-5-2023-09-22","28":"/ko/changelog#_1-16-0-2023-09-21","29":"/ko/changelog#_1-15-0-2023-09-19","30":"/ko/changelog#_1-14-0-2023-09-18","31":"/ko/changelog#_1-13-0-2023-09-13","32":"/ko/changelog#_1-12-0-2023-09-12","33":"/ko/changelog#_1-11-0-2023-08-24","34":"/ko/changelog#_1-10-1-2023-08-08","35":"/ko/changelog#_1-10-0-2023-07-25","36":"/ko/changelog#_1-9-5-2023-07-25","37":"/ko/changelog#_1-9-0-2023-07-24","38":"/ko/changelog#_1-8-2-2023-07-18","39":"/ko/changelog#_1-8-1-2023-06-15","40":"/ko/changelog#_1-8-0-2023-06-13","41":"/ko/changelog#_1-7-5-2023-05-28","42":"/ko/changelog#_1-7-0-2023-05-28","43":"/ko/changelog#_1-6-5-2023-05-27","44":"/ko/changelog#_1-6-0-2023-05-27","45":"/ko/changelog#_1-5-1-2023-05-26","46":"/ko/changelog#_1-5-0-2023-05-26","47":"/ko/changelog#_1-4-0-2023-05-26","48":"/ko/changelog#_1-3-1-2023-04-20","49":"/ko/changelog#_1-3-0-2023-04-20","50":"/ko/changelog#_1-2-0-2023-02-07","51":"/ko/changelog#_1-1-5-2023-01-12","52":"/ko/changelog#_1-1-4-2023-01-12","53":"/ko/changelog#_1-1-3-2022-12-08","54":"/ko/changelog#_1-1-2-2022-11-23","55":"/ko/changelog#_1-1-1-2022-11-02","56":"/ko/changelog#_1-1-0-2022-11-02","57":"/ko/changelog#_1-0-9-2022-11-02","58":"/ko/changelog#_1-0-8-2022-11-02","59":"/ko/changelog#_1-0-7-2022-10-31","60":"/ko/changelog#_1-0-6-2022-10-31","61":"/ko/changelog#_1-0-5-2022-10-27","62":"/ko/changelog#_1-0-4-2022-10-25","63":"/ko/changelog#_0-1-0-1-0-3-2022-10-25-alpha","64":"/ko/guide/api#api","65":"/ko/guide/api#빠른-검색","66":"/ko/guide/api#documentrootpath","67":"/ko/guide/api#scanstartpath","68":"/ko/guide/api#resolvepath","69":"/ko/guide/api#basepath","70":"/ko/guide/api#usetitlefromfileheading","71":"/ko/guide/api#usetitlefromfrontmatter","72":"/ko/guide/api#frontmattertitlefieldname","73":"/ko/guide/api#usefoldertitlefromindexfile","74":"/ko/guide/api#usefolderlinkfromindexfile","75":"/ko/guide/api#manualsortfilenamebypriority","76":"/ko/guide/api#sortmenusbyname","77":"/ko/guide/api#sortmenusbyfiledateprefix","78":"/ko/guide/api#sortmenusbyfrontmatterorder","79":"/ko/guide/api#sortmenusbyfrontmatterdate","80":"/ko/guide/api#sortmenusorderbydescending","81":"/ko/guide/api#sortmenusordernumericallyfromtitle","82":"/ko/guide/api#sortmenusordernumericallyfromlink","83":"/ko/guide/api#frontmatterorderdefaultvalue","84":"/ko/guide/api#collapsed","85":"/ko/guide/api#collapsedepth","86":"/ko/guide/api#hyphentospace","87":"/ko/guide/api#underscoretospace","88":"/ko/guide/api#capitalizefirst","89":"/ko/guide/api#capitalizeeachwords","90":"/ko/guide/api#excludefiles","91":"/ko/guide/api#excludefilesbyfrontmatterfieldname","92":"/ko/guide/api#excludefolders","93":"/ko/guide/api#includedotfiles","94":"/ko/guide/api#includeemptyfolder","95":"/ko/guide/api#includerootindexfile","96":"/ko/guide/api#includefolderindexfile","97":"/ko/guide/api#removeprefixafterordering","98":"/ko/guide/api#prefixseparator","99":"/ko/guide/api#rootgrouptext","100":"/ko/guide/api#rootgrouplink","101":"/ko/guide/api#rootgroupcollapsed","102":"/ko/guide/api#convertsamenamesubfiletogroupindexpage","103":"/ko/guide/api#folderlinknotincludesfilename","104":"/ko/guide/api#keepmarkdownsyntaxfromtitle","105":"/ko/guide/api#debugprint","106":"/ko/guide/getting-started#시작하기","107":"/ko/guide/getting-started#설치","108":"/ko/guide/getting-started#사용-방법","109":"/ko/guide/getting-started#_1-named-import-사용","110":"/ko/guide/getting-started#_2-default-import-사용","111":"/ko/guide/getting-started#코드-예시","112":"/ko/guide/getting-started#출력-예시","113":"/ko/introduction#소개","114":"/ko/introduction#어디에서-사용되나요","115":"/ko/troubleshooting/err-require-esm#commonjs-err-require-esm","116":"/ko/troubleshooting/err-require-esm#해결책-a","117":"/ko/troubleshooting/err-require-esm#해결책-b"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[4,1,159],"1":[2,1,51],"2":[2,2,121],"3":[3,2,53],"4":[1,3,42],"5":[1,3,46],"6":[1,3,101],"7":[7,2,132],"8":[1,1,1],"9":[7,1,20],"10":[7,1,35],"11":[6,1,40],"12":[7,1,14],"13":[7,1,10],"14":[6,1,30],"15":[7,1,24],"16":[7,1,9],"17":[6,1,22],"18":[7,1,58],"19":[7,1,9],"20":[7,1,8],"21":[7,1,53],"22":[7,1,6],"23":[7,1,4],"24":[7,1,18],"25":[7,1,19],"26":[7,1,4],"27":[7,1,9],"28":[7,1,51],"29":[7,1,22],"30":[7,1,36],"31":[6,1,32],"32":[6,1,4],"33":[7,1,52],"34":[5,1,10],"35":[7,1,5],"36":[7,1,16],"37":[7,1,35],"38":[7,1,10],"39":[6,1,11],"40":[7,1,33],"41":[7,1,4],"42":[7,1,23],"43":[7,1,9],"44":[7,1,50],"45":[6,1,10],"46":[7,1,18],"47":[7,1,8],"48":[6,1,4],"49":[7,1,9],"50":[7,1,55],"51":[6,1,9],"52":[6,1,4],"53":[6,1,14],"54":[6,1,10],"55":[5,1,4],"56":[6,1,8],"57":[7,1,4],"58":[7,1,12],"59":[7,1,13],"60":[7,1,7],"61":[7,1,12],"62":[7,1,4],"63":[9,1,9],"64":[1,1,9],"65":[3,1,53],"66":[1,1,47],"67":[1,1,65],"68":[1,1,41],"69":[1,1,36],"70":[1,1,36],"71":[1,1,48],"72":[1,1,52],"73":[1,1,59],"74":[1,1,39],"75":[1,1,32],"76":[1,1,41],"77":[1,1,49],"78":[1,1,34],"79":[1,1,35],"80":[1,1,20],"81":[1,1,57],"82":[1,1,40],"83":[1,1,20],"84":[1,1,38],"85":[1,1,22],"86":[1,1,28],"87":[1,1,28],"88":[1,1,26],"89":[1,1,28],"90":[1,1,18],"91":[1,1,56],"92":[1,1,19],"93":[1,1,28],"94":[1,1,15],"95":[1,1,26],"96":[1,1,27],"97":[1,1,97],"98":[1,1,59],"99":[1,1,39],"100":[1,1,24],"101":[1,1,49],"102":[1,1,50],"103":[1,1,60],"104":[1,1,28],"105":[1,1,26],"106":[1,1,11],"107":[1,1,60],"108":[2,1,43],"109":[4,3,13],"110":[4,3,56],"111":[2,1,77],"112":[2,1,26],"113":[1,1,54],"114":[3,1,23],"115":[4,1,34],"116":[2,4,21],"117":[2,4,33]},"averageFieldLength":[3.932203389830514,1.1610169491525422,31.94915254237289],"storedFields":{"0":{"title":"다중 레벨 사이드바의 들여쓰기","titles":[]},"1":{"title":"다중 사이드바","titles":[]},"2":{"title":"기본 사용법","titles":["다중 사이드바"]},"3":{"title":"다중 사이드바 설정","titles":["다중 사이드바"]},"4":{"title":"scanStartPath","titles":["다중 사이드바","다중 사이드바 설정"]},"5":{"title":"resolvePath","titles":["다중 사이드바","다중 사이드바 설정"]},"6":{"title":"basePath","titles":["다중 사이드바","다중 사이드바 설정"]},"7":{"title":"복잡한 경로 및 URI가 있는 메뉴 표시하기","titles":["다중 사이드바"]},"8":{"title":"Changelog","titles":[]},"9":{"title":"1.25.3 (2024-09-03)","titles":["Changelog"]},"10":{"title":"1.25.2 (2024-09-03)","titles":["Changelog"]},"11":{"title":"1.25.1 (2024-09-03)","titles":["Changelog"]},"12":{"title":"1.25.0 (2024-08-22)","titles":["Changelog"]},"13":{"title":"1.24.2 (2024-08-13)","titles":["Changelog"]},"14":{"title":"1.24.1 (2024-07-31)","titles":["Changelog"]},"15":{"title":"1.24.0 (2024-07-06)","titles":["Changelog"]},"16":{"title":"1.23.2 (2024-05-16)","titles":["Changelog"]},"17":{"title":"1.23.1 (2024-05-15)","titles":["Changelog"]},"18":{"title":"1.23.0 (2024-05-13)","titles":["Changelog"]},"19":{"title":"1.22.0 (2024-03-28)","titles":["Changelog"]},"20":{"title":"1.21.0 (2024-03-15)","titles":["Changelog"]},"21":{"title":"1.20.0 (2024-03-12)","titles":["Changelog"]},"22":{"title":"1.19.0 (2024-02-26)","titles":["Changelog"]},"23":{"title":"1.18.6 (2024-01-03)","titles":["Changelog"]},"24":{"title":"1.18.5 (2023-12-11)","titles":["Changelog"]},"25":{"title":"1.18.0 (2023-10-02)","titles":["Changelog"]},"26":{"title":"1.17.0 (2023-09-26)","titles":["Changelog"]},"27":{"title":"1.16.5 (2023-09-22)","titles":["Changelog"]},"28":{"title":"1.16.0 (2023-09-21)","titles":["Changelog"]},"29":{"title":"1.15.0 (2023-09-19)","titles":["Changelog"]},"30":{"title":"1.14.0 (2023-09-18)","titles":["Changelog"]},"31":{"title":"1.13.0 (2023-09-13)","titles":["Changelog"]},"32":{"title":"1.12.0 (2023-09-12)","titles":["Changelog"]},"33":{"title":"1.11.0 (2023-08-24)","titles":["Changelog"]},"34":{"title":"1.10.1 (2023-08-08)","titles":["Changelog"]},"35":{"title":"1.10.0 (2023-07-25)","titles":["Changelog"]},"36":{"title":"1.9.5 (2023-07-25)","titles":["Changelog"]},"37":{"title":"1.9.0 (2023-07-24)","titles":["Changelog"]},"38":{"title":"1.8.2 (2023-07-18)","titles":["Changelog"]},"39":{"title":"1.8.1 (2023-06-15)","titles":["Changelog"]},"40":{"title":"1.8.0 (2023-06-13)","titles":["Changelog"]},"41":{"title":"1.7.5 (2023-05-28)","titles":["Changelog"]},"42":{"title":"1.7.0 (2023-05-28)","titles":["Changelog"]},"43":{"title":"1.6.5 (2023-05-27)","titles":["Changelog"]},"44":{"title":"1.6.0 (2023-05-27)","titles":["Changelog"]},"45":{"title":"1.5.1 (2023-05-26)","titles":["Changelog"]},"46":{"title":"1.5.0 (2023-05-26)","titles":["Changelog"]},"47":{"title":"1.4.0 (2023-05-26)","titles":["Changelog"]},"48":{"title":"1.3.1 (2023-04-20)","titles":["Changelog"]},"49":{"title":"1.3.0 (2023-04-20)","titles":["Changelog"]},"50":{"title":"1.2.0 (2023-02-07)","titles":["Changelog"]},"51":{"title":"1.1.5 (2023-01-12)","titles":["Changelog"]},"52":{"title":"1.1.4 (2023-01-12)","titles":["Changelog"]},"53":{"title":"1.1.3 (2022-12-08)","titles":["Changelog"]},"54":{"title":"1.1.2 (2022-11-23)","titles":["Changelog"]},"55":{"title":"1.1.1 (2022-11-02)","titles":["Changelog"]},"56":{"title":"1.1.0 (2022-11-02)","titles":["Changelog"]},"57":{"title":"1.0.9 (2022-11-02)","titles":["Changelog"]},"58":{"title":"1.0.8 (2022-11-02)","titles":["Changelog"]},"59":{"title":"1.0.7 (2022-10-31)","titles":["Changelog"]},"60":{"title":"1.0.6 (2022-10-31)","titles":["Changelog"]},"61":{"title":"1.0.5 (2022-10-27)","titles":["Changelog"]},"62":{"title":"1.0.4 (2022-10-25)","titles":["Changelog"]},"63":{"title":"0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)","titles":["Changelog"]},"64":{"title":"API","titles":[]},"65":{"title":"@ 빠른 검색","titles":["API"]},"66":{"title":"documentRootPath","titles":["API"]},"67":{"title":"scanStartPath","titles":["API"]},"68":{"title":"resolvePath","titles":["API"]},"69":{"title":"basePath","titles":["API"]},"70":{"title":"useTitleFromFileHeading","titles":["API"]},"71":{"title":"useTitleFromFrontmatter","titles":["API"]},"72":{"title":"frontmatterTitleFieldName","titles":["API"]},"73":{"title":"useFolderTitleFromIndexFile","titles":["API"]},"74":{"title":"useFolderLinkFromIndexFile","titles":["API"]},"75":{"title":"manualSortFileNameByPriority","titles":["API"]},"76":{"title":"sortMenusByName","titles":["API"]},"77":{"title":"sortMenusByFileDatePrefix","titles":["API"]},"78":{"title":"sortMenusByFrontmatterOrder","titles":["API"]},"79":{"title":"sortMenusByFrontmatterDate","titles":["API"]},"80":{"title":"sortMenusOrderByDescending","titles":["API"]},"81":{"title":"sortMenusOrderNumericallyFromTitle","titles":["API"]},"82":{"title":"sortMenusOrderNumericallyFromLink","titles":["API"]},"83":{"title":"frontmatterOrderDefaultValue","titles":["API"]},"84":{"title":"collapsed","titles":["API"]},"85":{"title":"collapseDepth","titles":["API"]},"86":{"title":"hyphenToSpace","titles":["API"]},"87":{"title":"underscoreToSpace","titles":["API"]},"88":{"title":"capitalizeFirst","titles":["API"]},"89":{"title":"capitalizeEachWords","titles":["API"]},"90":{"title":"excludeFiles","titles":["API"]},"91":{"title":"excludeFilesByFrontmatterFieldName","titles":["API"]},"92":{"title":"excludeFolders","titles":["API"]},"93":{"title":"includeDotFiles","titles":["API"]},"94":{"title":"includeEmptyFolder","titles":["API"]},"95":{"title":"includeRootIndexFile","titles":["API"]},"96":{"title":"includeFolderIndexFile","titles":["API"]},"97":{"title":"removePrefixAfterOrdering","titles":["API"]},"98":{"title":"prefixSeparator","titles":["API"]},"99":{"title":"rootGroupText","titles":["API"]},"100":{"title":"rootGroupLink","titles":["API"]},"101":{"title":"rootGroupCollapsed","titles":["API"]},"102":{"title":"convertSameNameSubFileToGroupIndexPage","titles":["API"]},"103":{"title":"folderLinkNotIncludesFileName","titles":["API"]},"104":{"title":"keepMarkdownSyntaxFromTitle","titles":["API"]},"105":{"title":"debugPrint","titles":["API"]},"106":{"title":"시작하기","titles":[]},"107":{"title":"설치","titles":["시작하기"]},"108":{"title":"사용 방법","titles":["시작하기"]},"109":{"title":"1. named-import 사용","titles":["시작하기","사용 방법"]},"110":{"title":"2. default-import 사용","titles":["시작하기","사용 방법"]},"111":{"title":"코드 예시","titles":["시작하기"]},"112":{"title":"출력 예시","titles":["시작하기"]},"113":{"title":"소개","titles":[]},"114":{"title":"어디에서 사용되나요?","titles":["소개"]},"115":{"title":"CommonJS: ERR_REQUIRE_ESM","titles":[]},"116":{"title":"해결책 A","titles":["CommonJS: ERR_REQUIRE_ESM"]},"117":{"title":"해결책 B","titles":["CommonJS: ERR_REQUIRE_ESM"]}},"dirtCount":0,"index":[["quot",{"2":{"117":4}}],["나와",{"2":{"115":1}}],["살펴보세요",{"2":{"114":1}}],["살펴보는",{"2":{"1":1}}],["어디에서",{"0":{"114":1}}],["어떻게",{"2":{"110":1}}],["등을",{"2":{"113":1}}],["등과",{"2":{"91":1}}],["종속성",{"2":{"113":1}}],["크기",{"2":{"113":1}}],["최신",{"2":{"113":1}}],["최상위",{"2":{"66":1,"85":1,"95":1,"99":1,"101":1}}],["⚡️",{"2":{"113":7}}],["절약하세요",{"2":{"113":1}}],["시도하세요",{"2":{"116":1}}],["시간을",{"2":{"113":1}}],["시작하기",{"0":{"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1}}],["시작하면",{"2":{"7":1}}],["시작합니다",{"2":{"0":2}}],["손쉽게",{"2":{"113":1}}],["분류를",{"2":{"113":1}}],["분석할",{"2":{"71":1}}],["플러그인입니다",{"2":{"113":1}}],["소개",{"0":{"113":1},"1":{"114":1}}],["코드",{"0":{"111":1}}],["코드를",{"2":{"104":1}}],["빌드해",{"2":{"110":1}}],["테스트하려면",{"2":{"110":1}}],["테마의",{"2":{"0":1}}],["=",{"2":{"109":1,"110":1}}],["반환합니다",{"2":{"108":1}}],["반송됩니다",{"2":{"75":1}}],["찾은",{"2":{"108":1}}],["찾으려고",{"2":{"6":1}}],["메서드를",{"2":{"108":1,"110":1}}],["메뉴명",{"2":{"97":3}}],["메뉴의",{"2":{"97":1,"99":2}}],["메뉴",{"0":{"7":1},"2":{"65":3,"70":2,"72":3,"73":1,"76":3,"77":4,"78":1,"79":1,"80":1,"81":1,"82":1,"85":1,"86":1,"87":1,"88":2,"89":1,"97":2,"98":2,"99":1,"102":1}}],["메뉴는",{"2":{"2":1,"7":1}}],["메뉴만",{"2":{"2":1}}],["메뉴에서",{"2":{"73":1,"74":1,"91":1}}],["메뉴에",{"2":{"2":1,"73":1,"74":1,"91":1,"95":1,"96":1,"97":1}}],["메뉴를",{"2":{"1":1,"2":1,"5":1,"7":2,"103":1,"108":1,"113":2}}],["메뉴가",{"2":{"0":1,"2":1,"6":1,"7":1,"81":1,"84":5}}],["방법",{"0":{"108":1},"1":{"109":1,"110":1},"2":{"108":1}}],["방법을",{"2":{"7":1,"106":1}}],["$",{"2":{"107":3}}],["명령어로",{"2":{"107":1}}],["개발자",{"2":{"107":1}}],["패키지를",{"2":{"114":1}}],["패키지는",{"2":{"107":1}}],["패키지",{"2":{"107":1}}],["노드",{"2":{"107":1}}],["지원",{"2":{"113":3}}],["지원합니다",{"2":{"113":1}}],["지침을",{"2":{"107":1}}],["지정되지",{"2":{"91":1}}],["지정한",{"2":{"72":2}}],["지정된",{"2":{"72":1,"85":1,"91":1,"98":1,"108":1}}],["지정됩니다",{"2":{"6":1,"100":1}}],["지정하세요",{"2":{"113":1}}],["지정하면",{"2":{"85":1,"99":1,"100":1,"101":1}}],["지정하지",{"2":{"6":1,"84":1}}],["지정하는",{"2":{"4":1,"67":1,"99":1}}],["지정해야",{"2":{"5":1}}],["지정합니다",{"2":{"4":1,"74":1,"98":1,"99":1,"103":1}}],["지정할",{"2":{"2":1,"113":1}}],["환경에서만",{"2":{"107":1}}],["환경에서",{"2":{"107":1,"114":1}}],["x",{"2":{"107":1}}],["x3c",{"2":{"0":3,"2":3,"6":1,"66":2,"117":1}}],["버전의",{"2":{"113":1}}],["버전은",{"2":{"107":1}}],["버튼이",{"2":{"101":1}}],["안내합니다",{"2":{"106":1}}],["안에",{"2":{"0":1}}],["중인",{"2":{"114":1}}],["중",{"2":{"105":1,"108":1}}],["콘솔에",{"2":{"110":1}}],["콘솔",{"2":{"105":1}}],["콘텐츠에",{"2":{"91":1}}],["콘텐츠가",{"2":{"0":1}}],["객체를",{"2":{"105":1}}],["후",{"2":{"105":1,"116":1}}],["후에",{"2":{"97":1}}],["텍스트는",{"2":{"104":1}}],["텍스트에서",{"2":{"98":1}}],["텍스트에",{"2":{"77":1,"104":1}}],["강조",{"2":{"104":1}}],["강제로",{"2":{"76":1,"88":1,"93":1}}],["연결됩니다",{"2":{"103":1}}],["무시하고",{"2":{"103":1}}],["무시됩니다",{"2":{"91":1,"95":1,"96":1,"97":1}}],["존재를",{"2":{"103":1}}],["존재하지",{"2":{"7":1,"69":1,"70":1,"72":1,"73":1,"74":1,"78":1,"94":1,"95":1,"96":1}}],["존재하는",{"2":{"0":1}}],["병렬로",{"2":{"103":1}}],["병행해서",{"2":{"7":1}}],["클릭하면",{"2":{"102":1,"103":1}}],["클래스가",{"2":{"0":1}}],["여러",{"2":{"105":1}}],["여부는",{"2":{"101":1}}],["여부를",{"2":{"101":1}}],["여기",{"2":{"107":1}}],["여기까지",{"2":{"7":1}}],["여기부터",{"2":{"7":1}}],["여기에서",{"2":{"0":1}}],["펼칠지",{"2":{"101":1}}],["비어",{"2":{"100":1}}],["비활성화할",{"2":{"99":1}}],["비슷한",{"2":{"5":1}}],["주의해야",{"2":{"99":1}}],["주로",{"2":{"6":1}}],["전에",{"2":{"107":1,"108":1}}],["전체",{"2":{"99":1}}],["전달해야",{"2":{"2":1}}],["전달합니다",{"2":{"2":1}}],["관리자를",{"2":{"107":1}}],["관계없이",{"2":{"99":1,"104":1}}],["관련",{"2":{"5":1,"7":1}}],["로그에",{"2":{"105":1}}],["로",{"2":{"98":1,"103":2}}],["부분을",{"2":{"98":1,"117":1}}],["의",{"2":{"98":1}}],["의도하지",{"2":{"81":1}}],["의도한",{"2":{"1":1}}],["추출된",{"2":{"98":1}}],["추가하세요",{"2":{"117":1}}],["추가되며",{"2":{"102":1}}],["추가되지",{"2":{"100":1}}],["추가합니다",{"2":{"0":2,"6":1,"7":1,"117":1}}],["추가",{"2":{"0":3,"7":1}}],["미치며",{"2":{"97":1}}],["처럼",{"2":{"97":1}}],["번들",{"2":{"113":1}}],["번거로운",{"2":{"113":1}}],["번만",{"2":{"97":1}}],["번째",{"2":{"0":2}}],["완료된",{"2":{"97":1}}],["간편하게",{"2":{"113":1}}],["간주되어",{"2":{"93":1}}],["간단한",{"2":{"1":1}}],["점",{"2":{"93":1}}],["점에",{"2":{"0":1}}],["필터",{"2":{"113":1}}],["필드",{"2":{"91":1}}],["필요하지",{"2":{"99":1}}],["필요합니다",{"2":{"71":1}}],["필요한",{"2":{"0":1}}],["목록에",{"2":{"90":1,"92":1,"93":2,"102":1}}],["목록을",{"2":{"67":1}}],["에",{"2":{"90":1,"108":1}}],["바뀝니다",{"2":{"88":1}}],["글자를",{"2":{"89":1}}],["글자가",{"2":{"88":1}}],["글을",{"2":{"7":1}}],["받습니다",{"2":{"86":1,"87":1,"88":1,"89":1}}],["영향을",{"2":{"86":1,"87":1,"88":1,"89":1,"97":1}}],["머리글",{"2":{"86":1,"87":1,"88":1,"89":1}}],["변환해야",{"2":{"115":1,"117":1}}],["변환",{"2":{"113":1}}],["변환되어",{"2":{"86":1,"87":1}}],["변경한",{"2":{"116":1}}],["변경됩니다",{"2":{"97":1}}],["변경되어",{"2":{"76":1}}],["변경된",{"2":{"69":1,"70":1,"72":1,"76":1,"77":1}}],["변경하세요",{"2":{"6":1}}],["자동으로",{"2":{"85":1,"108":1,"113":1}}],["자세한",{"2":{"72":1,"97":1,"100":1,"101":1,"110":1,"115":1}}],["자세히",{"2":{"1":1,"67":1,"68":1,"69":1}}],["축소",{"2":{"85":1,"101":2}}],["축소됩니다",{"2":{"85":1}}],["깊이는",{"2":{"85":1}}],["깊이에서",{"2":{"85":1}}],["깊은",{"2":{"7":1}}],["우선하기",{"2":{"81":1}}],["우선순위가",{"2":{"75":1}}],["낮은",{"2":{"81":1,"82":1}}],["활용",{"2":{"114":1}}],["활용되고",{"2":{"114":1}}],["활용하면",{"2":{"77":1}}],["활성화됩니다",{"2":{"80":1,"83":1,"85":1}}],["유지합니다",{"2":{"104":2}}],["유형과",{"2":{"79":1}}],["유의해야",{"2":{"0":1}}],["순으로",{"2":{"79":1}}],["순서대로",{"2":{"75":1}}],["순서로",{"2":{"70":1,"72":1,"77":1,"81":1}}],["오래된",{"2":{"79":1}}],["오름차순으로",{"2":{"78":1,"79":1}}],["오름차순",{"2":{"76":1}}],["또한",{"2":{"79":1}}],["또는",{"2":{"6":1,"66":1,"73":2,"76":1,"79":1,"80":1,"84":1,"86":1,"87":1,"88":1,"89":1,"97":2,"101":1,"104":1,"107":1}}],["판단됩니다",{"2":{"78":1}}],["내의",{"2":{"84":1,"92":1}}],["내림차순",{"2":{"79":1,"81":1,"82":1}}],["내림차순으로",{"2":{"78":1,"80":1}}],["내용이",{"2":{"70":1}}],["내용은",{"2":{"7":1,"72":1,"97":1,"100":1,"101":1,"110":1,"115":1}}],["내용만",{"2":{"5":1}}],["을",{"2":{"78":1}}],["숫자를",{"2":{"81":1,"82":1,"97":2}}],["숫자가",{"2":{"78":1,"81":1,"82":1}}],["숫자",{"2":{"78":1}}],["속성에서",{"2":{"110":1}}],["속성에",{"2":{"83":1}}],["속성",{"2":{"79":1}}],["속성의",{"2":{"78":1}}],["속성을",{"2":{"78":1,"79":1}}],["앞의",{"2":{"98":1}}],["앞부분",{"2":{"91":1}}],["앞부분을",{"2":{"86":1,"87":1,"88":1,"89":1}}],["앞부분의",{"2":{"78":1,"79":1,"83":1,"97":1}}],["앞에",{"2":{"5":1,"68":1,"81":1,"82":1,"93":1}}],["남아있는",{"2":{"77":1}}],["형식이어야",{"2":{"77":1}}],["형식은",{"2":{"77":1,"79":1}}],["yarn",{"2":{"107":2}}],["yyyy",{"2":{"77":1,"79":1}}],["you",{"2":{"18":2,"21":1,"28":1,"31":1,"37":1}}],["접두사는",{"2":{"97":1}}],["접두사를",{"2":{"77":2,"97":1,"98":1}}],["접힌",{"2":{"84":2,"101":1}}],["접기",{"2":{"84":1}}],["접근해야",{"2":{"2":1}}],["날짜를",{"2":{"98":1}}],["날짜",{"2":{"77":3,"79":3}}],["할",{"2":{"76":1,"107":1,"117":1}}],["항목에",{"2":{"102":1}}],["항목에만",{"2":{"101":1}}],["항목에서",{"2":{"97":1}}],["항목이",{"2":{"101":1}}],["항목도",{"2":{"92":1}}],["항목",{"2":{"77":1,"101":1}}],["항목을",{"2":{"76":1,"78":1,"79":1,"80":1,"101":1}}],["항목의",{"2":{"76":1,"80":1,"95":1,"96":1,"103":1}}],["항목은",{"2":{"70":1,"72":1,"77":1,"97":1}}],["적용되지만",{"2":{"76":1}}],["적용되며",{"2":{"75":1}}],["적용하지",{"2":{"76":1}}],["적용됩니다",{"2":{"75":1,"101":1}}],["동일하지만",{"2":{"82":1}}],["동일한",{"2":{"75":1}}],["동적",{"2":{"0":1}}],["모듈에",{"2":{"115":1}}],["모듈로",{"2":{"115":1}}],["모듈입니다",{"2":{"115":1}}],["모듈",{"2":{"107":1,"116":1}}],["모듈을",{"2":{"107":3}}],["모듈의",{"2":{"106":1}}],["모두",{"2":{"89":1}}],["모두에",{"2":{"75":1}}],["모든",{"2":{"64":1,"84":3,"93":1,"97":1,"105":1}}],["일반적인",{"2":{"101":1}}],["일반적으로",{"2":{"5":1,"6":1,"7":1,"73":1,"76":1,"93":1,"104":1}}],["일반",{"2":{"81":1}}],["일치해야",{"2":{"79":1}}],["일치하는",{"2":{"75":1,"98":1}}],["확장됩니다",{"2":{"101":1}}],["확장",{"2":{"101":1}}],["확장될",{"2":{"84":1}}],["확장된",{"2":{"84":1}}],["확장이",{"2":{"84":1,"85":1}}],["확장자를",{"2":{"116":1}}],["확장자가",{"2":{"110":1}}],["확장자",{"2":{"75":1,"90":1}}],["확인할",{"2":{"0":1}}],["숨겨진",{"2":{"93":2}}],["숨겨져",{"2":{"73":1,"74":1}}],["숨기려고",{"2":{"2":1}}],["숨기기를",{"2":{"2":1}}],["프론트매터에서",{"2":{"73":1}}],["프로젝트로",{"2":{"117":1}}],["프로젝트를",{"2":{"117":1}}],["프로젝트에",{"2":{"116":1}}],["프로젝트에서",{"2":{"114":1,"115":1}}],["프로젝트",{"2":{"66":1,"110":1,"114":1}}],["프로젝트와",{"2":{"2":1}}],["헤더",{"2":{"73":1}}],["현재",{"2":{"73":1,"74":1,"114":1}}],["키",{"2":{"72":1}}],["공백으로",{"2":{"86":1,"87":1,"89":1}}],["공백이",{"2":{"71":1}}],["공식",{"2":{"1":1}}],["은",{"2":{"71":1}}],["실행",{"2":{"105":1}}],["실패하면",{"2":{"71":1}}],["실제",{"2":{"6":1,"7":1}}],["실제로",{"2":{"4":2}}],["태그에서",{"2":{"71":1}}],["트리",{"2":{"70":1,"72":1,"77":1,"108":1}}],["인라인",{"2":{"104":1}}],["인",{"2":{"97":1}}],["인덱스",{"2":{"73":3,"74":3,"95":1,"96":1}}],["인해",{"2":{"69":1}}],["인수를",{"2":{"2":1}}],["으로",{"2":{"68":1}}],["섹션을",{"2":{"110":1}}],["섹션",{"2":{"68":1}}],["섹션의",{"2":{"68":1}}],["없이",{"2":{"113":1}}],["없으면",{"2":{"75":1}}],["없는",{"2":{"68":1,"71":1}}],["없습니다",{"2":{"7":1,"82":1}}],["입력합니다",{"2":{"68":1}}],["입니다",{"2":{"66":1}}],["마크다운",{"2":{"73":1,"86":1,"87":1,"88":1,"89":1,"104":1,"108":1}}],["마세요",{"2":{"67":1}}],["마찬가지로",{"2":{"2":1}}],["상태로",{"2":{"84":2,"101":1}}],["상단에",{"2":{"71":1}}],["상위",{"2":{"67":1}}],["상황에",{"2":{"3":1}}],["벗어난",{"2":{"67":1}}],["알아볼",{"2":{"67":1,"68":1,"69":1}}],["알아보려면",{"2":{"1":1}}],["정규식과",{"2":{"98":1}}],["정규식을",{"2":{"97":1,"98":1}}],["정보를",{"2":{"73":1}}],["정렬을",{"2":{"81":1,"82":1,"97":1}}],["정렬에서는",{"2":{"81":1}}],["정렬됩니다",{"2":{"81":3,"82":1}}],["정렬하고",{"2":{"97":1}}],["정렬하거나",{"2":{"78":1}}],["정렬하려면",{"2":{"70":1,"72":1,"77":1}}],["정렬해야",{"2":{"76":1}}],["정렬이",{"2":{"76":1}}],["정렬로",{"2":{"76":1}}],["정렬합니다",{"2":{"75":1,"76":2,"77":1,"78":2,"79":2,"80":1,"82":1}}],["정렬되므로",{"2":{"70":1,"72":1,"77":1}}],["정렬",{"2":{"65":1,"75":2,"113":1}}],["정의할",{"2":{"116":1}}],["정의되지",{"2":{"84":1,"91":1,"101":1}}],["정의된",{"2":{"7":1}}],["정의해야",{"2":{"0":1}}],["정의",{"2":{"0":1}}],["링크는",{"2":{"97":1}}],["링크가",{"2":{"74":1,"100":2,"102":2,"103":1}}],["링크를",{"2":{"74":1,"82":1,"97":1,"102":1,"103":2}}],["링크",{"2":{"65":1}}],["제로",{"2":{"113":1}}],["제거됩니다",{"2":{"98":1,"104":1}}],["제거하지",{"2":{"104":1}}],["제거하기",{"2":{"98":1}}],["제거하므로",{"2":{"97":1}}],["제거하려면",{"2":{"77":1,"98":1}}],["제거합니다",{"2":{"97":1,"98":1}}],["제외됩니다",{"2":{"91":1}}],["제외",{"2":{"65":1}}],["제목에만",{"2":{"97":1}}],["제목의",{"2":{"97":1}}],["제목으로",{"2":{"86":1,"87":1}}],["제목값입니다",{"2":{"72":1}}],["제목이",{"2":{"70":1,"82":1}}],["제목을",{"2":{"70":1,"71":1,"72":1,"73":1}}],["제목",{"2":{"65":2,"70":1,"71":2,"104":1}}],["제공된",{"2":{"6":1}}],["해결책",{"0":{"116":1,"117":1}}],["해결책이",{"2":{"115":1}}],["해결하기",{"2":{"115":1}}],["해결하려면",{"2":{"0":1,"6":1,"7":1}}],["해결할",{"2":{"97":1}}],["해당하는",{"2":{"90":1,"92":1}}],["해당",{"2":{"73":1,"97":2,"102":2}}],["해석",{"2":{"65":1}}],["검색하고",{"2":{"108":1}}],["검색",{"0":{"65":1}}],["빠른",{"0":{"65":1}}],["~",{"0":{"63":1}}],["44",{"2":{"50":1}}],["4",{"0":{"47":1,"52":1,"62":1},"2":{"98":1}}],["7",{"0":{"41":1,"42":1,"59":1}}],["8",{"0":{"38":1,"39":1,"40":1,"58":1}}],["9",{"0":{"36":1,"37":1,"57":1},"2":{"98":3}}],["ko",{"2":{"111":1}}],["korean",{"2":{"11":1}}],["keepmarkdownsyntaxfromtitle",{"0":{"104":1},"2":{"31":2,"65":1,"111":1}}],["5",{"0":{"24":1,"27":1,"36":1,"41":1,"43":1,"45":1,"46":1,"51":1,"61":1}}],["5ed188e",{"2":{"16":1}}],["6",{"0":{"23":1,"43":1,"44":1,"60":1}}],["z",{"2":{"22":1,"24":3}}],["number",{"2":{"83":1,"85":1}}],["null",{"2":{"36":1,"50":1,"56":1,"67":1,"68":1,"69":1,"84":1,"91":1,"100":1,"101":2,"111":3}}],["npm",{"2":{"51":1,"107":3}}],["npmignore",{"2":{"45":1}}],["navigate",{"2":{"44":1}}],["named",{"0":{"109":1}}],["names",{"2":{"25":2,"33":1}}],["name",{"2":{"10":1,"18":2,"28":1,"33":3,"44":1,"72":1,"77":2,"117":1}}],["network",{"2":{"114":1}}],["newlines",{"2":{"40":1}}],["nested",{"2":{"27":1}}],["node",{"2":{"107":1}}],["nodejs",{"2":{"61":1}}],["no",{"2":{"29":1}}],["now",{"2":{"11":1,"18":1,"19":1,"28":1,"33":1,"44":1}}],["non",{"2":{"11":1}}],["normally",{"2":{"10":1,"31":1}}],["note",{"2":{"30":1}}],["not",{"2":{"2":2,"9":1,"14":1,"16":1,"17":1,"21":1,"30":1,"31":1,"33":1,"34":1,"36":1,"37":1,"43":1,"44":2,"50":2,"53":1,"63":2}}],["pnpm",{"2":{"107":2}}],["prototypes",{"2":{"112":2}}],["production",{"2":{"62":1,"63":1}}],["prod",{"2":{"45":1}}],["prefixed",{"2":{"36":1}}],["prefixseparator가",{"2":{"97":1}}],["prefixseparator",{"0":{"98":1},"2":{"19":1,"20":1,"65":1,"77":1,"97":2,"98":2,"111":1}}],["present",{"2":{"17":1}}],["precise",{"2":{"14":1}}],["pulling",{"2":{"25":1}}],["please",{"2":{"10":1,"30":1,"40":1}}],["parsing",{"2":{"42":1}}],["passed",{"2":{"18":1}}],["page",{"2":{"6":4,"7":2,"11":1,"28":1}}],["path",{"2":{"2":1,"12":1,"21":1,"68":2}}],["padding",{"2":{"0":1}}],["package",{"2":{"0":1,"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1,"66":1,"117":1}}],["world",{"2":{"71":1}}],["working",{"2":{"43":1}}],["work",{"2":{"18":1}}],["whether",{"2":{"28":1,"37":1}}],["when",{"2":{"9":1,"10":1,"11":1,"12":1,"14":1,"15":1,"17":1,"18":1,"25":1,"31":1,"36":1}}],["was",{"2":{"33":2,"40":1,"42":2}}],["want",{"2":{"18":1,"31":1}}],["warning",{"2":{"17":1,"33":1}}],["warn",{"2":{"16":1}}],["will",{"2":{"14":1,"15":1,"18":1,"33":1,"44":2}}],["withindex",{"2":{"42":1}}],["without",{"2":{"33":1}}],["with",{"2":{"9":1,"15":1,"18":1,"21":1,"33":1,"34":1,"36":1,"40":1,"44":2,"50":2}}],["a39789f98801d908bbc7ff3ecc99d99c",{"2":{"115":1}}],["a보다",{"2":{"81":1}}],["a가",{"2":{"81":1}}],["a라는",{"2":{"81":1}}],["at",{"2":{"50":1}}],["again",{"2":{"29":1}}],["against",{"2":{"17":1}}],["available",{"2":{"29":1,"30":1}}],["avoid",{"2":{"11":1}}],["all",{"2":{"50":3}}],["allows",{"2":{"37":1}}],["allow",{"2":{"18":1,"21":1,"36":1}}],["alpha",{"0":{"63":1},"2":{"50":1,"63":1}}],["algorithm",{"2":{"30":1}}],["also",{"2":{"25":1,"33":1}}],["aslafy",{"2":{"22":1,"24":3}}],["as",{"2":{"21":1,"44":1}}],["accepts",{"2":{"19":1}}],["another",{"2":{"66":1}}],["an",{"2":{"21":1}}],["any",{"2":{"18":1}}],["and",{"2":{"9":1,"10":1,"12":1,"17":1,"18":2,"20":1,"21":1,"28":2,"29":1,"30":1,"33":1,"37":1,"40":1,"42":1,"43":1,"44":2,"49":1,"50":1,"54":1,"59":2}}],["article",{"2":{"91":2}}],["array",{"2":{"75":1,"90":1,"92":1,"112":4}}],["argument",{"2":{"14":1}}],["are",{"2":{"9":1,"10":1,"21":1,"29":2,"30":1,"36":1,"50":1}}],["apply",{"2":{"39":1}}],["applied",{"2":{"34":1,"44":1}}],["appear",{"2":{"14":1}}],["api로",{"2":{"7":1}}],["api의",{"2":{"7":2}}],["api라는",{"2":{"7":1}}],["api가",{"2":{"5":1}}],["api에",{"2":{"5":1}}],["api",{"0":{"64":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1},"2":{"3":4,"5":1,"7":12,"102":7,"103":5,"110":1,"111":1}}],["a",{"0":{"116":1},"2":{"14":1,"30":1,"33":1,"44":2,"81":8}}],["added",{"2":{"33":1}}],["add",{"2":{"12":1,"15":1,"19":1,"20":1,"21":2,"22":1,"24":1,"25":1,"26":1,"31":2,"32":1,"33":1,"35":2,"37":1,"40":1,"41":1,"42":3,"44":2,"45":1,"46":1,"53":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"107":1}}],["31",{"0":{"14":1,"59":1,"60":1}}],["3",{"0":{"9":1,"48":1,"49":1,"53":1,"63":1}}],["esm",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"115":3,"117":1}}],["esm으로",{"2":{"107":1}}],["err",{"0":{"115":1},"1":{"116":1,"117":1}}],["error",{"2":{"47":1}}],["editorconfig",{"2":{"59":1}}],["e",{"2":{"28":1,"68":1}}],["enhancements",{"2":{"20":1}}],["end",{"2":{"7":1}}],["empty",{"2":{"18":2,"21":1,"53":1}}],["execution",{"2":{"59":1}}],["expand",{"2":{"50":1}}],["expanded",{"2":{"37":1,"50":1}}],["expressions",{"2":{"19":1}}],["export",{"2":{"0":1,"109":1,"110":1,"111":1}}],["exclude인",{"2":{"91":1}}],["excludefolders",{"0":{"92":1},"2":{"42":1,"65":1,"111":1,"112":1}}],["excludefilesbyfrontmatterfieldname",{"0":{"91":1},"2":{"18":2,"65":1,"111":1}}],["excludefilesbyfrontmatter",{"2":{"18":1,"22":1}}],["excludefiles",{"0":{"90":1},"2":{"2":1,"42":1,"65":1,"111":1}}],["excluded",{"2":{"18":1,"91":1}}],["exclude",{"2":{"18":2,"91":3,"111":1}}],["extract",{"2":{"15":1}}],["existing",{"2":{"18":1}}],["exists",{"2":{"14":1,"15":1,"44":1}}],["exist",{"2":{"10":1,"33":1}}],["examples",{"2":{"112":4}}],["example",{"2":{"0":1,"5":1,"31":1,"112":1}}],["외부에",{"2":{"7":1}}],["외에는",{"2":{"6":1}}],["참고",{"2":{"97":2}}],["참고하세요",{"2":{"7":1}}],["참조하세요",{"2":{"72":1,"97":1,"100":1,"101":2,"107":1,"110":1,"115":1}}],["참조하지",{"2":{"6":1}}],["참조하는",{"2":{"3":1}}],["못하고",{"2":{"7":1}}],["감지하지",{"2":{"7":1}}],["싶습니다",{"2":{"7":1}}],["도달했을",{"2":{"7":1}}],["도달할",{"2":{"5":1}}],["한번의",{"2":{"113":1}}],["한꺼번에",{"2":{"84":1}}],["한",{"2":{"7":1,"97":1}}],["폴더와",{"2":{"102":1}}],["폴더는",{"2":{"92":1}}],["폴더에",{"2":{"74":2,"78":1,"102":2}}],["폴더의",{"2":{"73":1,"85":1,"102":2}}],["폴더가",{"2":{"66":1,"93":1,"102":1,"103":1}}],["폴더",{"2":{"7":2,"70":1,"72":1,"73":1,"76":1,"77":1,"92":2,"93":1,"96":1,"103":4,"108":1,"113":1}}],["폴더를",{"2":{"7":1,"108":1}}],["짧거나",{"2":{"7":1}}],["특수",{"2":{"113":1}}],["특별한",{"2":{"103":1}}],["특히",{"2":{"7":1}}],["특정",{"2":{"1":1,"5":1,"97":1,"116":1}}],["복잡한",{"0":{"7":1}}],["라는",{"2":{"81":1}}],["라인을",{"2":{"6":1}}],["라우팅을",{"2":{"5":1}}],["라우팅",{"2":{"4":1,"7":1}}],["재작성",{"2":{"6":1}}],["재정의합니다",{"2":{"0":1}}],["쓰기",{"2":{"6":1,"103":1}}],["쓰기를",{"2":{"6":1}}],["통해",{"2":{"6":1,"86":1,"87":1,"88":1,"89":1}}],["작성하기",{"2":{"108":1}}],["작성되었습니다",{"2":{"107":1}}],["작성할",{"2":{"0":1}}],["작업",{"2":{"113":1}}],["작업이",{"2":{"97":1}}],["작업할",{"2":{"6":1}}],["갖지만",{"2":{"5":1}}],["를",{"2":{"5":1}}],["됩니다",{"2":{"5":1,"77":1,"98":1}}],["발견했을",{"2":{"5":1}}],["않으려는",{"2":{"97":1}}],["않으며",{"2":{"92":1}}],["않으면",{"2":{"6":1,"69":1,"70":1,"72":1,"73":1,"74":1,"84":1,"95":1,"96":1}}],["않았거나",{"2":{"91":1}}],["않음으로",{"2":{"101":1}}],["않음",{"2":{"84":1}}],["않은",{"2":{"81":1,"83":1,"91":1,"99":1}}],["않고",{"2":{"76":1,"84":1,"97":1,"104":1}}],["않는",{"2":{"7":1,"78":1,"94":1}}],["않습니다",{"2":{"6":2,"67":1,"74":1,"90":1,"91":1,"92":1,"93":1,"100":1,"101":1,"102":2}}],["않아야",{"2":{"4":1}}],["않을",{"2":{"0":1}}],["단어의",{"2":{"89":1}}],["단계를",{"2":{"99":1}}],["단계",{"2":{"7":1}}],["단계가",{"2":{"7":1}}],["단계로",{"2":{"7":1}}],["단",{"2":{"4":1}}],["값과",{"2":{"71":1}}],["값에",{"2":{"71":1,"91":1,"97":1}}],["값이",{"2":{"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"77":1,"78":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"89":1,"91":3,"94":1,"95":1,"96":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1}}],["값",{"2":{"6":1,"78":1}}],["값을",{"2":{"4":1,"5":1,"6":2,"66":1,"69":1,"71":1,"79":1,"98":2,"99":1,"100":1}}],["값은",{"2":{"2":2,"5":2,"98":1}}],["포함합니다",{"2":{"95":2,"96":1}}],["포함된",{"2":{"70":1,"81":1,"82":1,"86":1,"87":1,"91":1,"104":1}}],["포함되어야",{"2":{"68":1}}],["포함되지",{"2":{"4":1,"102":1}}],["포함",{"2":{"65":1,"75":1,"90":1}}],["포함하더라도",{"2":{"105":1}}],["포함하지",{"2":{"67":1}}],["포함하는",{"2":{"5":1}}],["포함하려면",{"2":{"4":1,"96":1}}],["포함됩니다",{"2":{"2":1}}],["규칙을",{"2":{"7":1}}],["규칙이",{"2":{"6":1,"75":1,"103":1}}],["규칙으로",{"2":{"6":1}}],["규칙에서",{"2":{"4":1}}],["규칙의",{"2":{"4":1}}],["스크립트를",{"2":{"116":1}}],["스캔은",{"2":{"76":1}}],["스캔되지",{"2":{"67":1}}],["스캔할",{"2":{"4":1,"67":2}}],["스타일링",{"2":{"65":1}}],["스타일에",{"2":{"0":1}}],["스타일을",{"2":{"0":2}}],["데이터",{"2":{"79":1}}],["데",{"2":{"4":1,"67":1,"68":1,"69":1}}],["설치하세요",{"2":{"107":1}}],["설치해야",{"2":{"107":1}}],["설치할",{"2":{"107":1}}],["설치",{"0":{"107":1},"2":{"106":1}}],["설명합니다",{"2":{"64":1}}],["설명은",{"2":{"3":1}}],["설명을",{"2":{"3":1,"97":1,"100":1,"101":1}}],["설명되어",{"2":{"3":1}}],["설정만으로",{"2":{"113":1}}],["설정에",{"2":{"110":2}}],["설정할",{"2":{"103":1}}],["설정하면",{"2":{"98":1}}],["설정하여",{"2":{"97":1,"110":1}}],["설정하는",{"2":{"67":1}}],["설정되지",{"2":{"83":1}}],["설정합니다",{"2":{"70":1,"72":1,"77":1,"83":1,"101":1}}],["설정됩니다",{"2":{"68":1}}],["설정은",{"2":{"67":1}}],["설정된",{"2":{"67":3,"91":1}}],["설정해야",{"2":{"66":1}}],["설정",{"0":{"3":1},"1":{"4":1,"5":1,"6":1},"2":{"7":1,"66":1}}],["설정의",{"2":{"2":1}}],["설정과",{"2":{"2":1}}],["설정으로",{"2":{"1":1,"2":1}}],["올바르게",{"2":{"3":1}}],["선택",{"2":{"3":1,"6":1}}],["선택되지",{"2":{"0":1}}],["lt",{"2":{"75":1,"90":1,"92":1}}],["latest",{"2":{"30":1}}],["longer",{"2":{"29":1}}],["lowercase",{"2":{"11":1}}],["lint",{"2":{"47":1}}],["link에",{"2":{"67":1}}],["links",{"2":{"27":1,"36":1,"46":1,"111":1}}],["link",{"2":{"2":4,"13":1,"14":2,"21":1,"28":2,"33":1,"44":1,"112":3}}],["liudonghua123",{"2":{"15":1}}],["letter",{"2":{"11":1}}],["left",{"2":{"0":2}}],["level",{"2":{"0":3,"24":1}}],["예",{"2":{"77":1}}],["예에",{"2":{"7":1}}],["예상되는",{"2":{"7":1}}],["예는",{"2":{"7":1}}],["예시",{"0":{"111":1,"112":1}}],["예시를",{"2":{"3":1}}],["예시입니다",{"2":{"2":1}}],["예를",{"2":{"0":1,"4":1,"5":1,"6":1,"7":1,"67":1,"81":1,"91":1,"97":1,"98":2,"102":1,"103":1}}],["출력이",{"2":{"110":1}}],["출력되는지",{"2":{"110":1}}],["출력",{"0":{"112":1},"2":{"2":1}}],["출력합니다",{"2":{"1":1,"105":2}}],["위한",{"2":{"113":1,"115":1}}],["위해",{"2":{"5":2,"98":1}}],["위치해야",{"2":{"71":1}}],["위치한",{"2":{"66":1}}],["위치",{"2":{"4":1}}],["위",{"2":{"2":1}}],["위의",{"2":{"0":1,"7":2}}],["`documentrootpath`",{"2":{"66":1}}],["`",{"2":{"2":1}}],["once",{"2":{"50":1}}],["only",{"2":{"21":1,"46":1,"59":1,"61":1}}],["one을",{"2":{"6":1}}],["one",{"2":{"2":3,"3":2,"6":2,"7":3,"102":1,"103":1}}],["old",{"2":{"21":1,"28":1}}],["object",{"2":{"18":1}}],["option",{"2":{"11":1,"12":2,"14":1,"15":1,"16":1,"17":3,"18":2,"19":1,"20":1,"21":4,"22":1,"24":1,"25":2,"26":1,"28":2,"31":3,"32":1,"33":5,"34":1,"35":2,"37":3,"40":2,"41":1,"42":5,"43":1,"44":2,"46":1,"50":2,"53":1,"56":2,"57":1,"58":1,"60":1}}],["options",{"2":{"9":1,"11":1,"18":1,"21":1,"28":1,"29":2,"30":2,"33":1,"36":1,"44":1,"109":1,"110":1}}],["of",{"2":{"10":1,"14":1,"15":3,"24":1,"28":1,"31":1,"33":3,"37":2,"51":1,"99":1}}],["order는",{"2":{"78":1}}],["order",{"2":{"59":1,"78":3,"83":1}}],["ordering",{"2":{"24":1}}],["org",{"2":{"50":1}}],["or",{"2":{"2":1,"18":1,"21":1,"36":1,"37":1,"40":1,"50":1}}],["결과를",{"2":{"105":1}}],["결과는",{"2":{"98":2}}],["결과에",{"2":{"2":1}}],["결국",{"2":{"1":1}}],["upgrade",{"2":{"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1}}],["update",{"2":{"30":1,"38":1,"49":1}}],["unknown으로",{"2":{"70":1}}],["underscoretospace",{"0":{"87":1},"2":{"44":1,"65":1,"111":1}}],["undefined",{"2":{"36":1,"50":1}}],["unnecessary",{"2":{"38":1}}],["unintended",{"2":{"10":1}}],["using",{"2":{"11":1,"12":1,"17":2,"31":1}}],["useindexfileforfoldermenuinfo",{"2":{"28":1,"33":1}}],["usefolderlinkasindexpage",{"2":{"33":3,"35":1}}],["usefolderlinkfromindexfile",{"0":{"74":1},"2":{"21":1,"28":1,"65":1,"111":1}}],["usefoldertitlefromindexfile",{"0":{"73":1},"2":{"9":1,"10":1,"28":1,"65":1,"111":1}}],["users",{"2":{"18":1}}],["usetitlefrom",{"2":{"17":1}}],["usetitlefromfrontmatter",{"0":{"71":1},"2":{"2":1,"15":1,"46":1,"65":1,"73":1,"76":1,"97":1,"111":1}}],["usetitlefromfileheading",{"0":{"70":1},"2":{"2":1,"31":1,"46":1,"60":1,"65":1,"71":1,"73":1,"76":1,"97":1,"111":1,"112":1}}],["used",{"2":{"15":1,"50":1}}],["use",{"2":{"10":1,"16":1,"30":1,"46":1,"63":1}}],["url",{"2":{"29":1}}],["url을",{"2":{"2":1}}],["url이",{"2":{"2":1}}],["uri에",{"2":{"7":1}}],["uri가",{"0":{"7":1},"2":{"7":1}}],["uri의",{"2":{"6":1}}],["uri를",{"2":{"5":1}}],["uri",{"2":{"1":1,"7":1}}],["함께",{"2":{"67":1,"73":1,"81":1,"82":2,"97":1,"98":1,"103":1}}],["함",{"2":{"2":1}}],["함수를",{"2":{"2":1}}],["물론",{"2":{"2":1}}],["원할",{"2":{"81":1,"82":1}}],["원하는",{"2":{"2":1,"113":1}}],["원합니다",{"2":{"2":1}}],["옵션",{"2":{"91":2,"100":1,"101":1,"105":1}}],["옵션과",{"2":{"81":1,"82":2,"97":1,"98":1,"103":1,"104":1}}],["옵션으로",{"2":{"69":1}}],["옵션에",{"2":{"3":1,"64":1}}],["옵션은",{"2":{"3":3,"4":1,"5":1,"6":1,"66":1,"67":1,"68":2,"69":2,"76":1,"80":1,"82":1,"83":1,"86":1,"87":1,"88":1,"89":1,"97":2,"98":1,"99":1,"101":2,"103":1}}],["옵션의",{"2":{"2":1,"66":1,"91":1,"97":1}}],["옵션이",{"2":{"2":1,"71":1,"73":1,"74":1,"78":1,"79":1,"91":1,"93":1}}],["옵션을",{"2":{"1":1,"7":2,"70":1,"72":1,"73":1,"76":2,"77":2,"81":1,"84":1,"85":1,"95":1,"96":1,"97":1,"99":1,"101":1,"103":2,"110":1}}],["배열에",{"2":{"75":1,"92":1}}],["배열에는",{"2":{"2":1}}],["배열",{"2":{"2":1,"90":1}}],["배열의",{"2":{"2":1}}],["배열을",{"2":{"2":1,"75":1}}],["페이지는",{"2":{"102":1}}],["페이지로",{"2":{"6":1}}],["페이지에서는",{"2":{"64":1,"106":1}}],["페이지에서",{"2":{"3":1,"67":1,"68":1,"69":1}}],["페이지에",{"2":{"2":2}}],["페이지를",{"2":{"0":1}}],["functions",{"2":{"112":2}}],["full",{"2":{"17":1}}],["fs",{"2":{"58":1}}],["false이면",{"2":{"84":1,"101":1}}],["false",{"2":{"44":1,"50":1,"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"102":1,"103":1,"104":1,"105":1,"111":20}}],["frontmatter의",{"2":{"72":1}}],["frontmatter에서",{"2":{"72":1}}],["frontmatter에",{"2":{"71":1,"72":1}}],["frontmatterorderdefaultvalue",{"0":{"83":1},"2":{"24":1,"65":1,"111":1}}],["frontmatter",{"2":{"18":1,"25":1,"40":1,"42":1,"72":1,"113":1}}],["frontmattertitlefieldname",{"0":{"72":1},"2":{"15":2,"65":1,"111":1}}],["from",{"2":{"0":1,"9":1,"15":1,"18":1,"25":1,"28":1,"30":1,"37":1,"109":1,"110":1,"111":1}}],["folderlinknotincludesfilename",{"0":{"103":1},"2":{"41":1,"65":1,"103":1,"111":1}}],["folder",{"2":{"24":1,"28":3,"33":2,"44":2,"111":1}}],["folders",{"2":{"21":1}}],["following",{"2":{"18":1}}],["formatting",{"2":{"30":1}}],["for",{"2":{"11":3,"18":1,"21":1,"24":1,"28":1,"29":1,"30":1,"33":1,"36":1,"37":1,"39":1,"40":1,"44":1,"51":1,"56":1,"111":1}}],["four",{"2":{"2":3,"3":1,"7":1}}],["fine",{"2":{"18":1}}],["field",{"2":{"15":2,"18":3}}],["first",{"2":{"11":1,"62":1,"111":2}}],["fixed",{"2":{"34":1,"44":1}}],["fix",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"17":1,"21":1,"23":1,"24":1,"27":1,"29":1,"43":1,"47":1,"48":1,"54":1,"55":1,"56":1,"58":1,"59":1}}],["files",{"2":{"31":1,"38":1}}],["filename",{"2":{"17":2}}],["file",{"2":{"9":1,"10":1,"14":1,"21":2,"28":1,"33":3,"40":1,"44":2,"45":1,"59":1}}],["fetched",{"2":{"9":1}}],["가벼운",{"2":{"113":1}}],["가장",{"2":{"79":1}}],["가져올",{"2":{"86":1,"87":1,"88":1,"89":1}}],["가져오는",{"2":{"73":1}}],["가져오기",{"2":{"73":1}}],["가져옵니다",{"2":{"71":1,"73":1}}],["가",{"2":{"6":1,"68":1}}],["가정해",{"2":{"2":1,"6":1}}],["가지",{"2":{"1":1,"108":1,"115":1}}],["디렉터리도",{"2":{"94":1}}],["디렉터리",{"2":{"67":1,"75":1}}],["디렉터리이기",{"2":{"7":1}}],["디렉터리에도",{"2":{"75":1}}],["디렉터리에",{"2":{"4":1}}],["디렉터리를",{"2":{"4":1,"6":1}}],["디렉터리가",{"2":{"2":1,"4":1,"7":1,"66":1}}],["디렉토리의",{"2":{"5":1,"6":1}}],["디렉토리",{"2":{"0":1,"66":1,"99":1}}],["디렉토리를",{"2":{"0":1}}],["디렉토리에",{"2":{"0":1}}],["및",{"0":{"7":1},"2":{"2":1,"3":1,"65":1,"77":1,"93":1,"106":1,"113":1}}],["gist",{"2":{"115":1}}],["github",{"2":{"111":1,"114":2,"115":1}}],["g로",{"2":{"98":1}}],["gt",{"2":{"75":1,"90":1,"92":1,"97":3}}],["g",{"2":{"28":1,"68":1}}],["generator",{"2":{"31":1}}],["generatesidebar의",{"2":{"110":1}}],["generatesidebar",{"2":{"2":2,"6":2,"7":1,"108":1,"109":2,"110":2,"111":2}}],["getting",{"2":{"112":2}}],["gets",{"2":{"33":1}}],["get",{"2":{"10":1,"28":1}}],["guide로",{"2":{"4":1}}],["guide의",{"2":{"2":2,"7":1}}],["guide",{"2":{"2":8,"3":1,"4":1,"5":3,"6":7,"7":7,"68":1,"72":1,"102":1,"103":4,"111":1}}],["groups",{"2":{"50":2}}],["group",{"2":{"0":1,"50":1,"53":1}}],["루트에서",{"2":{"66":1}}],["루트",{"2":{"2":1,"4":3,"6":2,"67":2,"68":1,"96":1,"99":2,"100":2,"101":2,"108":1}}],["같습니다",{"2":{"3":1}}],["같이",{"2":{"2":3,"67":1,"71":1,"81":1,"97":1}}],["같은",{"2":{"0":1,"6":1,"7":1,"91":1,"97":1,"102":2,"103":2}}],["mjs로",{"2":{"116":1}}],["mm",{"2":{"77":1,"79":1}}],["me",{"2":{"67":1}}],["me인",{"2":{"67":1}}],["menus",{"2":{"50":1}}],["menu",{"2":{"14":1,"18":1,"25":1,"28":1,"33":1,"50":2,"77":2}}],["multi",{"2":{"39":1}}],["multiple",{"2":{"1":1,"13":1,"27":1,"29":1,"40":2}}],["manualsortfilenamebypriority",{"0":{"75":1},"2":{"33":1,"65":1,"111":1}}],["marked",{"2":{"28":1}}],["markdown",{"2":{"25":1,"30":1,"31":2,"42":1,"71":1,"72":1,"91":1}}],["make",{"2":{"28":1,"39":1}}],["may",{"2":{"10":1}}],["mocha",{"2":{"61":1}}],["mocharc",{"2":{"45":1}}],["module",{"2":{"58":1,"117":2}}],["modify",{"2":{"25":1}}],["more",{"2":{"14":1,"18":1,"21":1,"28":1,"37":1}}],["md에",{"2":{"102":1}}],["md만",{"2":{"7":1}}],["md와",{"2":{"7":1}}],["md",{"2":{"0":2,"2":8,"3":7,"6":1,"7":7,"14":1,"21":2,"28":2,"33":3,"37":1,"38":1,"40":1,"46":1,"51":1,"54":1,"66":2,"70":1,"73":2,"74":1,"94":1,"95":1,"96":1,"102":4,"103":4,"111":4}}],["how",{"2":{"112":1}}],["however",{"2":{"29":1}}],["hide",{"2":{"91":1}}],["hyphentospace",{"0":{"86":1},"2":{"44":2,"65":1,"111":1,"112":1}}],["h1",{"2":{"42":1,"70":2,"71":1}}],["have",{"2":{"30":1}}],["has",{"2":{"0":1,"11":1,"21":1,"28":1,"50":1}}],["hello입니다",{"2":{"98":1}}],["hello에서",{"2":{"98":1}}],["hello",{"2":{"66":1,"71":1,"97":6}}],["help로",{"2":{"6":1}}],["help",{"2":{"6":5}}],["heading",{"2":{"25":1}}],["https",{"2":{"1":1,"7":1,"50":1,"72":1,"111":2,"114":1,"115":1}}],["좋습니다",{"2":{"1":1,"3":1,"5":1,"67":1,"73":1,"107":1}}],["것은",{"2":{"72":1}}],["것입니다",{"2":{"7":1,"99":1,"110":1}}],["것이",{"2":{"1":1,"3":1,"5":1,"67":1,"73":1,"107":1}}],["것으로",{"2":{"0":2,"93":1}}],["문자열",{"2":{"98":1}}],["문자",{"2":{"98":1,"113":1}}],["문자를",{"2":{"97":1}}],["문서는",{"2":{"91":2}}],["문서에",{"2":{"84":1,"113":1}}],["문서",{"2":{"66":1,"67":1,"71":1}}],["문서로",{"2":{"7":1}}],["문서가",{"2":{"6":1,"66":1,"67":1}}],["문서를",{"2":{"1":1,"72":1}}],["문제를",{"2":{"0":1,"6":1,"97":1,"115":1}}],["문제가",{"2":{"0":1}}],["문제는",{"2":{"0":1}}],["아닌",{"2":{"81":1,"82":2}}],["아니거나",{"2":{"78":1}}],["아니므로",{"2":{"0":1}}],["아래를",{"2":{"115":1}}],["아래",{"2":{"3":1,"7":1,"107":1,"108":1,"110":1}}],["아래에",{"2":{"3":1,"115":1}}],["아래의",{"2":{"1":1}}],["먼저",{"2":{"1":1,"2":1,"3":1,"107":1,"108":1}}],["대문자로",{"2":{"88":1,"89":1}}],["대체로",{"2":{"72":1}}],["대체합니다",{"2":{"6":1,"69":1}}],["대한",{"2":{"3":1,"74":1,"83":1,"100":2,"101":1,"110":1,"113":1,"115":1}}],["대해서도",{"2":{"76":1}}],["대해",{"2":{"1":1,"64":1,"78":1,"108":1}}],["대로",{"2":{"1":1,"113":1}}],["대신",{"2":{"0":1,"69":1,"91":1}}],["구분",{"2":{"97":1}}],["구분된",{"2":{"89":1}}],["구문을",{"2":{"104":1}}],["구문",{"2":{"71":1}}],["구성",{"2":{"110":2}}],["구성해야",{"2":{"107":1}}],["구성한",{"2":{"105":1}}],["구성하는",{"2":{"67":1,"68":1,"69":1}}],["구성하면",{"2":{"7":1}}],["구성할",{"2":{"2":1}}],["구현하려면",{"2":{"2":1}}],["구현할",{"2":{"1":1}}],["구조가",{"2":{"7":1}}],["구조와",{"2":{"6":1}}],["구조를",{"2":{"0":1}}],["구조에",{"2":{"0":1,"99":1,"108":1}}],["몇",{"2":{"1":1,"115":1}}],["표시",{"2":{"104":1}}],["표시될",{"2":{"73":1,"74":1,"110":1}}],["표시합니다",{"2":{"70":1,"71":1,"72":1,"89":1,"94":1}}],["표시되고",{"2":{"101":1}}],["표시되는",{"2":{"97":1}}],["표시되지",{"2":{"6":1,"90":1,"91":1,"92":2,"93":1,"101":1,"102":1}}],["표시되어야",{"2":{"4":1,"67":1,"71":1}}],["표시하지",{"2":{"97":1}}],["표시하는",{"2":{"7":1}}],["표시하려는",{"2":{"7":1}}],["표시하려면",{"2":{"5":1,"68":1}}],["표시하기",{"0":{"7":1},"2":{"5":1}}],["표시하고",{"2":{"2":1,"7":1}}],["표시할",{"2":{"1":1,"7":1}}],["표시됩니다",{"2":{"0":1,"6":1,"7":1,"67":1,"70":1,"81":1,"84":1,"86":1,"87":1,"93":1,"102":1}}],["서로",{"2":{"1":1}}],["서버를",{"2":{"0":1}}],["따라서",{"2":{"82":1}}],["따라",{"2":{"1":1,"3":1,"7":1,"71":1,"91":1,"97":1,"108":1,"110":1}}],["경로마다",{"2":{"68":1}}],["경로이며",{"2":{"66":1}}],["경로와",{"2":{"7":1}}],["경로인",{"2":{"6":1}}],["경로를",{"2":{"6":3,"67":2,"68":1,"69":1}}],["경로가",{"2":{"6":1,"7":2,"67":2,"69":1}}],["경로의",{"2":{"6":1}}],["경로는",{"2":{"4":1}}],["경로입니다",{"2":{"4":1,"66":1,"67":1}}],["경로",{"0":{"7":1},"2":{"4":2,"5":1,"6":2,"65":1,"68":1,"95":1,"96":1,"108":1}}],["경로로만",{"2":{"103":1}}],["경로로",{"2":{"4":1}}],["경로에",{"2":{"1":1,"6":1,"67":1}}],["경우에만",{"2":{"80":1,"83":1,"103":1}}],["경우에",{"2":{"69":1,"97":1}}],["경우에는",{"2":{"7":1}}],["경우이지만",{"2":{"7":1}}],["경우도",{"2":{"5":1}}],["경우",{"2":{"0":1,"2":1,"6":1,"7":1,"66":1,"67":2,"71":2,"73":1,"74":1,"76":1,"78":2,"79":1,"81":3,"82":2,"83":1,"84":1,"91":2,"94":1,"95":1,"96":1,"97":2,"99":1,"102":2,"103":3,"105":1,"115":1,"116":1,"117":1}}],["세로선이",{"2":{"0":1}}],["세로선은",{"2":{"0":1}}],["때만",{"2":{"98":1}}],["때도",{"2":{"86":1,"87":1,"88":1,"89":1}}],["때문에",{"2":{"6":1,"7":1,"73":1,"81":1}}],["때",{"2":{"0":1,"2":1,"5":2,"6":1,"7":1,"103":1}}],["향후",{"2":{"0":1}}],["생성하는",{"2":{"113":1}}],["생성하며",{"2":{"6":1}}],["생성할",{"2":{"108":1}}],["생성됩니다",{"2":{"84":2}}],["생성되고",{"2":{"102":1}}],["생성되지",{"2":{"74":1}}],["생성되어야",{"2":{"0":1}}],["생성된",{"2":{"0":1,"105":1,"108":1}}],["보세요",{"2":{"110":1}}],["보겠습니다",{"2":{"2":1,"6":1}}],["보이는",{"2":{"0":1}}],["보입니다",{"2":{"0":1}}],["있고",{"2":{"103":1}}],["있으면",{"2":{"93":1,"100":1}}],["있도록",{"2":{"74":1}}],["있지만",{"2":{"73":1,"74":1}}],["있어야",{"2":{"3":1,"6":1,"7":1}}],["있을",{"2":{"2":1}}],["있다고",{"2":{"2":1,"6":1}}],["있다는",{"2":{"0":1}}],["있습니다",{"2":{"0":1,"1":1,"2":2,"3":1,"5":1,"7":1,"67":1,"68":1,"69":2,"73":1,"74":1,"76":1,"84":1,"91":1,"97":2,"98":2,"99":1,"107":2,"108":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1}}],["있는",{"0":{"7":1},"2":{"0":2,"1":1,"2":1,"3":1,"4":2,"66":2,"67":1,"71":1,"73":1,"74":1,"81":1,"84":1,"102":3,"103":2}}],["수많은",{"2":{"113":1}}],["수도",{"2":{"2":1,"98":1,"117":1}}],["수",{"2":{"0":2,"1":2,"2":1,"3":2,"6":1,"7":1,"67":1,"68":1,"69":2,"71":1,"73":1,"74":2,"76":1,"82":1,"84":1,"91":1,"97":2,"98":2,"99":1,"102":1,"107":2,"108":1,"110":1,"113":1,"116":1}}],["쉽게",{"2":{"0":1,"1":1}}],["더",{"2":{"0":1,"7":1}}],["첫",{"2":{"0":1,"88":1,"89":1,"98":1}}],["하이퍼링크",{"2":{"104":1}}],["하며",{"2":{"71":1,"99":1}}],["하지만",{"2":{"7":1,"93":1}}],["하기",{"2":{"6":1}}],["하는",{"2":{"4":1,"5":1,"7":1}}],["하나로",{"2":{"108":1}}],["하나만",{"2":{"105":1}}],["하나의",{"2":{"99":1}}],["하나",{"2":{"2":1,"98":1}}],["하므로",{"2":{"0":1,"67":1}}],["하면",{"2":{"0":1,"6":1,"81":1}}],["하위",{"2":{"0":2,"2":5,"7":2,"75":1,"92":1,"95":1,"97":1,"101":2,"102":2,"103":2}}],["27",{"0":{"43":1,"44":1,"61":1}}],["26",{"0":{"22":1,"26":1,"45":1,"46":1,"47":1}}],["2022",{"0":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1}}],["2023",{"0":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["2024",{"0":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"2":{"77":2,"98":1}}],["20",{"0":{"21":1,"48":1,"49":1}}],["21",{"0":{"20":1,"28":1}}],["28",{"0":{"19":1,"41":1,"42":1}}],["23",{"0":{"16":1,"17":1,"18":1,"54":1}}],["24",{"0":{"13":1,"14":1,"15":1,"33":1,"37":1}}],["22",{"0":{"12":1,"19":1,"27":1}}],["2",{"0":{"10":1,"13":1,"16":1,"38":1,"50":1,"54":1,"110":1},"2":{"81":4,"98":2,"111":1}}],["25",{"0":{"9":1,"10":1,"11":1,"12":1,"35":1,"36":1,"62":1,"63":1}}],["25s",{"2":{"0":1}}],["2px",{"2":{"0":1}}],["2는",{"2":{"0":1}}],["root",{"2":{"40":1}}],["rootgroup",{"2":{"37":1}}],["rootgroupcollapsed",{"0":{"101":1},"2":{"29":1,"30":1,"34":1,"37":1,"65":1,"101":1,"111":1}}],["rootgrouplink",{"0":{"100":1},"2":{"29":1,"30":1,"44":1,"65":1,"111":1}}],["rootgrouptext",{"0":{"99":1},"2":{"29":1,"30":1,"65":1,"100":1,"101":1,"111":1}}],["route",{"2":{"7":1}}],["routing",{"2":{"7":1}}],["role=",{"2":{"0":1}}],["require",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"61":1}}],["required",{"2":{"29":1}}],["release",{"2":{"51":1,"62":1,"63":1}}],["rename",{"2":{"43":1}}],["renamed",{"2":{"11":1,"21":1,"33":2,"40":1,"42":2}}],["read",{"2":{"40":1}}],["readme",{"2":{"21":1,"28":1,"37":1,"38":1,"40":1,"46":1,"54":1}}],["replacing",{"2":{"33":1}}],["replaced",{"2":{"18":1}}],["removed",{"2":{"50":1}}],["remove",{"2":{"31":1,"38":1,"45":1,"51":1}}],["removeprefixafterordering",{"0":{"97":1},"2":{"17":2,"20":1,"65":1,"77":1,"98":1,"111":1}}],["restored",{"2":{"30":1}}],["respectively",{"2":{"28":1}}],["resolvepath의",{"2":{"5":1,"69":1}}],["resolvepath>",{"2":{"2":2}}],["resolvepath",{"0":{"5":1,"68":1},"2":{"2":2,"3":1,"6":3,"7":2,"39":1,"40":1,"65":1,"111":1}}],["reformat",{"2":{"59":1}}],["reflected",{"2":{"25":1}}],["reference",{"2":{"1":1}}],["retrieve",{"2":{"24":1}}],["return",{"2":{"17":1}}],["recursive",{"2":{"24":1}}],["recognized",{"2":{"21":1}}],["regular",{"2":{"19":1}}],["regardless",{"2":{"14":1}}],["revert",{"2":{"16":1}}],["rewrites",{"2":{"6":2,"7":3,"69":1}}],["rewrite",{"2":{"6":1,"12":1}}],["radius",{"2":{"0":1}}],["scripts",{"2":{"117":1}}],["scan",{"2":{"67":2}}],["scanstartpath를",{"2":{"67":1}}],["scanstartpath에",{"2":{"67":1}}],["scanstartpath와",{"2":{"5":1}}],["scanstartpath의",{"2":{"4":1}}],["scanstartpath는",{"2":{"4":1}}],["scanstartpath>",{"2":{"2":1}}],["scanstartpath",{"0":{"4":1,"67":1},"2":{"2":2,"3":1,"6":2,"7":2,"40":1,"65":1,"67":1,"111":1,"112":1}}],["sindresorhus",{"2":{"115":1}}],["sidebar를",{"2":{"108":1}}],["sidebar는",{"2":{"107":1,"113":1,"114":1,"115":1}}],["sidebar의",{"2":{"2":1,"64":1,"108":1}}],["sidebars",{"2":{"1":1,"13":1,"27":1,"29":1,"40":1}}],["sidebar",{"2":{"1":1,"6":2,"7":1,"11":2,"15":1,"39":1,"106":1,"107":3,"109":2,"110":3,"111":3,"114":1}}],["sidebar에서",{"2":{"1":1,"2":1}}],["shell",{"2":{"107":1}}],["show",{"2":{"21":1}}],["shown",{"2":{"14":1}}],["should",{"2":{"18":1,"28":1}}],["same",{"2":{"44":1}}],["syntax",{"2":{"30":1,"31":2}}],["string|regexp",{"2":{"98":1}}],["string|null",{"2":{"67":1,"68":1,"69":1,"91":1}}],["string",{"2":{"66":1,"72":1,"75":1,"90":1,"92":1,"99":1,"100":1}}],["strips",{"2":{"31":1}}],["stripping",{"2":{"30":1}}],["started",{"2":{"112":2}}],["start",{"2":{"7":1}}],["specified",{"2":{"50":1}}],["specify",{"2":{"18":1,"28":1}}],["specifying",{"2":{"11":1}}],["special",{"2":{"40":1}}],["split",{"2":{"21":1,"28":1}}],["so",{"2":{"33":1}}],["some",{"2":{"31":1}}],["sortbyfilename",{"2":{"33":1,"57":1}}],["sort",{"2":{"21":1,"24":1}}],["sortmenusorderbydescending",{"0":{"80":1},"2":{"33":1,"65":1,"78":1,"79":1,"81":1,"82":1,"111":1}}],["sortmenusordernumericallyfromlink",{"0":{"82":1},"2":{"21":2,"65":1,"111":1}}],["sortmenusordernumericallyfromtitle과",{"2":{"82":1}}],["sortmenusordernumericallyfromtitle",{"0":{"81":1},"2":{"21":1,"65":1,"82":1,"111":1}}],["sortmenusordernumerically",{"2":{"21":1,"26":1}}],["sortmenusbyname",{"0":{"76":1},"2":{"33":1,"65":1,"70":1,"72":1,"77":1,"80":1,"111":1}}],["sortmenusbyfrontmatterorder가",{"2":{"80":1,"83":1}}],["sortmenusbyfrontmatterorder",{"0":{"78":1},"2":{"32":1,"65":1,"111":1}}],["sortmenusbyfrontmatterdate",{"0":{"79":1},"2":{"21":1,"65":1,"111":1}}],["sortmenusbyfiledateprefix",{"0":{"77":1},"2":{"19":1,"65":1}}],["solid",{"2":{"0":1}}],["s",{"2":{"18":1}}],["serve",{"2":{"117":2}}],["secret",{"2":{"111":2}}],["second",{"2":{"111":1}}],["separate",{"2":{"37":1}}],["separator",{"2":{"17":1}}],["see",{"2":{"18":1,"21":1,"28":1,"37":1,"46":1,"50":1,"111":1}}],["setting",{"2":{"33":1}}],["settings",{"2":{"18":1,"39":2}}],["set",{"2":{"10":1,"31":1,"33":1,"37":1}}],["sub",{"2":{"67":2,"68":1}}],["subfile",{"2":{"10":1,"44":1}}],["sure",{"2":{"28":1,"39":1}}],["support",{"2":{"11":2,"40":1}}],["src",{"2":{"0":1,"66":1,"117":3}}],["b",{"0":{"117":1},"2":{"97":1}}],["boolean",{"2":{"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"101":1,"102":1,"103":1,"104":1,"105":1}}],["border",{"2":{"0":2}}],["bug",{"2":{"55":1}}],["build",{"2":{"48":1,"117":2}}],["button",{"2":{"0":1}}],["by",{"2":{"18":1,"21":1,"50":1,"53":1}}],["blank",{"2":{"13":1}}],["below",{"2":{"111":1}}],["better",{"2":{"30":1}}],["being",{"2":{"27":1,"34":1,"44":1}}],["be",{"2":{"18":2,"44":2}}],["been",{"2":{"11":1,"21":1,"28":1,"30":1,"50":1}}],["behavior",{"2":{"10":1,"37":1}}],["breaking",{"2":{"11":1,"18":1,"21":1,"28":1,"31":1,"33":3,"40":1,"42":2,"44":1,"50":2}}],["base",{"2":{"2":3,"6":1,"29":1}}],["basepath의",{"2":{"6":1}}],["basepath",{"0":{"6":1,"69":1},"2":{"2":2,"3":1,"6":1,"12":1,"65":1,"111":1}}],["background",{"2":{"0":1}}],["1입니다",{"2":{"85":1}}],["17",{"0":{"26":1}}],["170",{"2":{"9":1,"10":1}}],["10",{"0":{"25":1,"34":1,"35":1,"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"81":4}}],["11",{"0":{"24":1,"33":1,"54":1,"55":1,"56":1,"57":1,"58":1}}],["18",{"0":{"23":1,"24":1,"25":1,"30":1,"38":1},"2":{"107":1}}],["19",{"0":{"22":1,"29":1}}],["12",{"0":{"21":1,"24":1,"32":2,"51":1,"52":1,"53":1}}],["15",{"0":{"17":1,"20":1,"29":1,"39":1}}],["14",{"0":{"30":1},"2":{"61":1}}],["147",{"2":{"14":1}}],["146",{"2":{"12":1}}],["16",{"0":{"16":1,"27":1,"28":1}}],["167",{"2":{"13":1}}],["16px",{"2":{"0":1}}],["13",{"0":{"13":1,"18":1,"31":2,"40":1}}],["1",{"0":{"9":1,"10":1,"11":2,"12":1,"13":1,"14":2,"15":1,"16":1,"17":2,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":1,"36":1,"37":1,"38":1,"39":2,"40":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":2,"52":2,"53":2,"54":2,"55":3,"56":2,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":2,"109":1},"2":{"50":1,"81":3,"85":1,"97":10,"98":1,"117":1}}],["1px",{"2":{"0":1}}],["1의",{"2":{"0":1}}],["0으로",{"2":{"78":1}}],["04",{"0":{"48":1,"49":1}}],["01",{"0":{"23":1,"51":1,"52":1},"2":{"77":3,"98":2}}],["02",{"0":{"22":1,"25":1,"50":1,"55":1,"56":1,"57":1,"58":1},"2":{"77":1}}],["05",{"0":{"16":1,"17":1,"18":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["06",{"0":{"15":1,"39":1,"40":1}}],["07",{"0":{"14":1,"15":1,"35":1,"36":1,"37":1,"38":1,"50":1}}],["08",{"0":{"12":1,"13":1,"33":1,"34":2,"53":1}}],["03",{"0":{"9":1,"10":1,"11":1,"19":1,"20":1,"21":1,"23":1}}],["09",{"0":{"9":1,"10":1,"11":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1}}],["0",{"0":{"12":1,"15":1,"18":1,"19":1,"20":1,"21":1,"22":1,"25":1,"26":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"35":1,"37":1,"40":1,"42":1,"44":1,"46":1,"47":1,"49":1,"50":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":3},"2":{"0":2,"50":2,"83":1,"98":3,"111":1,"117":2}}],["via",{"2":{"107":3}}],["vitepress을",{"2":{"113":1}}],["vitepress를",{"2":{"110":1}}],["vitepresssidebar",{"2":{"110":2}}],["vitepresssidebaroptions",{"2":{"11":1,"109":2,"110":2}}],["vitepress에서",{"2":{"5":1,"6":1,"108":1}}],["vitepress의",{"2":{"0":1,"6":2,"7":1,"69":2,"110":2}}],["vitepress",{"2":{"0":5,"1":3,"2":2,"3":1,"4":1,"7":2,"11":1,"50":2,"64":1,"66":3,"72":1,"106":1,"107":5,"108":2,"109":1,"110":2,"111":2,"112":1,"113":2,"114":2,"115":1,"117":3}}],["vitepress는",{"2":{"0":1,"1":1,"7":1}}],["vuejs",{"2":{"50":1}}],["valid",{"2":{"46":1}}],["validation",{"2":{"40":1}}],["values",{"2":{"18":1,"46":1}}],["value",{"2":{"15":1,"18":1,"36":1,"44":2}}],["var",{"2":{"0":1}}],["version",{"2":{"10":2,"30":2,"61":1,"117":1}}],["vp",{"2":{"0":1}}],["vpsidebaritem",{"2":{"0":1}}],["i",{"2":{"107":2}}],["improved",{"2":{"31":1,"40":2}}],["import합니다",{"2":{"108":1}}],["important",{"2":{"0":1}}],["import",{"0":{"109":1,"110":1},"2":{"0":1,"58":1}}],["item",{"2":{"37":1,"44":1}}],["items`",{"2":{"2":1}}],["items",{"2":{"0":1,"2":3,"11":1,"24":1,"112":4}}],["its",{"2":{"28":1}}],["it",{"2":{"14":1,"15":1,"33":1}}],["ignore",{"2":{"10":1}}],["issue",{"2":{"23":1,"34":1,"44":1,"48":1}}],["is",{"2":{"9":1,"13":1,"14":1,"17":1,"18":2,"21":1,"25":1,"28":2,"33":1,"37":2,"44":2,"50":4,"91":1}}],["if",{"2":{"9":1,"10":2,"14":1,"15":1,"17":1,"31":1,"33":1,"44":2,"50":3}}],["i18n",{"2":{"5":1}}],["instructions",{"2":{"111":1}}],["instead",{"2":{"15":1,"28":1}}],["inspections",{"2":{"40":1}}],["into",{"2":{"21":1,"28":1}}],["information",{"2":{"18":1,"21":1,"28":1,"33":1,"37":1}}],["in",{"2":{"13":1,"14":2,"17":1,"18":1,"21":1,"27":1,"30":1,"37":1,"44":2,"45":1,"46":1}}],["including",{"2":{"18":1}}],["includedotfiles",{"0":{"93":1},"2":{"42":1,"65":1,"111":1}}],["includeemptyfolder",{"0":{"94":1},"2":{"42":1,"65":1,"111":1}}],["includeemptygroup",{"2":{"42":1,"53":1}}],["includerootindexfile",{"0":{"95":1},"2":{"42":1,"65":1,"96":1,"111":1}}],["includefolderindexfile",{"0":{"96":1},"2":{"35":1,"65":1,"73":1,"74":1,"95":1,"111":1}}],["include",{"2":{"2":2,"14":1,"53":1}}],["incorrect",{"2":{"12":1}}],["indent",{"2":{"54":1}}],["indexof",{"2":{"112":2}}],["index라는",{"2":{"73":1}}],["indexes",{"2":{"24":1}}],["index",{"2":{"0":6,"2":2,"3":1,"7":1,"9":1,"10":1,"13":1,"14":2,"21":2,"28":3,"33":4,"66":1,"73":2,"74":1,"95":1,"96":1,"102":1,"103":1}}],["indicator라는",{"2":{"0":1}}],["jooy2",{"2":{"111":1,"114":1}}],["javascriptgeneratesidebar",{"2":{"7":1,"112":1}}],["javascriptexport",{"2":{"6":2,"7":1}}],["javascript",{"2":{"2":1,"79":1,"112":4}}],["javascriptimport",{"2":{"0":1,"109":1,"110":1,"111":1}}],["js에서",{"2":{"116":1}}],["json5",{"2":{"2":1,"117":1}}],["json",{"2":{"0":1,"45":2,"66":1,"117":1}}],["js",{"2":{"0":4,"7":1,"107":1,"110":1}}],["줄을",{"2":{"117":1}}],["줄",{"2":{"0":3}}],["└─",{"2":{"0":4,"2":3,"3":4,"7":4,"66":2,"102":4,"103":4}}],["│",{"2":{"0":9,"2":4,"3":7,"7":7,"66":4,"102":5,"103":5}}],["d",{"2":{"107":3}}],["draft",{"2":{"91":1}}],["date",{"2":{"79":2}}],["dd",{"2":{"77":1,"79":1}}],["does",{"2":{"33":1}}],["doesn",{"2":{"10":1}}],["domain",{"2":{"11":1}}],["documents",{"2":{"18":1}}],["documentation",{"2":{"11":2,"18":1,"20":1,"49":1}}],["documentrootpath도",{"2":{"67":1}}],["documentrootpath에",{"2":{"67":2}}],["documentrootpath의",{"2":{"4":1}}],["documentrootpath",{"0":{"66":1},"2":{"2":2,"6":2,"7":2,"40":1,"65":1,"67":2,"108":1,"111":1,"112":1}}],["documenrootpath는",{"2":{"4":1}}],["docs이고",{"2":{"67":1}}],["docs로",{"2":{"66":1}}],["docs인",{"2":{"66":1}}],["docs라는",{"2":{"2":1}}],["docs",{"2":{"0":1,"2":3,"6":2,"7":5,"66":3,"67":2,"102":1,"103":1,"117":1}}],["do",{"2":{"2":2,"14":1,"16":1,"31":1,"53":1,"63":1}}],["detailed",{"2":{"111":1}}],["dependents",{"2":{"114":1}}],["dependencies",{"2":{"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1}}],["deprecated",{"2":{"18":1,"21":1,"28":1,"33":1}}],["debugprint",{"0":{"105":1},"2":{"31":1,"65":1,"110":1,"111":1}}],["defined",{"2":{"9":1,"10":1}}],["defineconfig",{"2":{"6":2,"7":1}}],["default",{"0":{"110":1},"2":{"0":1,"1":1,"6":2,"7":1,"15":1,"44":1,"53":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"109":1,"110":1,"111":1}}],["defaulttheme",{"2":{"0":2}}],["devdependencies에",{"2":{"107":1}}],["development",{"2":{"59":1,"61":1}}],["dev",{"2":{"1":1,"7":1,"72":1,"117":2}}],["dir",{"2":{"67":2}}],["directories",{"2":{"44":1}}],["directory",{"2":{"0":2,"12":1,"14":1,"66":1}}],["displayed",{"2":{"37":1,"44":1,"50":1}}],["display",{"2":{"33":1}}],["div로",{"2":{"0":1}}],["divider",{"2":{"0":1}}],["├─",{"2":{"0":6,"2":6,"3":7,"7":6,"66":6,"102":3,"103":3}}],["만큼의",{"2":{"2":1}}],["만듭니다",{"2":{"0":1}}],["만들어",{"2":{"0":1,"113":1}}],["cjs",{"2":{"116":1}}],["cjs를",{"2":{"115":1}}],["cleanup",{"2":{"49":1,"59":1}}],["clearly",{"2":{"28":1}}],["created",{"2":{"27":1,"44":1,"50":2}}],["child",{"2":{"44":1}}],["characters",{"2":{"40":1}}],["change",{"2":{"61":1}}],["changed",{"2":{"11":1,"33":1}}],["changes",{"2":{"11":1,"18":1,"21":1,"28":1,"31":1,"33":3,"40":1,"42":2,"44":1,"50":2}}],["changelog",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1}}],["check",{"2":{"56":1}}],["checks",{"2":{"40":1}}],["checking",{"2":{"14":1}}],["cdget",{"2":{"11":1,"111":1}}],["capitalizefirst",{"0":{"88":1},"2":{"55":1,"56":1,"65":1,"111":1}}],["capitalizeeachwords",{"0":{"89":1},"2":{"11":1,"25":1,"65":1,"111":1}}],["can",{"2":{"18":1,"28":1}}],["cause",{"2":{"10":1}}],["code",{"2":{"51":1}}],["codes",{"2":{"49":1,"54":1,"59":2}}],["collapse",{"2":{"50":1}}],["collapsedepth",{"0":{"85":1},"2":{"37":1,"58":1,"65":1,"111":1}}],["collapsed",{"0":{"84":1},"2":{"36":1,"37":1,"50":2,"65":1,"84":1,"101":1,"111":1}}],["collapsible",{"2":{"50":1}}],["color",{"2":{"0":1}}],["correct",{"2":{"29":1,"37":1,"58":1}}],["correctly",{"2":{"25":1,"34":1,"42":1}}],["const",{"2":{"109":1,"110":1}}],["conduct",{"2":{"51":1}}],["content",{"2":{"91":1}}],["contents",{"2":{"37":1,"99":1,"111":1}}],["containing",{"2":{"39":1}}],["contain",{"2":{"30":1,"46":1}}],["converting",{"2":{"11":1}}],["convertsamenamesubfiletogroupindexpage",{"0":{"102":1},"2":{"9":1,"10":2,"12":1,"43":1,"44":1,"65":1,"103":2,"111":1}}],["configs",{"2":{"50":1}}],["config의",{"2":{"2":1}}],["config",{"2":{"2":6,"3":1,"7":2,"50":1,"102":1,"103":1,"110":1}}],["config라는",{"2":{"2":1}}],["commonjs",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"107":1}}],["com",{"2":{"5":1,"11":1,"111":2,"114":1,"115":1}}],["c",{"2":{"0":1}}],["custom",{"2":{"0":4}}],["css로만",{"2":{"0":1}}],["css",{"2":{"0":7}}],["과",{"2":{"0":1,"97":1}}],["tsconfig",{"2":{"45":1}}],["ts를",{"2":{"0":1}}],["tag",{"2":{"42":1}}],["table",{"2":{"37":1,"99":1}}],["tested",{"2":{"63":1}}],["test",{"2":{"31":1,"61":1}}],["text`가",{"2":{"98":1}}],["text이고",{"2":{"98":1}}],["textdocs",{"2":{"3":1}}],["text",{"2":{"0":1,"2":5,"15":1,"66":1,"112":7}}],["types",{"2":{"11":1}}],["typescript",{"2":{"11":2,"23":1,"47":1,"113":1}}],["type",{"2":{"11":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"117":2}}],["t",{"2":{"10":1}}],["title이",{"2":{"72":1}}],["titles",{"2":{"30":1,"46":1}}],["title",{"2":{"9":2,"10":1,"15":1,"21":1,"33":2,"46":1,"71":3,"72":1,"91":1,"111":1}}],["top",{"2":{"24":1}}],["together",{"2":{"9":1,"10":1,"16":1,"17":1,"21":1,"43":1}}],["to",{"2":{"2":1,"10":1,"11":4,"17":1,"18":1,"21":3,"25":1,"28":1,"30":1,"31":2,"33":3,"37":1,"39":1,"40":1,"42":2,"44":3,"61":1,"112":1}}],["troubleshooting",{"2":{"36":1}}],["try",{"2":{"9":1}}],["true가",{"2":{"91":1}}],["true이더라도",{"2":{"84":1}}],["true이면",{"2":{"70":1,"71":1,"73":1,"74":1,"77":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"89":1,"93":1,"101":1,"102":1,"104":1,"105":1}}],["true인",{"2":{"71":1,"73":1,"74":1,"78":1,"79":1,"80":1,"83":1,"94":1,"95":1,"96":1,"103":1}}],["true로",{"2":{"70":1,"72":1,"77":1,"91":1,"110":1}}],["true",{"2":{"2":2,"18":1,"31":1,"44":1,"50":1,"91":1,"111":5,"112":2}}],["transition",{"2":{"0":1}}],["third",{"2":{"111":1}}],["this",{"2":{"10":2,"30":1,"37":1,"44":1,"91":1}}],["that",{"2":{"18":1,"30":1,"44":1,"46":1}}],["then",{"2":{"44":1}}],["these",{"2":{"29":1,"30":1}}],["therefore",{"2":{"21":1,"28":1}}],["the",{"2":{"10":3,"11":1,"14":3,"15":2,"17":2,"18":5,"21":4,"25":1,"28":7,"29":1,"30":2,"31":3,"33":11,"37":4,"40":1,"42":2,"44":6,"50":4,"111":1}}],["themeconfig",{"2":{"6":2,"7":2,"109":1,"110":2,"111":1}}],["theme",{"2":{"0":4,"1":1,"50":1}}],["three",{"2":{"2":3,"3":1,"7":1}}],["two",{"2":{"2":3,"3":2,"7":3,"102":1,"103":1}}],["타입스크립트를",{"2":{"0":1}}],["파일명",{"2":{"97":3}}],["파일도",{"2":{"95":2,"96":2}}],["파일과",{"2":{"75":1,"93":1}}],["파일로",{"2":{"74":1,"102":1}}],["파일의",{"2":{"70":1,"71":1,"73":1,"110":1}}],["파일은",{"2":{"67":1,"73":2,"74":2,"90":1,"110":1}}],["파일이",{"2":{"66":1,"73":1,"74":1,"81":1,"94":1,"95":1,"96":1,"102":3,"103":1}}],["파일이지만",{"2":{"0":1}}],["파일인",{"2":{"7":1,"110":1}}],["파일만",{"2":{"4":1}}],["파일에서",{"2":{"7":1,"73":1}}],["파일에",{"2":{"0":2,"70":1,"72":1,"73":1,"116":1,"117":1}}],["파일을",{"2":{"0":1,"108":1}}],["파일",{"2":{"0":1,"71":1,"75":2,"82":1,"86":1,"87":1,"90":1,"93":1,"97":2,"110":1,"113":2,"116":1}}],["다양한",{"2":{"114":1}}],["다를",{"2":{"110":1}}],["다시",{"2":{"6":2,"70":1,"72":1,"76":1,"77":1,"103":1,"116":1}}],["다르게",{"2":{"2":1,"5":1}}],["다른",{"2":{"1":1,"2":1,"4":2,"6":1,"7":1,"68":1,"91":1,"107":1}}],["다음은",{"2":{"2":1}}],["다음과",{"2":{"2":2,"3":1,"6":1,"7":1,"67":1,"71":1,"81":1,"97":1,"102":1,"103":1}}],["다음으로",{"2":{"0":1}}],["다음을",{"2":{"0":2}}],["다음",{"2":{"0":2,"3":1,"72":1,"97":1,"108":1}}],["다중",{"0":{"0":1,"1":1,"3":1},"1":{"2":1,"3":1,"4":2,"5":2,"6":2,"7":1},"2":{"0":1,"1":2,"3":1,"67":2,"68":2,"69":2,"113":1}}],["그룹에",{"2":{"100":2,"101":1}}],["그룹을",{"2":{"99":1}}],["그룹은",{"2":{"99":1}}],["그룹으로",{"2":{"94":1}}],["그룹이",{"2":{"84":2,"85":1}}],["그룹",{"2":{"84":2,"85":1,"99":1}}],["그룹핑",{"2":{"65":1}}],["그룹의",{"2":{"0":1,"101":1}}],["그대로",{"2":{"6":1,"97":1,"104":1}}],["그",{"2":{"6":1}}],["그런",{"2":{"0":2}}],["그러나",{"2":{"0":1,"3":1,"6":1}}],["합니다",{"2":{"0":2,"2":2,"3":2,"4":1,"6":1,"7":2,"66":1,"68":1,"71":1,"77":1,"79":1,"81":1,"82":1,"97":1,"107":1,"115":1}}],["기호에",{"2":{"97":1}}],["기호가",{"2":{"86":1,"87":1}}],["기준으로",{"2":{"72":1,"77":1,"78":1,"79":1,"81":1,"82":2,"97":1}}],["기타",{"2":{"65":1}}],["기반으로",{"2":{"3":1,"6":1}}],["기본값인",{"2":{"101":1}}],["기본값",{"2":{"97":1}}],["기본값을",{"2":{"83":1}}],["기본값은",{"2":{"66":1}}],["기본",{"0":{"2":1},"2":{"69":1,"70":1,"72":2,"76":1,"77":1}}],["기본적으로",{"2":{"0":1}}],["기능입니다",{"2":{"1":1}}],["기능을",{"2":{"0":1,"7":1}}],["기존",{"2":{"0":2,"2":1}}],["사전",{"2":{"107":1}}],["사이에",{"2":{"71":1}}],["사이드바를",{"2":{"67":1,"68":2,"69":1,"105":1,"108":1}}],["사이드바가",{"2":{"6":1}}],["사이드바에서",{"2":{"3":1}}],["사이드바에서는",{"2":{"0":1}}],["사이드바에",{"2":{"1":1}}],["사이드바는",{"2":{"1":1,"6":1}}],["사이드바",{"0":{"1":1,"3":1},"1":{"2":1,"3":1,"4":2,"5":2,"6":2,"7":1},"2":{"1":1,"67":1,"68":1,"69":1,"73":1,"74":1,"95":1,"96":1,"105":1,"113":2}}],["사이드바의",{"0":{"0":1},"2":{"0":1}}],["사항입니다",{"2":{"6":1}}],["사항이지만",{"2":{"3":1}}],["사용에",{"2":{"99":1}}],["사용되나요",{"0":{"114":1}}],["사용되므로",{"2":{"107":1}}],["사용되지",{"2":{"84":1}}],["사용되며",{"2":{"6":1}}],["사용해야",{"2":{"7":2,"81":1,"82":1,"97":1}}],["사용합니다",{"2":{"5":1,"69":1,"96":1,"97":1,"103":1,"110":1}}],["사용할",{"2":{"3":2,"69":1,"82":1,"91":1,"97":1,"98":3}}],["사용됩니다",{"2":{"2":1,"4":1,"67":1,"68":1,"69":1,"72":1,"73":1,"103":1}}],["사용법",{"0":{"2":1}}],["사용",{"0":{"108":1,"109":1,"110":1},"1":{"109":1,"110":1},"2":{"0":1,"106":1}}],["사용하도록",{"2":{"116":1}}],["사용하려는",{"2":{"116":1}}],["사용하려면",{"2":{"107":1}}],["사용하고",{"2":{"113":1}}],["사용하기",{"2":{"107":1}}],["사용하므로",{"2":{"99":1}}],["사용하지",{"2":{"97":1}}],["사용하면",{"2":{"81":1,"103":2}}],["사용하되",{"2":{"2":1}}],["사용하는",{"2":{"0":1,"7":1,"76":1,"97":1,"107":1,"115":1}}],["사용하여",{"2":{"0":1,"73":2,"95":1,"107":1,"108":1}}],["사용자는",{"2":{"2":1}}],["사용자",{"2":{"0":2,"113":2}}],["이것이",{"2":{"110":1}}],["이것은",{"2":{"1":1}}],["이후",{"2":{"77":1}}],["이루어지므로",{"2":{"76":1}}],["이는",{"2":{"75":1}}],["이름의",{"2":{"77":1,"81":1,"88":1,"91":1,"92":1,"97":1,"102":1}}],["이름에",{"2":{"76":1,"86":1,"87":1}}],["이름에서",{"2":{"71":1}}],["이름별로",{"2":{"76":3}}],["이름과",{"2":{"75":1}}],["이름",{"2":{"75":1,"76":1,"81":1,"82":1,"90":1,"93":1}}],["이름은",{"2":{"73":1}}],["이름이나",{"2":{"110":1}}],["이름이",{"2":{"73":1,"76":1,"81":1,"82":1,"97":1,"98":1,"103":1}}],["이름을",{"2":{"72":1,"73":1,"86":1,"87":1,"88":1,"89":1,"91":1,"99":1}}],["이름으로",{"2":{"70":1,"72":1,"77":1,"81":1}}],["이동하지만",{"2":{"103":1}}],["이동합니다",{"2":{"7":1}}],["이동할",{"2":{"6":1,"74":1,"102":1}}],["이번에는",{"2":{"7":1}}],["이고",{"2":{"4":1}}],["이러한",{"2":{"2":1,"115":1}}],["이상을",{"2":{"107":1}}],["이상적입니다",{"2":{"97":1}}],["이상",{"2":{"2":1,"98":1}}],["이전과",{"2":{"2":1}}],["이를",{"2":{"2":1,"7":2}}],["이렇게",{"2":{"0":1,"6":1,"7":1,"81":1}}],["이제",{"2":{"0":1,"7":1}}],["이",{"2":{"0":5,"4":2,"5":2,"6":4,"64":1,"66":2,"67":1,"68":2,"69":3,"71":1,"72":1,"73":1,"74":1,"76":2,"80":2,"81":2,"82":2,"83":1,"85":1,"86":1,"87":1,"88":1,"89":1,"91":1,"93":2,"97":3,"98":1,"99":2,"100":1,"101":1,"102":1,"103":2,"104":2,"105":1,"106":1,"107":2,"117":2}}],["들어",{"2":{"0":1,"4":1,"5":1,"6":1,"7":1,"67":1,"81":1,"91":1,"97":1,"98":2,"102":1,"103":1}}],["들여쓰기를",{"2":{"0":1}}],["들여쓰기로",{"2":{"0":1}}],["들여쓰기",{"0":{"0":1}}],["계층",{"2":{"0":2}}],["계층부터",{"2":{"0":1}}],["계층마다",{"2":{"0":1}}],["두",{"2":{"0":1,"108":1}}],["각",{"2":{"0":1,"3":3,"68":1,"78":1,"97":1}}],["레벨의",{"2":{"0":1}}],["레벨",{"0":{"0":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.DJBmoFrB.js b/assets/chunks/@localSearchIndexroot.DJBmoFrB.js new file mode 100644 index 00000000..5f1b4563 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.DJBmoFrB.js @@ -0,0 +1 @@ +const e='{"documentCount":118,"nextId":118,"documentIds":{"0":"/advanced-usage/multi-level-sidebar-with-indents#multi-level-sidebar-with-indents","1":"/advanced-usage/multiple-sidebars-how-to#multiple-sidebars-how-to","2":"/advanced-usage/multiple-sidebars-how-to#basic-usage","3":"/advanced-usage/multiple-sidebars-how-to#multiple-sidebar-options","4":"/advanced-usage/multiple-sidebars-how-to#scanstartpath","5":"/advanced-usage/multiple-sidebars-how-to#resolvepath","6":"/advanced-usage/multiple-sidebars-how-to#basepath","7":"/advanced-usage/multiple-sidebars-how-to#displaying-menus-with-complex-paths-and-uris","8":"/changelog#changelog","9":"/changelog#_1-25-3-2024-09-03","10":"/changelog#_1-25-2-2024-09-03","11":"/changelog#_1-25-1-2024-09-03","12":"/changelog#_1-25-0-2024-08-22","13":"/changelog#_1-24-2-2024-08-13","14":"/changelog#_1-24-1-2024-07-31","15":"/changelog#_1-24-0-2024-07-06","16":"/changelog#_1-23-2-2024-05-16","17":"/changelog#_1-23-1-2024-05-15","18":"/changelog#_1-23-0-2024-05-13","19":"/changelog#_1-22-0-2024-03-28","20":"/changelog#_1-21-0-2024-03-15","21":"/changelog#_1-20-0-2024-03-12","22":"/changelog#_1-19-0-2024-02-26","23":"/changelog#_1-18-6-2024-01-03","24":"/changelog#_1-18-5-2023-12-11","25":"/changelog#_1-18-0-2023-10-02","26":"/changelog#_1-17-0-2023-09-26","27":"/changelog#_1-16-5-2023-09-22","28":"/changelog#_1-16-0-2023-09-21","29":"/changelog#_1-15-0-2023-09-19","30":"/changelog#_1-14-0-2023-09-18","31":"/changelog#_1-13-0-2023-09-13","32":"/changelog#_1-12-0-2023-09-12","33":"/changelog#_1-11-0-2023-08-24","34":"/changelog#_1-10-1-2023-08-08","35":"/changelog#_1-10-0-2023-07-25","36":"/changelog#_1-9-5-2023-07-25","37":"/changelog#_1-9-0-2023-07-24","38":"/changelog#_1-8-2-2023-07-18","39":"/changelog#_1-8-1-2023-06-15","40":"/changelog#_1-8-0-2023-06-13","41":"/changelog#_1-7-5-2023-05-28","42":"/changelog#_1-7-0-2023-05-28","43":"/changelog#_1-6-5-2023-05-27","44":"/changelog#_1-6-0-2023-05-27","45":"/changelog#_1-5-1-2023-05-26","46":"/changelog#_1-5-0-2023-05-26","47":"/changelog#_1-4-0-2023-05-26","48":"/changelog#_1-3-1-2023-04-20","49":"/changelog#_1-3-0-2023-04-20","50":"/changelog#_1-2-0-2023-02-07","51":"/changelog#_1-1-5-2023-01-12","52":"/changelog#_1-1-4-2023-01-12","53":"/changelog#_1-1-3-2022-12-08","54":"/changelog#_1-1-2-2022-11-23","55":"/changelog#_1-1-1-2022-11-02","56":"/changelog#_1-1-0-2022-11-02","57":"/changelog#_1-0-9-2022-11-02","58":"/changelog#_1-0-8-2022-11-02","59":"/changelog#_1-0-7-2022-10-31","60":"/changelog#_1-0-6-2022-10-31","61":"/changelog#_1-0-5-2022-10-27","62":"/changelog#_1-0-4-2022-10-25","63":"/changelog#_0-1-0-1-0-3-2022-10-25-alpha","64":"/guide/api#api","65":"/guide/api#quick-search","66":"/guide/api#documentrootpath","67":"/guide/api#scanstartpath","68":"/guide/api#resolvepath","69":"/guide/api#basepath","70":"/guide/api#usetitlefromfileheading","71":"/guide/api#usetitlefromfrontmatter","72":"/guide/api#frontmattertitlefieldname","73":"/guide/api#usefoldertitlefromindexfile","74":"/guide/api#usefolderlinkfromindexfile","75":"/guide/api#manualsortfilenamebypriority","76":"/guide/api#sortmenusbyname","77":"/guide/api#sortmenusbyfiledateprefix","78":"/guide/api#sortmenusbyfrontmatterorder","79":"/guide/api#sortmenusbyfrontmatterdate","80":"/guide/api#sortmenusorderbydescending","81":"/guide/api#sortmenusordernumericallyfromtitle","82":"/guide/api#sortmenusordernumericallyfromlink","83":"/guide/api#frontmatterorderdefaultvalue","84":"/guide/api#collapsed","85":"/guide/api#collapsedepth","86":"/guide/api#hyphentospace","87":"/guide/api#underscoretospace","88":"/guide/api#capitalizefirst","89":"/guide/api#capitalizeeachwords","90":"/guide/api#excludefiles","91":"/guide/api#excludefilesbyfrontmatterfieldname","92":"/guide/api#excludefolders","93":"/guide/api#includedotfiles","94":"/guide/api#includeemptyfolder","95":"/guide/api#includerootindexfile","96":"/guide/api#includefolderindexfile","97":"/guide/api#removeprefixafterordering","98":"/guide/api#prefixseparator","99":"/guide/api#rootgrouptext","100":"/guide/api#rootgrouplink","101":"/guide/api#rootgroupcollapsed","102":"/guide/api#convertsamenamesubfiletogroupindexpage","103":"/guide/api#folderlinknotincludesfilename","104":"/guide/api#keepmarkdownsyntaxfromtitle","105":"/guide/api#debugprint","106":"/guide/getting-started#getting-started","107":"/guide/getting-started#installation","108":"/guide/getting-started#how-to-use","109":"/guide/getting-started#_1-using-named-import","110":"/guide/getting-started#_2-using-default-import","111":"/guide/getting-started#code-example","112":"/guide/getting-started#example-output","113":"/introduction#introduction","114":"/introduction#real-world-uses","115":"/troubleshooting/err-require-esm#commonjs-err-require-esm","116":"/troubleshooting/err-require-esm#solution-a","117":"/troubleshooting/err-require-esm#solution-b"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,158],"1":[4,1,56],"2":[2,4,127],"3":[3,4,58],"4":[1,6,46],"5":[1,6,56],"6":[1,6,94],"7":[7,4,128],"8":[1,1,1],"9":[7,1,20],"10":[7,1,35],"11":[6,1,40],"12":[7,1,14],"13":[7,1,10],"14":[6,1,30],"15":[7,1,24],"16":[7,1,9],"17":[6,1,22],"18":[7,1,58],"19":[7,1,9],"20":[7,1,8],"21":[7,1,53],"22":[7,1,6],"23":[7,1,4],"24":[7,1,18],"25":[7,1,19],"26":[7,1,4],"27":[7,1,9],"28":[7,1,51],"29":[7,1,22],"30":[7,1,36],"31":[6,1,32],"32":[6,1,4],"33":[7,1,52],"34":[5,1,10],"35":[7,1,5],"36":[7,1,16],"37":[7,1,35],"38":[7,1,10],"39":[6,1,11],"40":[7,1,33],"41":[7,1,4],"42":[7,1,23],"43":[7,1,9],"44":[7,1,50],"45":[6,1,10],"46":[7,1,18],"47":[7,1,8],"48":[6,1,4],"49":[7,1,9],"50":[7,1,55],"51":[6,1,9],"52":[6,1,4],"53":[6,1,14],"54":[6,1,10],"55":[5,1,4],"56":[6,1,8],"57":[7,1,4],"58":[7,1,12],"59":[7,1,13],"60":[7,1,7],"61":[7,1,12],"62":[7,1,4],"63":[9,1,9],"64":[1,1,10],"65":[3,1,53],"66":[1,1,51],"67":[1,1,65],"68":[1,1,47],"69":[1,1,47],"70":[1,1,48],"71":[1,1,49],"72":[1,1,62],"73":[1,1,55],"74":[1,1,42],"75":[1,1,45],"76":[1,1,50],"77":[1,1,63],"78":[1,1,39],"79":[1,1,40],"80":[1,1,26],"81":[1,1,63],"82":[1,1,48],"83":[1,1,24],"84":[1,1,43],"85":[1,1,26],"86":[1,1,35],"87":[1,1,35],"88":[1,1,30],"89":[1,1,33],"90":[1,1,24],"91":[1,1,59],"92":[1,1,29],"93":[1,1,38],"94":[1,1,21],"95":[1,1,35],"96":[1,1,34],"97":[1,1,99],"98":[1,1,72],"99":[1,1,45],"100":[1,1,27],"101":[1,1,54],"102":[1,1,60],"103":[1,1,72],"104":[1,1,33],"105":[1,1,36],"106":[2,1,14],"107":[1,2,66],"108":[3,2,46],"109":[4,5,13],"110":[4,5,65],"111":[2,2,76],"112":[2,2,26],"113":[1,1,51],"114":[3,1,30],"115":[4,1,39],"116":[2,4,31],"117":[2,4,35]},"averageFieldLength":[3.9745762711864425,1.3559322033898304,34.677966101694906],"storedFields":{"0":{"title":"Multi-level-sidebar with indents","titles":[]},"1":{"title":"Multiple Sidebars How-to","titles":[]},"2":{"title":"Basic usage","titles":["Multiple Sidebars How-to"]},"3":{"title":"Multiple sidebar options","titles":["Multiple Sidebars How-to"]},"4":{"title":"scanStartPath","titles":["Multiple Sidebars How-to","Multiple sidebar options"]},"5":{"title":"resolvePath","titles":["Multiple Sidebars How-to","Multiple sidebar options"]},"6":{"title":"basePath","titles":["Multiple Sidebars How-to","Multiple sidebar options"]},"7":{"title":"Displaying menus with complex paths and URIs","titles":["Multiple Sidebars How-to"]},"8":{"title":"Changelog","titles":[]},"9":{"title":"1.25.3 (2024-09-03)","titles":["Changelog"]},"10":{"title":"1.25.2 (2024-09-03)","titles":["Changelog"]},"11":{"title":"1.25.1 (2024-09-03)","titles":["Changelog"]},"12":{"title":"1.25.0 (2024-08-22)","titles":["Changelog"]},"13":{"title":"1.24.2 (2024-08-13)","titles":["Changelog"]},"14":{"title":"1.24.1 (2024-07-31)","titles":["Changelog"]},"15":{"title":"1.24.0 (2024-07-06)","titles":["Changelog"]},"16":{"title":"1.23.2 (2024-05-16)","titles":["Changelog"]},"17":{"title":"1.23.1 (2024-05-15)","titles":["Changelog"]},"18":{"title":"1.23.0 (2024-05-13)","titles":["Changelog"]},"19":{"title":"1.22.0 (2024-03-28)","titles":["Changelog"]},"20":{"title":"1.21.0 (2024-03-15)","titles":["Changelog"]},"21":{"title":"1.20.0 (2024-03-12)","titles":["Changelog"]},"22":{"title":"1.19.0 (2024-02-26)","titles":["Changelog"]},"23":{"title":"1.18.6 (2024-01-03)","titles":["Changelog"]},"24":{"title":"1.18.5 (2023-12-11)","titles":["Changelog"]},"25":{"title":"1.18.0 (2023-10-02)","titles":["Changelog"]},"26":{"title":"1.17.0 (2023-09-26)","titles":["Changelog"]},"27":{"title":"1.16.5 (2023-09-22)","titles":["Changelog"]},"28":{"title":"1.16.0 (2023-09-21)","titles":["Changelog"]},"29":{"title":"1.15.0 (2023-09-19)","titles":["Changelog"]},"30":{"title":"1.14.0 (2023-09-18)","titles":["Changelog"]},"31":{"title":"1.13.0 (2023-09-13)","titles":["Changelog"]},"32":{"title":"1.12.0 (2023-09-12)","titles":["Changelog"]},"33":{"title":"1.11.0 (2023-08-24)","titles":["Changelog"]},"34":{"title":"1.10.1 (2023-08-08)","titles":["Changelog"]},"35":{"title":"1.10.0 (2023-07-25)","titles":["Changelog"]},"36":{"title":"1.9.5 (2023-07-25)","titles":["Changelog"]},"37":{"title":"1.9.0 (2023-07-24)","titles":["Changelog"]},"38":{"title":"1.8.2 (2023-07-18)","titles":["Changelog"]},"39":{"title":"1.8.1 (2023-06-15)","titles":["Changelog"]},"40":{"title":"1.8.0 (2023-06-13)","titles":["Changelog"]},"41":{"title":"1.7.5 (2023-05-28)","titles":["Changelog"]},"42":{"title":"1.7.0 (2023-05-28)","titles":["Changelog"]},"43":{"title":"1.6.5 (2023-05-27)","titles":["Changelog"]},"44":{"title":"1.6.0 (2023-05-27)","titles":["Changelog"]},"45":{"title":"1.5.1 (2023-05-26)","titles":["Changelog"]},"46":{"title":"1.5.0 (2023-05-26)","titles":["Changelog"]},"47":{"title":"1.4.0 (2023-05-26)","titles":["Changelog"]},"48":{"title":"1.3.1 (2023-04-20)","titles":["Changelog"]},"49":{"title":"1.3.0 (2023-04-20)","titles":["Changelog"]},"50":{"title":"1.2.0 (2023-02-07)","titles":["Changelog"]},"51":{"title":"1.1.5 (2023-01-12)","titles":["Changelog"]},"52":{"title":"1.1.4 (2023-01-12)","titles":["Changelog"]},"53":{"title":"1.1.3 (2022-12-08)","titles":["Changelog"]},"54":{"title":"1.1.2 (2022-11-23)","titles":["Changelog"]},"55":{"title":"1.1.1 (2022-11-02)","titles":["Changelog"]},"56":{"title":"1.1.0 (2022-11-02)","titles":["Changelog"]},"57":{"title":"1.0.9 (2022-11-02)","titles":["Changelog"]},"58":{"title":"1.0.8 (2022-11-02)","titles":["Changelog"]},"59":{"title":"1.0.7 (2022-10-31)","titles":["Changelog"]},"60":{"title":"1.0.6 (2022-10-31)","titles":["Changelog"]},"61":{"title":"1.0.5 (2022-10-27)","titles":["Changelog"]},"62":{"title":"1.0.4 (2022-10-25)","titles":["Changelog"]},"63":{"title":"0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)","titles":["Changelog"]},"64":{"title":"API","titles":[]},"65":{"title":"@ Quick search","titles":["API"]},"66":{"title":"documentRootPath","titles":["API"]},"67":{"title":"scanStartPath","titles":["API"]},"68":{"title":"resolvePath","titles":["API"]},"69":{"title":"basePath","titles":["API"]},"70":{"title":"useTitleFromFileHeading","titles":["API"]},"71":{"title":"useTitleFromFrontmatter","titles":["API"]},"72":{"title":"frontmatterTitleFieldName","titles":["API"]},"73":{"title":"useFolderTitleFromIndexFile","titles":["API"]},"74":{"title":"useFolderLinkFromIndexFile","titles":["API"]},"75":{"title":"manualSortFileNameByPriority","titles":["API"]},"76":{"title":"sortMenusByName","titles":["API"]},"77":{"title":"sortMenusByFileDatePrefix","titles":["API"]},"78":{"title":"sortMenusByFrontmatterOrder","titles":["API"]},"79":{"title":"sortMenusByFrontmatterDate","titles":["API"]},"80":{"title":"sortMenusOrderByDescending","titles":["API"]},"81":{"title":"sortMenusOrderNumericallyFromTitle","titles":["API"]},"82":{"title":"sortMenusOrderNumericallyFromLink","titles":["API"]},"83":{"title":"frontmatterOrderDefaultValue","titles":["API"]},"84":{"title":"collapsed","titles":["API"]},"85":{"title":"collapseDepth","titles":["API"]},"86":{"title":"hyphenToSpace","titles":["API"]},"87":{"title":"underscoreToSpace","titles":["API"]},"88":{"title":"capitalizeFirst","titles":["API"]},"89":{"title":"capitalizeEachWords","titles":["API"]},"90":{"title":"excludeFiles","titles":["API"]},"91":{"title":"excludeFilesByFrontmatterFieldName","titles":["API"]},"92":{"title":"excludeFolders","titles":["API"]},"93":{"title":"includeDotFiles","titles":["API"]},"94":{"title":"includeEmptyFolder","titles":["API"]},"95":{"title":"includeRootIndexFile","titles":["API"]},"96":{"title":"includeFolderIndexFile","titles":["API"]},"97":{"title":"removePrefixAfterOrdering","titles":["API"]},"98":{"title":"prefixSeparator","titles":["API"]},"99":{"title":"rootGroupText","titles":["API"]},"100":{"title":"rootGroupLink","titles":["API"]},"101":{"title":"rootGroupCollapsed","titles":["API"]},"102":{"title":"convertSameNameSubFileToGroupIndexPage","titles":["API"]},"103":{"title":"folderLinkNotIncludesFileName","titles":["API"]},"104":{"title":"keepMarkdownSyntaxFromTitle","titles":["API"]},"105":{"title":"debugPrint","titles":["API"]},"106":{"title":"Getting Started","titles":[]},"107":{"title":"Installation","titles":["Getting Started"]},"108":{"title":"How to Use","titles":["Getting Started"]},"109":{"title":"1. Using named-import","titles":["Getting Started","How to Use"]},"110":{"title":"2. Using default-import","titles":["Getting Started","How to Use"]},"111":{"title":"Code Example","titles":["Getting Started"]},"112":{"title":"Example output","titles":["Getting Started"]},"113":{"title":"Introduction","titles":[]},"114":{"title":"Real-world Uses","titles":["Introduction"]},"115":{"title":"CommonJS: ERR_REQUIRE_ESM","titles":[]},"116":{"title":"Solution A","titles":["CommonJS: ERR_REQUIRE_ESM"]},"117":{"title":"Solution B","titles":["CommonJS: ERR_REQUIRE_ESM"]}},"dirtCount":0,"index":[["quot",{"2":{"117":4}}],["quick",{"0":{"65":1}}],["⚡️",{"2":{"113":7}}],["=",{"2":{"109":1,"110":1}}],["$",{"2":{"107":3}}],["x",{"2":{"107":1}}],["x3c",{"2":{"0":3,"2":3,"6":1,"66":2,"117":1}}],["yarn",{"2":{"107":2}}],["yyyy",{"2":{"77":1,"79":1}}],["your",{"2":{"0":1,"110":1,"113":2,"115":1}}],["you",{"2":{"0":5,"1":1,"2":5,"3":1,"5":3,"6":3,"7":6,"18":2,"21":1,"28":1,"31":1,"37":1,"67":3,"68":1,"69":1,"70":1,"72":1,"74":1,"76":2,"77":2,"81":2,"82":1,"91":1,"97":4,"98":2,"99":5,"102":1,"103":4,"105":2,"106":1,"107":2,"108":1,"110":1,"115":1,"116":3}}],["~",{"0":{"63":1}}],["44",{"2":{"50":1}}],["4",{"0":{"47":1,"52":1,"62":1},"2":{"98":1}}],["7",{"0":{"41":1,"42":1,"59":1}}],["8",{"0":{"38":1,"39":1,"40":1,"58":1}}],["9",{"0":{"36":1,"37":1,"57":1},"2":{"98":3}}],["key",{"2":{"72":1}}],["keepmarkdownsyntaxfromtitle",{"0":{"104":1},"2":{"31":2,"65":1,"111":1}}],["korean",{"2":{"11":1}}],["5",{"0":{"24":1,"27":1,"36":1,"41":1,"43":1,"45":1,"46":1,"51":1,"61":1}}],["5ed188e",{"2":{"16":1}}],["6",{"0":{"23":1,"43":1,"44":1,"60":1}}],["zero",{"2":{"113":1}}],["z",{"2":{"22":1,"24":3}}],["31",{"0":{"14":1,"59":1,"60":1}}],["3",{"0":{"9":1,"48":1,"49":1,"53":1,"63":1}}],["`documentrootpath`",{"2":{"66":1}}],["`",{"2":{"2":1}}],["gist",{"2":{"115":1}}],["github",{"2":{"111":1,"114":1,"115":1}}],["given",{"2":{"108":1}}],["gt",{"2":{"75":1,"90":1,"92":1,"97":3}}],["g",{"2":{"28":1,"68":1,"77":1,"98":1}}],["general",{"2":{"101":1}}],["generator",{"2":{"31":1}}],["generated",{"2":{"108":1}}],["generate",{"2":{"6":1,"108":1}}],["generatesidebar",{"2":{"2":2,"6":2,"7":1,"108":1,"109":2,"110":3,"111":2}}],["getting",{"0":{"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1},"2":{"65":2,"112":2}}],["gets",{"2":{"33":1}}],["get",{"2":{"10":1,"28":1,"73":3}}],["guide",{"2":{"2":10,"3":1,"4":2,"5":3,"6":7,"7":8,"68":1,"72":1,"102":1,"103":4,"111":1}}],["grouping",{"2":{"65":1}}],["groups",{"2":{"50":2,"84":2}}],["group",{"2":{"0":2,"50":1,"53":1,"84":2,"85":2,"94":1,"99":1,"101":1}}],["plugin",{"2":{"113":1}}],["please",{"2":{"10":1,"30":1,"40":1}}],["pnpm",{"2":{"107":2}}],["pulling",{"2":{"25":1}}],["prints",{"2":{"105":1}}],["priority",{"2":{"75":1}}],["primarily",{"2":{"6":1}}],["pre",{"2":{"107":1}}],["preserves",{"2":{"104":1}}],["present",{"2":{"17":1}}],["precedence",{"2":{"81":1}}],["precise",{"2":{"14":1}}],["prefixes",{"2":{"77":1}}],["prefixed",{"2":{"36":1}}],["prefix",{"2":{"77":1,"97":2,"98":1}}],["prefixseparator",{"0":{"98":1},"2":{"19":1,"20":1,"65":1,"77":1,"97":3,"98":2,"111":1}}],["prototypes",{"2":{"112":2}}],["property",{"2":{"78":2,"79":2,"83":1,"110":1}}],["production",{"2":{"62":1,"63":1}}],["prod",{"2":{"45":1}}],["provided",{"2":{"6":1}}],["project",{"2":{"2":1,"66":1,"110":1,"114":1,"115":1,"116":1,"117":2}}],["part",{"2":{"98":1}}],["parsed",{"2":{"71":1}}],["parsing",{"2":{"42":1}}],["parent",{"2":{"67":1}}],["parallel",{"2":{"7":1,"103":1}}],["passed",{"2":{"18":1}}],["pass",{"2":{"2":2}}],["page",{"2":{"2":2,"3":1,"6":5,"7":2,"11":1,"28":1,"64":1,"67":1,"68":1,"69":1,"102":1,"106":1,"113":1}}],["pages",{"2":{"0":1}}],["paths",{"0":{"7":1},"2":{"4":1,"65":1}}],["path",{"2":{"1":1,"2":1,"4":3,"5":1,"6":9,"7":3,"12":1,"21":1,"66":2,"67":6,"68":5,"69":2,"95":1,"96":1,"103":1,"108":1}}],["padding",{"2":{"0":1}}],["packages",{"2":{"114":1}}],["package",{"2":{"0":1,"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1,"66":1,"107":2,"117":1}}],["utilize",{"2":{"77":1}}],["utilized",{"2":{"6":1,"69":1,"114":1}}],["uppercase",{"2":{"88":1}}],["upgrade",{"2":{"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1}}],["update",{"2":{"30":1,"38":1,"49":1}}],["unknown",{"2":{"70":1}}],["underscoretospace",{"0":{"87":1},"2":{"44":1,"65":1,"111":1}}],["undefined",{"2":{"36":1,"50":1,"84":1,"91":1,"101":1}}],["unnecessary",{"2":{"38":1}}],["unintended",{"2":{"10":1,"81":1}}],["urls",{"2":{"2":1}}],["url",{"2":{"2":1,"29":1}}],["uris",{"0":{"7":1}}],["uri",{"2":{"1":1,"5":1,"6":1,"7":3}}],["usually",{"2":{"5":1,"104":1}}],["usage",{"0":{"2":1}}],["useindexfileforfoldermenuinfo",{"2":{"28":1,"33":1}}],["usefolderlinkasindexpage",{"2":{"33":3,"35":1}}],["usefolderlinkfromindexfile",{"0":{"74":1},"2":{"21":1,"28":1,"65":1,"111":1}}],["usefoldertitlefromindexfile",{"0":{"73":1},"2":{"9":1,"10":1,"28":1,"65":1,"111":1}}],["usetitlefrom",{"2":{"17":1}}],["usetitlefromfrontmatter",{"0":{"71":1},"2":{"2":1,"15":1,"46":1,"65":1,"73":1,"76":1,"97":1,"111":1}}],["usetitlefromfileheading",{"0":{"70":1},"2":{"2":1,"31":1,"46":1,"60":1,"65":1,"71":1,"73":1,"76":1,"97":1,"111":1,"112":1}}],["uses",{"0":{"114":1},"2":{"7":1,"99":1}}],["used",{"2":{"2":1,"3":1,"4":1,"5":1,"15":1,"50":1,"67":1,"68":1,"69":1,"72":1,"73":1,"81":1,"82":2,"84":1,"97":2,"98":1,"103":1,"107":1,"114":1}}],["users",{"2":{"18":1}}],["user",{"2":{"2":1}}],["use",{"0":{"108":1},"1":{"109":1,"110":1},"2":{"0":1,"2":1,"7":2,"10":1,"16":1,"30":1,"46":1,"63":1,"69":1,"73":1,"76":1,"91":1,"95":1,"96":1,"97":2,"98":1,"103":2,"106":1,"107":2,"110":1,"113":1,"116":2}}],["using",{"0":{"109":1,"110":1},"2":{"0":1,"11":1,"12":1,"17":2,"31":1,"73":1,"97":1,"99":1,"107":3,"108":1,"115":1}}],["written",{"2":{"107":1}}],["words",{"2":{"89":1}}],["world",{"0":{"114":1},"2":{"71":1}}],["work",{"2":{"18":1,"97":1}}],["working",{"2":{"6":1,"43":1}}],["won",{"2":{"7":2}}],["would",{"2":{"5":1,"67":1,"81":1}}],["whose",{"2":{"91":1}}],["which",{"2":{"6":1,"7":1,"110":1}}],["while",{"2":{"4":1}}],["whether",{"2":{"28":1,"37":1,"101":1}}],["when",{"2":{"0":1,"2":2,"5":2,"6":1,"7":5,"9":1,"10":1,"11":1,"12":1,"14":1,"15":1,"17":1,"18":1,"25":1,"31":1,"36":1,"80":1,"83":2,"85":1,"86":1,"87":1,"88":1,"89":1,"103":2}}],["where",{"2":{"0":1,"4":1,"66":3,"94":1}}],["ways",{"2":{"108":1}}],["walks",{"2":{"106":1}}],["warning",{"2":{"17":1,"33":1}}],["warn",{"2":{"16":1}}],["want",{"2":{"2":2,"5":1,"7":2,"18":1,"31":1,"70":1,"72":1,"77":1,"81":1,"82":1,"97":2,"116":1}}],["wants",{"2":{"2":1}}],["was",{"2":{"0":1,"33":2,"40":1,"42":2}}],["web",{"2":{"114":1}}],["were",{"2":{"108":1}}],["well",{"2":{"75":1,"95":1,"96":1}}],["we",{"2":{"1":1,"3":1,"7":3,"73":2,"107":1}}],["will",{"2":{"0":1,"1":1,"2":1,"4":1,"5":1,"6":4,"7":2,"14":1,"15":1,"18":1,"33":1,"44":2,"67":1,"68":1,"69":1,"71":1,"72":1,"97":2,"98":1,"102":2,"103":2,"105":1,"107":1,"110":1,"115":1}}],["within",{"2":{"84":1,"92":1}}],["withindex",{"2":{"42":1}}],["without",{"2":{"33":1,"68":1,"76":1,"97":1,"104":1}}],["with",{"0":{"0":1,"7":1},"2":{"0":4,"1":1,"2":2,"6":1,"7":1,"9":1,"15":1,"18":1,"21":1,"33":1,"34":1,"36":1,"40":1,"44":2,"50":2,"70":1,"76":1,"81":2,"82":2,"84":2,"91":1,"97":1,"98":1,"101":1,"102":1,"103":4,"110":1,"113":1,"116":1}}],["04",{"0":{"48":1,"49":1}}],["01",{"0":{"23":1,"51":1,"52":1},"2":{"77":3,"98":2}}],["02",{"0":{"22":1,"25":1,"50":1,"55":1,"56":1,"57":1,"58":1},"2":{"77":1}}],["05",{"0":{"16":1,"17":1,"18":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["06",{"0":{"15":1,"39":1,"40":1}}],["07",{"0":{"14":1,"15":1,"35":1,"36":1,"37":1,"38":1,"50":1}}],["08",{"0":{"12":1,"13":1,"33":1,"34":2,"53":1}}],["03",{"0":{"9":1,"10":1,"11":1,"19":1,"20":1,"21":1,"23":1}}],["09",{"0":{"9":1,"10":1,"11":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1}}],["0",{"0":{"12":1,"15":1,"18":1,"19":1,"20":1,"21":1,"22":1,"25":1,"26":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"35":1,"37":1,"40":1,"42":1,"44":1,"46":1,"47":1,"49":1,"50":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":3},"2":{"0":2,"50":2,"78":1,"83":1,"98":3,"111":1,"117":2}}],["vuejs",{"2":{"50":1}}],["version",{"2":{"10":2,"30":2,"61":1,"113":1,"117":1}}],["vertical",{"2":{"0":2}}],["valid",{"2":{"46":1}}],["validation",{"2":{"40":1}}],["value",{"2":{"4":1,"5":2,"6":3,"15":1,"18":1,"36":1,"44":2,"66":2,"68":1,"69":2,"70":1,"71":4,"72":2,"73":1,"74":1,"75":1,"77":1,"78":2,"80":1,"81":1,"82":1,"83":1,"84":1,"86":1,"87":1,"88":1,"89":1,"91":4,"94":1,"95":1,"96":1,"97":1,"98":2,"99":1,"100":2,"101":2,"102":1,"103":1,"104":1,"105":1}}],["values",{"2":{"2":2,"18":1,"46":1,"79":1,"98":1}}],["variety",{"2":{"114":1}}],["var",{"2":{"0":1}}],["vp",{"2":{"0":1}}],["vpsidebaritem",{"2":{"0":1}}],["visible",{"2":{"97":1}}],["via",{"2":{"0":1,"86":1,"87":1,"88":1,"89":1,"107":3}}],["vitepresssidebar",{"2":{"110":2}}],["vitepresssidebaroptions",{"2":{"11":1,"109":2,"110":2}}],["vitepress",{"2":{"0":7,"1":4,"2":2,"3":1,"4":1,"5":1,"6":3,"7":4,"11":1,"50":2,"64":1,"66":3,"69":2,"72":1,"106":1,"107":5,"108":3,"109":1,"110":5,"111":2,"112":1,"113":3,"114":2,"115":1,"117":3}}],["rule",{"2":{"4":1,"6":1,"103":1}}],["rules",{"2":{"4":1,"6":1,"75":1}}],["route",{"2":{"4":1,"7":1}}],["routing",{"2":{"4":1,"5":1,"7":2}}],["rootgroup",{"2":{"37":1,"99":2,"100":2,"101":1}}],["rootgroupcollapsed",{"0":{"101":1},"2":{"29":1,"30":1,"34":1,"37":1,"65":1,"101":1,"111":1}}],["rootgrouplink",{"0":{"100":1},"2":{"29":1,"30":1,"44":1,"65":1,"111":1}}],["rootgrouptext",{"0":{"99":1},"2":{"29":1,"30":1,"65":1,"100":1,"101":1,"111":1}}],["root",{"2":{"2":1,"4":3,"6":2,"40":1,"66":1,"67":2,"68":1,"96":1,"101":1,"108":1}}],["role=",{"2":{"0":1}}],["radius",{"2":{"0":1}}],["removing",{"2":{"104":1}}],["removes",{"2":{"97":2,"98":1}}],["removed",{"2":{"50":1,"98":1,"104":1}}],["remove",{"2":{"31":1,"38":1,"45":1,"51":1,"77":1,"98":2}}],["removeprefixafterordering",{"0":{"97":1},"2":{"17":2,"20":1,"65":1,"77":1,"98":1,"111":1}}],["remain",{"2":{"77":1}}],["require",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"61":1,"117":1}}],["required",{"2":{"0":1,"29":1,"71":1}}],["release",{"2":{"51":1,"62":1,"63":1}}],["relevant",{"2":{"5":1}}],["rename",{"2":{"43":1}}],["renamed",{"2":{"11":1,"21":1,"33":2,"40":1,"42":2,"97":1}}],["replacing",{"2":{"33":1}}],["replaced",{"2":{"18":1}}],["replaces",{"2":{"6":1,"69":1}}],["reformat",{"2":{"59":1}}],["reflected",{"2":{"25":1}}],["refer",{"2":{"3":1}}],["reference",{"2":{"1":1,"6":1}}],["retains",{"2":{"104":1}}],["retrieve",{"2":{"24":1}}],["returns",{"2":{"108":1}}],["return",{"2":{"17":1}}],["recursive",{"2":{"24":1}}],["recognized",{"2":{"21":1}}],["recommended",{"2":{"5":1,"67":1}}],["recommend",{"2":{"1":1,"3":1,"73":1,"107":1}}],["real",{"0":{"114":1}}],["read",{"2":{"40":1}}],["readme",{"2":{"21":1,"28":1,"37":1,"38":1,"40":1,"46":1,"54":1}}],["reach",{"2":{"7":1}}],["reaching",{"2":{"5":1}}],["regular",{"2":{"19":1,"97":1,"98":2}}],["regardless",{"2":{"14":1,"99":1,"104":1}}],["revert",{"2":{"16":1}}],["rewrites",{"2":{"6":2,"7":3}}],["rewrite",{"2":{"6":4,"12":1,"69":1,"103":1}}],["result",{"2":{"98":2}}],["results",{"2":{"2":1,"105":1}}],["resolving",{"2":{"65":1}}],["resolvepath>",{"2":{"2":2}}],["resolvepath",{"0":{"5":1,"68":1},"2":{"2":2,"3":1,"5":1,"6":3,"7":2,"39":1,"40":1,"65":1,"69":1,"111":1}}],["restored",{"2":{"30":1}}],["respectively",{"2":{"28":1}}],["re",{"2":{"0":1,"70":1,"72":1,"76":1,"77":1}}],["jooy2",{"2":{"111":1,"114":1}}],["just",{"2":{"98":1}}],["judged",{"2":{"78":1}}],["javascriptgeneratesidebar",{"2":{"7":1,"112":1}}],["javascriptexport",{"2":{"6":2,"7":1}}],["javascript",{"2":{"2":1,"79":1,"112":4}}],["javascriptimport",{"2":{"0":1,"109":1,"110":1,"111":1}}],["json5",{"2":{"2":1,"117":1}}],["json",{"2":{"0":1,"45":2,"66":1,"117":1}}],["js",{"2":{"0":4,"7":1,"107":1,"110":1,"116":1}}],["└─",{"2":{"0":4,"2":3,"3":4,"7":4,"66":2,"102":4,"103":4}}],["│",{"2":{"0":9,"2":4,"3":7,"7":7,"66":4,"102":5,"103":5}}],["├─",{"2":{"0":6,"2":6,"3":7,"7":6,"66":6,"102":3,"103":3}}],["own",{"2":{"114":1}}],["optimized",{"2":{"113":1}}],["optional",{"2":{"3":1,"6":1}}],["option",{"2":{"2":1,"3":3,"4":1,"5":1,"6":1,"7":1,"11":1,"12":2,"14":1,"15":1,"16":1,"17":3,"18":2,"19":1,"20":1,"21":4,"22":1,"24":1,"25":2,"26":1,"28":2,"31":3,"32":1,"33":5,"34":1,"35":2,"37":3,"40":2,"41":1,"42":5,"43":1,"44":2,"46":1,"50":2,"53":1,"56":2,"57":1,"58":1,"60":1,"66":1,"67":1,"68":1,"69":3,"70":1,"71":1,"72":1,"73":1,"74":1,"76":2,"77":1,"78":1,"79":1,"80":1,"81":2,"82":3,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"91":4,"93":1,"95":1,"96":1,"97":3,"98":2,"99":1,"100":1,"101":4,"103":4,"104":1,"110":1}}],["options",{"0":{"3":1},"1":{"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"3":1,"7":1,"9":1,"11":1,"18":1,"21":1,"28":1,"29":2,"30":2,"33":1,"36":1,"44":1,"64":1,"68":1,"73":1,"76":1,"77":1,"97":1,"105":1,"109":1,"110":1,"113":1}}],["other",{"2":{"91":1,"107":1,"114":1}}],["otherwise",{"2":{"6":1}}],["over",{"2":{"81":1}}],["override",{"2":{"0":1}}],["oldest",{"2":{"79":1}}],["old",{"2":{"21":1,"28":1}}],["objects",{"2":{"105":1}}],["object",{"2":{"18":1}}],["outside",{"2":{"7":1,"67":1}}],["output",{"0":{"112":1},"2":{"1":1,"2":1,"105":1,"110":2}}],["order",{"2":{"59":1,"70":1,"72":1,"75":1,"77":1,"78":6,"79":2,"80":1,"81":1,"83":1}}],["ordering",{"2":{"24":1}}],["org",{"2":{"50":1}}],["or",{"2":{"2":1,"6":1,"7":1,"18":1,"21":1,"36":1,"37":1,"40":1,"50":1,"66":1,"73":2,"76":1,"78":2,"79":2,"80":1,"84":1,"86":1,"87":1,"88":1,"89":1,"91":1,"97":1,"101":2,"104":1,"107":2,"110":1}}],["once",{"2":{"50":1,"84":1,"97":1}}],["one",{"2":{"2":4,"3":2,"6":3,"7":4,"98":1,"99":1,"102":1,"103":1,"105":1,"108":1}}],["on",{"2":{"1":1,"2":2,"3":3,"6":1,"67":1,"68":1,"69":1,"71":1,"72":1,"91":1,"97":2,"103":1,"108":1,"110":1}}],["only",{"2":{"0":1,"2":1,"4":1,"5":1,"7":1,"21":1,"46":1,"59":1,"61":1,"80":1,"83":1,"97":2,"98":1,"101":1,"103":2,"105":1,"107":1}}],["official",{"2":{"1":1}}],["of",{"2":{"0":5,"2":6,"3":1,"4":1,"5":3,"6":2,"7":2,"10":1,"14":1,"15":3,"24":1,"28":1,"31":1,"33":3,"37":2,"51":1,"66":1,"70":1,"71":2,"73":1,"75":1,"77":1,"78":3,"79":1,"82":1,"83":1,"85":1,"88":1,"89":1,"90":1,"91":3,"92":1,"93":1,"95":1,"96":1,"98":2,"99":2,"101":2,"103":1,"104":1,"105":1,"106":1,"108":2,"110":2,"113":3,"114":1}}],["cjs",{"2":{"115":1,"116":1}}],["current",{"2":{"73":1,"74":1}}],["custom",{"2":{"0":5}}],["customize",{"2":{"0":1,"113":2}}],["clicking",{"2":{"102":1,"103":1}}],["cleanup",{"2":{"49":1,"59":1}}],["clearly",{"2":{"28":1}}],["class",{"2":{"0":1}}],["cdget",{"2":{"11":1,"111":1}}],["character",{"2":{"113":1}}],["characters",{"2":{"40":1,"98":1}}],["changed",{"2":{"11":1,"33":1,"69":1,"70":1,"72":1,"76":1,"77":1}}],["changes",{"2":{"11":1,"18":1,"21":1,"28":1,"31":1,"33":3,"40":1,"42":2,"44":1,"50":2,"76":1}}],["changelog",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1}}],["change",{"2":{"6":1,"61":1,"116":1}}],["check",{"2":{"56":1}}],["checks",{"2":{"40":1}}],["checking",{"2":{"14":1}}],["child",{"2":{"0":1,"44":1,"95":1,"97":1,"101":2,"102":1,"103":1}}],["cases",{"2":{"103":1}}],["careful",{"2":{"99":1}}],["capitalize",{"2":{"89":1}}],["capitalizefirst",{"0":{"88":1},"2":{"55":1,"56":1,"65":1,"111":1}}],["capitalizeeachwords",{"0":{"89":1},"2":{"11":1,"25":1,"65":1,"111":1}}],["causes",{"2":{"81":1}}],["cause",{"2":{"10":1}}],["cannot",{"2":{"71":1,"82":1}}],["can",{"2":{"2":2,"18":1,"28":1,"67":1,"68":1,"69":2,"73":1,"74":2,"77":1,"91":1,"97":2,"98":2,"99":1,"108":1,"116":1}}],["called",{"2":{"0":1,"2":2}}],["correspond",{"2":{"90":1,"92":1}}],["correct",{"2":{"29":1,"37":1,"58":1}}],["correctly",{"2":{"3":1,"25":1,"34":1,"42":1}}],["code",{"0":{"111":1},"2":{"51":1,"104":1}}],["codes",{"2":{"49":1,"54":1,"59":2}}],["collapsibility",{"2":{"101":1}}],["collapsible",{"2":{"50":1}}],["collapsing",{"2":{"85":1}}],["collapse",{"2":{"50":1,"84":1,"101":1}}],["collapsedepth",{"0":{"85":1},"2":{"37":1,"58":1,"65":1,"111":1}}],["collapsed",{"0":{"84":1},"2":{"36":1,"37":1,"50":2,"65":1,"84":3,"85":1,"101":2,"111":1}}],["color",{"2":{"0":1}}],["command",{"2":{"107":1}}],["commonjs",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"107":1}}],["complex",{"0":{"7":1}}],["com",{"2":{"5":1,"11":1,"111":2,"114":1,"115":1}}],["course",{"2":{"2":1}}],["const",{"2":{"109":1,"110":1}}],["console",{"2":{"105":1,"110":1}}],["considered",{"2":{"93":1}}],["conjunction",{"2":{"98":1}}],["conduct",{"2":{"51":1}}],["conversion",{"2":{"113":1}}],["convert",{"2":{"115":1}}],["converted",{"2":{"86":1,"87":1,"117":1}}],["converting",{"2":{"11":1}}],["convertsamenamesubfiletogroupindexpage",{"0":{"102":1},"2":{"9":1,"10":2,"12":1,"43":1,"44":1,"65":1,"103":2,"111":1}}],["conventions",{"2":{"7":1}}],["contained",{"2":{"104":1}}],["contains",{"2":{"81":1,"82":1,"91":1}}],["containing",{"2":{"39":1}}],["contain",{"2":{"2":1,"30":1,"46":1,"68":1,"93":1}}],["contents",{"2":{"5":1,"37":1,"99":1,"111":1}}],["content",{"2":{"0":1,"70":1,"91":2}}],["configuration",{"2":{"110":3}}],["configures",{"2":{"113":1}}],["configured",{"2":{"105":1}}],["configure",{"2":{"2":1,"7":1,"67":1,"68":1,"69":1,"107":1}}],["configs",{"2":{"50":1}}],["config",{"2":{"2":8,"3":1,"7":2,"50":1,"66":1,"102":1,"103":1,"110":1}}],["c",{"2":{"0":1}}],["created",{"2":{"0":2,"27":1,"44":1,"50":2,"74":1,"84":2,"102":1,"105":1}}],["create",{"2":{"0":2}}],["css",{"2":{"0":8}}],["numeric",{"2":{"78":1}}],["number",{"2":{"78":1,"81":2,"82":2,"83":1,"85":1,"97":2,"98":1}}],["null",{"2":{"36":1,"50":1,"56":1,"67":1,"68":1,"69":1,"84":1,"91":1,"100":1,"101":2,"111":3}}],["npm",{"2":{"51":1,"107":3}}],["npmignore",{"2":{"45":1}}],["named",{"0":{"109":1},"2":{"81":1}}],["names",{"2":{"25":2,"33":1,"75":1,"76":1,"90":1,"91":1,"92":1,"93":1}}],["name",{"2":{"10":1,"18":2,"28":1,"33":3,"44":1,"70":1,"72":3,"73":3,"76":5,"77":4,"81":3,"82":2,"86":2,"87":2,"88":2,"89":1,"91":1,"97":6,"98":1,"99":1,"102":1,"103":1,"117":1}}],["navigate",{"2":{"6":1,"7":1,"44":1,"74":1,"102":1}}],["node",{"2":{"107":2}}],["nodejs",{"2":{"61":1}}],["normal",{"2":{"81":1}}],["normally",{"2":{"10":1,"31":1,"76":1,"93":1}}],["no",{"2":{"29":1,"74":1,"75":1,"91":1,"94":1,"100":1}}],["non",{"2":{"7":1,"11":1,"78":1}}],["now",{"2":{"0":1,"7":1,"11":1,"18":1,"19":1,"28":1,"33":1,"44":1}}],["note",{"2":{"0":1,"30":1,"97":2}}],["not",{"2":{"0":2,"2":2,"4":1,"6":3,"9":1,"14":1,"16":1,"17":1,"21":1,"30":1,"31":1,"33":1,"34":1,"36":1,"37":1,"43":1,"44":2,"50":2,"53":1,"63":2,"67":2,"69":1,"70":1,"72":1,"73":1,"74":1,"78":1,"81":1,"82":1,"83":1,"84":2,"90":1,"91":1,"92":2,"93":1,"95":1,"96":1,"101":2,"102":2}}],["network",{"2":{"114":1}}],["newlines",{"2":{"40":1}}],["nested",{"2":{"27":1}}],["next",{"2":{"0":1}}],["need",{"2":{"0":1,"2":1,"5":1,"7":2,"76":1,"99":1,"107":2,"115":1}}],["lt",{"2":{"75":1,"90":1,"92":1}}],["latest",{"2":{"30":1,"113":1}}],["lightweight",{"2":{"113":1}}],["liking",{"2":{"113":1}}],["like",{"2":{"2":1,"6":1,"7":2,"67":1,"71":1,"91":1,"97":2,"102":1,"103":1}}],["listing",{"2":{"102":1}}],["list",{"2":{"90":1,"92":1,"93":2}}],["lists",{"2":{"67":1}}],["line",{"2":{"117":2}}],["lint",{"2":{"47":1}}],["links",{"2":{"27":1,"36":1,"46":1,"82":1,"111":1}}],["link",{"2":{"2":4,"13":1,"14":2,"21":1,"28":2,"33":1,"44":1,"65":1,"67":1,"74":2,"97":2,"100":2,"102":3,"103":3,"112":3}}],["liudonghua123",{"2":{"15":1}}],["lots",{"2":{"113":1}}],["log",{"2":{"105":1}}],["lower",{"2":{"81":1,"82":1}}],["lowercase",{"2":{"11":1}}],["longer",{"2":{"29":1}}],["located",{"2":{"2":2,"4":1,"7":1,"66":3,"71":1,"84":1}}],["looks",{"2":{"6":1,"102":1,"103":1}}],["look",{"2":{"1":1,"67":1,"71":1}}],["least",{"2":{"2":1,"98":1}}],["learn",{"2":{"1":1,"67":1,"68":1,"69":1}}],["letters",{"2":{"89":1,"97":1}}],["letter",{"2":{"11":1,"88":1}}],["let",{"2":{"2":1}}],["left",{"2":{"0":2}}],["level",{"0":{"0":1},"2":{"0":5,"7":1,"24":1,"66":1,"85":1,"95":1,"99":1,"101":1}}],["ll",{"2":{"0":1,"7":1}}],["hyperlink",{"2":{"104":1}}],["hyphentospace",{"0":{"86":1},"2":{"44":2,"65":1,"111":1,"112":1}}],["h1",{"2":{"42":1,"70":2,"71":1}}],["header",{"2":{"73":1}}],["heading",{"2":{"25":1,"70":2,"86":1,"87":1,"88":1,"89":1}}],["hello",{"2":{"66":1,"71":1,"97":6,"98":2}}],["help",{"2":{"6":6}}],["here",{"2":{"0":1,"2":1,"107":1}}],["higher",{"2":{"107":1}}],["highlighting",{"2":{"104":1}}],["hidden",{"2":{"73":1,"74":1,"93":2}}],["hide",{"2":{"2":2,"91":1}}],["hierarchy",{"2":{"0":2}}],["https",{"2":{"1":1,"7":1,"50":1,"72":1,"111":2,"114":1,"115":1}}],["how",{"0":{"1":1,"108":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"109":1,"110":1},"2":{"110":1,"112":1}}],["however",{"2":{"0":1,"3":1,"4":1,"6":1,"7":1,"29":1,"93":1}}],["have",{"2":{"0":1,"2":1,"5":1,"6":1,"7":1,"30":1,"81":1,"102":1,"103":2,"110":1}}],["has",{"2":{"0":1,"11":1,"21":1,"28":1,"50":1,"69":1}}],["b",{"0":{"117":1},"2":{"97":1}}],["both",{"2":{"75":1}}],["boolean",{"2":{"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"101":1,"102":1,"103":1,"104":1,"105":1}}],["border",{"2":{"0":2}}],["blank",{"2":{"13":1}}],["breaking",{"2":{"11":1,"18":1,"21":1,"28":1,"31":1,"33":3,"40":1,"42":2,"44":1,"50":2}}],["back",{"2":{"75":1}}],["background",{"2":{"0":1}}],["base",{"2":{"2":3,"6":1,"29":1,"69":1}}],["basepath",{"0":{"6":1,"69":1},"2":{"2":2,"3":1,"6":2,"12":1,"65":1,"111":1}}],["based",{"2":{"1":1,"3":1,"6":1,"71":1,"72":1,"97":1,"108":1}}],["basic",{"0":{"2":1}}],["bundle",{"2":{"113":1}}],["built",{"2":{"108":1}}],["building",{"2":{"110":1}}],["build",{"2":{"0":1,"48":1,"117":2}}],["bug",{"2":{"55":1}}],["button",{"2":{"0":1,"101":1}}],["but",{"2":{"0":1,"2":1,"3":1,"5":1,"7":1,"73":1,"74":1,"76":1,"82":1,"103":1}}],["beginning",{"2":{"81":1,"82":1}}],["between",{"2":{"71":1}}],["better",{"2":{"30":1}}],["being",{"2":{"27":1,"34":1,"44":1}}],["behavior",{"2":{"10":1,"37":1}}],["because",{"2":{"6":1,"7":1,"67":1,"76":1,"81":1}}],["before",{"2":{"2":1,"68":1,"98":1,"107":1,"108":1}}],["below",{"2":{"1":1,"3":2,"7":1,"107":1,"108":1,"110":1,"111":1,"115":2}}],["been",{"2":{"0":1,"11":1,"21":1,"28":1,"30":1,"50":1}}],["be",{"2":{"0":3,"2":1,"3":2,"4":3,"5":1,"6":1,"7":2,"18":2,"44":2,"66":1,"67":2,"68":1,"69":1,"71":3,"72":1,"73":1,"74":1,"77":1,"78":1,"81":1,"82":2,"84":1,"93":1,"97":4,"98":2,"99":1,"102":2,"103":1,"107":1,"117":1}}],["by",{"2":{"0":2,"5":1,"6":1,"18":1,"21":1,"50":1,"53":1,"70":1,"72":1,"75":1,"76":3,"77":2,"78":1,"79":2,"81":2,"82":2,"89":1,"97":1,"108":1}}],["17",{"0":{"26":1}}],["170",{"2":{"9":1,"10":1}}],["10",{"0":{"25":1,"34":1,"35":1,"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"81":4}}],["11",{"0":{"24":1,"33":1,"54":1,"55":1,"56":1,"57":1,"58":1}}],["18",{"0":{"23":1,"24":1,"25":1,"30":1,"38":1},"2":{"107":1}}],["19",{"0":{"22":1,"29":1}}],["12",{"0":{"21":1,"24":1,"32":2,"51":1,"52":1,"53":1}}],["15",{"0":{"17":1,"20":1,"29":1,"39":1}}],["14",{"0":{"30":1},"2":{"61":1}}],["147",{"2":{"14":1}}],["146",{"2":{"12":1}}],["16",{"0":{"16":1,"27":1,"28":1}}],["167",{"2":{"13":1}}],["16px",{"2":{"0":1}}],["13",{"0":{"13":1,"18":1,"31":2,"40":1}}],["1px",{"2":{"0":1}}],["1",{"0":{"9":1,"10":1,"11":2,"12":1,"13":1,"14":2,"15":1,"16":1,"17":2,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":1,"36":1,"37":1,"38":1,"39":2,"40":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":2,"52":2,"53":2,"54":2,"55":3,"56":2,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":2,"109":1},"2":{"0":1,"50":1,"81":3,"85":2,"97":10,"98":1,"117":1}}],["27",{"0":{"43":1,"44":1,"61":1}}],["26",{"0":{"22":1,"26":1,"45":1,"46":1,"47":1}}],["2022",{"0":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1}}],["2023",{"0":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["2024",{"0":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"2":{"77":2,"98":1}}],["20",{"0":{"21":1,"48":1,"49":1}}],["21",{"0":{"20":1,"28":1}}],["28",{"0":{"19":1,"41":1,"42":1}}],["23",{"0":{"16":1,"17":1,"18":1,"54":1}}],["24",{"0":{"13":1,"14":1,"15":1,"33":1,"37":1}}],["22",{"0":{"12":1,"19":1,"27":1}}],["25",{"0":{"9":1,"10":1,"11":1,"12":1,"35":1,"36":1,"62":1,"63":1}}],["25s",{"2":{"0":1}}],["2px",{"2":{"0":1}}],["2",{"0":{"10":1,"13":1,"16":1,"38":1,"50":1,"54":1,"110":1},"2":{"0":1,"81":4,"98":2,"111":1}}],["err",{"0":{"115":1},"1":{"116":1,"117":1}}],["error",{"2":{"47":1}}],["esm",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"107":1,"115":3,"117":1}}],["establishing",{"2":{"103":1}}],["especially",{"2":{"7":1}}],["everything",{"2":{"97":1}}],["even",{"2":{"76":1,"84":1,"105":1}}],["etc",{"2":{"91":1}}],["editorconfig",{"2":{"59":1}}],["e",{"2":{"28":1,"68":1,"77":1}}],["empty",{"2":{"18":2,"21":1,"53":1,"100":1}}],["environments",{"2":{"114":1}}],["environment",{"2":{"107":1}}],["entire",{"2":{"99":1}}],["enter",{"2":{"68":1}}],["enabled",{"2":{"80":1,"83":1,"85":1}}],["enhancements",{"2":{"20":1}}],["encounters",{"2":{"5":1}}],["end",{"2":{"1":1,"7":1}}],["easy",{"2":{"113":1}}],["easily",{"2":{"1":1}}],["easier",{"2":{"0":1}}],["each",{"2":{"0":1,"3":3,"68":1,"78":1,"97":1}}],["extension",{"2":{"110":1,"116":1}}],["extensions",{"2":{"75":1,"90":1}}],["extracted",{"2":{"98":1}}],["extract",{"2":{"15":1}}],["execution",{"2":{"59":1,"105":1}}],["excludefolders",{"0":{"92":1},"2":{"42":1,"65":1,"111":1,"112":1}}],["excludefilesbyfrontmatterfieldname",{"0":{"91":1},"2":{"18":2,"65":1,"111":1}}],["excludefilesbyfrontmatter",{"2":{"18":1,"22":1}}],["excludefiles",{"0":{"90":1},"2":{"2":1,"42":1,"65":1,"111":1}}],["excluded",{"2":{"18":1,"91":2}}],["exclude",{"2":{"18":2,"65":1,"91":4,"111":1}}],["explore",{"2":{"114":1}}],["explanation",{"2":{"7":1}}],["expression",{"2":{"97":1,"98":1}}],["expressions",{"2":{"19":1,"98":1}}],["expanding",{"2":{"85":1}}],["expand",{"2":{"50":1,"84":1,"101":1}}],["expanded",{"2":{"37":1,"50":1,"84":2,"101":2}}],["expected",{"2":{"7":1}}],["export",{"2":{"0":1,"109":1,"110":1,"111":1}}],["existence",{"2":{"103":1}}],["existent",{"2":{"7":1}}],["exist",{"2":{"10":1,"33":1,"69":1,"70":1,"72":1,"73":1,"74":1,"78":1,"95":1,"96":1}}],["exists",{"2":{"0":1,"14":1,"15":1,"44":1,"94":1,"102":1,"103":1}}],["existing",{"2":{"0":2,"2":1,"18":1}}],["examples",{"2":{"3":1,"112":4}}],["example",{"0":{"111":1,"112":1},"2":{"0":2,"2":1,"4":1,"5":2,"6":1,"7":3,"31":1,"67":1,"81":1,"91":1,"97":1,"98":2,"102":1,"103":1,"112":1}}],["d",{"2":{"107":3}}],["draft",{"2":{"91":1}}],["data",{"2":{"79":1}}],["date",{"2":{"77":3,"79":5,"98":1}}],["dd",{"2":{"77":1,"79":1}}],["due",{"2":{"69":1}}],["don",{"2":{"97":1,"99":1}}],["done",{"2":{"76":1,"97":1}}],["dot",{"2":{"93":1}}],["does",{"2":{"33":1,"69":1,"70":1,"72":1,"73":1,"74":1,"78":1,"95":1,"96":1}}],["doesn",{"2":{"10":1}}],["domain",{"2":{"11":1}}],["do",{"2":{"2":2,"6":1,"14":1,"16":1,"31":1,"53":1,"63":1,"67":1}}],["documents",{"2":{"18":1,"91":2}}],["document",{"2":{"6":1,"7":1,"67":2,"71":1,"84":1}}],["documentrootpath",{"0":{"66":1},"2":{"2":2,"4":2,"6":2,"7":2,"40":1,"65":1,"67":5,"108":1,"111":1,"112":1}}],["documentation",{"2":{"1":1,"11":2,"18":1,"20":1,"49":1,"66":2}}],["docs",{"2":{"0":1,"2":4,"6":2,"7":5,"66":5,"67":3,"102":1,"103":1,"117":1}}],["detailed",{"2":{"111":1}}],["detect",{"2":{"7":1}}],["descending",{"2":{"78":1,"79":1,"80":1,"81":1,"82":1}}],["description",{"2":{"97":1,"100":1,"101":1}}],["descriptions",{"2":{"3":2}}],["describes",{"2":{"64":1}}],["described",{"2":{"3":1}}],["debugprint",{"0":{"105":1},"2":{"31":1,"65":1,"110":1,"111":1}}],["depth",{"2":{"85":2}}],["dependents",{"2":{"114":1}}],["dependencies",{"2":{"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1,"113":1}}],["depending",{"2":{"3":1,"91":1,"110":1}}],["deprecated",{"2":{"18":1,"21":1,"28":1,"33":1}}],["deep",{"2":{"7":1}}],["define",{"2":{"116":1}}],["defined",{"2":{"7":1,"9":1,"10":1}}],["defineconfig",{"2":{"6":2,"7":1}}],["defaulttheme",{"2":{"0":2}}],["default",{"0":{"110":1},"2":{"0":2,"1":1,"6":2,"7":1,"15":1,"44":1,"53":1,"66":2,"67":1,"68":1,"69":1,"70":2,"71":1,"72":3,"73":1,"74":1,"75":1,"76":2,"77":2,"78":1,"79":1,"80":1,"81":1,"82":1,"83":2,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":2,"98":1,"99":1,"100":1,"101":2,"102":1,"103":1,"104":1,"105":1,"109":1,"110":1,"111":1}}],["developer",{"2":{"107":1}}],["development",{"2":{"59":1,"61":1}}],["devdependencies",{"2":{"107":1}}],["dev",{"2":{"1":1,"7":1,"72":1,"117":2}}],["dynamic",{"2":{"0":1}}],["disable",{"2":{"99":1}}],["displays",{"2":{"70":1,"72":1,"94":1,"102":1}}],["displaying",{"0":{"7":1}}],["display",{"2":{"1":1,"5":2,"6":1,"7":1,"33":1,"68":1,"70":1,"71":1,"81":1}}],["displayed",{"2":{"0":1,"6":1,"37":1,"44":1,"50":1,"84":1,"86":1,"87":1,"91":1,"101":2,"102":1}}],["dir",{"2":{"67":2}}],["directories",{"2":{"4":1,"44":1,"75":1,"94":1}}],["directory",{"2":{"0":5,"4":2,"5":1,"6":2,"7":1,"12":1,"14":1,"66":3,"67":1,"99":1}}],["differently",{"2":{"2":1,"5":1}}],["different",{"2":{"1":1,"2":1,"4":2,"6":1,"7":1,"68":1,"110":1}}],["div",{"2":{"0":1}}],["divider",{"2":{"0":3}}],["fallback",{"2":{"72":1}}],["false",{"2":{"44":1,"50":1,"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":2,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"101":1,"102":1,"103":1,"104":1,"105":1,"111":20}}],["fails",{"2":{"71":1}}],["fs",{"2":{"58":1}}],["frontmatterorderdefaultvalue",{"0":{"83":1},"2":{"24":1,"65":1,"111":1}}],["frontmatter",{"2":{"18":1,"25":1,"40":1,"42":1,"71":2,"72":4,"73":1,"78":1,"79":1,"83":1,"86":1,"87":1,"88":1,"89":1,"91":1,"97":1,"113":1}}],["frontmattertitlefieldname",{"0":{"72":1},"2":{"15":2,"65":1,"111":1}}],["front",{"2":{"5":1,"93":1}}],["from",{"2":{"0":2,"2":3,"6":1,"9":1,"15":1,"18":1,"25":1,"28":1,"30":1,"37":1,"69":1,"71":2,"73":3,"74":1,"91":1,"97":2,"98":1,"109":1,"110":1,"111":1,"116":1}}],["full",{"2":{"17":1}}],["functions",{"2":{"112":2}}],["function",{"2":{"2":1}}],["future",{"2":{"0":1}}],["fetched",{"2":{"9":1}}],["few",{"2":{"1":1}}],["feature",{"2":{"1":1,"7":1}}],["folderlinknotincludesfilename",{"0":{"103":1},"2":{"41":1,"65":1,"103":1,"111":1}}],["folder",{"2":{"7":2,"24":1,"28":3,"33":2,"44":2,"66":1,"70":1,"72":1,"73":2,"74":2,"76":1,"77":1,"78":1,"85":1,"92":2,"93":1,"96":1,"102":6,"103":5,"108":2,"111":1,"113":1}}],["folders",{"2":{"7":1,"21":1,"92":1,"93":1}}],["follows",{"2":{"2":1,"81":1,"97":1}}],["following",{"2":{"0":2,"3":2,"7":1,"18":1,"72":1,"97":1}}],["four",{"2":{"2":3,"3":1,"7":1}}],["forced",{"2":{"88":1}}],["forces",{"2":{"76":1,"93":1}}],["form",{"2":{"77":1}}],["format",{"2":{"77":1,"79":1}}],["formatting",{"2":{"30":1}}],["for",{"2":{"0":2,"4":2,"5":2,"6":1,"7":2,"11":3,"18":1,"21":1,"24":1,"28":1,"29":1,"30":1,"33":1,"36":1,"37":1,"39":1,"40":1,"44":1,"51":1,"56":1,"67":2,"68":1,"72":1,"76":1,"78":1,"81":1,"83":1,"91":1,"97":2,"98":2,"99":2,"100":1,"101":2,"102":1,"103":1,"110":1,"111":1,"113":3,"115":1,"116":1}}],["filters",{"2":{"113":1}}],["filename",{"2":{"17":2,"71":1,"75":1,"97":1,"110":1}}],["files",{"2":{"4":1,"31":1,"38":1,"66":1,"67":1,"75":1,"81":1,"90":1,"93":1,"108":1}}],["file",{"2":{"0":4,"7":1,"9":1,"10":1,"14":1,"21":2,"28":1,"33":3,"40":1,"44":2,"45":1,"59":1,"70":2,"71":1,"72":1,"73":6,"74":4,"75":1,"82":1,"86":1,"87":1,"90":1,"93":1,"94":1,"95":3,"96":3,"97":4,"102":3,"110":3,"113":2,"116":2,"117":1}}],["fine",{"2":{"18":1}}],["finds",{"2":{"108":1}}],["find",{"2":{"6":1}}],["field",{"2":{"15":2,"18":3,"91":1}}],["first",{"2":{"0":1,"1":1,"2":1,"3":1,"11":1,"62":1,"88":1,"89":1,"98":1,"107":1,"108":1,"111":2}}],["fixed",{"2":{"34":1,"44":1}}],["fix",{"2":{"0":1,"6":1,"10":1,"11":1,"12":1,"13":1,"14":1,"17":1,"21":1,"23":1,"24":1,"27":1,"29":1,"43":1,"47":1,"48":1,"54":1,"55":1,"56":1,"58":1,"59":1}}],["scripts",{"2":{"117":1}}],["script",{"2":{"116":1}}],["scans",{"2":{"76":1,"108":1}}],["scanstartpath>",{"2":{"2":1}}],["scanstartpath",{"0":{"4":1,"67":1},"2":{"2":2,"3":1,"4":2,"5":1,"6":2,"7":2,"40":1,"65":1,"67":3,"111":1,"112":1}}],["scan",{"2":{"67":3}}],["scanned",{"2":{"4":1,"67":2}}],["shell",{"2":{"107":1}}],["shorter",{"2":{"7":1}}],["shown",{"2":{"14":1,"73":1,"74":1,"90":1,"92":2,"93":2}}],["show",{"2":{"2":1,"7":4,"21":1}}],["should",{"2":{"0":2,"3":1,"4":2,"6":1,"7":1,"18":1,"28":1,"66":1,"67":1,"71":2,"81":1,"82":1,"97":1,"99":1,"107":1,"110":1}}],["symbol",{"2":{"86":1,"87":1}}],["syntax",{"2":{"30":1,"31":2,"104":1}}],["spaces",{"2":{"89":1}}],["space",{"2":{"71":1,"86":1,"87":1}}],["special",{"2":{"40":1,"103":1,"113":1}}],["specifies",{"2":{"74":1,"99":1,"100":1}}],["specified",{"2":{"6":2,"50":1,"72":2,"84":1,"85":2,"91":2,"98":1,"101":1}}],["specific",{"2":{"1":1,"5":1,"97":1,"116":1}}],["specifying",{"2":{"11":1,"100":1}}],["specify",{"2":{"2":1,"4":2,"5":1,"18":1,"28":1,"67":1,"98":1,"99":2,"103":1}}],["split",{"2":{"21":1,"28":1}}],["sure",{"2":{"28":1,"39":1}}],["support",{"2":{"11":2,"40":1,"113":3}}],["suppose",{"2":{"6":1}}],["sub",{"2":{"67":2,"68":1,"92":1}}],["subdirectory",{"2":{"7":1}}],["subdirectories",{"2":{"2":1,"75":1}}],["submenu",{"2":{"2":3,"7":1}}],["subfile",{"2":{"0":1,"10":1,"44":1,"102":1,"103":1}}],["sindresorhus",{"2":{"115":1}}],["since",{"2":{"73":1}}],["size",{"2":{"113":1}}],["situation",{"2":{"3":1}}],["similar",{"2":{"5":1}}],["similarly",{"2":{"2":1}}],["simple",{"2":{"1":1,"113":1}}],["sidebars",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"1":3,"3":1,"13":1,"27":1,"29":1,"40":1,"67":2,"68":2,"69":2,"105":1,"113":1}}],["sidebar",{"0":{"0":1,"3":1},"1":{"4":1,"5":1,"6":1},"2":{"0":2,"1":3,"2":2,"6":4,"7":1,"11":2,"15":1,"39":1,"64":1,"68":1,"73":1,"74":1,"95":1,"96":1,"105":1,"106":1,"107":4,"108":3,"109":2,"110":3,"111":3,"113":2,"114":2,"115":1}}],["s",{"2":{"0":1,"2":2,"18":1,"69":1,"73":1,"97":2,"110":3}}],["several",{"2":{"115":1}}],["serve",{"2":{"117":2}}],["server",{"2":{"0":1}}],["services",{"2":{"114":1}}],["sent",{"2":{"75":1}}],["secret",{"2":{"111":2}}],["section",{"2":{"68":2,"110":1}}],["second",{"2":{"0":1,"111":1}}],["search",{"0":{"65":1}}],["separated",{"2":{"89":1}}],["separate",{"2":{"37":1}}],["separator",{"2":{"17":1,"97":1}}],["sets",{"2":{"83":1,"101":1}}],["setting",{"2":{"33":1,"67":1}}],["settings",{"2":{"1":1,"2":1,"18":1,"39":2,"110":1,"113":1}}],["set",{"2":{"10":1,"31":1,"33":1,"37":1,"66":1,"67":4,"68":1,"70":1,"72":1,"77":1,"83":1,"91":1,"97":1,"98":1,"110":1}}],["setup",{"2":{"2":2}}],["selected",{"2":{"0":1}}],["seen",{"2":{"4":1}}],["see",{"2":{"0":2,"7":1,"18":1,"21":1,"28":1,"37":1,"46":1,"50":1,"72":1,"97":1,"100":1,"101":2,"107":1,"110":2,"111":1,"115":1}}],["src",{"2":{"0":1,"66":1,"117":3}}],["step",{"2":{"99":1}}],["steps",{"2":{"7":2}}],["string|regexp",{"2":{"98":1}}],["string|null",{"2":{"67":1,"68":1,"69":1,"91":1}}],["string",{"2":{"66":1,"72":1,"75":1,"90":1,"92":1,"98":1,"99":1,"100":1}}],["strips",{"2":{"31":1}}],["stripping",{"2":{"30":1}}],["structure",{"2":{"6":1,"7":1,"99":1,"108":1}}],["started",{"0":{"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1},"2":{"112":2}}],["start",{"2":{"0":1,"7":1}}],["starts",{"2":{"0":1,"7":1}}],["styles",{"2":{"0":2}}],["styling",{"2":{"0":1,"65":1}}],["some",{"2":{"31":1}}],["sometimes",{"2":{"5":1}}],["sorts",{"2":{"77":1,"78":2,"79":2,"80":1,"82":1}}],["sorted",{"2":{"70":1,"72":1,"77":1,"81":2,"82":1}}],["sorting",{"2":{"65":1,"76":1,"97":1,"113":1}}],["sortbyfilename",{"2":{"33":1,"57":1}}],["sort",{"2":{"21":1,"24":1,"70":1,"72":1,"75":2,"76":4,"77":1,"81":3,"82":1,"97":1}}],["sortmenusorderbydescending",{"0":{"80":1},"2":{"33":1,"65":1,"78":1,"79":1,"81":1,"82":1,"111":1}}],["sortmenusordernumericallyfromlink",{"0":{"82":1},"2":{"21":2,"65":1,"111":1}}],["sortmenusordernumericallyfromtitle",{"0":{"81":1},"2":{"21":1,"65":1,"82":2,"111":1}}],["sortmenusordernumerically",{"2":{"21":1,"26":1}}],["sortmenusbyname",{"0":{"76":1},"2":{"33":1,"65":1,"70":1,"72":1,"77":1,"80":1,"111":1}}],["sortmenusbyfrontmatterorder",{"0":{"78":1},"2":{"32":1,"65":1,"80":1,"83":1,"111":1}}],["sortmenusbyfrontmatterdate",{"0":{"79":1},"2":{"21":1,"65":1,"111":1}}],["sortmenusbyfiledateprefix",{"0":{"77":1},"2":{"19":1,"65":1}}],["solution",{"0":{"116":1,"117":1}}],["solutions",{"2":{"115":1}}],["solve",{"2":{"7":1}}],["solid",{"2":{"0":1}}],["so",{"2":{"0":2,"33":1,"70":1,"72":1,"74":1,"76":1,"77":1,"97":1,"99":1}}],["same",{"2":{"0":1,"44":1,"75":1,"82":1,"102":1,"103":1}}],["take",{"2":{"103":1}}],["takes",{"2":{"81":1}}],["taken",{"2":{"71":1}}],["taking",{"2":{"1":1}}],["tag",{"2":{"42":1,"71":1}}],["table",{"2":{"37":1,"99":1}}],["tested",{"2":{"63":1}}],["test",{"2":{"31":1,"61":1,"110":1}}],["textdocs",{"2":{"3":1}}],["text",{"2":{"0":1,"2":5,"15":1,"66":1,"77":1,"98":3,"104":2,"112":7}}],["t",{"2":{"7":2,"10":1,"97":1,"99":1}}],["titles",{"2":{"30":1,"46":1,"82":1}}],["title",{"2":{"9":2,"10":1,"15":1,"21":1,"33":2,"46":1,"65":2,"70":1,"71":5,"72":4,"73":1,"86":1,"87":1,"91":1,"97":2,"104":1,"111":1}}],["time",{"2":{"7":1}}],["tier",{"2":{"0":2}}],["types",{"2":{"11":1}}],["typescript",{"2":{"0":1,"11":2,"23":1,"47":1,"113":1}}],["type",{"2":{"11":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":2,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"117":2}}],["typically",{"2":{"6":1,"7":1,"73":1}}],["tree",{"2":{"70":1,"72":1,"77":1,"108":1}}],["troubleshooting",{"2":{"36":1}}],["trying",{"2":{"116":1}}],["try",{"2":{"6":1,"9":1,"110":1,"116":1}}],["true",{"2":{"2":2,"18":1,"31":1,"44":1,"50":1,"70":2,"71":2,"72":1,"73":2,"74":2,"77":2,"78":1,"79":1,"80":2,"81":1,"82":1,"83":1,"84":2,"86":1,"87":1,"88":1,"89":1,"91":3,"93":1,"94":1,"95":1,"96":1,"101":1,"102":1,"103":1,"104":1,"105":1,"110":1,"111":5,"112":2}}],["transition",{"2":{"0":1}}],["two",{"2":{"2":3,"3":2,"7":3,"102":1,"103":1,"108":1}}],["tsconfig",{"2":{"45":1}}],["ts",{"2":{"0":1}}],["third",{"2":{"111":1}}],["this",{"2":{"0":5,"1":1,"2":2,"4":2,"5":2,"6":6,"7":8,"10":2,"30":1,"37":1,"44":1,"64":1,"66":2,"67":2,"68":2,"69":3,"71":2,"72":1,"73":1,"74":1,"75":1,"76":2,"80":2,"81":3,"82":2,"83":1,"85":1,"86":1,"87":1,"88":1,"89":1,"91":2,"93":1,"97":2,"98":1,"99":2,"100":1,"101":1,"102":2,"103":3,"104":2,"105":1,"106":1,"107":1,"110":1,"117":2}}],["through",{"2":{"106":1}}],["three",{"2":{"2":3,"3":1,"7":1}}],["than",{"2":{"7":1,"114":1}}],["that",{"2":{"0":2,"1":1,"3":1,"4":2,"5":1,"6":1,"7":1,"18":1,"30":1,"44":1,"46":1,"67":1,"71":1,"73":1,"74":1,"75":1,"77":1,"90":1,"92":1,"97":3,"102":2,"103":1,"113":1,"116":1}}],["they",{"2":{"81":1,"93":1,"101":1,"108":1}}],["there",{"2":{"75":1,"115":1}}],["therefore",{"2":{"21":1,"28":1,"82":1}}],["these",{"2":{"2":1,"29":1,"30":1,"115":1}}],["them",{"2":{"2":1,"93":1}}],["themeconfig",{"2":{"6":2,"7":2,"109":1,"110":2,"111":1}}],["theme",{"2":{"0":5,"1":1,"50":1}}],["then",{"2":{"0":2,"44":1,"66":1,"102":1}}],["the",{"2":{"0":20,"1":2,"2":16,"3":6,"4":6,"5":5,"6":18,"7":15,"10":3,"11":1,"14":3,"15":2,"17":2,"18":5,"21":4,"25":1,"28":7,"29":1,"30":2,"31":3,"33":11,"37":4,"40":1,"42":2,"44":6,"50":4,"64":2,"66":8,"67":11,"68":5,"69":4,"70":9,"71":12,"72":9,"73":15,"74":9,"75":4,"76":5,"77":10,"78":7,"79":7,"80":2,"81":5,"82":6,"83":3,"84":5,"85":4,"86":4,"87":4,"88":4,"89":2,"90":1,"91":7,"92":1,"93":2,"94":1,"95":7,"96":7,"97":13,"98":12,"99":4,"100":3,"101":8,"102":12,"103":8,"104":2,"105":3,"106":2,"107":5,"108":6,"110":7,"111":1,"113":2,"115":1,"116":2,"117":3}}],["top",{"2":{"24":1,"66":1,"71":1,"85":1,"95":1,"99":1,"101":1}}],["together",{"2":{"9":1,"10":1,"16":1,"17":1,"21":1,"43":1,"73":1}}],["to",{"0":{"1":1,"108":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"109":1,"110":1},"2":{"0":8,"1":2,"2":6,"3":2,"4":2,"5":4,"6":7,"7":9,"10":1,"11":4,"17":1,"18":1,"21":3,"25":1,"28":1,"30":1,"31":2,"33":3,"37":1,"39":1,"40":1,"42":2,"44":3,"61":1,"66":1,"67":5,"68":4,"69":2,"70":2,"72":2,"73":2,"74":2,"75":2,"76":1,"77":3,"78":1,"81":1,"86":1,"87":1,"88":1,"90":1,"91":1,"92":1,"93":1,"95":1,"96":1,"97":3,"98":3,"100":1,"101":1,"102":3,"103":1,"105":1,"107":3,"110":2,"112":1,"113":3,"114":1,"115":3,"116":3,"117":2}}],["i",{"2":{"107":2}}],["ideal",{"2":{"97":1}}],["ignored",{"2":{"91":1,"95":1,"96":1,"97":1}}],["ignore",{"2":{"10":1,"103":1}}],["i18n",{"2":{"5":1}}],["improved",{"2":{"31":1,"40":2}}],["implement",{"2":{"2":1}}],["implemented",{"2":{"1":1}}],["imported",{"2":{"86":1,"87":1,"88":1,"89":1}}],["important",{"2":{"0":2}}],["import",{"0":{"109":1,"110":1},"2":{"0":1,"58":1,"108":1}}],["if",{"2":{"0":1,"5":1,"6":3,"7":1,"9":1,"10":2,"14":1,"15":1,"17":1,"31":1,"33":1,"44":2,"50":3,"66":1,"67":2,"69":2,"70":3,"71":4,"72":2,"73":3,"74":3,"75":1,"76":1,"77":2,"78":2,"79":1,"80":1,"81":4,"82":3,"84":5,"86":1,"87":1,"88":1,"89":1,"91":2,"93":2,"94":1,"95":2,"96":2,"97":3,"98":1,"99":2,"100":1,"101":3,"102":3,"103":3,"104":1,"105":3,"115":1,"116":1}}],["item",{"2":{"37":1,"44":1,"76":1,"77":1,"80":1,"96":1,"97":1,"101":2,"102":1}}],["items`",{"2":{"2":1}}],["items",{"2":{"0":1,"2":3,"11":1,"24":1,"70":1,"72":1,"76":1,"77":1,"78":1,"79":1,"80":1,"92":1,"95":1,"97":1,"101":2,"103":1,"112":4}}],["its",{"2":{"28":1}}],["it",{"2":{"0":5,"2":2,"5":3,"6":3,"14":1,"15":1,"33":1,"67":1,"68":1,"69":2,"70":1,"71":1,"79":1,"81":2,"82":3,"84":1,"91":1,"93":1,"95":1,"96":1,"97":2,"99":2,"103":2,"104":1,"105":1,"107":2,"108":1,"115":1,"116":1}}],["issues",{"2":{"115":1}}],["issue",{"2":{"0":1,"23":1,"34":1,"44":1,"48":1}}],["is",{"2":{"0":3,"1":2,"2":2,"3":2,"4":4,"5":2,"6":8,"7":5,"9":1,"13":1,"14":1,"17":1,"18":2,"21":1,"25":1,"28":2,"33":1,"37":2,"44":2,"50":4,"66":5,"67":4,"68":1,"69":1,"70":1,"71":3,"72":1,"73":4,"74":4,"75":2,"76":1,"77":1,"78":3,"79":1,"80":3,"81":2,"82":3,"83":2,"84":6,"85":4,"86":4,"87":4,"88":4,"89":3,"91":5,"93":1,"94":1,"95":2,"96":2,"97":5,"98":2,"100":2,"101":2,"102":3,"103":2,"104":2,"105":1,"107":2,"110":1,"113":1,"114":1,"115":2}}],["inline",{"2":{"104":1}}],["introduction",{"0":{"113":1},"1":{"114":1}}],["into",{"2":{"21":1,"28":1}}],["intended",{"2":{"1":1}}],["information",{"2":{"18":1,"21":1,"28":1,"33":1,"37":1,"72":1,"73":1,"97":1,"100":1,"101":1,"110":1,"115":1}}],["including",{"2":{"18":1,"75":1,"90":1,"114":1}}],["includeemptyfolder",{"0":{"94":1},"2":{"42":1,"65":1,"111":1}}],["includeemptygroup",{"2":{"42":1,"53":1}}],["includerootindexfile",{"0":{"95":1},"2":{"42":1,"65":1,"96":1,"111":1}}],["includefolderindexfile",{"0":{"96":1},"2":{"35":1,"65":1,"73":1,"74":1,"95":1,"111":1}}],["includedotfiles",{"0":{"93":1},"2":{"42":1,"65":1,"111":1}}],["included",{"2":{"4":1,"86":1,"87":1,"102":1}}],["include",{"2":{"2":2,"4":1,"5":1,"14":1,"53":1,"65":1,"67":1,"95":2,"96":2,"105":1}}],["incorrect",{"2":{"12":1}}],["indicator",{"2":{"0":1}}],["indexof",{"2":{"112":2}}],["indexes",{"2":{"24":1}}],["index",{"2":{"0":6,"2":2,"3":1,"7":1,"9":1,"10":1,"13":1,"14":2,"21":2,"28":3,"33":4,"66":1,"73":6,"74":4,"95":2,"96":2,"102":1,"103":1}}],["indent",{"2":{"54":1}}],["indenting",{"2":{"0":1}}],["indentation",{"2":{"0":1}}],["indents",{"0":{"0":1}}],["installed",{"2":{"107":1}}],["install",{"2":{"107":1}}],["installation",{"0":{"107":1},"2":{"106":1}}],["instructions",{"2":{"107":1,"111":1}}],["instead",{"2":{"0":1,"15":1,"28":1,"69":1,"82":1,"91":1}}],["inspections",{"2":{"40":1}}],["inside",{"2":{"0":1}}],["in",{"2":{"0":4,"1":2,"2":3,"3":1,"4":3,"5":1,"6":5,"7":4,"13":1,"14":2,"17":1,"18":1,"21":1,"27":1,"30":1,"37":1,"44":2,"45":1,"46":1,"64":1,"66":1,"67":5,"69":1,"70":2,"71":2,"72":4,"73":2,"74":2,"75":2,"76":1,"77":4,"78":1,"79":1,"80":2,"81":1,"84":1,"86":1,"87":1,"90":1,"91":1,"92":1,"93":3,"95":1,"96":1,"97":2,"98":2,"102":6,"103":2,"104":1,"107":4,"108":1,"110":2,"114":1,"117":1}}],["mjs",{"2":{"116":1}}],["my",{"2":{"114":1}}],["might",{"2":{"110":1}}],["misc",{"2":{"65":1}}],["mm",{"2":{"77":1,"79":1}}],["mocha",{"2":{"61":1}}],["mocharc",{"2":{"45":1}}],["module",{"2":{"58":1,"106":1,"107":3,"115":3,"116":1,"117":2}}],["modify",{"2":{"25":1}}],["more",{"2":{"1":1,"14":1,"18":1,"21":1,"28":1,"37":1,"67":1,"68":1,"69":1,"72":1,"97":1,"100":1,"101":1,"110":1,"113":1,"115":1}}],["method",{"2":{"108":1,"110":1}}],["methods",{"2":{"7":1}}],["me",{"2":{"67":2}}],["menus",{"0":{"7":1},"2":{"1":1,"50":1,"84":1,"97":1,"113":1}}],["menu",{"2":{"0":1,"2":1,"5":1,"6":1,"7":3,"14":1,"18":1,"25":1,"28":1,"33":1,"50":2,"65":3,"70":2,"72":3,"73":3,"74":2,"76":3,"77":6,"78":1,"79":1,"80":1,"81":2,"82":1,"84":3,"85":1,"86":1,"87":1,"88":2,"89":1,"91":2,"95":1,"96":1,"97":6,"98":2,"99":3,"102":1,"103":1,"108":1}}],["must",{"2":{"2":1,"68":1,"77":1,"79":1}}],["multiple",{"0":{"1":1,"3":1},"1":{"2":1,"3":1,"4":2,"5":2,"6":2,"7":1},"2":{"1":3,"3":1,"13":1,"27":1,"29":1,"40":2,"67":2,"68":2,"69":2,"105":1,"113":1}}],["multi",{"0":{"0":1},"2":{"0":1,"39":1}}],["made",{"2":{"85":1}}],["matching",{"2":{"98":1}}],["match",{"2":{"79":1}}],["matches",{"2":{"75":1}}],["manages",{"2":{"113":1}}],["manager",{"2":{"107":1}}],["manualsortfilenamebypriority",{"0":{"75":1},"2":{"33":1,"65":1,"111":1}}],["many",{"2":{"2":1}}],["marked",{"2":{"28":1}}],["markdown",{"2":{"25":1,"30":1,"31":2,"42":1,"71":1,"72":1,"73":1,"86":1,"87":1,"88":1,"89":1,"91":1,"104":1,"108":1}}],["may",{"2":{"0":1,"5":1,"10":1,"76":1,"84":1,"107":1,"117":1}}],["make",{"2":{"0":1,"28":1,"39":1}}],["md",{"2":{"0":2,"2":8,"3":7,"6":1,"7":9,"14":1,"21":2,"28":2,"33":3,"37":1,"38":1,"40":1,"46":1,"51":1,"54":1,"66":2,"70":1,"73":4,"74":3,"94":1,"95":1,"96":1,"102":5,"103":4,"111":4}}],["a39789f98801d908bbc7ff3ecc99d99c",{"2":{"115":1}}],["affects",{"2":{"97":1}}],["affected",{"2":{"86":1,"87":1,"88":1,"89":1}}],["after",{"2":{"97":1,"105":1}}],["afterward",{"2":{"77":1}}],["automatically",{"2":{"85":1,"108":1,"113":1}}],["again",{"2":{"29":1,"116":1}}],["against",{"2":{"17":1,"108":1}}],["accepts",{"2":{"19":1}}],["actual",{"2":{"6":1,"7":1}}],["actually",{"2":{"4":2}}],["avoid",{"2":{"11":1}}],["available",{"2":{"3":1,"29":1,"30":1}}],["api",{"0":{"64":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1},"2":{"3":4,"5":3,"7":16,"102":7,"103":6,"110":1,"111":1}}],["applies",{"2":{"75":1,"101":1}}],["applied",{"2":{"34":1,"44":1,"76":2}}],["apply",{"2":{"39":1,"75":1}}],["appear",{"2":{"14":1,"67":1,"97":1}}],["appears",{"2":{"0":1}}],["approach",{"2":{"2":1}}],["able",{"2":{"3":1,"6":1,"7":1}}],["about",{"2":{"1":1,"99":1,"100":1,"101":1,"110":1,"115":1}}],["above",{"2":{"0":1,"2":1,"7":2}}],["around",{"2":{"97":1}}],["arrangement",{"2":{"75":1}}],["array",{"2":{"2":4,"75":3,"90":2,"92":2,"112":4}}],["argument",{"2":{"14":1}}],["arguments",{"2":{"2":1}}],["articles",{"2":{"72":1}}],["article",{"2":{"7":1,"91":2}}],["are",{"2":{"2":1,"3":2,"7":1,"9":1,"10":1,"21":1,"29":2,"30":1,"36":1,"50":1,"66":1,"70":1,"72":1,"76":1,"77":1,"81":1,"84":1,"90":1,"91":2,"92":2,"93":1,"98":1,"101":3,"115":1,"116":1}}],["alternatively",{"2":{"97":1}}],["all",{"2":{"50":3,"64":1,"84":3,"89":1,"93":1,"105":1}}],["allow",{"2":{"18":1,"21":1,"36":1}}],["allows",{"2":{"1":1,"37":1}}],["alpha",{"0":{"63":1},"2":{"50":1,"63":1}}],["algorithm",{"2":{"30":1}}],["also",{"2":{"2":1,"25":1,"33":1,"67":1,"79":1,"86":1,"87":1,"88":1,"89":1,"92":1,"94":1,"95":1,"96":1,"98":1}}],["at",{"2":{"1":1,"2":1,"50":1,"71":1,"81":1,"82":1,"84":1,"85":1,"98":1}}],["aware",{"2":{"0":1}}],["ascending",{"2":{"76":1,"78":1,"79":1}}],["aslafy",{"2":{"22":1,"24":3}}],["assume",{"2":{"2":1}}],["as",{"2":{"0":1,"1":1,"2":4,"4":2,"6":1,"21":1,"44":1,"72":1,"75":1,"81":1,"82":1,"86":1,"87":1,"94":1,"95":1,"96":1,"97":2,"98":1,"102":1,"103":1,"107":1}}],["address",{"2":{"115":1}}],["added",{"2":{"33":1,"100":1,"102":1}}],["additional",{"2":{"7":1}}],["add",{"2":{"0":5,"6":1,"7":3,"12":1,"15":1,"19":1,"20":1,"21":2,"22":1,"24":1,"25":1,"26":1,"31":2,"32":1,"33":1,"35":2,"37":1,"40":1,"41":1,"42":3,"44":2,"45":1,"46":1,"53":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"107":1,"117":2}}],["another",{"2":{"66":1}}],["any",{"2":{"18":1,"92":1,"104":1,"107":1}}],["and",{"0":{"7":1},"2":{"0":1,"2":2,"3":1,"6":2,"7":2,"9":1,"10":1,"12":1,"17":1,"18":2,"20":1,"21":1,"28":2,"29":1,"30":1,"33":1,"37":1,"40":1,"42":1,"43":1,"44":2,"49":1,"50":1,"54":1,"59":2,"66":1,"67":1,"71":3,"75":2,"77":1,"81":1,"84":1,"86":1,"87":1,"92":1,"93":3,"97":1,"98":1,"99":1,"101":1,"102":2,"103":2,"106":1,"108":1,"113":3,"116":1}}],["an",{"2":{"0":2,"2":2,"7":1,"21":1,"75":1,"76":1,"81":1,"90":1,"92":1,"115":2,"117":1}}],["a",{"0":{"116":1},"2":{"0":6,"1":4,"2":2,"5":2,"6":2,"7":4,"14":1,"30":1,"33":1,"44":2,"68":1,"72":1,"74":1,"81":15,"82":3,"84":2,"86":3,"87":3,"88":1,"89":1,"92":1,"93":1,"94":1,"97":4,"98":1,"99":1,"100":1,"102":4,"103":5,"108":2,"110":1,"113":1,"114":1,"116":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexzhHans.CF2nUXOk.js b/assets/chunks/@localSearchIndexzhHans.CF2nUXOk.js new file mode 100644 index 00000000..5314c45f --- /dev/null +++ b/assets/chunks/@localSearchIndexzhHans.CF2nUXOk.js @@ -0,0 +1 @@ +const e='{"documentCount":118,"nextId":118,"documentIds":{"0":"/zhHans/advanced-usage/multi-level-sidebar-with-indents#带缩进的多级侧边栏","1":"/zhHans/advanced-usage/multiple-sidebars-how-to#多侧边栏操作方法","2":"/zhHans/advanced-usage/multiple-sidebars-how-to#基本用法","3":"/zhHans/advanced-usage/multiple-sidebars-how-to#多个侧边栏选项","4":"/zhHans/advanced-usage/multiple-sidebars-how-to#scanstartpath","5":"/zhHans/advanced-usage/multiple-sidebars-how-to#resolvepath","6":"/zhHans/advanced-usage/multiple-sidebars-how-to#basepath","7":"/zhHans/advanced-usage/multiple-sidebars-how-to#显示带有复杂路径和-uri-的菜单","8":"/zhHans/changelog#changelog","9":"/zhHans/changelog#_1-25-3-2024-09-03","10":"/zhHans/changelog#_1-25-2-2024-09-03","11":"/zhHans/changelog#_1-25-1-2024-09-03","12":"/zhHans/changelog#_1-25-0-2024-08-22","13":"/zhHans/changelog#_1-24-2-2024-08-13","14":"/zhHans/changelog#_1-24-1-2024-07-31","15":"/zhHans/changelog#_1-24-0-2024-07-06","16":"/zhHans/changelog#_1-23-2-2024-05-16","17":"/zhHans/changelog#_1-23-1-2024-05-15","18":"/zhHans/changelog#_1-23-0-2024-05-13","19":"/zhHans/changelog#_1-22-0-2024-03-28","20":"/zhHans/changelog#_1-21-0-2024-03-15","21":"/zhHans/changelog#_1-20-0-2024-03-12","22":"/zhHans/changelog#_1-19-0-2024-02-26","23":"/zhHans/changelog#_1-18-6-2024-01-03","24":"/zhHans/changelog#_1-18-5-2023-12-11","25":"/zhHans/changelog#_1-18-0-2023-10-02","26":"/zhHans/changelog#_1-17-0-2023-09-26","27":"/zhHans/changelog#_1-16-5-2023-09-22","28":"/zhHans/changelog#_1-16-0-2023-09-21","29":"/zhHans/changelog#_1-15-0-2023-09-19","30":"/zhHans/changelog#_1-14-0-2023-09-18","31":"/zhHans/changelog#_1-13-0-2023-09-13","32":"/zhHans/changelog#_1-12-0-2023-09-12","33":"/zhHans/changelog#_1-11-0-2023-08-24","34":"/zhHans/changelog#_1-10-1-2023-08-08","35":"/zhHans/changelog#_1-10-0-2023-07-25","36":"/zhHans/changelog#_1-9-5-2023-07-25","37":"/zhHans/changelog#_1-9-0-2023-07-24","38":"/zhHans/changelog#_1-8-2-2023-07-18","39":"/zhHans/changelog#_1-8-1-2023-06-15","40":"/zhHans/changelog#_1-8-0-2023-06-13","41":"/zhHans/changelog#_1-7-5-2023-05-28","42":"/zhHans/changelog#_1-7-0-2023-05-28","43":"/zhHans/changelog#_1-6-5-2023-05-27","44":"/zhHans/changelog#_1-6-0-2023-05-27","45":"/zhHans/changelog#_1-5-1-2023-05-26","46":"/zhHans/changelog#_1-5-0-2023-05-26","47":"/zhHans/changelog#_1-4-0-2023-05-26","48":"/zhHans/changelog#_1-3-1-2023-04-20","49":"/zhHans/changelog#_1-3-0-2023-04-20","50":"/zhHans/changelog#_1-2-0-2023-02-07","51":"/zhHans/changelog#_1-1-5-2023-01-12","52":"/zhHans/changelog#_1-1-4-2023-01-12","53":"/zhHans/changelog#_1-1-3-2022-12-08","54":"/zhHans/changelog#_1-1-2-2022-11-23","55":"/zhHans/changelog#_1-1-1-2022-11-02","56":"/zhHans/changelog#_1-1-0-2022-11-02","57":"/zhHans/changelog#_1-0-9-2022-11-02","58":"/zhHans/changelog#_1-0-8-2022-11-02","59":"/zhHans/changelog#_1-0-7-2022-10-31","60":"/zhHans/changelog#_1-0-6-2022-10-31","61":"/zhHans/changelog#_1-0-5-2022-10-27","62":"/zhHans/changelog#_1-0-4-2022-10-25","63":"/zhHans/changelog#_0-1-0-1-0-3-2022-10-25-alpha","64":"/zhHans/guide/api#api","65":"/zhHans/guide/api#快速搜索","66":"/zhHans/guide/api#documentrootpath","67":"/zhHans/guide/api#scanstartpath","68":"/zhHans/guide/api#resolvepath","69":"/zhHans/guide/api#basepath","70":"/zhHans/guide/api#usetitlefromfileheading","71":"/zhHans/guide/api#usetitlefromfrontmatter","72":"/zhHans/guide/api#frontmattertitlefieldname","73":"/zhHans/guide/api#usefoldertitlefromindexfile","74":"/zhHans/guide/api#usefolderlinkfromindexfile","75":"/zhHans/guide/api#manualsortfilenamebypriority","76":"/zhHans/guide/api#sortmenusbyname","77":"/zhHans/guide/api#sortmenusbyfiledateprefix","78":"/zhHans/guide/api#sortmenusbyfrontmatterorder","79":"/zhHans/guide/api#sortmenusbyfrontmatterdate","80":"/zhHans/guide/api#sortmenusorderbydescending","81":"/zhHans/guide/api#sortmenusordernumericallyfromtitle","82":"/zhHans/guide/api#sortmenusordernumericallyfromlink","83":"/zhHans/guide/api#frontmatterorderdefaultvalue","84":"/zhHans/guide/api#collapsed","85":"/zhHans/guide/api#collapsedepth","86":"/zhHans/guide/api#hyphentospace","87":"/zhHans/guide/api#underscoretospace","88":"/zhHans/guide/api#capitalizefirst","89":"/zhHans/guide/api#capitalizeeachwords","90":"/zhHans/guide/api#excludefiles","91":"/zhHans/guide/api#excludefilesbyfrontmatterfieldname","92":"/zhHans/guide/api#excludefolders","93":"/zhHans/guide/api#includedotfiles","94":"/zhHans/guide/api#includeemptyfolder","95":"/zhHans/guide/api#includerootindexfile","96":"/zhHans/guide/api#includefolderindexfile","97":"/zhHans/guide/api#removeprefixafterordering","98":"/zhHans/guide/api#prefixseparator","99":"/zhHans/guide/api#rootgrouptext","100":"/zhHans/guide/api#rootgrouplink","101":"/zhHans/guide/api#rootgroupcollapsed","102":"/zhHans/guide/api#convertsamenamesubfiletogroupindexpage","103":"/zhHans/guide/api#folderlinknotincludesfilename","104":"/zhHans/guide/api#keepmarkdownsyntaxfromtitle","105":"/zhHans/guide/api#debugprint","106":"/zhHans/guide/getting-started#入门","107":"/zhHans/guide/getting-started#安装","108":"/zhHans/guide/getting-started#如何使用","109":"/zhHans/guide/getting-started#_1-使用命名导入","110":"/zhHans/guide/getting-started#_2-使用默认导入","111":"/zhHans/guide/getting-started#代码示例","112":"/zhHans/guide/getting-started#输出示例","113":"/zhHans/introduction#导言","114":"/zhHans/introduction#实际用途","115":"/zhHans/troubleshooting/err-require-esm#commonjs-err-require-esm","116":"/zhHans/troubleshooting/err-require-esm#解决方案-a","117":"/zhHans/troubleshooting/err-require-esm#解决方案-b"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,89],"1":[1,1,21],"2":[1,1,73],"3":[1,1,23],"4":[1,2,12],"5":[1,2,18],"6":[1,2,43],"7":[3,1,70],"8":[1,1,1],"9":[7,1,20],"10":[7,1,35],"11":[6,1,40],"12":[7,1,14],"13":[7,1,10],"14":[6,1,30],"15":[7,1,24],"16":[7,1,9],"17":[6,1,22],"18":[7,1,58],"19":[7,1,9],"20":[7,1,8],"21":[7,1,53],"22":[7,1,6],"23":[7,1,4],"24":[7,1,18],"25":[7,1,19],"26":[7,1,4],"27":[7,1,9],"28":[7,1,51],"29":[7,1,22],"30":[7,1,36],"31":[6,1,32],"32":[6,1,4],"33":[7,1,52],"34":[5,1,10],"35":[7,1,5],"36":[7,1,16],"37":[7,1,35],"38":[7,1,10],"39":[6,1,11],"40":[7,1,33],"41":[7,1,4],"42":[7,1,23],"43":[7,1,9],"44":[7,1,50],"45":[6,1,10],"46":[7,1,18],"47":[7,1,8],"48":[6,1,4],"49":[7,1,9],"50":[7,1,55],"51":[6,1,9],"52":[6,1,4],"53":[6,1,14],"54":[6,1,10],"55":[5,1,4],"56":[6,1,8],"57":[7,1,4],"58":[7,1,12],"59":[7,1,13],"60":[7,1,7],"61":[7,1,12],"62":[7,1,4],"63":[9,1,9],"64":[1,1,4],"65":[2,1,50],"66":[1,1,29],"67":[1,1,29],"68":[1,1,17],"69":[1,1,14],"70":[1,1,19],"71":[1,1,20],"72":[1,1,26],"73":[1,1,32],"74":[1,1,20],"75":[1,1,14],"76":[1,1,16],"77":[1,1,30],"78":[1,1,23],"79":[1,1,14],"80":[1,1,15],"81":[1,1,25],"82":[1,1,14],"83":[1,1,15],"84":[1,1,19],"85":[1,1,11],"86":[1,1,15],"87":[1,1,15],"88":[1,1,14],"89":[1,1,15],"90":[1,1,10],"91":[1,1,27],"92":[1,1,9],"93":[1,1,12],"94":[1,1,7],"95":[1,1,11],"96":[1,1,11],"97":[1,1,32],"98":[1,1,33],"99":[1,1,17],"100":[1,1,15],"101":[1,1,27],"102":[1,1,31],"103":[1,1,35],"104":[1,1,14],"105":[1,1,10],"106":[1,1,6],"107":[1,1,37],"108":[1,1,17],"109":[2,2,13],"110":[2,2,32],"111":[1,1,72],"112":[1,1,26],"113":[1,1,18],"114":[1,1,12],"115":[4,1,15],"116":[2,4,10],"117":[2,4,25]},"averageFieldLength":[3.7542372881355917,1.0932203389830508,20.83050847457628],"storedFields":{"0":{"title":"带缩进的多级侧边栏","titles":[]},"1":{"title":"多侧边栏操作方法","titles":[]},"2":{"title":"基本用法","titles":["多侧边栏操作方法"]},"3":{"title":"多个侧边栏选项","titles":["多侧边栏操作方法"]},"4":{"title":"scanStartPath","titles":["多侧边栏操作方法","多个侧边栏选项"]},"5":{"title":"resolvePath","titles":["多侧边栏操作方法","多个侧边栏选项"]},"6":{"title":"basePath","titles":["多侧边栏操作方法","多个侧边栏选项"]},"7":{"title":"显示带有复杂路径和 URI 的菜单","titles":["多侧边栏操作方法"]},"8":{"title":"Changelog","titles":[]},"9":{"title":"1.25.3 (2024-09-03)","titles":["Changelog"]},"10":{"title":"1.25.2 (2024-09-03)","titles":["Changelog"]},"11":{"title":"1.25.1 (2024-09-03)","titles":["Changelog"]},"12":{"title":"1.25.0 (2024-08-22)","titles":["Changelog"]},"13":{"title":"1.24.2 (2024-08-13)","titles":["Changelog"]},"14":{"title":"1.24.1 (2024-07-31)","titles":["Changelog"]},"15":{"title":"1.24.0 (2024-07-06)","titles":["Changelog"]},"16":{"title":"1.23.2 (2024-05-16)","titles":["Changelog"]},"17":{"title":"1.23.1 (2024-05-15)","titles":["Changelog"]},"18":{"title":"1.23.0 (2024-05-13)","titles":["Changelog"]},"19":{"title":"1.22.0 (2024-03-28)","titles":["Changelog"]},"20":{"title":"1.21.0 (2024-03-15)","titles":["Changelog"]},"21":{"title":"1.20.0 (2024-03-12)","titles":["Changelog"]},"22":{"title":"1.19.0 (2024-02-26)","titles":["Changelog"]},"23":{"title":"1.18.6 (2024-01-03)","titles":["Changelog"]},"24":{"title":"1.18.5 (2023-12-11)","titles":["Changelog"]},"25":{"title":"1.18.0 (2023-10-02)","titles":["Changelog"]},"26":{"title":"1.17.0 (2023-09-26)","titles":["Changelog"]},"27":{"title":"1.16.5 (2023-09-22)","titles":["Changelog"]},"28":{"title":"1.16.0 (2023-09-21)","titles":["Changelog"]},"29":{"title":"1.15.0 (2023-09-19)","titles":["Changelog"]},"30":{"title":"1.14.0 (2023-09-18)","titles":["Changelog"]},"31":{"title":"1.13.0 (2023-09-13)","titles":["Changelog"]},"32":{"title":"1.12.0 (2023-09-12)","titles":["Changelog"]},"33":{"title":"1.11.0 (2023-08-24)","titles":["Changelog"]},"34":{"title":"1.10.1 (2023-08-08)","titles":["Changelog"]},"35":{"title":"1.10.0 (2023-07-25)","titles":["Changelog"]},"36":{"title":"1.9.5 (2023-07-25)","titles":["Changelog"]},"37":{"title":"1.9.0 (2023-07-24)","titles":["Changelog"]},"38":{"title":"1.8.2 (2023-07-18)","titles":["Changelog"]},"39":{"title":"1.8.1 (2023-06-15)","titles":["Changelog"]},"40":{"title":"1.8.0 (2023-06-13)","titles":["Changelog"]},"41":{"title":"1.7.5 (2023-05-28)","titles":["Changelog"]},"42":{"title":"1.7.0 (2023-05-28)","titles":["Changelog"]},"43":{"title":"1.6.5 (2023-05-27)","titles":["Changelog"]},"44":{"title":"1.6.0 (2023-05-27)","titles":["Changelog"]},"45":{"title":"1.5.1 (2023-05-26)","titles":["Changelog"]},"46":{"title":"1.5.0 (2023-05-26)","titles":["Changelog"]},"47":{"title":"1.4.0 (2023-05-26)","titles":["Changelog"]},"48":{"title":"1.3.1 (2023-04-20)","titles":["Changelog"]},"49":{"title":"1.3.0 (2023-04-20)","titles":["Changelog"]},"50":{"title":"1.2.0 (2023-02-07)","titles":["Changelog"]},"51":{"title":"1.1.5 (2023-01-12)","titles":["Changelog"]},"52":{"title":"1.1.4 (2023-01-12)","titles":["Changelog"]},"53":{"title":"1.1.3 (2022-12-08)","titles":["Changelog"]},"54":{"title":"1.1.2 (2022-11-23)","titles":["Changelog"]},"55":{"title":"1.1.1 (2022-11-02)","titles":["Changelog"]},"56":{"title":"1.1.0 (2022-11-02)","titles":["Changelog"]},"57":{"title":"1.0.9 (2022-11-02)","titles":["Changelog"]},"58":{"title":"1.0.8 (2022-11-02)","titles":["Changelog"]},"59":{"title":"1.0.7 (2022-10-31)","titles":["Changelog"]},"60":{"title":"1.0.6 (2022-10-31)","titles":["Changelog"]},"61":{"title":"1.0.5 (2022-10-27)","titles":["Changelog"]},"62":{"title":"1.0.4 (2022-10-25)","titles":["Changelog"]},"63":{"title":"0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)","titles":["Changelog"]},"64":{"title":"API","titles":[]},"65":{"title":"@ 快速搜索","titles":["API"]},"66":{"title":"documentRootPath","titles":["API"]},"67":{"title":"scanStartPath","titles":["API"]},"68":{"title":"resolvePath","titles":["API"]},"69":{"title":"basePath","titles":["API"]},"70":{"title":"useTitleFromFileHeading","titles":["API"]},"71":{"title":"useTitleFromFrontmatter","titles":["API"]},"72":{"title":"frontmatterTitleFieldName","titles":["API"]},"73":{"title":"useFolderTitleFromIndexFile","titles":["API"]},"74":{"title":"useFolderLinkFromIndexFile","titles":["API"]},"75":{"title":"manualSortFileNameByPriority","titles":["API"]},"76":{"title":"sortMenusByName","titles":["API"]},"77":{"title":"sortMenusByFileDatePrefix","titles":["API"]},"78":{"title":"sortMenusByFrontmatterOrder","titles":["API"]},"79":{"title":"sortMenusByFrontmatterDate","titles":["API"]},"80":{"title":"sortMenusOrderByDescending","titles":["API"]},"81":{"title":"sortMenusOrderNumericallyFromTitle","titles":["API"]},"82":{"title":"sortMenusOrderNumericallyFromLink","titles":["API"]},"83":{"title":"frontmatterOrderDefaultValue","titles":["API"]},"84":{"title":"collapsed","titles":["API"]},"85":{"title":"collapseDepth","titles":["API"]},"86":{"title":"hyphenToSpace","titles":["API"]},"87":{"title":"underscoreToSpace","titles":["API"]},"88":{"title":"capitalizeFirst","titles":["API"]},"89":{"title":"capitalizeEachWords","titles":["API"]},"90":{"title":"excludeFiles","titles":["API"]},"91":{"title":"excludeFilesByFrontmatterFieldName","titles":["API"]},"92":{"title":"excludeFolders","titles":["API"]},"93":{"title":"includeDotFiles","titles":["API"]},"94":{"title":"includeEmptyFolder","titles":["API"]},"95":{"title":"includeRootIndexFile","titles":["API"]},"96":{"title":"includeFolderIndexFile","titles":["API"]},"97":{"title":"removePrefixAfterOrdering","titles":["API"]},"98":{"title":"prefixSeparator","titles":["API"]},"99":{"title":"rootGroupText","titles":["API"]},"100":{"title":"rootGroupLink","titles":["API"]},"101":{"title":"rootGroupCollapsed","titles":["API"]},"102":{"title":"convertSameNameSubFileToGroupIndexPage","titles":["API"]},"103":{"title":"folderLinkNotIncludesFileName","titles":["API"]},"104":{"title":"keepMarkdownSyntaxFromTitle","titles":["API"]},"105":{"title":"debugPrint","titles":["API"]},"106":{"title":"入门","titles":[]},"107":{"title":"安装","titles":["入门"]},"108":{"title":"如何使用","titles":["入门"]},"109":{"title":"1. 使用命名导入","titles":["入门","如何使用"]},"110":{"title":"2. 使用默认导入","titles":["入门","如何使用"]},"111":{"title":"代码示例","titles":["入门"]},"112":{"title":"输出示例","titles":["入门"]},"113":{"title":"导言","titles":[]},"114":{"title":"实际用途","titles":["导言"]},"115":{"title":"CommonJS: ERR_REQUIRE_ESM","titles":[]},"116":{"title":"解决方案 A","titles":["CommonJS: ERR_REQUIRE_ESM"]},"117":{"title":"解决方案 B","titles":["CommonJS: ERR_REQUIRE_ESM"]}},"dirtCount":0,"index":[["项目",{"2":{"117":1}}],["项目中使用该模块",{"2":{"116":1}}],["行",{"2":{"117":1}}],["添加此内容",{"2":{"117":1}}],["添加",{"2":{"117":1}}],["然后再试一次",{"2":{"116":1}}],["然后在",{"2":{"0":1}}],["然后在theme目录下创建一个index",{"2":{"0":1}}],["改为",{"2":{"116":1}}],["解决方案",{"0":{"116":1,"117":1}}],["解决路径问题",{"2":{"65":1}}],["实际用途",{"0":{"114":1}}],["特殊字符转换",{"2":{"113":1}}],["特别是当",{"2":{"7":1}}],["自定义分类",{"2":{"113":1}}],["自定义现有主题的样式",{"2":{"0":1}}],["支持typescript",{"2":{"113":1}}],["支持frontmatter",{"2":{"113":1}}],["支持",{"2":{"113":1}}],["零依赖",{"2":{"113":1}}],["轻量级捆绑文件大小",{"2":{"113":1}}],["有以下几种解决方案",{"2":{"115":1}}],["有很多选项可根据自己的喜好进行定制",{"2":{"113":1}}],["有关详细说明",{"2":{"111":1}}],["有关generatesidebar配置的更多信息",{"2":{"110":1}}],["有关一般项目的折叠性",{"2":{"101":1}}],["有关",{"2":{"100":1,"101":1}}],["易于使用",{"2":{"113":1}}],["针对最新版vitepress进行了优化",{"2":{"113":1}}],["⚡️",{"2":{"113":7}}],["导言",{"0":{"113":1},"1":{"114":1}}],["导入时",{"2":{"88":1}}],["导入菜单名称时",{"2":{"86":1,"87":1,"89":1}}],["输出示例",{"0":{"112":1}}],["输入路径",{"2":{"68":1}}],["代码示例",{"0":{"111":1}}],["部分",{"2":{"110":1}}],["=",{"2":{"109":1,"110":1}}],["构建之前找到标记文件",{"2":{"108":1}}],["扫描文件夹",{"2":{"108":1}}],["方法自动生成侧边栏",{"2":{"108":1}}],["$",{"2":{"107":3}}],["x",{"2":{"107":1}}],["x3c",{"2":{"0":3,"2":3,"6":1,"66":2,"117":1}}],["安装",{"0":{"107":1}}],["模块包管理器安装该模块",{"2":{"107":1}}],["模块",{"2":{"106":1}}],["quot",{"2":{"106":2,"107":2,"117":4}}],["本页面将指导您安装和使用",{"2":{"106":1}}],["本页介绍",{"2":{"64":1}}],["入门",{"0":{"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1}}],["超链接文本都会被移除",{"2":{"104":1}}],["无论是否使用此选项",{"2":{"104":1}}],["语法",{"2":{"104":1}}],["单击",{"2":{"103":1}}],["忽略子项的存在",{"2":{"103":1}}],["点击文件夹中的链接会显示",{"2":{"102":1}}],["页面不包含在菜单列表中",{"2":{"102":1}}],["页面上了解更多信息",{"2":{"67":1,"68":1,"69":1}}],["子项将以展开方式显示",{"2":{"101":1}}],["子项将以折叠方式显示",{"2":{"101":1}}],["折叠按钮",{"2":{"101":1}}],["结果为",{"2":{"98":1}}],["与正则表达式匹配的值将被删除",{"2":{"98":1}}],["与文件名",{"2":{"90":1}}],["值指定为",{"2":{"98":1}}],["值设置为",{"2":{"98":1}}],["值和标题之间需要留出空格",{"2":{"71":1}}],["至少一个",{"2":{"98":1}}],["备注b",{"2":{"97":1}}],["链接将使用文件链接的原始形式",{"2":{"97":1}}],["前缀仅影响标题",{"2":{"97":1}}],["注a",{"2":{"97":1}}],["更多信息请参阅该选项的描述",{"2":{"97":1}}],["可通过简单的设置自动配置和管理页面的侧边栏",{"2":{"113":1}}],["可以将其禁用",{"2":{"99":1}}],["可以使用",{"2":{"77":1}}],["可与prefixseparator选项一起使用",{"2":{"97":1}}],["应使用1",{"2":{"97":1}}],["从提取的菜单文本中删除指定数量字符",{"2":{"98":1}}],["从所有操作完成后显示的菜单项的每个菜单标题中删除特定的前缀",{"2":{"97":1}}],["从该文件的",{"2":{"73":1}}],["使用默认导入",{"0":{"110":1}}],["使用命名导入",{"0":{"109":1}}],["使用下面的命令",{"2":{"107":1}}],["使用",{"2":{"103":1,"110":1}}],["使用includerootindexfile选项还可以包含根项目的索引文件",{"2":{"96":1}}],["使用includefolderindexfile选项还可以包含子项目的索引文件",{"2":{"95":1}}],["使用此选项",{"2":{"81":1}}],["也不显示文件夹中的任何子项",{"2":{"92":1}}],["也可能被展开",{"2":{"84":1}}],["列表中不显示与文件夹名称相对应的文件夹",{"2":{"92":1}}],["来代替exclude",{"2":{"91":1}}],["指定此值可指定指向",{"2":{"100":1}}],["指定整个菜单组",{"2":{"99":1}}],["指定前缀字段名称为true的文档将从菜单中排除",{"2":{"91":1}}],["指定该选项后",{"2":{"85":1}}],["相对应的文件不会显示在列表中",{"2":{"90":1}}],["通过",{"2":{"86":1,"87":1,"89":1}}],["通常会保留任何高亮或内联代码",{"2":{"104":1}}],["通常情况下",{"2":{"6":1,"76":1,"93":1}}],["通常",{"2":{"5":1}}],["符号将转换为空格并显示为标题",{"2":{"86":1,"87":1}}],["顶层文件夹的深度为",{"2":{"85":1}}],["组的折叠",{"2":{"85":1}}],["所有菜单将一次性显示",{"2":{"84":1}}],["所以你应该知道",{"2":{"0":1}}],["展开将自动启用",{"2":{"85":1}}],["展开",{"2":{"84":1}}],["设置",{"2":{"83":1}}],["才会启用此选项",{"2":{"80":1}}],["为解决这些问题",{"2":{"115":1}}],["为",{"2":{"80":1,"83":1}}],["为每个路径显示不同的侧边栏",{"2":{"68":1}}],["只有当",{"2":{"80":1}}],["只需在",{"2":{"1":1}}],["日期格式必须符合yyyy",{"2":{"79":1}}],["日期格式必须是",{"2":{"77":1}}],["对date属性值进行排序",{"2":{"79":1}}],["对于每个文件夹",{"2":{"78":1}}],["根据分隔符仅删除一次字母",{"2":{"97":1}}],["根据选项的值",{"2":{"91":1}}],["根据前端的date属性对菜单项进行排序",{"2":{"79":1}}],["根据文件中指定的frontmatter中的键名显示菜单标题",{"2":{"72":1}}],["会被判定为",{"2":{"78":1}}],["升序排序",{"2":{"78":1}}],["数字",{"2":{"78":1}}],["数组的顺序排序",{"2":{"75":1}}],["数组中的值可以是任意数量的url",{"2":{"2":1}}],["属性未设置时的默认值",{"2":{"83":1}}],["属性的值不是数字或不存在",{"2":{"78":1}}],["属性的值",{"2":{"78":1}}],["属性对菜单项排序",{"2":{"78":1}}],["格式",{"2":{"77":1}}],["yarn",{"2":{"107":2}}],["yyyy",{"2":{"77":1}}],["you",{"2":{"18":2,"21":1,"28":1,"31":1,"37":1}}],["排序优先级将被退回",{"2":{"75":1}}],["排除",{"2":{"65":1}}],["按",{"2":{"78":2}}],["按名称对菜单项中的项目进行排序",{"2":{"76":1}}],["按文件名",{"2":{"75":1}}],["按照上面的示例",{"2":{"7":1}}],["索引文件就会显示在菜单中",{"2":{"73":1}}],["选项并行使用",{"2":{"103":1}}],["选项说明",{"2":{"100":1,"101":1}}],["选项结合使用以删除前缀",{"2":{"98":1}}],["选项为",{"2":{"73":1,"74":1,"78":1}}],["选项",{"2":{"73":1,"77":1,"99":1,"101":1,"103":2}}],["选项设置为",{"2":{"72":1,"77":1,"110":1}}],["名称",{"2":{"73":1}}],["由于我们通常从",{"2":{"73":1}}],["欲了解更多信息",{"2":{"72":1}}],["并返回根据文件夹树结构生成的菜单",{"2":{"108":1}}],["并仅将链接指定为文件夹路径",{"2":{"103":1}}],["并且您将",{"2":{"98":1}}],["并且不希望该数字在菜单中显示",{"2":{"97":1}}],["并用空格分隔",{"2":{"89":1}}],["并应如下所示",{"2":{"71":1}}],["并会导航到一个不存在的文档",{"2":{"7":1}}],["因此您在使用时应格外小心",{"2":{"99":1}}],["因此子项",{"2":{"97":1}}],["因此",{"2":{"76":1,"82":1}}],["因此建议同时使用",{"2":{"73":1}}],["因此如果想按更改后的菜单名称重新排序",{"2":{"72":1,"77":1}}],["因此如果您想按更改后的菜单名称重新排序",{"2":{"70":1}}],["因为它仅在开发人员环境中使用",{"2":{"107":1}}],["因为它会尝试找到",{"2":{"6":1}}],["因为10",{"2":{"81":1}}],["因为菜单名称已更改",{"2":{"76":1}}],["因为documentrootpath中设置的父路径应该出现在link中",{"2":{"67":1}}],["因为api目录是guide的子目录",{"2":{"7":1}}],["标题或",{"2":{"73":1,"86":1,"87":1,"88":1,"89":1}}],["标题",{"2":{"70":1}}],["标题内容的标题",{"2":{"70":1}}],["没有此值的选项将设置为根路径",{"2":{"68":1}}],["建议您也设置documentrootpath",{"2":{"67":1}}],["建议您在路径前添加",{"2":{"5":1}}],["不会在列表中显示",{"2":{"93":1}}],["不会被扫描",{"2":{"67":1}}],["不过",{"2":{"0":1}}],["用以下两种方法之一导入",{"2":{"108":1}}],["用于导航至该文件",{"2":{"102":1}}],["用于扫描文档列表的根目录路径",{"2":{"67":1}}],["用户希望菜单仅显示guide的子菜单",{"2":{"2":1}}],["配置目录",{"2":{"66":1}}],["或任何其他",{"2":{"107":1}}],["或更高版本",{"2":{"107":1}}],["或者",{"2":{"97":1}}],["或",{"2":{"66":1,"73":1,"80":1,"84":1,"101":1}}],["默认菜单项是按文件夹树顺序排序的",{"2":{"72":1,"77":1}}],["默认菜单项按文件夹树顺序排序",{"2":{"70":1}}],["默认值为",{"2":{"66":1}}],["默认从第二层开始缩进",{"2":{"0":1}}],["杂项",{"2":{"65":1}}],["分类",{"2":{"65":1}}],["分组",{"2":{"65":1}}],["菜单名",{"2":{"97":3}}],["菜单名称的第一个字母将强制为大写",{"2":{"88":1}}],["菜单组会折叠",{"2":{"85":1}}],["菜单标题样式",{"2":{"65":1}}],["菜单显示时每层都会缩进",{"2":{"0":1}}],["包括我自己的网络服务",{"2":{"114":1}}],["包括扩展名",{"2":{"75":1,"90":1}}],["包括",{"2":{"65":1}}],["获取菜单链接",{"2":{"65":1}}],["获取菜单标题",{"2":{"65":1}}],["快速搜索",{"0":{"65":1}}],["~",{"0":{"63":1}}],["44",{"2":{"50":1}}],["4",{"0":{"47":1,"52":1,"62":1},"2":{"98":1}}],["7",{"0":{"41":1,"42":1,"59":1}}],["8",{"0":{"38":1,"39":1,"40":1,"58":1}}],["9",{"0":{"36":1,"37":1,"57":1},"2":{"98":3}}],["keepmarkdownsyntaxfromtitle",{"0":{"104":1},"2":{"31":2,"65":1,"111":1}}],["korean",{"2":{"11":1}}],["5",{"0":{"24":1,"27":1,"36":1,"41":1,"43":1,"45":1,"46":1,"51":1,"61":1}}],["5ed188e",{"2":{"16":1}}],["6",{"0":{"23":1,"43":1,"44":1,"60":1}}],["zhhans",{"2":{"111":1}}],["z",{"2":{"22":1,"24":3}}],["number",{"2":{"83":1,"85":1}}],["null",{"2":{"36":1,"50":1,"56":1,"67":1,"68":1,"69":1,"84":1,"91":1,"100":1,"101":2,"111":3}}],["npm",{"2":{"51":1,"107":3}}],["npmignore",{"2":{"45":1}}],["navigate",{"2":{"44":1}}],["names",{"2":{"25":2,"33":1}}],["name",{"2":{"10":1,"18":2,"28":1,"33":3,"44":1,"72":1,"77":2,"117":1}}],["network",{"2":{"114":1}}],["newlines",{"2":{"40":1}}],["nested",{"2":{"27":1}}],["node",{"2":{"107":2}}],["nodejs",{"2":{"61":1}}],["no",{"2":{"29":1}}],["now",{"2":{"11":1,"18":1,"19":1,"28":1,"33":1,"44":1}}],["non",{"2":{"11":1}}],["normally",{"2":{"10":1,"31":1}}],["note",{"2":{"30":1}}],["not",{"2":{"2":2,"9":1,"14":1,"16":1,"17":1,"21":1,"30":1,"31":1,"33":1,"34":1,"36":1,"37":1,"43":1,"44":2,"50":2,"53":1,"63":2}}],["pnpm",{"2":{"107":2}}],["prototypes",{"2":{"112":2}}],["production",{"2":{"62":1,"63":1}}],["prod",{"2":{"45":1}}],["prefixed",{"2":{"36":1}}],["prefixseparator",{"0":{"98":1},"2":{"19":1,"20":1,"65":1,"77":1,"98":2,"111":1}}],["present",{"2":{"17":1}}],["precise",{"2":{"14":1}}],["pulling",{"2":{"25":1}}],["please",{"2":{"10":1,"30":1,"40":1}}],["parsing",{"2":{"42":1}}],["passed",{"2":{"18":1}}],["page",{"2":{"6":4,"7":2,"11":1,"28":1}}],["path",{"2":{"2":1,"12":1,"21":1,"68":2}}],["padding",{"2":{"0":1}}],["package",{"2":{"0":1,"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1,"66":1}}],["world",{"2":{"71":1}}],["working",{"2":{"43":1}}],["work",{"2":{"18":1}}],["whether",{"2":{"28":1,"37":1}}],["when",{"2":{"9":1,"10":1,"11":1,"12":1,"14":1,"15":1,"17":1,"18":1,"25":1,"31":1,"36":1}}],["was",{"2":{"33":2,"40":1,"42":2}}],["want",{"2":{"18":1,"31":1}}],["warning",{"2":{"17":1,"33":1}}],["warn",{"2":{"16":1}}],["will",{"2":{"14":1,"15":1,"18":1,"33":1,"44":2}}],["withindex",{"2":{"42":1}}],["without",{"2":{"33":1}}],["with",{"2":{"9":1,"15":1,"18":1,"21":1,"33":1,"34":1,"36":1,"40":1,"44":2,"50":2}}],["31",{"0":{"14":1,"59":1,"60":1}}],["3",{"0":{"9":1,"48":1,"49":1,"53":1,"63":1}}],["将在文件夹中创建一个链接",{"2":{"102":1}}],["将指定一个指向文件夹的链接",{"2":{"74":1}}],["将使用默认的title作为后备",{"2":{"72":1}}],["将显示",{"2":{"7":1}}],["将无法显示菜单",{"2":{"7":1}}],["开头时",{"2":{"7":1}}],["现在",{"2":{"7":1}}],["现在启动",{"2":{"0":1}}],["esm",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"117":1}}],["err",{"0":{"115":1},"1":{"116":1,"117":1}}],["error",{"2":{"47":1}}],["editorconfig",{"2":{"59":1}}],["e",{"2":{"28":1}}],["enhancements",{"2":{"20":1}}],["end",{"2":{"7":1}}],["empty",{"2":{"18":2,"21":1,"53":1}}],["execution",{"2":{"59":1}}],["expand",{"2":{"50":1}}],["expanded",{"2":{"37":1,"50":1}}],["expressions",{"2":{"19":1}}],["export",{"2":{"0":1,"109":1,"110":1,"111":1}}],["excludefolders",{"0":{"92":1},"2":{"42":1,"65":1,"111":1,"112":1}}],["excludefilesbyfrontmatterfieldname",{"0":{"91":1},"2":{"18":2,"65":1,"111":1}}],["excludefilesbyfrontmatter",{"2":{"18":1,"22":1}}],["excludefiles",{"0":{"90":1},"2":{"2":1,"42":1,"65":1,"111":1}}],["excluded",{"2":{"18":1,"91":1}}],["exclude",{"2":{"18":2,"91":1,"111":1}}],["extract",{"2":{"15":1}}],["existing",{"2":{"18":1}}],["exists",{"2":{"14":1,"15":1,"44":1}}],["exist",{"2":{"10":1,"33":1}}],["examples",{"2":{"112":4}}],["example",{"2":{"0":1,"31":1,"112":1}}],["该文件是vitepress的配置文件",{"2":{"110":1}}],["该文件应位于themeconfig之外",{"2":{"7":1}}],["该方法会根据给定的根路径",{"2":{"108":1}}],["该软件包应安装在",{"2":{"107":1}}],["该选项也会受到影响",{"2":{"86":1,"87":1,"88":1,"89":1}}],["该选项仅在",{"2":{"83":1}}],["该数组至少包含一个来自vitepress",{"2":{"2":1}}],["重写rewritesvitepress的config",{"2":{"7":1}}],["预期的菜单仅显示",{"2":{"7":1}}],["时启用",{"2":{"83":1}}],["时",{"2":{"7":1}}],["我们建议使用",{"2":{"107":1}}],["我们建议您查看下面vitepress",{"2":{"1":1}}],["我们将把",{"2":{"7":1}}],["我们希望当到达单级",{"2":{"7":1}}],["你应该能在控制台中看到输出结果",{"2":{"110":1}}],["你有一个这样的文件夹结构",{"2":{"7":1}}],["你需要使用额外的方法",{"2":{"7":1}}],["较短或使用与实际文件夹路径不同的约定时",{"2":{"7":1}}],["显示带有复杂路径和",{"0":{"7":1}}],["侧边栏菜单会隐藏",{"2":{"73":1,"74":1}}],["侧边栏的所有选项",{"2":{"64":1}}],["侧边栏将不会显示菜单",{"2":{"6":1}}],["侧边栏会根据根目录生成路径",{"2":{"6":1}}],["文件和文件夹过滤器等菜单",{"2":{"113":1}}],["文件夹菜单将带您进入",{"2":{"103":1}}],["文件夹中的",{"2":{"102":1}}],["文件夹中添加了一个链接",{"2":{"102":1}}],["文件夹扫描是按名称升序排序的",{"2":{"76":1}}],["文件名",{"2":{"97":3}}],["文件名中的",{"2":{"86":1,"87":1}}],["文件不存在",{"2":{"74":1}}],["文件",{"2":{"73":2,"74":2}}],["文件中获取",{"2":{"73":1}}],["文件中的信息来获取菜单名称",{"2":{"73":1}}],["文件中",{"2":{"70":1}}],["文件中添加以下内容",{"2":{"0":2}}],["文档文件所在的顶级路径",{"2":{"66":1}}],["文档显示在",{"2":{"6":1}}],["如需了解esm模块的更多信息",{"2":{"115":1}}],["如何使用",{"0":{"108":1},"1":{"109":1,"110":1}}],["如1",{"2":{"97":1}}],["如draft",{"2":{"91":1}}],["如下所示",{"2":{"6":1,"102":1}}],["如果指定的默认值为",{"2":{"101":1}}],["如果指定的值在frontmatter中不存在",{"2":{"72":1}}],["如果指定此值",{"2":{"99":1}}],["如果菜单名称为",{"2":{"98":1}}],["如果菜单位于折叠组中的文档中",{"2":{"84":1}}],["如果默认使用前缀分隔符",{"2":{"97":1}}],["如果此选项为true",{"2":{"93":1}}],["如果此值为true",{"2":{"82":1,"102":1}}],["如果此值为",{"2":{"74":1,"80":1,"103":1,"104":1}}],["如果此值不存在",{"2":{"69":1}}],["如果文件不存在",{"2":{"95":1,"96":1}}],["如果文件和文件夹名称前有句点",{"2":{"93":1}}],["如果文件中不存在",{"2":{"70":1}}],["如果选项值为exclude",{"2":{"91":1}}],["如果为",{"2":{"101":1}}],["如果为true",{"2":{"84":1}}],["如果为false",{"2":{"84":1}}],["如果未指定选项或选项值未定义",{"2":{"91":1}}],["如果未指定collapsed选项",{"2":{"84":1}}],["如果未指定该值",{"2":{"6":1}}],["如果sortmenusorderbydescending为true",{"2":{"79":1}}],["如果不应用此选项",{"2":{"76":1}}],["如果不存在",{"2":{"73":1}}],["如果数组中没有与文件名匹配的值",{"2":{"75":1}}],["如果",{"2":{"74":1,"78":2}}],["如果该值为true",{"2":{"81":1,"105":1}}],["如果该值为",{"2":{"73":1,"101":1}}],["如果失败",{"2":{"71":1}}],["如果无法解析该值",{"2":{"71":1}}],["如果值为空",{"2":{"100":1}}],["如果值为true",{"2":{"71":1,"94":1,"95":1,"96":1}}],["如果值为",{"2":{"70":1,"77":1,"86":1,"87":1,"88":1,"89":1}}],["如果路径因vitepress的重写选项而改变",{"2":{"69":1}}],["如果根路径是",{"2":{"67":1}}],["如果项目根目录中文档所在的文件夹是",{"2":{"66":1}}],["如果目录的实际路径与uri中的路径结构不同",{"2":{"6":1}}],["如果您的项目使用cjs",{"2":{"115":1}}],["如果您配置了多个侧边栏",{"2":{"105":1}}],["如果您有一个如下所示的文件夹",{"2":{"103":1}}],["如果您有一个文件夹",{"2":{"102":1}}],["如果您有名为1",{"2":{"81":1}}],["如果您不需要",{"2":{"99":1}}],["如果您使用usetitlefromfileheading或usetitlefromfrontmatter选项",{"2":{"97":1}}],["如果您使用的是typescript",{"2":{"0":1}}],["如果您想在",{"2":{"116":1}}],["如果您想在到达example",{"2":{"5":1}}],["如果您想按文件名中的数字排序",{"2":{"97":1}}],["如果您希望按降序排序",{"2":{"81":1,"82":1}}],["如果您指定了scanstartpath",{"2":{"67":1}}],["如果您这样配置选项",{"2":{"7":1}}],["如果您这样做",{"2":{"6":1}}],["假设您有一个重写规则",{"2":{"6":1}}],["假设你有一个名为",{"2":{"2":1}}],["而",{"2":{"102":1}}],["而该文件不会显示在子项中",{"2":{"102":1}}],["而与目录结构无关",{"2":{"99":1}}],["而不删除它",{"2":{"104":1}}],["而不使用前缀的排序",{"2":{"97":1}}],["而不会引用vitepress中的重写路径",{"2":{"6":1}}],["而这是路径本身",{"2":{"6":1}}],["而scanstartpath是此路由规则中实际要显示的根目录",{"2":{"4":1}}],["则需要将其转换为esm模块",{"2":{"115":1}}],["则会将执行后创建的对象打印到控制台日志中",{"2":{"105":1}}],["则保留标题文本中包含的",{"2":{"104":1}}],["则链接将为",{"2":{"103":1}}],["则在建立文件夹链接时",{"2":{"103":1}}],["则当存在与文件夹同名的子文件时",{"2":{"102":1}}],["则指定顶级菜单的名称",{"2":{"99":1}}],["则指定resolvepath的值或根路径",{"2":{"6":1}}],["则结果将仅为",{"2":{"98":1}}],["则以下菜单将重命名为",{"2":{"97":1}}],["则忽略此选项",{"2":{"97":1}}],["则忽略它",{"2":{"95":1,"96":1}}],["则忽略该选项",{"2":{"91":1}}],["则还要在侧边栏菜单中包含文件夹路径index",{"2":{"96":1}}],["则还要在侧边栏菜单中包含顶级路径index",{"2":{"95":1}}],["则还会显示不存在md文件的目录",{"2":{"94":1}}],["则强制在列表中显示所有隐藏文件和文件夹",{"2":{"93":1}}],["则菜单中不会显示内容包含exclude",{"2":{"91":1}}],["则单词的所有首字母大写",{"2":{"89":1}}],["则创建菜单时所有分组都处于折叠状态",{"2":{"84":1}}],["则创建菜单时所有分组都处于展开状态",{"2":{"84":1}}],["则不显示展开",{"2":{"101":1}}],["则不添加链接",{"2":{"100":1}}],["则不使用分组折叠",{"2":{"84":1}}],["则不会创建链接",{"2":{"74":1}}],["则应与sortmenusorderbydescending选项一起使用",{"2":{"81":1,"82":1}}],["则应用默认排序",{"2":{"76":1}}],["则常规排序将按名称排序",{"2":{"81":1}}],["则如果菜单名称以数字开头",{"2":{"81":1,"82":1}}],["则如果usetitlefromfileheading选项为true",{"2":{"71":1}}],["则",{"2":{"78":1}}],["则按数字而不是名称排序",{"2":{"81":1,"82":1}}],["则按降序排列菜单项中的项目",{"2":{"80":1}}],["则按降序排序",{"2":{"78":1}}],["则按日期降序",{"2":{"79":1}}],["则按菜单项名称中的日期前缀排序",{"2":{"77":1}}],["则可能需要按名称重新排序",{"2":{"76":1}}],["则可在菜单中显示索引文件",{"2":{"74":1}}],["则可以使用此选项",{"2":{"69":1}}],["则使用文件夹名称",{"2":{"73":1}}],["则使用当前文件夹的",{"2":{"73":1}}],["则从文件名中获取该值",{"2":{"71":1}}],["则从h1标签中获取该值",{"2":{"71":1}}],["则根据文件frontmatter中title的值显示标题",{"2":{"71":1}}],["则显示",{"2":{"70":1}}],["则显示带有",{"2":{"70":1}}],["则将使用来自resolvepath的值",{"2":{"69":1}}],["则设置如下",{"2":{"67":1}}],["则该选项的值应设为",{"2":{"66":1}}],["则resolvepath的值为",{"2":{"5":1}}],["否则为可选",{"2":{"6":1}}],["此选项仅在特殊情况下使用",{"2":{"103":1}}],["此选项仅适用于顶层项目",{"2":{"101":1}}],["此选项只能与",{"2":{"98":1}}],["此选项与sortmenusordernumericallyfromtitle相同",{"2":{"82":1}}],["此选项强制按名称排序",{"2":{"76":1}}],["此选项用于配置多个侧边栏",{"2":{"67":1,"68":1,"69":1}}],["此选项用于为不同的路由规则指定不同的根目录",{"2":{"4":1}}],["此选项主要用于vitepress的重写规则",{"2":{"6":1}}],["路径前必须包含",{"2":{"68":1}}],["路径以",{"2":{"7":1}}],["路径显示不同侧边栏菜单的功能",{"2":{"1":1}}],["路由指定不同的值",{"2":{"5":1}}],["类似",{"2":{"5":1}}],["它也会输出所有侧边栏的结果",{"2":{"105":1}}],["它们会被视为隐藏文件",{"2":{"93":1}}],["它们按以下顺序排序",{"2":{"81":1}}],["它不能与sortmenusordernumericallyfromtitle选项一起使用",{"2":{"82":1}}],["它还会按日期升序",{"2":{"79":1}}],["它替换vitepress中的基本路径",{"2":{"69":1}}],["它取代了vitepress中base路径的值",{"2":{"6":1}}],["它的值与",{"2":{"5":1}}],["它应该创建为一个带有css类名为indicator的div",{"2":{"0":1}}],["请尝试在将",{"2":{"110":1}}],["请参见此处的说明",{"2":{"107":1}}],["请参阅以下内容",{"2":{"115":1}}],["请参阅以下文章",{"2":{"72":1}}],["请参阅以下文章以获取说明",{"2":{"7":1}}],["请参阅下面的链接",{"2":{"111":1}}],["请参阅下面的",{"2":{"110":1}}],["请参阅",{"2":{"100":1,"101":2}}],["请勿包含",{"2":{"67":1}}],["请将文件扩展名从",{"2":{"116":1}}],["请将其与",{"2":{"103":1}}],["请将",{"2":{"72":1,"77":1,"98":1}}],["请将sortmenusbyname选项设置为true",{"2":{"70":1}}],["请将scanstartpath的值指定为guide",{"2":{"4":1}}],["请将basepath中的路径改为help",{"2":{"6":1}}],["请使用index",{"2":{"0":1}}],["若要仅包含",{"2":{"4":1}}],["即使只包含其中一个选项",{"2":{"105":1}}],["即使值为true",{"2":{"84":1}}],["即使菜单名称已更改也是如此",{"2":{"76":1}}],["即",{"2":{"4":1,"81":1}}],["a39789f98801d908bbc7ff3ecc99d99c",{"2":{"115":1}}],["a优先于2",{"2":{"81":1}}],["a的文件",{"2":{"81":1}}],["a和2",{"2":{"81":1}}],["at",{"2":{"50":1}}],["again",{"2":{"29":1}}],["against",{"2":{"17":1}}],["available",{"2":{"29":1,"30":1}}],["avoid",{"2":{"11":1}}],["all",{"2":{"50":3}}],["allows",{"2":{"37":1}}],["allow",{"2":{"18":1,"21":1,"36":1}}],["alpha",{"0":{"63":1},"2":{"50":1,"63":1}}],["algorithm",{"2":{"30":1}}],["also",{"2":{"25":1,"33":1}}],["aslafy",{"2":{"22":1,"24":3}}],["as",{"2":{"21":1,"44":1}}],["accepts",{"2":{"19":1}}],["another",{"2":{"66":1}}],["an",{"2":{"21":1}}],["any",{"2":{"18":1}}],["and",{"2":{"9":1,"10":1,"12":1,"17":1,"18":2,"20":1,"21":1,"28":2,"29":1,"30":1,"33":1,"37":1,"40":1,"42":1,"43":1,"44":2,"49":1,"50":1,"54":1,"59":2}}],["article",{"2":{"91":2}}],["array",{"2":{"75":1,"90":1,"92":1,"112":4}}],["argument",{"2":{"14":1}}],["are",{"2":{"9":1,"10":1,"21":1,"29":2,"30":1,"36":1,"50":1}}],["apply",{"2":{"39":1}}],["applied",{"2":{"34":1,"44":1}}],["appear",{"2":{"14":1}}],["api目录的内容",{"2":{"5":1}}],["api时仅显示guide",{"2":{"5":1}}],["api",{"0":{"64":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1},"2":{"3":3,"5":1,"7":15,"102":7,"103":6,"110":1,"111":1}}],["a",{"0":{"116":1},"2":{"14":1,"30":1,"33":1,"44":2,"81":8}}],["added",{"2":{"33":1}}],["add",{"2":{"0":3,"6":1,"7":2,"12":1,"15":1,"19":1,"20":1,"21":2,"22":1,"24":1,"25":1,"26":1,"31":2,"32":1,"33":1,"35":2,"37":1,"40":1,"41":1,"42":3,"44":2,"45":1,"46":1,"53":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"107":1}}],["下文将对每个选项进行说明",{"2":{"3":1}}],["下面是上述设置的输出示例",{"2":{"2":1}}],["每个选项都是可选的",{"2":{"3":1}}],["以便您可以导航到当前文件夹中的",{"2":{"74":1}}],["以下描述基于以下示例",{"2":{"3":1}}],["以下选项可用于多个侧边栏",{"2":{"3":1}}],["以覆盖现有样式所需的样式",{"2":{"0":1}}],["多个侧边栏",{"2":{"67":1,"68":1,"69":1,"113":1}}],["多个侧边栏选项",{"0":{"3":1},"1":{"4":1,"5":1,"6":1}}],["多侧边栏是一项允许根据特定",{"2":{"1":1}}],["多侧边栏操作方法",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1,"7":1}}],["lt",{"2":{"75":1,"90":1,"92":1}}],["latest",{"2":{"30":1}}],["longer",{"2":{"29":1}}],["lowercase",{"2":{"11":1}}],["lint",{"2":{"47":1}}],["links",{"2":{"27":1,"36":1,"46":1}}],["link",{"2":{"2":4,"13":1,"14":2,"21":1,"28":2,"33":1,"44":1,"112":3}}],["liudonghua123",{"2":{"15":1}}],["letter",{"2":{"11":1}}],["left",{"2":{"0":2}}],["level",{"2":{"0":3,"24":1}}],["`documentrootpath`",{"2":{"66":1}}],["`",{"2":{"2":1}}],["once",{"2":{"50":1}}],["only",{"2":{"21":1,"46":1,"59":1,"61":1}}],["one",{"2":{"2":3,"3":2,"6":3,"7":3,"102":1,"103":1}}],["old",{"2":{"21":1,"28":1}}],["object",{"2":{"18":1}}],["option",{"2":{"11":1,"12":2,"14":1,"15":1,"16":1,"17":3,"18":2,"19":1,"20":1,"21":4,"22":1,"24":1,"25":2,"26":1,"28":2,"31":3,"32":1,"33":5,"34":1,"35":2,"37":3,"40":2,"41":1,"42":5,"43":1,"44":2,"46":1,"50":2,"53":1,"56":2,"57":1,"58":1,"60":1}}],["options",{"2":{"9":1,"11":1,"18":1,"21":1,"28":1,"29":2,"30":2,"33":1,"36":1,"44":1,"109":1,"110":1}}],["of",{"2":{"10":1,"14":1,"15":3,"24":1,"28":1,"31":1,"33":3,"37":2,"51":1,"99":1}}],["order",{"2":{"59":1,"78":4,"83":1}}],["ordering",{"2":{"24":1}}],["org",{"2":{"50":1}}],["or",{"2":{"2":1,"18":1,"21":1,"36":1,"37":1,"40":1,"50":1}}],["upgrade",{"2":{"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1}}],["update",{"2":{"30":1,"38":1,"49":1}}],["unknown",{"2":{"70":1}}],["underscoretospace",{"0":{"87":1},"2":{"44":1,"65":1,"111":1}}],["undefined",{"2":{"36":1,"50":1,"84":1,"101":1}}],["unnecessary",{"2":{"38":1}}],["unintended",{"2":{"10":1}}],["url",{"2":{"29":1}}],["uri",{"0":{"7":1},"2":{"1":1,"7":3}}],["using",{"2":{"11":1,"12":1,"17":2,"31":1}}],["useindexfileforfoldermenuinfo",{"2":{"28":1,"33":1}}],["usefolderlinkasindexpage",{"2":{"33":3,"35":1}}],["usefolderlinkfromindexfile",{"0":{"74":1},"2":{"21":1,"28":1,"65":1,"111":1}}],["usefoldertitlefromindexfile",{"0":{"73":1},"2":{"9":1,"10":1,"28":1,"65":1,"111":1}}],["users",{"2":{"18":1}}],["usetitlefrom",{"2":{"17":1}}],["usetitlefromfrontmatter",{"0":{"71":1},"2":{"2":1,"15":1,"46":1,"65":1,"73":1,"111":1}}],["usetitlefromfileheading",{"0":{"70":1},"2":{"2":1,"31":1,"46":1,"60":1,"65":1,"73":1,"111":1,"112":1}}],["used",{"2":{"15":1,"50":1}}],["use",{"2":{"10":1,"16":1,"30":1,"46":1,"63":1}}],["必须传递数组参数",{"2":{"2":1}}],["但按链接而不是文件标题排序",{"2":{"82":1}}],["但如果您使用",{"2":{"103":1}}],["但如果使用usetitlefromfileheading或usetitlefromfrontmatter选项",{"2":{"76":1}}],["但如果",{"2":{"73":1,"74":1}}],["但当你想显示按步骤深入的文件夹时",{"2":{"7":1}}],["但有时您可能需要为",{"2":{"5":1}}],["但是",{"2":{"4":1,"6":1,"7":1,"93":1}}],["但我们建议您首先参考api页面上对每个选项的描述",{"2":{"3":1}}],["但应根据具体情况正确使用",{"2":{"3":1}}],["但传递一个数组",{"2":{"2":1}}],["但看起来处于相同的层级",{"2":{"0":1}}],["像以前一样使用generatesidebar函数",{"2":{"2":1}}],["中",{"2":{"107":1}}],["中使用它",{"2":{"107":1}}],["中字符串之前的日期",{"2":{"98":1}}],["中获取标题",{"2":{"73":1}}],["中显示菜单",{"2":{"7":1}}],["中实现此功能",{"2":{"2":1}}],["中进行一些简单设置",{"2":{"1":1}}],["您可能需要预先配置",{"2":{"107":1}}],["您可以为特定文件定义模块脚本",{"2":{"116":1}}],["您可以使用",{"2":{"108":1}}],["您可以使用其他名称",{"2":{"91":1}}],["您可以在前缀分隔符值上设置正则表达式来绕过它",{"2":{"97":1}}],["您可以在",{"2":{"67":1,"68":1,"69":1}}],["您还可以使用正则表达式",{"2":{"98":1}}],["您应该能够通过重写功能导航到页面",{"2":{"6":1}}],["您也可以使用不同的设置进行配置",{"2":{"2":1}}],["您需要使用",{"2":{"107":1}}],["您需要同时使用vitepress的路由功能",{"2":{"7":1}}],["您需要采用与现有设置不同的方法",{"2":{"2":1}}],["您需要通过",{"2":{"0":1}}],["您希望隐藏guide的子菜单",{"2":{"2":1}}],["同样的排列规则也适用于子目录",{"2":{"75":1}}],["同样",{"2":{"2":1}}],["隐藏config的子菜单",{"2":{"2":1}}],["当您有重写规则并且存在具有相同文件夹名称的子文件时",{"2":{"103":1}}],["当菜单名称通过",{"2":{"88":1}}],["当",{"2":{"7":1}}],["当然",{"2":{"2":1}}],["当guide位于",{"2":{"2":1}}],["当url位于",{"2":{"2":1}}],["当你以后创建动态页面时",{"2":{"0":1}}],["functions",{"2":{"112":2}}],["full",{"2":{"17":1}}],["fs",{"2":{"58":1}}],["false",{"2":{"44":1,"50":1,"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"101":1,"102":1,"103":1,"104":1,"105":1,"111":20}}],["frontmatter应位于文档顶部",{"2":{"71":1}}],["frontmatterorderdefaultvalue",{"0":{"83":1},"2":{"24":1,"65":1,"111":1}}],["frontmatter",{"2":{"18":1,"25":1,"40":1,"42":1,"72":2,"73":1,"78":1,"83":1,"86":1,"87":1,"88":1,"89":1}}],["frontmattertitlefieldname",{"0":{"72":1},"2":{"15":2,"65":1,"111":1}}],["from",{"2":{"0":1,"9":1,"15":1,"18":1,"25":1,"28":1,"30":1,"37":1,"109":1,"110":1,"111":1}}],["folderlinknotincludesfilename",{"0":{"103":1},"2":{"41":1,"65":1,"103":1,"111":1}}],["folder",{"2":{"24":1,"28":3,"33":2,"44":2,"111":1}}],["folders",{"2":{"21":1}}],["following",{"2":{"18":1}}],["formatting",{"2":{"30":1}}],["for",{"2":{"11":3,"18":1,"21":1,"24":1,"28":1,"29":1,"30":1,"33":1,"36":1,"37":1,"39":1,"40":1,"44":1,"51":1,"56":1}}],["four",{"2":{"2":3,"3":1,"7":1}}],["fine",{"2":{"18":1}}],["field",{"2":{"15":2,"18":3}}],["first",{"2":{"11":1,"62":1,"111":2}}],["fixed",{"2":{"34":1,"44":1}}],["fix",{"2":{"10":1,"11":1,"12":1,"13":1,"14":1,"17":1,"21":1,"23":1,"24":1,"27":1,"29":1,"43":1,"47":1,"48":1,"54":1,"55":1,"56":1,"58":1,"59":1}}],["files",{"2":{"31":1,"38":1}}],["filename",{"2":{"17":2}}],["file",{"2":{"9":1,"10":1,"14":1,"21":2,"28":1,"33":3,"40":1,"44":2,"45":1,"59":1}}],["fetched",{"2":{"9":1}}],["就像这样",{"2":{"2":1}}],["就能轻松实现这一功能",{"2":{"1":1}}],["和",{"2":{"2":1,"7":1,"77":1}}],["和一个custom",{"2":{"0":1}}],["gist",{"2":{"115":1}}],["github",{"2":{"111":1,"114":1,"115":1}}],["gt",{"2":{"75":1,"90":1,"92":1,"97":3}}],["g",{"2":{"28":1,"98":1}}],["generator",{"2":{"31":1}}],["generatesidebar",{"2":{"2":1,"6":2,"7":1,"108":1,"109":2,"110":1,"111":2}}],["getting",{"2":{"112":2}}],["gets",{"2":{"33":1}}],["get",{"2":{"10":1,"28":1}}],["guide目录中的文件",{"2":{"4":1}}],["guide页面时",{"2":{"2":1}}],["guide",{"2":{"2":7,"3":1,"5":2,"6":7,"7":7,"68":1,"72":1,"102":1,"103":4,"111":1}}],["groups",{"2":{"50":2}}],["group",{"2":{"0":1,"50":1,"53":1}}],["其中有名为",{"2":{"2":1}}],["的一个插件",{"2":{"113":1}}],["的配置文件可能有不同的文件名或扩展名",{"2":{"110":1}}],["的链接",{"2":{"100":1}}],["的更多信息",{"2":{"100":1,"101":1}}],["的第一部分",{"2":{"98":1}}],["的",{"2":{"78":1,"83":1,"108":1}}],["的路径",{"2":{"67":1}}],["的路径中",{"2":{"6":1}}],["的子菜单",{"2":{"7":1}}],["的子目录",{"2":{"2":1}}],["的菜单",{"0":{"7":1}}],["的根项目",{"2":{"2":1}}],["的官方文档",{"2":{"1":1}}],["首先",{"2":{"2":1,"107":1,"108":1}}],["基本用法",{"0":{"2":1}}],["mjs",{"2":{"116":1}}],["mm",{"2":{"77":1,"79":1}}],["me",{"2":{"67":2}}],["menus",{"2":{"50":1}}],["menu",{"2":{"14":1,"18":1,"25":1,"28":1,"33":1,"50":2,"77":2}}],["multi",{"2":{"39":1}}],["multiple",{"2":{"1":1,"13":1,"27":1,"29":1,"40":2}}],["manualsortfilenamebypriority",{"0":{"75":1},"2":{"33":1,"65":1,"111":1}}],["marked",{"2":{"28":1}}],["markdown",{"2":{"25":1,"30":1,"31":2,"42":1,"71":1,"72":1,"73":1,"86":1,"87":1,"88":1,"89":1,"91":1,"104":1}}],["make",{"2":{"28":1,"39":1}}],["may",{"2":{"10":1}}],["mocha",{"2":{"61":1}}],["mocharc",{"2":{"45":1}}],["module",{"2":{"58":1,"117":2}}],["modify",{"2":{"25":1}}],["more",{"2":{"14":1,"18":1,"21":1,"28":1,"37":1}}],["md中的文件",{"2":{"102":1}}],["md文件",{"2":{"95":1,"96":1}}],["md",{"2":{"0":2,"2":8,"3":7,"6":1,"7":9,"14":1,"21":2,"28":2,"33":3,"37":1,"38":1,"40":1,"46":1,"51":1,"54":1,"66":2,"70":1,"73":4,"74":3,"102":4,"103":4,"111":4}}],["how",{"2":{"112":1}}],["however",{"2":{"29":1}}],["hide等",{"2":{"91":1}}],["hyphentospace",{"0":{"86":1},"2":{"44":2,"65":1,"111":1,"112":1}}],["h1",{"2":{"42":1,"70":2}}],["have",{"2":{"30":1}}],["has",{"2":{"0":1,"11":1,"21":1,"28":1,"50":1}}],["hello",{"2":{"66":1,"71":1,"97":6,"98":2}}],["help",{"2":{"6":5}}],["heading",{"2":{"25":1}}],["https",{"2":{"1":1,"7":1,"50":1,"72":1,"111":2,"114":1,"115":1}}],["要探索除",{"2":{"114":1}}],["要测试输出结果如何",{"2":{"110":1}}],["要删除",{"2":{"98":1}}],["要删除菜单文本中残留的日期前缀",{"2":{"77":1}}],["要扫描的文件是",{"2":{"67":1}}],["要在",{"2":{"2":1,"107":1}}],["要先了解有关多侧边栏的更多信息",{"2":{"1":1}}],["要解决这个问题",{"2":{"0":1,"6":1,"7":1}}],["最终",{"2":{"1":1}}],["垂直分隔线可能不会被选中",{"2":{"0":1}}],["需要注意的是",{"2":{"0":1}}],["这可能需要将项目转换为",{"2":{"117":1}}],["这取决于您的项目设置",{"2":{"110":1}}],["这将使用一个菜单步骤",{"2":{"99":1}}],["这会导致菜单以非预期的顺序显示",{"2":{"81":1}}],["这适用于文件和目录",{"2":{"75":1}}],["这是理想的选择",{"2":{"97":1}}],["这是",{"2":{"66":1}}],["这次",{"2":{"7":1}}],["这些选项的值在结果中的使用情况如下",{"2":{"2":1}}],["这里看到的垂直分隔线只是用css创建的",{"2":{"0":1}}],["这样就能更容易地看到子内容所在组的第一级层次结构",{"2":{"0":1}}],["这不是vitepress侧边栏的问题",{"2":{"0":1}}],["服务器",{"2":{"0":1}}],["27",{"0":{"43":1,"44":1,"61":1}}],["26",{"0":{"22":1,"26":1,"45":1,"46":1,"47":1}}],["2022",{"0":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1}}],["2023",{"0":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["2024",{"0":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"2":{"77":2,"98":1}}],["20",{"0":{"21":1,"48":1,"49":1}}],["21",{"0":{"20":1,"28":1}}],["28",{"0":{"19":1,"41":1,"42":1}}],["23",{"0":{"16":1,"17":1,"18":1,"54":1}}],["24",{"0":{"13":1,"14":1,"15":1,"33":1,"37":1}}],["22",{"0":{"12":1,"19":1,"27":1}}],["2",{"0":{"10":1,"13":1,"16":1,"38":1,"50":1,"54":1,"110":1},"2":{"81":2,"98":2,"111":1}}],["25",{"0":{"9":1,"10":1,"11":1,"12":1,"35":1,"36":1,"62":1,"63":1}}],["25s",{"2":{"0":1}}],["2px",{"2":{"0":1}}],["2是directory",{"2":{"0":1}}],["root",{"2":{"40":1}}],["rootgroup",{"2":{"37":1,"99":2,"100":2,"101":1}}],["rootgroupcollapsed选项设置是否展开根组的子项",{"2":{"101":1}}],["rootgroupcollapsed",{"0":{"101":1},"2":{"29":1,"30":1,"34":1,"37":1,"65":1,"111":1}}],["rootgrouplink",{"0":{"100":1},"2":{"29":1,"30":1,"44":1,"65":1,"111":1}}],["rootgrouptext",{"0":{"99":1},"2":{"29":1,"30":1,"65":1,"100":1,"101":1,"111":1}}],["route",{"2":{"7":1}}],["routing",{"2":{"7":1}}],["role=",{"2":{"0":1}}],["require",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"61":1}}],["required",{"2":{"29":1}}],["release",{"2":{"51":1,"62":1,"63":1}}],["rename",{"2":{"43":1}}],["renamed",{"2":{"11":1,"21":1,"33":2,"40":1,"42":2}}],["read",{"2":{"40":1}}],["readme",{"2":{"21":1,"28":1,"37":1,"38":1,"40":1,"46":1,"54":1}}],["replacing",{"2":{"33":1}}],["replaced",{"2":{"18":1}}],["removed",{"2":{"50":1}}],["remove",{"2":{"31":1,"38":1,"45":1,"51":1}}],["removeprefixafterordering",{"0":{"97":1},"2":{"17":2,"20":1,"65":1,"77":1,"98":1,"111":1}}],["restored",{"2":{"30":1}}],["respectively",{"2":{"28":1}}],["resolvepath>",{"2":{"2":2}}],["resolvepath",{"0":{"5":1,"68":1},"2":{"2":2,"6":2,"7":2,"39":1,"40":1,"65":1,"111":1}}],["reformat",{"2":{"59":1}}],["reflected",{"2":{"25":1}}],["reference",{"2":{"1":1}}],["retrieve",{"2":{"24":1}}],["return",{"2":{"17":1}}],["recursive",{"2":{"24":1}}],["recognized",{"2":{"21":1}}],["regular",{"2":{"19":1}}],["regardless",{"2":{"14":1}}],["revert",{"2":{"16":1}}],["rewrite",{"2":{"12":1}}],["rewrites",{"2":{"6":2,"7":2}}],["radius",{"2":{"0":1}}],["scripts",{"2":{"117":1}}],["scan",{"2":{"67":2}}],["scanstartpath>",{"2":{"2":1}}],["scanstartpath",{"0":{"4":1,"67":1},"2":{"2":2,"3":1,"5":1,"6":2,"7":2,"40":1,"65":1,"67":1,"111":1,"112":1}}],["sindresorhus",{"2":{"115":1}}],["sidebar是一个esm模块",{"2":{"115":1}}],["sidebar是",{"2":{"113":1}}],["sidebar是用esm编写的",{"2":{"107":1}}],["sidebar属性中的generatesidebar方法",{"2":{"110":1}}],["sidebar的选项",{"2":{"2":1}}],["sidebars",{"2":{"1":1,"13":1,"27":1,"29":1,"40":1}}],["sidebar",{"2":{"1":2,"2":1,"6":2,"7":1,"11":2,"15":1,"39":1,"106":1,"107":3,"108":2,"109":2,"110":2,"111":3,"114":1}}],["shell",{"2":{"107":1}}],["show",{"2":{"21":1}}],["shown",{"2":{"14":1}}],["should",{"2":{"18":1,"28":1}}],["same",{"2":{"44":1}}],["syntax",{"2":{"30":1,"31":2}}],["string|regexp",{"2":{"98":1}}],["string|null",{"2":{"67":1,"68":1,"69":1,"91":1}}],["string",{"2":{"66":1,"72":1,"75":1,"90":1,"92":1,"99":1,"100":1}}],["strips",{"2":{"31":1}}],["stripping",{"2":{"30":1}}],["started",{"2":{"112":2}}],["start",{"2":{"7":1}}],["specified",{"2":{"50":1}}],["specify",{"2":{"18":1,"28":1}}],["specifying",{"2":{"11":1}}],["special",{"2":{"40":1}}],["split",{"2":{"21":1,"28":1}}],["so",{"2":{"33":1}}],["some",{"2":{"31":1}}],["sortbyfilename",{"2":{"33":1,"57":1}}],["sort",{"2":{"21":1,"24":1}}],["sortmenusorderbydescending",{"0":{"80":1},"2":{"33":1,"65":1,"78":1,"111":1}}],["sortmenusordernumericallyfromlink",{"0":{"82":1},"2":{"21":2,"65":1,"111":1}}],["sortmenusordernumericallyfromtitle",{"0":{"81":1},"2":{"21":1,"65":1,"111":1}}],["sortmenusordernumerically",{"2":{"21":1,"26":1}}],["sortmenusbyname",{"0":{"76":1},"2":{"33":1,"65":1,"72":1,"77":1,"80":1,"111":1}}],["sortmenusbyfrontmatterorder",{"0":{"78":1},"2":{"32":1,"65":1,"80":1,"83":1,"111":1}}],["sortmenusbyfrontmatterdate",{"0":{"79":1},"2":{"21":1,"65":1,"111":1}}],["sortmenusbyfiledateprefix",{"0":{"77":1},"2":{"19":1,"65":1}}],["solid",{"2":{"0":1}}],["s",{"2":{"18":1}}],["serve",{"2":{"117":2}}],["secret",{"2":{"111":2}}],["second",{"2":{"111":1}}],["separate",{"2":{"37":1}}],["separator",{"2":{"17":1}}],["see",{"2":{"18":1,"21":1,"28":1,"37":1,"46":1,"50":1}}],["setting",{"2":{"33":1}}],["settings",{"2":{"18":1,"39":2}}],["set",{"2":{"10":1,"31":1,"33":1,"37":1}}],["sub",{"2":{"67":2,"68":1}}],["subfile",{"2":{"10":1,"44":1}}],["sure",{"2":{"28":1,"39":1}}],["support",{"2":{"11":2,"40":1}}],["src",{"2":{"0":1,"66":1,"117":3}}],["b",{"0":{"117":1}}],["boolean",{"2":{"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"101":1,"102":1,"103":1,"104":1,"105":1}}],["border",{"2":{"0":2}}],["bug",{"2":{"55":1}}],["build",{"2":{"48":1,"117":2}}],["button",{"2":{"0":1}}],["by",{"2":{"18":1,"21":1,"50":1,"53":1}}],["blank",{"2":{"13":1}}],["better",{"2":{"30":1}}],["being",{"2":{"27":1,"34":1,"44":1}}],["be",{"2":{"18":2,"44":2}}],["been",{"2":{"11":1,"21":1,"28":1,"30":1,"50":1}}],["behavior",{"2":{"10":1,"37":1}}],["breaking",{"2":{"11":1,"18":1,"21":1,"28":1,"31":1,"33":3,"40":1,"42":2,"44":1,"50":2}}],["base",{"2":{"2":3,"29":1}}],["basepath和resolvepath",{"2":{"3":1}}],["basepath",{"0":{"6":1,"69":1},"2":{"2":2,"6":1,"12":1,"65":1,"111":1}}],["background",{"2":{"0":1}}],["17",{"0":{"26":1}}],["170",{"2":{"9":1,"10":1}}],["10",{"0":{"25":1,"34":1,"35":1,"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"81":3}}],["11",{"0":{"24":1,"33":1,"54":1,"55":1,"56":1,"57":1,"58":1}}],["18",{"0":{"23":1,"24":1,"25":1,"30":1,"38":1},"2":{"107":1}}],["19",{"0":{"22":1,"29":1}}],["12",{"0":{"21":1,"24":1,"32":2,"51":1,"52":1,"53":1}}],["15",{"0":{"17":1,"20":1,"29":1,"39":1}}],["14",{"0":{"30":1},"2":{"61":1}}],["147",{"2":{"14":1}}],["146",{"2":{"12":1}}],["16",{"0":{"16":1,"27":1,"28":1}}],["167",{"2":{"13":1}}],["16px",{"2":{"0":1}}],["13",{"0":{"13":1,"18":1,"31":2,"40":1}}],["1",{"0":{"9":1,"10":1,"11":2,"12":1,"13":1,"14":2,"15":1,"16":1,"17":2,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":1,"36":1,"37":1,"38":1,"39":2,"40":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":2,"52":2,"53":2,"54":2,"55":3,"56":2,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":2,"109":1},"2":{"50":1,"81":2,"85":2,"97":8,"98":1,"117":1}}],["1px",{"2":{"0":1}}],["1的子文件",{"2":{"0":1}}],["04",{"0":{"48":1,"49":1}}],["01",{"0":{"23":1,"51":1,"52":1},"2":{"77":3,"98":2}}],["02",{"0":{"22":1,"25":1,"50":1,"55":1,"56":1,"57":1,"58":1},"2":{"77":1}}],["05",{"0":{"16":1,"17":1,"18":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["06",{"0":{"15":1,"39":1,"40":1}}],["07",{"0":{"14":1,"15":1,"35":1,"36":1,"37":1,"38":1,"50":1}}],["08",{"0":{"12":1,"13":1,"33":1,"34":2,"53":1}}],["03",{"0":{"9":1,"10":1,"11":1,"19":1,"20":1,"21":1,"23":1}}],["09",{"0":{"9":1,"10":1,"11":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1}}],["0",{"0":{"12":1,"15":1,"18":1,"19":1,"20":1,"21":1,"22":1,"25":1,"26":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"35":1,"37":1,"40":1,"42":1,"44":1,"46":1,"47":1,"49":1,"50":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":3},"2":{"0":2,"50":2,"78":1,"83":1,"98":3,"111":1,"117":2}}],["via",{"2":{"107":3}}],["vitepress侧边栏用于各种项目环境",{"2":{"114":1}}],["vitepresssidebar",{"2":{"110":2}}],["vitepresssidebaroptions",{"2":{"11":1,"109":2,"110":2}}],["vitepress无法检测到这一点",{"2":{"7":1}}],["vitepress使用此选项在遇到特定uri时显示相关菜单",{"2":{"5":1}}],["vitepress目录所在的路径",{"2":{"66":1}}],["vitepress目录所在的位置",{"2":{"4":1}}],["vitepress目录下创建一个theme目录",{"2":{"0":1}}],["vitepress将按照预期输出选项",{"2":{"1":1}}],["vitepress的自定义css",{"2":{"0":1}}],["vitepress",{"2":{"0":4,"1":2,"2":1,"3":1,"7":1,"11":1,"50":2,"64":1,"66":2,"72":1,"106":1,"107":5,"108":3,"109":1,"110":4,"111":2,"112":1,"113":2,"114":1,"115":1,"117":3}}],["vuejs",{"2":{"50":1}}],["valid",{"2":{"46":1}}],["validation",{"2":{"40":1}}],["values",{"2":{"18":1,"46":1}}],["value",{"2":{"15":1,"18":1,"36":1,"44":2,"72":1}}],["var",{"2":{"0":1}}],["version",{"2":{"10":2,"30":2,"61":1,"117":1}}],["vp",{"2":{"0":1}}],["vpsidebaritem",{"2":{"0":1}}],["接下来",{"2":{"0":1}}],["i",{"2":{"107":2}}],["improved",{"2":{"31":1,"40":2}}],["important",{"2":{"0":1}}],["import",{"2":{"0":1,"58":1}}],["item",{"2":{"37":1,"44":1}}],["items`",{"2":{"2":1}}],["items",{"2":{"0":1,"2":3,"11":1,"24":1,"112":4}}],["its",{"2":{"28":1}}],["it",{"2":{"14":1,"15":1,"33":1}}],["ignore",{"2":{"10":1}}],["issue",{"2":{"23":1,"34":1,"44":1,"48":1}}],["is",{"2":{"9":1,"13":1,"14":1,"17":1,"18":2,"21":1,"25":1,"28":2,"33":1,"37":2,"44":2,"50":4,"72":1,"91":1}}],["if",{"2":{"9":1,"10":2,"14":1,"15":1,"17":1,"31":1,"33":1,"44":2,"50":3}}],["i18n",{"2":{"5":1}}],["indent",{"2":{"54":1}}],["indexof",{"2":{"112":2}}],["indexes",{"2":{"24":1}}],["index",{"2":{"0":3,"2":2,"3":1,"7":1,"9":1,"10":1,"13":1,"14":2,"21":2,"28":3,"33":4,"66":1,"73":5,"74":3,"102":1,"103":1}}],["inspections",{"2":{"40":1}}],["instead",{"2":{"15":1,"28":1}}],["into",{"2":{"21":1,"28":1}}],["information",{"2":{"18":1,"21":1,"28":1,"33":1,"37":1}}],["in",{"2":{"13":1,"14":2,"17":1,"18":1,"21":1,"27":1,"30":1,"37":1,"44":2,"45":1,"46":1}}],["including",{"2":{"18":1}}],["includedotfiles",{"0":{"93":1},"2":{"42":1,"65":1,"111":1}}],["includeemptyfolder",{"0":{"94":1},"2":{"42":1,"65":1,"111":1}}],["includeemptygroup",{"2":{"42":1,"53":1}}],["includerootindexfile",{"0":{"95":1},"2":{"42":1,"65":1,"111":1}}],["includefolderindexfile",{"0":{"96":1},"2":{"35":1,"65":1,"73":1,"74":1,"111":1}}],["include",{"2":{"2":2,"14":1,"53":1}}],["incorrect",{"2":{"12":1}}],["jooy2",{"2":{"111":1,"114":1}}],["javascriptgeneratesidebar",{"2":{"7":1,"112":1}}],["javascriptexport",{"2":{"6":2,"7":1}}],["javascript",{"2":{"2":1,"112":4}}],["javascriptimport",{"2":{"0":1,"109":1,"110":1,"111":1}}],["json文件中",{"2":{"117":1}}],["json5",{"2":{"2":1,"117":1}}],["json",{"2":{"0":1,"45":2,"66":1}}],["js",{"2":{"0":3,"107":1,"116":1}}],["js文件中themeconfig",{"2":{"110":1}}],["js文件中",{"2":{"7":1}}],["js文件",{"2":{"0":1}}],["cjs",{"2":{"116":1}}],["cleanup",{"2":{"49":1,"59":1}}],["clearly",{"2":{"28":1}}],["created",{"2":{"27":1,"44":1,"50":2}}],["child",{"2":{"44":1}}],["characters",{"2":{"40":1}}],["change",{"2":{"61":1}}],["changed",{"2":{"11":1,"33":1}}],["changes",{"2":{"11":1,"18":1,"21":1,"28":1,"31":1,"33":3,"40":1,"42":2,"44":1,"50":2}}],["changelog",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1}}],["check",{"2":{"56":1}}],["checks",{"2":{"40":1}}],["checking",{"2":{"14":1}}],["cdget",{"2":{"11":1,"111":1}}],["capitalizefirst",{"0":{"88":1},"2":{"55":1,"56":1,"65":1,"111":1}}],["capitalizeeachwords",{"0":{"89":1},"2":{"11":1,"25":1,"65":1,"111":1}}],["can",{"2":{"18":1,"28":1}}],["cause",{"2":{"10":1}}],["code",{"2":{"51":1}}],["codes",{"2":{"49":1,"54":1,"59":2}}],["collapse",{"2":{"50":1}}],["collapsedepth",{"0":{"85":1},"2":{"37":1,"58":1,"65":1,"111":1}}],["collapsed",{"0":{"84":1},"2":{"36":1,"37":1,"50":2,"65":1,"101":1,"111":1}}],["collapsible",{"2":{"50":1}}],["color",{"2":{"0":1}}],["correct",{"2":{"29":1,"37":1,"58":1}}],["correctly",{"2":{"25":1,"34":1,"42":1}}],["const",{"2":{"109":1,"110":1}}],["conduct",{"2":{"51":1}}],["content",{"2":{"91":1}}],["contents",{"2":{"37":1,"99":1,"111":1}}],["containing",{"2":{"39":1}}],["contain",{"2":{"30":1,"46":1}}],["converting",{"2":{"11":1}}],["convertsamenamesubfiletogroupindexpage",{"0":{"102":1},"2":{"9":1,"10":2,"12":1,"43":1,"44":1,"65":1,"103":2,"111":1}}],["configs",{"2":{"50":1}}],["config页面时",{"2":{"2":1}}],["config",{"2":{"2":6,"3":1,"7":1,"50":1,"102":1,"103":1,"110":1}}],["commonjs",{"0":{"115":1},"1":{"116":1,"117":1},"2":{"107":1}}],["com",{"2":{"5":1,"11":1,"111":2,"114":1,"115":1}}],["c",{"2":{"0":1}}],["css",{"2":{"0":4}}],["css文件",{"2":{"0":1}}],["custom",{"2":{"0":3}}],["└─",{"2":{"0":4,"2":3,"3":4,"7":4,"66":2,"102":4,"103":4}}],["│",{"2":{"0":9,"2":4,"3":7,"7":7,"66":4,"102":5,"103":5}}],["d",{"2":{"107":3}}],["date数据类型",{"2":{"79":1}}],["dd或javascript",{"2":{"79":1}}],["dd",{"2":{"77":1}}],["does",{"2":{"33":1}}],["doesn",{"2":{"10":1}}],["domain",{"2":{"11":1}}],["documents",{"2":{"18":1}}],["documentation",{"2":{"11":2,"18":1,"20":1,"49":1}}],["documentrootpath中的路径不应包含在内",{"2":{"4":1}}],["documentrootpath是实际要扫描的根目录",{"2":{"4":1}}],["documentrootpath",{"0":{"66":1},"2":{"2":2,"6":2,"7":2,"40":1,"65":1,"67":2,"108":1,"111":1,"112":1}}],["docs",{"2":{"0":1,"2":4,"6":2,"7":5,"66":5,"67":3,"102":1,"103":1,"117":1}}],["do",{"2":{"2":2,"14":1,"16":1,"31":1,"53":1,"63":1}}],["dependents",{"2":{"114":1}}],["dependencies",{"2":{"38":1,"47":1,"49":1,"50":1,"52":1,"53":1,"54":1,"58":1,"60":1}}],["deprecated",{"2":{"18":1,"21":1,"28":1,"33":1}}],["debugprint",{"0":{"105":1},"2":{"31":1,"65":1,"110":1,"111":1}}],["defined",{"2":{"9":1,"10":1}}],["defineconfig",{"2":{"6":2,"7":1}}],["default",{"2":{"0":1,"1":1,"6":2,"7":1,"15":1,"44":1,"53":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"109":1,"110":1,"111":1}}],["defaulttheme",{"2":{"0":2}}],["devdependencies",{"2":{"107":1}}],["development",{"2":{"59":1,"61":1}}],["dev",{"2":{"1":1,"7":1,"72":1,"117":2}}],["dir",{"2":{"67":2}}],["directories",{"2":{"44":1}}],["directory",{"2":{"0":1,"12":1,"14":1,"66":1}}],["displayed",{"2":{"37":1,"44":1,"50":1}}],["display",{"2":{"33":1}}],["divider",{"2":{"0":1}}],["├─",{"2":{"0":6,"2":6,"3":7,"7":6,"66":6,"102":3,"103":3}}],["tsconfig",{"2":{"45":1}}],["ts而不是index",{"2":{"0":1}}],["tag",{"2":{"42":1}}],["table",{"2":{"37":1,"99":1}}],["tested",{"2":{"63":1}}],["test",{"2":{"31":1,"61":1}}],["textdocs",{"2":{"3":1}}],["text",{"2":{"0":1,"2":5,"15":1,"66":1,"98":2,"112":7}}],["types",{"2":{"11":1}}],["typescript",{"2":{"11":2,"23":1,"47":1}}],["type",{"2":{"11":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"117":2}}],["t",{"2":{"10":1}}],["titles",{"2":{"30":1,"46":1}}],["title",{"2":{"9":2,"10":1,"15":1,"21":1,"33":2,"46":1,"71":2,"72":2,"91":1,"111":1}}],["top",{"2":{"24":1}}],["together",{"2":{"9":1,"10":1,"16":1,"17":1,"21":1,"43":1}}],["to",{"2":{"2":1,"10":1,"11":4,"17":1,"18":1,"21":3,"25":1,"28":1,"30":1,"31":2,"33":3,"37":1,"39":1,"40":1,"42":2,"44":3,"61":1,"112":1}}],["troubleshooting",{"2":{"36":1}}],["try",{"2":{"9":1}}],["true的情况下构建",{"2":{"110":1}}],["true的文档",{"2":{"91":1}}],["true时",{"2":{"80":1}}],["true",{"2":{"2":2,"18":1,"31":1,"44":1,"50":1,"70":1,"72":1,"73":2,"74":2,"77":2,"78":1,"80":1,"83":1,"86":1,"87":1,"88":1,"89":1,"91":1,"101":1,"103":1,"104":1,"111":5,"112":2}}],["transition",{"2":{"0":1}}],["two",{"2":{"2":3,"3":2,"7":3,"102":1,"103":1}}],["third",{"2":{"111":1}}],["this",{"2":{"0":3,"6":1,"7":2,"10":2,"30":1,"37":1,"44":1,"72":1,"91":1}}],["that",{"2":{"18":1,"30":1,"44":1,"46":1}}],["then",{"2":{"44":1}}],["these",{"2":{"29":1,"30":1}}],["therefore",{"2":{"21":1,"28":1}}],["the",{"2":{"10":3,"11":1,"14":3,"15":2,"17":2,"18":5,"21":4,"25":1,"28":7,"29":1,"30":2,"31":3,"33":11,"37":4,"40":1,"42":2,"44":6,"50":4}}],["themeconfig",{"2":{"6":2,"7":1,"109":1,"110":1,"111":1}}],["theme",{"2":{"0":2,"1":1,"50":1}}],["three",{"2":{"2":3,"3":1,"7":1}}],["在package",{"2":{"117":1}}],["在使用本模块之前",{"2":{"107":1}}],["在指定的深度",{"2":{"85":1}}],["在scanstartpath中设置的路径之外",{"2":{"67":1}}],["在documentrootpath中设置的路径中的文件",{"2":{"67":1}}],["在",{"2":{"0":2,"7":1,"71":1,"102":1,"108":1}}],["在多层侧边栏中",{"2":{"0":1}}],["上面的例子通常是在路径按步骤定义的情况下",{"2":{"7":1}}],["上面",{"2":{"0":1}}],["例如",{"2":{"0":1,"4":1,"5":1,"6":1,"7":1,"67":1,"68":1,"77":1,"81":1,"91":1,"97":1,"98":2,"102":1,"103":1}}],["带缩进的多级侧边栏",{"0":{"0":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.DYw9iShf.js b/assets/chunks/VPLocalSearchBox.DYw9iShf.js new file mode 100644 index 00000000..57f41956 --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.DYw9iShf.js @@ -0,0 +1,7 @@ +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Re=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ce,p as se,h as pe,ah as et,ai as Rt,aj as Ct,q as je,ak as Mt,d as At,D as be,al as tt,am as Lt,an as Dt,s as Pt,ao as zt,v as Me,P as ue,O as ye,ap as Vt,aq as jt,W as $t,R as Bt,$ as Wt,o as G,b as Kt,j as _,a0 as Jt,k as D,ar as Ut,as as qt,at as Gt,c as Y,n as st,e as we,C as nt,F as it,a as de,t as he,au as Ht,av as rt,aw as Qt,a6 as Yt,ac as Zt,ax as Xt,_ as es}from"./framework.Gf1jShja.js";import{u as ts,c as ss}from"./theme.CSC3rl9h.js";const ns={root:()=>Ce(()=>import("./@localSearchIndexroot.DJBmoFrB.js"),[]),ko:()=>Ce(()=>import("./@localSearchIndexko.CuKZQh0C.js"),[]),zhHans:()=>Ce(()=>import("./@localSearchIndexzhHans.CF2nUXOk.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Te=mt.join(","),gt=typeof Element>"u",ie=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ie=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Ne=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},is=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Ne(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Te));return t&&ie.call(e,Te)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Ne(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ie.call(i,Te);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Ne(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ne=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||is(e))&&!wt(e)?0:e.tabIndex},rs=function(e,t){var s=ne(e);return s<0&&t&&!wt(e)?0:s},as=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},os=function(e){return xt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},cs=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ie.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Ie(e);if(l&&!l.shadowRoot&&n(l)===!0)return at(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(fs(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return at(e);return!1},vs=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},gs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=rs(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(as).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},bs=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ms}):s=bt(e,t.includeContainer,$e.bind(null,t)),gs(s)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:ke.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,ke.bind(null,t)),s},re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ie.call(e,Te)===!1?!1:$e(t,e)},ws=mt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ie.call(e,ws)===!1?!1:ke(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function ot(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function lt(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Es=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Ts=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Is=function(e){return ve(e)&&!e.shiftKey},Ns=function(e){return ve(e)&&e.shiftKey},ut=function(e){return setTimeout(e,0)},dt=function(e,t){var s=-1;return e.every(function(n,r){return t(n)?(s=r,!1):!0}),s},fe=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1?g-1:0),E=1;E=0)u=s.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||h("fallbackFocus")}if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=bs(u,r.tabbableOptions),g=ys(u,r.tabbableOptions),S=d.length>0?d[0]:void 0,E=d.length>0?d[d.length-1]:void 0,k=g.find(function(v){return re(v)}),F=g.slice().reverse().find(function(v){return re(v)}),M=!!d.find(function(v){return ne(v)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:M,firstTabbableNode:S,lastTabbableNode:E,firstDomTabbableNode:k,lastDomTabbableNode:F,nextTabbableNode:function(p){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,O=d.indexOf(p);return O<0?N?g.slice(g.indexOf(p)+1).find(function(z){return re(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return re(z)}):d[O+(N?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function T(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?T(d.shadowRoot):d},y=function T(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){T(m());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Es(u)&&u.select()}},x=function(u){var d=h("setReturnFocus",u);return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,S=u.isBackward,E=S===void 0?!1:S;d=d||xe(g),f();var k=null;if(i.tabbableGroups.length>0){var F=c(d,g),M=F>=0?i.containerGroups[F]:void 0;if(F<0)E?k=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:k=i.tabbableGroups[0].firstTabbableNode;else if(E){var v=dt(i.tabbableGroups,function(I){var L=I.firstTabbableNode;return d===L});if(v<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!re(d,r.tabbableOptions)&&!M.nextTabbableNode(d,!1))&&(v=F),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,N=i.tabbableGroups[p];k=ne(d)>=0?N.lastTabbableNode:N.lastDomTabbableNode}else ve(g)||(k=M.nextTabbableNode(d,!1))}else{var O=dt(i.tabbableGroups,function(I){var L=I.lastTabbableNode;return d===L});if(O<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!re(d,r.tabbableOptions)&&!M.nextTabbableNode(d))&&(O=F),O>=0){var z=O===i.tabbableGroups.length-1?0:O+1,V=i.tabbableGroups[z];k=ne(d)>=0?V.firstTabbableNode:V.firstDomTabbableNode}else ve(g)||(k=M.nextTabbableNode(d))}}else k=h("fallbackFocus");return k},R=function(u){var d=xe(u);if(!(c(d,u)>=0)){if(fe(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}fe(r.allowOutsideClick,u)||u.preventDefault()}},C=function(u){var d=xe(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var S,E=!0;if(i.mostRecentlyFocusedNode)if(ne(i.mostRecentlyFocusedNode)>0){var k=c(i.mostRecentlyFocusedNode),F=i.containerGroups[k].tabbableNodes;if(F.length>0){var M=F.findIndex(function(v){return v===i.mostRecentlyFocusedNode});M>=0&&(r.isKeyForward(i.recentNavEvent)?M+1=0&&(S=F[M-1],E=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return ne(p)>0})})||(E=!1);else E=!1;E&&(S=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(S||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},K=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(ve(u)&&u.preventDefault(),y(g))},H=function(u){if(Ts(u)&&fe(r.escapeDeactivates,u)!==!1){u.preventDefault(),o.deactivate();return}(r.isKeyForward(u)||r.isKeyBackward(u))&&K(u,r.isKeyBackward(u))},W=function(u){var d=xe(u);c(d,u)>=0||fe(r.clickOutsideDeactivates,u)||fe(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},j=function(){if(i.active)return ct.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?ut(function(){y(m())}):y(m()),s.addEventListener("focusin",C,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",W,{capture:!0,passive:!1}),s.addEventListener("keydown",H,{capture:!0,passive:!1}),o},$=function(){if(i.active)return s.removeEventListener("focusin",C,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",W,!0),s.removeEventListener("keydown",H,!0),o},Oe=function(u){var d=u.some(function(g){var S=Array.from(g.removedNodes);return S.some(function(E){return E===i.mostRecentlyFocusedNode})});d&&y(m())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Oe):void 0,J=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){A.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),S=l(u,"checkCanFocusTrap");S||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var E=function(){S&&f(),j(),J(),g==null||g()};return S?(S(i.containers.concat()).then(E,E),this):(E(),this)},deactivate:function(u){if(!i.active)return this;var d=lt({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,$(),i.active=!1,i.paused=!1,J(),ct.deactivateTrap(n,o);var g=l(d,"onDeactivate"),S=l(d,"onPostDeactivate"),E=l(d,"checkCanReturnFocus"),k=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var F=function(){ut(function(){k&&y(x(i.nodeFocusedBeforeActivation)),S==null||S()})};return k&&E?(E(x(i.nodeFocusedBeforeActivation)).then(F,F),this):(F(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=l(u,"onPause"),g=l(u,"onPostPause");return i.paused=!0,d==null||d(),$(),J(),g==null||g(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=l(u,"onUnpause"),g=l(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),j(),J(),g==null||g(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),J(),this}},o.updateContainerElements(e),o};function Os(a,e={}){let t;const{immediate:s,...n}=e,r=se(!1),i=se(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=pe(()=>{const f=et(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=et(b);return typeof y=="string"?y:Rt(y)}).filter(Ct)});return je(m,f=>{f.length&&(t=Fs(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class oe{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{oe.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new oe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let Rs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new oe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return oe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=oe.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Cs(a){const e=new Rs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function Ee(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const Ms="ENTRIES",_t="KEYS",St="VALUES",P="";class Le{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=ae(this._path);if(ae(t)===P)return{done:!1,value:this.result()};const s=e.get(ae(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=ae(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>ae(e)).filter(e=>e!==P).join("")}value(){return ae(this._path).node.get(P)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const ae=a=>a[a.length-1],As=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===P){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class Z{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Fe(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=Je(s);for(const i of n.keys())if(i!==P&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new Z(o,e)}}return new Z(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Ls(this._tree,e)}entries(){return new Le(this,Ms)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return As(this._tree,e,t)}get(e){const t=Be(this._tree,e);return t!==void 0?t.get(P):void 0}has(e){const t=Be(this._tree,e);return t!==void 0&&t.has(P)}keys(){return new Le(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,De(this._tree,e).set(P,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);return s.set(P,t(s.get(P))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);let n=s.get(P);return n===void 0&&s.set(P,n=t()),n}values(){return new Le(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new Z;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return Z.from(Object.entries(e))}}const Fe=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==P&&e.startsWith(s))return t.push([a,s]),Fe(a.get(s),e.slice(s.length),t);return t.push([a,e]),Fe(void 0,"",t)},Be=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==P&&e.startsWith(t))return Be(a.get(t),e.slice(t.length))},De=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Fe(a,e);if(t!==void 0){if(t.delete(P),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=Je(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==P&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=Je(a);s.set(n+e,t),s.delete(n)},Je=a=>a[a.length-1],Ue="or",Nt="and",Ds="and_not";class le{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},ze),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},$s),e.autoSuggestOptions||{})}),this._index=new Z,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ke,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Z,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ke,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return Ee(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||We.batchSize,r=e.batchWait||We.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:l}]of s){const c=o.length||1,h={id:this._documentIds.get(r),score:i*c,terms:Object.keys(l),queryTerms:o,match:l};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===le.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(pt),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return Ee(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(ze.hasOwnProperty(e))return Pe(ze,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=_e(n),l._fieldLength=_e(r),l._storedFields=_e(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),_e(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return Ee(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Se(n),l._fieldLength=yield Se(r),l._storedFields=yield Se(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Se(y))}++c%1e3===0&&(yield kt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new le(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new Z,c}executeQuery(e,t={}){if(e===le.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map(js(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const C=h*x.length/(x.length+.3*R);this.termResults(e.term,x,C,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const C=c*x.length/(x.length+R);this.termResults(e.term,x,C,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ue){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ps[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const C=b.get(w),K=this._fieldLength.get(w)[f],H=Vs(C,y,this._documentCount,K,x,l),W=s*n*m*R*H,j=c.get(w);if(j){j.score+=W,Bs(j.terms,e);const $=Pe(j.match,t);$?$.push(h):j.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ps={[Ue]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[Nt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Ds]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},zs={k:1.2,b:.7,d:.5},Vs=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},js=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},ze={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Ws),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ue,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:zs},$s={combineWith:Nt,prefix:(a,e,t)=>e===t.length-1},We={batchSize:1e3,batchWait:10},Ke={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},We),Ke),Bs=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,_e=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Se=a=>Ee(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield kt(0));return e}),kt=a=>new Promise(e=>setTimeout(e,a)),Ws=/[\n\r\p{Z}\p{P}]+/u;class Ks{constructor(e=10){Re(this,"max");Re(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Js=["aria-owns"],Us={class:"shell"},qs=["title"],Gs={class:"search-actions before"},Hs=["title"],Qs=["placeholder"],Ys={class:"search-actions"},Zs=["title"],Xs=["disabled","title"],en=["id","role","aria-labelledby"],tn=["aria-selected"],sn=["href","aria-label","onMouseenter","onFocusin"],nn={class:"titles"},rn=["innerHTML"],an={class:"title main"},on=["innerHTML"],ln={key:0,class:"excerpt-wrapper"},cn={key:0,class:"excerpt",inert:""},un=["innerHTML"],dn={key:0,class:"no-results"},hn={class:"search-keyboard-shortcuts"},fn=["aria-label"],pn=["aria-label"],vn=["aria-label"],mn=["aria-label"],gn=At({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var F,M;const t=e,s=be(),n=be(),r=be(ns),i=ts(),{activate:o}=Os(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=tt(async()=>{var v,p,N,O,z,V,I,L,U;return rt(le.loadJSON((N=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:N.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((O=c.value.search)==null?void 0:O.provider)==="local"&&((V=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:V.searchOptions)},...((I=c.value.search)==null?void 0:I.provider)==="local"&&((U=(L=c.value.search.options)==null?void 0:L.miniSearch)==null?void 0:U.options)}))}),f=pe(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?se(""):Lt("vitepress:local-search-filter",""),b=Dt("vitepress:local-search-detailed-list",((F=c.value.search)==null?void 0:F.provider)==="local"&&((M=c.value.search.options)==null?void 0:M.detailedView)===!0),y=pe(()=>{var v,p,N;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((N=c.value.search.options)==null?void 0:N.detailedView)===!1)}),x=pe(()=>{var p,N,O,z,V,I,L;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((V=(z=(O=(N=v==null?void 0:v.locales)==null?void 0:N[l.value])==null?void 0:O.translations)==null?void 0:z.button)==null?void 0:V.buttonText)||((L=(I=v==null?void 0:v.translations)==null?void 0:I.button)==null?void 0:L.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=be([]),R=se(!1);je(f,()=>{R.value=!1});const C=tt(async()=>{if(n.value)return rt(new Cs(n.value))},null),K=new Ks(16);zt(()=>[h.value,f.value,b.value],async([v,p,N],O,z)=>{var me,qe,Ge,He;(O==null?void 0:O[0])!==v&&K.clear();let V=!1;if(z(()=>{V=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const I=N?await Promise.all(w.value.map(B=>H(B.id))):[];if(V)return;for(const{id:B,mod:X}of I){const ee=B.slice(0,B.indexOf("#"));let Q=K.get(ee);if(Q)continue;Q=new Map,K.set(ee,Q);const q=X.default??X;if(q!=null&&q.render||q!=null&&q.setup){const te=Qt(q);te.config.warnHandler=()=>{},te.provide(Yt,i),Object.defineProperties(te.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Qe=document.createElement("div");te.mount(Qe),Qe.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ce=>{var Xe;const ge=(Xe=ce.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(ge==null?void 0:ge.startsWith("#"))&&ge.slice(1);if(!Ye)return;let Ze="";for(;(ce=ce.nextElementSibling)&&!/^h[1-6]$/i.test(ce.tagName);)Ze+=ce.outerHTML;Q.set(Ye,Ze)}),te.unmount()}if(V)return}const L=new Set;if(w.value=w.value.map(B=>{const[X,ee]=B.id.split("#"),Q=K.get(X),q=(Q==null?void 0:Q.get(ee))??"";for(const te in B.match)L.add(te);return{...B,text:q}}),await ue(),V)return;await new Promise(B=>{var X;(X=C.value)==null||X.unmark({done:()=>{var ee;(ee=C.value)==null||ee.markRegExp(k(L),{done:B})}})});const U=((me=s.value)==null?void 0:me.querySelectorAll(".result .excerpt"))??[];for(const B of U)(qe=B.querySelector('mark[data-markjs="true"]'))==null||qe.scrollIntoView({block:"center"});(He=(Ge=n.value)==null?void 0:Ge.firstElementChild)==null||He.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function H(v){const p=Zt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(N){return console.error(N),{id:v,mod:{}}}}const W=se(),j=pe(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,N;(p=W.value)==null||p.focus(),v&&((N=W.value)==null||N.select())}Me(()=>{$()});function Oe(v){v.pointerType==="mouse"&&$()}const A=se(-1),J=se(!1);je(w,v=>{A.value=v.length?0:-1,T()});function T(){ue(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}ye("ArrowUp",v=>{v.preventDefault(),A.value--,A.value<0&&(A.value=w.value.length-1),J.value=!0,T()}),ye("ArrowDown",v=>{v.preventDefault(),A.value++,A.value>=w.value.length&&(A.value=0),J.value=!0,T()});const u=Vt();ye("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[A.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(u.go(p.id),t("close"))}),ye("Escape",()=>{t("close")});const g=ss({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),jt("popstate",v=>{v.preventDefault(),t("close")});const S=$t(Bt?document.body:null);Me(()=>{ue(()=>{S.value=!0,ue().then(()=>o())})}),Wt(()=>{S.value=!1});function E(){f.value="",ue().then(()=>$(!1))}function k(v){return new RegExp([...v].sort((p,N)=>N.length-p.length).map(p=>`(${Xt(p)})`).join("|"),"gi")}return(v,p)=>{var N,O,z,V;return G(),Kt(Ht,{to:"body"},[_("div",{ref_key:"el",ref:s,role:"button","aria-owns":(N=w.value)!=null&&N.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),_("div",Us,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>Oe(I)),onSubmit:p[5]||(p[5]=Jt(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[8]||(p[8]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,qs),_("div",Gs,[_("button",{class:"back-button",title:D(g)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[9]||(p[9]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,Hs)]),Ut(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Gt(f)?f.value=I:null),placeholder:x.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,Qs),[[qt,D(f)]]),_("div",Ys,[y.value?we("",!0):(G(),Y("button",{key:0,class:st(["toggle-layout-button",{"detailed-list":D(b)}]),type:"button",title:D(g)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>A.value>-1&&(b.value=!D(b)))},p[10]||(p[10]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,Zs)),_("button",{class:"clear-button",type:"reset",disabled:j.value,title:D(g)("modal.resetButtonTitle"),onClick:E},p[11]||(p[11]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,Xs)])],32),_("ul",{ref_key:"resultsEl",ref:n,id:(O=w.value)!=null&&O.length?"localsearch-list":void 0,role:(z=w.value)!=null&&z.length?"listbox":void 0,"aria-labelledby":(V=w.value)!=null&&V.length?"localsearch-label":void 0,class:"results",onMousemove:p[7]||(p[7]=I=>J.value=!1)},[(G(!0),Y(it,null,nt(w.value,(I,L)=>(G(),Y("li",{key:I.id,role:"option","aria-selected":A.value===L?"true":"false"},[_("a",{href:I.id,class:st(["result",{selected:A.value===L}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:U=>!J.value&&(A.value=L),onFocusin:U=>A.value=L,onClick:p[6]||(p[6]=U=>v.$emit("close"))},[_("div",null,[_("div",nn,[p[13]||(p[13]=_("span",{class:"title-icon"},"#",-1)),(G(!0),Y(it,null,nt(I.titles,(U,me)=>(G(),Y("span",{key:me,class:"title"},[_("span",{class:"text",innerHTML:U},null,8,rn),p[12]||(p[12]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",an,[_("span",{class:"text",innerHTML:I.title},null,8,on)])]),D(b)?(G(),Y("div",ln,[I.text?(G(),Y("div",cn,[_("div",{class:"vp-doc",innerHTML:I.text},null,8,un)])):we("",!0),p[14]||(p[14]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[15]||(p[15]=_("div",{class:"excerpt-gradient-top"},null,-1))])):we("",!0)])],42,sn)],8,tn))),128)),D(f)&&!w.value.length&&R.value?(G(),Y("li",dn,[de(he(D(g)("modal.noResultsText"))+' "',1),_("strong",null,he(D(f)),1),p[16]||(p[16]=de('" '))])):we("",!0)],40,en),_("div",hn,[_("span",null,[_("kbd",{"aria-label":D(g)("modal.footer.navigateUpKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,fn),_("kbd",{"aria-label":D(g)("modal.footer.navigateDownKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,pn),de(" "+he(D(g)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":D(g)("modal.footer.selectKeyAriaLabel")},p[19]||(p[19]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,vn),de(" "+he(D(g)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":D(g)("modal.footer.closeKeyAriaLabel")},"esc",8,mn),de(" "+he(D(g)("modal.footer.closeText")),1)])])])],8,Js)])}}}),Sn=es(gn,[["__scopeId","data-v-797a7f7c"]]);export{Sn as default}; diff --git a/assets/chunks/doc-collapsed-example.CqMUHFlL.js b/assets/chunks/doc-collapsed-example.CqMUHFlL.js new file mode 100644 index 00000000..66502e57 --- /dev/null +++ b/assets/chunks/doc-collapsed-example.CqMUHFlL.js @@ -0,0 +1 @@ +const o="/doc-collapsed-example.png";export{o as _}; diff --git a/assets/chunks/doc-multi-level-docs-after.BybuXf3W.js b/assets/chunks/doc-multi-level-docs-after.BybuXf3W.js new file mode 100644 index 00000000..9a2d32e8 --- /dev/null +++ b/assets/chunks/doc-multi-level-docs-after.BybuXf3W.js @@ -0,0 +1 @@ +const o="/doc-multi-level-docs-before.png",e="/doc-multi-level-docs-after.png";export{o as _,e as a}; diff --git a/assets/chunks/framework.Gf1jShja.js b/assets/chunks/framework.Gf1jShja.js new file mode 100644 index 00000000..8396584f --- /dev/null +++ b/assets/chunks/framework.Gf1jShja.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.5.3 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function $r(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ee={},Ct=[],Ue=()=>{},Xo=()=>!1,Qt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Dr=e=>e.startsWith("onUpdate:"),fe=Object.assign,jr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Jo=Object.prototype.hasOwnProperty,Q=(e,t)=>Jo.call(e,t),K=Array.isArray,Tt=e=>Fn(e)==="[object Map]",fi=e=>Fn(e)==="[object Set]",q=e=>typeof e=="function",se=e=>typeof e=="string",rt=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",ui=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),di=Object.prototype.toString,Fn=e=>di.call(e),zo=e=>Fn(e).slice(8,-1),hi=e=>Fn(e)==="[object Object]",Vr=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,At=$r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Qo=/-(\w)/g,Ne=Hn(e=>e.replace(Qo,(t,n)=>n?n.toUpperCase():"")),Zo=/\B([A-Z])/g,st=Hn(e=>e.replace(Zo,"-$1").toLowerCase()),$n=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Hn(e=>e?`on${$n(e)}`:""),tt=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Sr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},el=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let hs;const gi=()=>hs||(hs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ur(e){if(K(e)){const t={};for(let n=0;n{if(n){const r=n.split(nl);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Br(e){let t="";if(se(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),ll=e=>se(e)?e:e==null?"":K(e)||ne(e)&&(e.toString===di||!q(e.toString))?yi(e)?ll(e.value):JSON.stringify(e,vi,2):String(e),vi=(e,t)=>yi(t)?vi(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],i)=>(n[er(r,i)+" =>"]=s,n),{})}:fi(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>er(n))}:rt(t)?er(t):ne(t)&&!K(t)&&!hi(t)?String(t):t,er=(e,t="")=>{var n;return rt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.3 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let _e;class cl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.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;let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.nextEffect;if(t.nextEffect=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Si(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ei(e){let t,n=e.depsTail;for(let r=n;r;r=r.prevDep)r.version===-1?(r===n&&(n=r.prevDep),Kr(r),fl(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0;e.deps=t,e.depsTail=n}function Er(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&xi(t.dep.computed)===!1||t.dep.version!==t.version)return!0;return!!e._dirty}function xi(e){if(e.flags&2)return!1;if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Wt))return;e.globalVersion=Wt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&!Er(e)){e.flags&=-3;return}const n=Z,r=Le;Z=e,Le=!0;try{Si(e);const s=e.fn(e._value);(t.version===0||tt(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Z=n,Le=r,Ei(e),e.flags&=-3}}function Kr(e){const{dep:t,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),t.subs===e&&(t.subs=n),!t.subs&&t.computed){t.computed.flags&=-5;for(let s=t.computed.deps;s;s=s.nextDep)Kr(s)}}function fl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Le=!0;const Ci=[];function it(){Ci.push(Le),Le=!1}function ot(){const e=Ci.pop();Le=e===void 0?!0:e}function ps(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Z;Z=void 0;try{t()}finally{Z=n}}}let Wt=0;class Dn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0}track(t){if(!Z||!Le||Z===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Z)n=this.activeLink={dep:this,sub:Z,version:this.version,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0,prevActiveLink:void 0},Z.deps?(n.prevDep=Z.depsTail,Z.depsTail.nextDep=n,Z.depsTail=n):Z.deps=Z.depsTail=n,Z.flags&4&&Ti(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Z.depsTail,n.nextDep=void 0,Z.depsTail.nextDep=n,Z.depsTail=n,Z.deps===n&&(Z.deps=r)}return n}trigger(t){this.version++,Wt++,this.notify(t)}notify(t){kr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()}finally{Wr()}}}function Ti(e){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Ti(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}const An=new WeakMap,ht=Symbol(""),xr=Symbol(""),Kt=Symbol("");function ve(e,t,n){if(Le&&Z){let r=An.get(e);r||An.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=new Dn),s.track()}}function Ge(e,t,n,r,s,i){const o=An.get(e);if(!o){Wt++;return}let l=[];if(t==="clear")l=[...o.values()];else{const c=K(e),u=c&&Vr(n);if(c&&n==="length"){const a=Number(r);o.forEach((h,g)=>{(g==="length"||g===Kt||!rt(g)&&g>=a)&&l.push(h)})}else{const a=h=>h&&l.push(h);switch(n!==void 0&&a(o.get(n)),u&&a(o.get(Kt)),t){case"add":c?u&&a(o.get("length")):(a(o.get(ht)),Tt(e)&&a(o.get(xr)));break;case"delete":c||(a(o.get(ht)),Tt(e)&&a(o.get(xr)));break;case"set":Tt(e)&&a(o.get(ht));break}}}kr();for(const c of l)c.trigger();Wr()}function ul(e,t){var n;return(n=An.get(e))==null?void 0:n.get(t)}function _t(e){const t=J(e);return t===e?t:(ve(t,"iterate",Kt),Pe(e)?t:t.map(me))}function jn(e){return ve(e=J(e),"iterate",Kt),e}const dl={__proto__:null,[Symbol.iterator](){return nr(this,Symbol.iterator,me)},concat(...e){return _t(this).concat(...e.map(t=>K(t)?_t(t):t))},entries(){return nr(this,"entries",e=>(e[1]=me(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(me),arguments)},find(e,t){return We(this,"find",e,t,me,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,me,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return rr(this,"includes",e)},indexOf(...e){return rr(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return rr(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return gs(this,"reduce",e,t)},reduceRight(e,...t){return gs(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(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 Ft(this,"unshift",e)},values(){return nr(this,"values",me)}};function nr(e,t,n){const r=jn(e),s=r[t]();return r!==e&&!Pe(e)&&(s._next=s.next,s.next=()=>{const i=s._next();return i.value&&(i.value=n(i.value)),i}),s}const hl=Array.prototype;function We(e,t,n,r,s,i){const o=jn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==hl[t]){const h=c.apply(e,i);return l?me(h):h}let u=n;o!==e&&(l?u=function(h,g){return n.call(this,me(h),g,e)}:n.length>2&&(u=function(h,g){return n.call(this,h,g,e)}));const a=c.call(o,u,r);return l&&s?s(a):a}function gs(e,t,n,r){const s=jn(e);let i=n;return s!==e&&(Pe(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)}),s[t](i,...r)}function rr(e,t,n){const r=J(e);ve(r,"iterate",Kt);const s=r[t](...n);return(s===-1||s===!1)&&Xr(n[0])?(n[0]=J(n[0]),r[t](...n)):s}function Ft(e,t,n=[]){it(),kr();const r=J(e)[t].apply(e,n);return Wr(),ot(),r}const pl=$r("__proto__,__v_isRef,__isVue"),Ai=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rt));function gl(e){rt(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class Ri{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(s?i?Rl:Li:i?Ii:Mi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=K(t);if(!s){let c;if(o&&(c=dl[n]))return c;if(n==="hasOwnProperty")return gl}const l=Reflect.get(t,n,ae(t)?t:r);return(rt(n)?Ai.has(n):pl(n))||(s||ve(t,"get",n),i)?l:ae(l)?o&&Vr(n)?l:l.value:ne(l)?s?Bn(l):Un(l):l}}class Oi extends Ri{constructor(t=!1){super(!1,t)}set(t,n,r,s){let i=t[n];if(!this._isShallow){const c=vt(i);if(!Pe(r)&&!vt(r)&&(i=J(i),r=J(r)),!K(t)&&ae(i)&&!ae(r))return c?!1:(i.value=r,!0)}const o=K(t)&&Vr(n)?Number(n)e,Vn=e=>Reflect.getPrototypeOf(e);function ln(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),i=J(t);n||(tt(t,i)&&ve(s,"get",t),ve(s,"get",i));const{has:o}=Vn(s),l=r?qr:n?Jr:me;if(o.call(s,t))return l(e.get(t));if(o.call(s,i))return l(e.get(i));e!==s&&e.get(t)}function cn(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(tt(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function an(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",ht),Reflect.get(e,"size",e)}function ms(e,t=!1){!t&&!Pe(e)&&!vt(e)&&(e=J(e));const n=J(this);return Vn(n).has.call(n,e)||(n.add(e),Ge(n,"add",e,e)),this}function ys(e,t,n=!1){!n&&!Pe(t)&&!vt(t)&&(t=J(t));const r=J(this),{has:s,get:i}=Vn(r);let o=s.call(r,e);o||(e=J(e),o=s.call(r,e));const l=i.call(r,e);return r.set(e,t),o?tt(t,l)&&Ge(r,"set",e,t):Ge(r,"add",e,t),this}function vs(e){const t=J(this),{has:n,get:r}=Vn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const i=t.delete(e);return s&&Ge(t,"delete",e,void 0),i}function bs(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ge(e,"clear",void 0,void 0),n}function fn(e,t){return function(r,s){const i=this,o=i.__v_raw,l=J(o),c=t?qr:e?Jr:me;return!e&&ve(l,"iterate",ht),o.forEach((u,a)=>r.call(s,c(u),c(a),i))}}function un(e,t,n){return function(...r){const s=this.__v_raw,i=J(s),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=s[e](...r),a=n?qr:t?Jr:me;return!t&&ve(i,"iterate",c?xr:ht),{next(){const{value:h,done:g}=u.next();return g?{value:h,done:g}:{value:l?[a(h[0]),a(h[1])]:a(h),done:g}},[Symbol.iterator](){return this}}}}function Xe(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function _l(){const e={get(i){return ln(this,i)},get size(){return an(this)},has:cn,add:ms,set:ys,delete:vs,clear:bs,forEach:fn(!1,!1)},t={get(i){return ln(this,i,!1,!0)},get size(){return an(this)},has:cn,add(i){return ms.call(this,i,!0)},set(i,o){return ys.call(this,i,o,!0)},delete:vs,clear:bs,forEach:fn(!1,!0)},n={get(i){return ln(this,i,!0)},get size(){return an(this,!0)},has(i){return cn.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:fn(!0,!1)},r={get(i){return ln(this,i,!0,!0)},get size(){return an(this,!0)},has(i){return cn.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:fn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=un(i,!1,!1),n[i]=un(i,!0,!1),t[i]=un(i,!1,!0),r[i]=un(i,!0,!0)}),[e,n,t,r]}const[wl,Sl,El,xl]=_l();function Gr(e,t){const n=t?e?xl:El:e?Sl:wl;return(r,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Q(n,s)&&s in r?n:r,s,i)}const Cl={get:Gr(!1,!1)},Tl={get:Gr(!1,!0)},Al={get:Gr(!0,!1)};const Mi=new WeakMap,Ii=new WeakMap,Li=new WeakMap,Rl=new WeakMap;function Ol(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ml(e){return e.__v_skip||!Object.isExtensible(e)?0:Ol(zo(e))}function Un(e){return vt(e)?e:Yr(e,!1,yl,Cl,Mi)}function Il(e){return Yr(e,!1,bl,Tl,Ii)}function Bn(e){return Yr(e,!0,vl,Al,Li)}function Yr(e,t,n,r,s){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=s.get(e);if(i)return i;const o=Ml(e);if(o===0)return e;const l=new Proxy(e,o===2?r:n);return s.set(e,l),l}function pt(e){return vt(e)?pt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Xr(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Sn(e){return Object.isExtensible(e)&&pi(e,"__v_skip",!0),e}const me=e=>ne(e)?Un(e):e,Jr=e=>ne(e)?Bn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function oe(e){return Pi(e,!1)}function zr(e){return Pi(e,!0)}function Pi(e,t){return ae(e)?e:new Ll(e,t)}class Ll{constructor(t,n){this.dep=new Dn,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,r=this.__v_isShallow||Pe(t)||vt(t);t=r?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=r?t:me(t),this.dep.trigger())}}function Ni(e){return ae(e)?e.value:e}const Pl={get:(e,t,n)=>t==="__v_raw"?e:Ni(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ae(s)&&!ae(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Fi(e){return pt(e)?e:new Proxy(e,Pl)}class Nl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dn,{get:r,set:s}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=s}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Fl(e){return new Nl(e)}class Hl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,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 ul(J(this._object),this._key)}}class $l{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 Dl(e,t,n){return ae(e)?e:q(e)?new $l(e):ne(e)&&arguments.length>1?jl(e,t,n):oe(e)}function jl(e,t,n){const r=e[t];return ae(r)?r:new Hl(e,t,n)}class Vl{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Wt-1,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){Z!==this&&(this.flags|=16,this.dep.notify())}get value(){const t=this.dep.track();return xi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ul(e,t,n=!1){let r,s;return q(e)?r=e:(r=e.get,s=e.set),new Vl(r,s,n)}const dn={},Rn=new WeakMap;let ut;function Bl(e,t=!1,n=ut){if(n){let r=Rn.get(n);r||Rn.set(n,r=[]),r.push(e)}}function kl(e,t,n=ee){const{immediate:r,deep:s,once:i,scheduler:o,augmentJob:l,call:c}=n,u=m=>s?m:Pe(m)||s===!1||s===0?qe(m,1):qe(m);let a,h,g,b,_=!1,S=!1;if(ae(e)?(h=()=>e.value,_=Pe(e)):pt(e)?(h=()=>u(e),_=!0):K(e)?(S=!0,_=e.some(m=>pt(m)||Pe(m)),h=()=>e.map(m=>{if(ae(m))return m.value;if(pt(m))return u(m);if(q(m))return c?c(m,2):m()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(g){it();try{g()}finally{ot()}}const m=ut;ut=a;try{return c?c(e,3,[b]):e(b)}finally{ut=m}}:h=Ue,t&&s){const m=h,M=s===!0?1/0:s;h=()=>qe(m(),M)}const V=bi(),N=()=>{a.stop(),V&&jr(V.effects,a)};if(i)if(t){const m=t;t=(...M)=>{m(...M),N()}}else{const m=h;h=()=>{m(),N()}}let U=S?new Array(e.length).fill(dn):dn;const p=m=>{if(!(!(a.flags&1)||!a.dirty&&!m))if(t){const M=a.run();if(s||_||(S?M.some((F,$)=>tt(F,U[$])):tt(M,U))){g&&g();const F=ut;ut=a;try{const $=[M,U===dn?void 0:S&&U[0]===dn?[]:U,b];c?c(t,3,$):t(...$),U=M}finally{ut=F}}}else a.run()};return l&&l(p),a=new _i(h),a.scheduler=o?()=>o(p,!1):p,b=m=>Bl(m,!1,a),g=a.onStop=()=>{const m=Rn.get(a);if(m){if(c)c(m,4);else for(const M of m)M();Rn.delete(a)}},t?r?p(!0):U=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function qe(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--,ae(e))qe(e.value,t,n);else if(K(e))for(let r=0;r{qe(r,t,n)});else if(hi(e)){for(const r in e)qe(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&qe(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.3 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Zt(e,t,n,r){try{return r?e(...r):e()}catch(s){en(s,t,n)}}function Fe(e,t,n,r){if(q(e)){const s=Zt(e,t,n,r);return s&&ui(s)&&s.catch(i=>{en(i,t,n)}),s}if(K(e)){const s=[];for(let i=0;i>>1,s=we[r],i=Gt(s);i=Gt(n)?we.push(e):we.splice(Kl(t),0,e),e.flags|=1,$i()}}function $i(){!qt&&!Cr&&(Cr=!0,Qr=Hi.then(Di))}function ql(e){K(e)?Rt.push(...e):Qe&&e.id===-1?Qe.splice(St+1,0,e):e.flags&1||(Rt.push(e),e.flags|=1),$i()}function _s(e,t,n=qt?je+1:0){for(;nGt(n)-Gt(r));if(Rt.length=0,Qe){Qe.push(...t);return}for(Qe=t,St=0;Ste.id==null?e.flags&2?-1:1/0:e.id;function Di(e){Cr=!1,qt=!0;try{for(je=0;je{r._d&&Ns(-1);const i=Mn(t);let o;try{o=e(...s)}finally{Mn(i),r._d&&Ns(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function Mf(e,t){if(de===null)return e;const n=Jn(de),r=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport,jt=e=>e&&(e.disabled||e.disabled===""),Yl=e=>e&&(e.defer||e.defer===""),ws=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ss=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Tr=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},Xl={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,i,o,l,c,u){const{mc:a,pc:h,pbc:g,o:{insert:b,querySelector:_,createText:S,createComment:V}}=u,N=jt(t.props);let{shapeFlag:U,children:p,dynamicChildren:m}=t;if(e==null){const M=t.el=S(""),F=t.anchor=S("");b(M,n,r),b(F,n,r);const $=(R,v)=>{U&16&&a(p,R,v,s,i,o,l,c)},D=()=>{const R=t.target=Tr(t.props,_),v=Bi(R,t,S,b);R&&(o!=="svg"&&ws(R)?o="svg":o!=="mathml"&&Ss(R)&&(o="mathml"),N||($(R,v),En(t)))};N&&($(n,F),En(t)),Yl(t.props)?Ee(D,i):D()}else{t.el=e.el,t.targetStart=e.targetStart;const M=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,D=jt(e.props),R=D?n:F,v=D?M:$;if(o==="svg"||ws(F)?o="svg":(o==="mathml"||Ss(F))&&(o="mathml"),m?(g(e.dynamicChildren,m,R,s,i,o,l),rs(e,t,!0)):c||h(e,t,R,v,s,i,o,l,!1),N)D?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):hn(t,n,M,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const P=t.target=Tr(t.props,_);P&&hn(t,P,null,u,0)}else D&&hn(t,F,$,u,1);En(t)}},remove(e,t,n,{um:r,o:{remove:s}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:u,targetAnchor:a,target:h,props:g}=e;if(h&&(s(u),s(a)),i&&s(c),o&16){const b=i||!jt(g);for(let _=0;_{e.isMounted=!0}),Xi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],ki={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},Wi=e=>{const t=e.subTree;return t.component?Wi(t.component):t},Ql={name:"BaseTransition",props:ki,setup(e,{slots:t}){const n=Xn(),r=zl();return()=>{const s=t.default&&Gi(t.default(),!0);if(!s||!s.length)return;const i=Ki(s),o=J(e),{mode:l}=o;if(r.isLeaving)return sr(i);const c=Es(i);if(!c)return sr(i);let u=Ar(c,o,r,n,g=>u=g);c.type!==ye&&Yt(c,u);const a=n.subTree,h=a&&Es(a);if(h&&h.type!==ye&&!dt(c,h)&&Wi(n).type!==ye){const g=Ar(h,o,r,n);if(Yt(h,g),l==="out-in"&&c.type!==ye)return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete g.afterLeave},sr(i);l==="in-out"&&c.type!==ye&&(g.delayLeave=(b,_,S)=>{const V=qi(r,h);V[String(h.key)]=h,b[Ze]=()=>{_(),b[Ze]=void 0,delete u.delayedLeave},u.delayedLeave=S})}return i}}};function Ki(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const Zl=Ql;function qi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ar(e,t,n,r,s){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:g,onLeave:b,onAfterLeave:_,onLeaveCancelled:S,onBeforeAppear:V,onAppear:N,onAfterAppear:U,onAppearCancelled:p}=t,m=String(e.key),M=qi(n,e),F=(R,v)=>{R&&Fe(R,r,9,v)},$=(R,v)=>{const P=v[1];F(R,v),K(R)?R.every(x=>x.length<=1)&&P():R.length<=1&&P()},D={mode:o,persisted:l,beforeEnter(R){let v=c;if(!n.isMounted)if(i)v=V||c;else return;R[Ze]&&R[Ze](!0);const P=M[m];P&&dt(e,P)&&P.el[Ze]&&P.el[Ze](),F(v,[R])},enter(R){let v=u,P=a,x=h;if(!n.isMounted)if(i)v=N||u,P=U||a,x=p||h;else return;let W=!1;const re=R[pn]=ce=>{W||(W=!0,ce?F(x,[R]):F(P,[R]),D.delayedLeave&&D.delayedLeave(),R[pn]=void 0)};v?$(v,[R,re]):re()},leave(R,v){const P=String(e.key);if(R[pn]&&R[pn](!0),n.isUnmounting)return v();F(g,[R]);let x=!1;const W=R[Ze]=re=>{x||(x=!0,v(),re?F(S,[R]):F(_,[R]),R[Ze]=void 0,M[P]===e&&delete M[P])};M[P]=e,b?$(b,[R,W]):W()},clone(R){const v=Ar(R,t,n,r,s);return s&&s(v),v}};return D}function sr(e){if(tn(e))return e=nt(e),e.children=null,e}function Es(e){if(!tn(e))return Ui(e.type)&&e.children?Ki(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 Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(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 Gi(e,t=!1,n){let r=[],s=0;for(let i=0;i1)for(let i=0;iIn(_,t&&(K(t)?t[S]:t),n,r,s));return}if(gt(r)&&!s)return;const i=r.shapeFlag&4?Jn(r.component):r.el,o=s?null:i,{i:l,r:c}=e,u=t&&t.r,a=l.refs===ee?l.refs={}:l.refs,h=l.setupState,g=J(h),b=h===ee?()=>!1:_=>Q(g,_);if(u!=null&&u!==c&&(se(u)?(a[u]=null,b(u)&&(h[u]=null)):ae(u)&&(u.value=null)),q(c))Zt(c,l,12,[o,a]);else{const _=se(c),S=ae(c);if(_||S){const V=()=>{if(e.f){const N=_?b(c)?h[c]:a[c]:c.value;s?K(N)&&jr(N,i):K(N)?N.includes(i)||N.push(i):_?(a[c]=[i],b(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else _?(a[c]=o,b(c)&&(h[c]=o)):S&&(c.value=o,e.k&&(a[e.k]=o))};o?(V.id=-1,Ee(V,n)):V()}}}let xs=!1;const wt=()=>{xs||(console.error("Hydration completed but contains mismatches."),xs=!0)},ec=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",tc=e=>e.namespaceURI.includes("MathML"),gn=e=>{if(e.nodeType===1){if(ec(e))return"svg";if(tc(e))return"mathml"}},xt=e=>e.nodeType===8;function nc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,a=(p,m)=>{if(!m.hasChildNodes()){n(null,p,m),On(),m._vnode=p;return}h(m.firstChild,p,null,null,null),On(),m._vnode=p},h=(p,m,M,F,$,D=!1)=>{D=D||!!m.dynamicChildren;const R=xt(p)&&p.data==="[",v=()=>S(p,m,M,F,$,R),{type:P,ref:x,shapeFlag:W,patchFlag:re}=m;let ce=p.nodeType;m.el=p,re===-2&&(D=!1,m.dynamicChildren=null);let j=null;switch(P){case mt:ce!==3?m.children===""?(c(m.el=s(""),o(p),p),j=p):j=v():(p.data!==m.children&&(wt(),p.data=m.children),j=i(p));break;case ye:U(p)?(j=i(p),N(m.el=p.content.firstChild,p,M)):ce!==8||R?j=v():j=i(p);break;case Ut:if(R&&(p=i(p),ce=p.nodeType),ce===1||ce===3){j=p;const Y=!m.children.length;for(let B=0;B{D=D||!!m.dynamicChildren;const{type:R,props:v,patchFlag:P,shapeFlag:x,dirs:W,transition:re}=m,ce=R==="input"||R==="option";if(ce||P!==-1){W&&Ve(m,null,M,"created");let j=!1;if(U(p)){j=ho(F,re)&&M&&M.vnode.props&&M.vnode.props.appear;const B=p.content.firstChild;j&&re.beforeEnter(B),N(B,p,M),m.el=p=B}if(x&16&&!(v&&(v.innerHTML||v.textContent))){let B=b(p.firstChild,m,p,M,F,$,D);for(;B;){mn(p,1)||wt();const he=B;B=B.nextSibling,l(he)}}else x&8&&p.textContent!==m.children&&(mn(p,0)||wt(),p.textContent=m.children);if(v){if(ce||!D||P&48){const B=p.tagName.includes("-");for(const he in v)(ce&&(he.endsWith("value")||he==="indeterminate")||Qt(he)&&!At(he)||he[0]==="."||B)&&r(p,he,null,v[he],void 0,M)}else if(v.onClick)r(p,"onClick",null,v.onClick,void 0,M);else if(P&4&&pt(v.style))for(const B in v.style)v.style[B]}let Y;(Y=v&&v.onVnodeBeforeMount)&&Oe(Y,M,m),W&&Ve(m,null,M,"beforeMount"),((Y=v&&v.onVnodeMounted)||W||j)&&vo(()=>{Y&&Oe(Y,M,m),j&&re.enter(p),W&&Ve(m,null,M,"mounted")},F)}return p.nextSibling},b=(p,m,M,F,$,D,R)=>{R=R||!!m.dynamicChildren;const v=m.children,P=v.length;for(let x=0;x{const{slotScopeIds:R}=m;R&&($=$?$.concat(R):R);const v=o(p),P=b(i(p),m,v,M,F,$,D);return P&&xt(P)&&P.data==="]"?i(m.anchor=P):(wt(),c(m.anchor=u("]"),v,P),P)},S=(p,m,M,F,$,D)=>{if(mn(p.parentElement,1)||wt(),m.el=null,D){const P=V(p);for(;;){const x=i(p);if(x&&x!==P)l(x);else break}}const R=i(p),v=o(p);return l(p),n(null,m,v,R,M,F,gn(v),$),R},V=(p,m="[",M="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===m&&F++,p.data===M)){if(F===0)return i(p);F--}return p},N=(p,m,M)=>{const F=m.parentNode;F&&F.replaceChild(p,m);let $=M;for(;$;)$.vnode.el===m&&($.vnode.el=$.subTree.el=p),$=$.parent},U=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[a,h]}const Cs="data-allow-mismatch",rc={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function mn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Cs);)e=e.parentElement;const n=e&&e.getAttribute(Cs);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(rc[t])}}function sc(e,t){if(xt(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1)t(r);else if(xt(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const gt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Lf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let u=null,a,h=0;const g=()=>(h++,u=null,b()),b=()=>{let _;return u||(_=u=t().catch(S=>{if(S=S instanceof Error?S:new Error(String(S)),c)return new Promise((V,N)=>{c(S,()=>V(g()),()=>N(S),h+1)});throw S}).then(S=>_!==u&&u?u:(S&&(S.__esModule||S[Symbol.toStringTag]==="Module")&&(S=S.default),a=S,S)))};return Zr({name:"AsyncComponentWrapper",__asyncLoader:b,__asyncHydrate(_,S,V){const N=i?()=>{const U=i(V,p=>sc(_,p));U&&(S.bum||(S.bum=[])).push(U)}:V;a?N():b().then(()=>!S.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const _=ue;if(es(_),a)return()=>ir(a,_);const S=p=>{u=null,en(p,_,13,!r)};if(l&&_.suspense||rn)return b().then(p=>()=>ir(p,_)).catch(p=>(S(p),()=>r?le(r,{error:p}):null));const V=oe(!1),N=oe(),U=oe(!!s);return s&&setTimeout(()=>{U.value=!1},s),o!=null&&setTimeout(()=>{if(!V.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);S(p),N.value=p}},o),b().then(()=>{V.value=!0,_.parent&&tn(_.parent.vnode)&&Wn(_.parent.update)}).catch(p=>{S(p),N.value=p}),()=>{if(V.value&&a)return ir(a,_);if(N.value&&r)return le(r,{error:N.value});if(n&&!U.value)return le(n)}}})}function ir(e,t){const{ref:n,props:r,children:s,ce:i}=t.vnode,o=le(e,r,s);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const tn=e=>e.type.__isKeepAlive;function ic(e,t){Yi(e,"a",t)}function oc(e,t){Yi(e,"da",t)}function Yi(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Kn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)tn(s.parent.vnode)&&lc(r,t,n,s),s=s.parent}}function lc(e,t,n,r){const s=Kn(t,e,r,!0);qn(()=>{jr(r[t],s)},n)}function Kn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{it();const l=nn(n),c=Fe(t,n,e,o);return l(),ot(),c});return r?s.unshift(i):s.push(i),i}}const Ye=e=>(t,n=ue)=>{(!rn||e==="sp")&&Kn(e,(...r)=>t(...r),n)},cc=Ye("bm"),Lt=Ye("m"),ac=Ye("bu"),fc=Ye("u"),Xi=Ye("bum"),qn=Ye("um"),uc=Ye("sp"),dc=Ye("rtg"),hc=Ye("rtc");function pc(e,t=ue){Kn("ec",e,t)}const Ji="components";function Pf(e,t){return Qi(Ji,e,!0,t)||e}const zi=Symbol.for("v-ndc");function Nf(e){return se(e)?Qi(Ji,e,!1)||e:e||zi}function Qi(e,t,n=!0,r=!1){const s=de||ue;if(s){const i=s.type;{const l=Zc(i,!1);if(l&&(l===t||l===Ne(t)||l===$n(Ne(t))))return i}const o=Ts(s[e]||i[e],t)||Ts(s.appContext[e],t);return!o&&r?i:o}}function Ts(e,t){return e&&(e[t]||e[Ne(t)]||e[$n(Ne(t))])}function Ff(e,t,n,r){let s;const i=n,o=K(e);if(o||se(e)){const l=o&&pt(e);l&&(e=jn(e)),s=new Array(e.length);for(let c=0,u=e.length;ct(l,c,void 0,i));else{const l=Object.keys(e);s=new Array(l.length);for(let c=0,u=l.length;cPn(t)?!(t.type===ye||t.type===Se&&!Zi(t.children)):!0)?e:null}function $f(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:_n(r)]=e[r];return n}const Rr=e=>e?Eo(e)?Jn(e):Rr(e.parent):null,Vt=fe(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=>Rr(e.parent),$root:e=>Rr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ts(e),$forceUpdate:e=>e.f||(e.f=()=>{Wn(e.update)}),$nextTick:e=>e.n||(e.n=kn.bind(e.proxy)),$watch:e=>Hc.bind(e)}),or=(e,t)=>e!==ee&&!e.__isScriptSetup&&Q(e,t),gc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,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 r[t];case 2:return s[t];case 4:return n[t];case 3:return i[t]}else{if(or(r,t))return o[t]=1,r[t];if(s!==ee&&Q(s,t))return o[t]=2,s[t];if((u=e.propsOptions[0])&&Q(u,t))return o[t]=3,i[t];if(n!==ee&&Q(n,t))return o[t]=4,n[t];Or&&(o[t]=0)}}const a=Vt[t];let h,g;if(a)return t==="$attrs"&&ve(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Q(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,Q(g,t))return g[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:i}=e;return or(s,t)?(s[t]=n,!0):r!==ee&&Q(r,t)?(r[t]=n,!0):Q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&Q(e,o)||or(t,o)||(l=i[0])&&Q(l,o)||Q(r,o)||Q(Vt,o)||Q(s.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Df(){return mc().slots}function mc(){const e=Xn();return e.setupContext||(e.setupContext=Co(e))}function As(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Or=!0;function yc(e){const t=ts(e),n=e.proxy,r=e.ctx;Or=!1,t.beforeCreate&&Rs(t.beforeCreate,e,"bc");const{data:s,computed:i,methods:o,watch:l,provide:c,inject:u,created:a,beforeMount:h,mounted:g,beforeUpdate:b,updated:_,activated:S,deactivated:V,beforeDestroy:N,beforeUnmount:U,destroyed:p,unmounted:m,render:M,renderTracked:F,renderTriggered:$,errorCaptured:D,serverPrefetch:R,expose:v,inheritAttrs:P,components:x,directives:W,filters:re}=t;if(u&&vc(u,r,null),o)for(const Y in o){const B=o[Y];q(B)&&(r[Y]=B.bind(n))}if(s){const Y=s.call(n,n);ne(Y)&&(e.data=Un(Y))}if(Or=!0,i)for(const Y in i){const B=i[Y],he=q(B)?B.bind(n,n):q(B.get)?B.get.bind(n,n):Ue,sn=!q(B)&&q(B.set)?B.set.bind(n):Ue,lt=ie({get:he,set:sn});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>lt.value,set:$e=>lt.value=$e})}if(l)for(const Y in l)eo(l[Y],r,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(B=>{xc(B,Y[B])})}a&&Rs(a,e,"c");function j(Y,B){K(B)?B.forEach(he=>Y(he.bind(n))):B&&Y(B.bind(n))}if(j(cc,h),j(Lt,g),j(ac,b),j(fc,_),j(ic,S),j(oc,V),j(pc,D),j(hc,F),j(dc,$),j(Xi,U),j(qn,m),j(uc,R),K(v))if(v.length){const Y=e.exposed||(e.exposed={});v.forEach(B=>{Object.defineProperty(Y,B,{get:()=>n[B],set:he=>n[B]=he})})}else e.exposed||(e.exposed={});M&&e.render===Ue&&(e.render=M),P!=null&&(e.inheritAttrs=P),x&&(e.components=x),W&&(e.directives=W),R&&es(e)}function vc(e,t,n=Ue){K(e)&&(e=Mr(e));for(const r in e){const s=e[r];let i;ne(s)?"default"in s?i=Mt(s.from||r,s.default,!0):i=Mt(s.from||r):i=Mt(s),ae(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[r]=i}}function Rs(e,t,n){Fe(K(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function eo(e,t,n,r){let s=r.includes(".")?go(n,r):()=>n[r];if(se(e)){const i=t[e];q(i)&&Be(s,i)}else if(q(e))Be(s,e.bind(n));else if(ne(e))if(K(e))e.forEach(i=>eo(i,t,n,r));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Be(s,i,e)}}function ts(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(u=>Ln(c,u,o,!0)),Ln(c,t,o)),ne(t)&&i.set(t,c),c}function Ln(e,t,n,r=!1){const{mixins:s,extends:i}=t;i&&Ln(e,i,n,!0),s&&s.forEach(o=>Ln(e,o,n,!0));for(const o in t)if(!(r&&o==="expose")){const l=bc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const bc={data:Os,props:Ms,emits:Ms,methods:$t,computed:$t,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:$t,directives:$t,watch:wc,provide:Os,inject:_c};function Os(e,t){return t?e?function(){return fe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function _c(e,t){return $t(Mr(e),Mr(t))}function Mr(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}const no={},ro=()=>Object.create(no),so=e=>Object.getPrototypeOf(e)===no;function Cc(e,t,n,r=!1){const s={},i=ro();e.propsDefaults=Object.create(null),io(e,t,s,i);for(const o in e.propsOptions[0])o in s||(s[o]=void 0);n?e.props=r?s:Il(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function Tc(e,t,n,r){const{props:s,attrs:i,vnode:{patchFlag:o}}=e,l=J(s),[c]=e.propsOptions;let u=!1;if((r||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,b]=oo(h,t,!0);fe(o,g),b&&l.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&r.set(e,Ct),Ct;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",ns=e=>K(e)?e.map(Me):[Me(e)],Rc=(e,t,n)=>{if(t._n)return t;const r=Gl((...s)=>ns(t(...s)),n);return r._c=!1,r},co=(e,t,n)=>{const r=e._ctx;for(const s in e){if(lo(s))continue;const i=e[s];if(q(i))t[s]=Rc(s,i,r);else if(i!=null){const o=ns(i);t[s]=()=>o}}},ao=(e,t)=>{const n=ns(t);e.slots.default=()=>n},fo=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},Oc=(e,t,n)=>{const r=e.slots=ro();if(e.vnode.shapeFlag&32){const s=t._;s?(fo(r,t,n),n&&pi(r,"_",s,!0)):co(t,r)}else t&&ao(e,t)},Mc=(e,t,n)=>{const{vnode:r,slots:s}=e;let i=!0,o=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:fo(s,t,n):(i=!t.$stable,co(t,s)),o=t}else t&&(ao(e,t),o={default:1});if(i)for(const l in s)!lo(l)&&o[l]==null&&delete s[l]},Ee=vo;function Ic(e){return uo(e)}function Lc(e){return uo(e,nc)}function uo(e,t){const n=gi();n.__VUE__=!0;const{insert:r,remove:s,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:a,parentNode:h,nextSibling:g,setScopeId:b=Ue,insertStaticContent:_}=e,S=(f,d,y,C=null,w=null,E=null,I=void 0,O=null,A=!!d.dynamicChildren)=>{if(f===d)return;f&&!dt(f,d)&&(C=on(f),$e(f,w,E,!0),f=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:T,ref:k,shapeFlag:L}=d;switch(T){case mt:V(f,d,y,C);break;case ye:N(f,d,y,C);break;case Ut:f==null&&U(d,y,C,I);break;case Se:x(f,d,y,C,w,E,I,O,A);break;default:L&1?M(f,d,y,C,w,E,I,O,A):L&6?W(f,d,y,C,w,E,I,O,A):(L&64||L&128)&&T.process(f,d,y,C,w,E,I,O,A,bt)}k!=null&&w&&In(k,f&&f.ref,E,d||f,!d)},V=(f,d,y,C)=>{if(f==null)r(d.el=l(d.children),y,C);else{const w=d.el=f.el;d.children!==f.children&&u(w,d.children)}},N=(f,d,y,C)=>{f==null?r(d.el=c(d.children||""),y,C):d.el=f.el},U=(f,d,y,C)=>{[f.el,f.anchor]=_(f.children,d,y,C,f.el,f.anchor)},p=({el:f,anchor:d},y,C)=>{let w;for(;f&&f!==d;)w=g(f),r(f,y,C),f=w;r(d,y,C)},m=({el:f,anchor:d})=>{let y;for(;f&&f!==d;)y=g(f),s(f),f=y;s(d)},M=(f,d,y,C,w,E,I,O,A)=>{d.type==="svg"?I="svg":d.type==="math"&&(I="mathml"),f==null?F(d,y,C,w,E,I,O,A):R(f,d,w,E,I,O,A)},F=(f,d,y,C,w,E,I,O)=>{let A,T;const{props:k,shapeFlag:L,transition:H,dirs:G}=f;if(A=f.el=o(f.type,E,k&&k.is,k),L&8?a(A,f.children):L&16&&D(f.children,A,null,C,w,lr(f,E),I,O),G&&Ve(f,null,C,"created"),$(A,f,f.scopeId,I,C),k){for(const te in k)te!=="value"&&!At(te)&&i(A,te,null,k[te],E,C);"value"in k&&i(A,"value",null,k.value,E),(T=k.onVnodeBeforeMount)&&Oe(T,C,f)}G&&Ve(f,null,C,"beforeMount");const X=ho(w,H);X&&H.beforeEnter(A),r(A,d,y),((T=k&&k.onVnodeMounted)||X||G)&&Ee(()=>{T&&Oe(T,C,f),X&&H.enter(A),G&&Ve(f,null,C,"mounted")},w)},$=(f,d,y,C,w)=>{if(y&&b(f,y),C)for(let E=0;E{for(let T=A;T{const O=d.el=f.el;let{patchFlag:A,dynamicChildren:T,dirs:k}=d;A|=f.patchFlag&16;const L=f.props||ee,H=d.props||ee;let G;if(y&&ct(y,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,y,d,f),k&&Ve(d,f,y,"beforeUpdate"),y&&ct(y,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(O,""),T?v(f.dynamicChildren,T,O,y,C,lr(d,w),E):I||B(f,d,O,null,y,C,lr(d,w),E,!1),A>0){if(A&16)P(O,L,H,y,w);else if(A&2&&L.class!==H.class&&i(O,"class",null,H.class,w),A&4&&i(O,"style",L.style,H.style,w),A&8){const X=d.dynamicProps;for(let te=0;te{G&&Oe(G,y,d,f),k&&Ve(d,f,y,"updated")},C)},v=(f,d,y,C,w,E,I)=>{for(let O=0;O{if(d!==y){if(d!==ee)for(const E in d)!At(E)&&!(E in y)&&i(f,E,d[E],null,w,C);for(const E in y){if(At(E))continue;const I=y[E],O=d[E];I!==O&&E!=="value"&&i(f,E,O,I,w,C)}"value"in y&&i(f,"value",d.value,y.value,w)}},x=(f,d,y,C,w,E,I,O,A)=>{const T=d.el=f?f.el:l(""),k=d.anchor=f?f.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=d;G&&(O=O?O.concat(G):G),f==null?(r(T,y,C),r(k,y,C),D(d.children||[],y,k,w,E,I,O,A)):L>0&&L&64&&H&&f.dynamicChildren?(v(f.dynamicChildren,H,y,w,E,I,O),(d.key!=null||w&&d===w.subTree)&&rs(f,d,!0)):B(f,d,y,k,w,E,I,O,A)},W=(f,d,y,C,w,E,I,O,A)=>{d.slotScopeIds=O,f==null?d.shapeFlag&512?w.ctx.activate(d,y,C,I,A):re(d,y,C,w,E,I,A):ce(f,d,A)},re=(f,d,y,C,w,E,I)=>{const O=f.component=Xc(f,C,w);if(tn(f)&&(O.ctx.renderer=bt),Jc(O,!1,I),O.asyncDep){if(w&&w.registerDep(O,j,I),!f.el){const A=O.subTree=le(ye);N(null,A,d,y)}}else j(O,f,d,y,w,E,I)},ce=(f,d,y)=>{const C=d.component=f.component;if(Uc(f,d,y))if(C.asyncDep&&!C.asyncResolved){Y(C,d,y);return}else C.next=d,C.update();else d.el=f.el,C.vnode=d},j=(f,d,y,C,w,E,I)=>{const O=()=>{if(f.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:te}=f;{const Ce=po(f);if(Ce){L&&(L.el=te.el,Y(f,L,I)),Ce.asyncDep.then(()=>{f.isUnmounted||O()});return}}let z=L,xe;ct(f,!1),L?(L.el=te.el,Y(f,L,I)):L=te,H&&wn(H),(xe=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(xe,X,L,te),ct(f,!0);const pe=cr(f),Ie=f.subTree;f.subTree=pe,S(Ie,pe,h(Ie.el),on(Ie),f,w,E),L.el=pe.el,z===null&&Bc(f,pe.el),G&&Ee(G,w),(xe=L.props&&L.props.onVnodeUpdated)&&Ee(()=>Oe(xe,X,L,te),w)}else{let L;const{el:H,props:G}=d,{bm:X,m:te,parent:z,root:xe,type:pe}=f,Ie=gt(d);if(ct(f,!1),X&&wn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,z,d),ct(f,!0),H&&Zn){const Ce=()=>{f.subTree=cr(f),Zn(H,f.subTree,f,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,f,Ce):Ce()}else{xe.ce&&xe.ce._injectChildStyle(pe);const Ce=f.subTree=cr(f);S(null,Ce,y,C,f,w,E),d.el=Ce.el}if(te&&Ee(te,w),!Ie&&(L=G&&G.onVnodeMounted)){const Ce=d;Ee(()=>Oe(L,z,Ce),w)}(d.shapeFlag&256||z&>(z.vnode)&&z.vnode.shapeFlag&256)&&f.a&&Ee(f.a,w),f.isMounted=!0,d=y=C=null}};f.scope.on();const A=f.effect=new _i(O);f.scope.off();const T=f.update=A.run.bind(A),k=f.job=A.runIfDirty.bind(A);k.i=f,k.id=f.uid,A.scheduler=()=>Wn(k),ct(f,!0),T()},Y=(f,d,y)=>{d.component=f;const C=f.vnode.props;f.vnode=d,f.next=null,Tc(f,d.props,C,y),Mc(f,d.children,y),it(),_s(f),ot()},B=(f,d,y,C,w,E,I,O,A=!1)=>{const T=f&&f.children,k=f?f.shapeFlag:0,L=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){sn(T,L,y,C,w,E,I,O,A);return}else if(H&256){he(T,L,y,C,w,E,I,O,A);return}}G&8?(k&16&&Pt(T,w,E),L!==T&&a(y,L)):k&16?G&16?sn(T,L,y,C,w,E,I,O,A):Pt(T,w,E,!0):(k&8&&a(y,""),G&16&&D(L,y,C,w,E,I,O,A))},he=(f,d,y,C,w,E,I,O,A)=>{f=f||Ct,d=d||Ct;const T=f.length,k=d.length,L=Math.min(T,k);let H;for(H=0;Hk?Pt(f,w,E,!0,!1,L):D(d,y,C,w,E,I,O,A,L)},sn=(f,d,y,C,w,E,I,O,A)=>{let T=0;const k=d.length;let L=f.length-1,H=k-1;for(;T<=L&&T<=H;){const G=f[T],X=d[T]=A?et(d[T]):Me(d[T]);if(dt(G,X))S(G,X,y,null,w,E,I,O,A);else break;T++}for(;T<=L&&T<=H;){const G=f[L],X=d[H]=A?et(d[H]):Me(d[H]);if(dt(G,X))S(G,X,y,null,w,E,I,O,A);else break;L--,H--}if(T>L){if(T<=H){const G=H+1,X=GH)for(;T<=L;)$e(f[T],w,E,!0),T++;else{const G=T,X=T,te=new Map;for(T=X;T<=H;T++){const Te=d[T]=A?et(d[T]):Me(d[T]);Te.key!=null&&te.set(Te.key,T)}let z,xe=0;const pe=H-X+1;let Ie=!1,Ce=0;const Nt=new Array(pe);for(T=0;T=pe){$e(Te,w,E,!0);continue}let De;if(Te.key!=null)De=te.get(Te.key);else for(z=X;z<=H;z++)if(Nt[z-X]===0&&dt(Te,d[z])){De=z;break}De===void 0?$e(Te,w,E,!0):(Nt[De-X]=T+1,De>=Ce?Ce=De:Ie=!0,S(Te,d[De],y,null,w,E,I,O,A),xe++)}const us=Ie?Pc(Nt):Ct;for(z=us.length-1,T=pe-1;T>=0;T--){const Te=X+T,De=d[Te],ds=Te+1{const{el:E,type:I,transition:O,children:A,shapeFlag:T}=f;if(T&6){lt(f.component.subTree,d,y,C);return}if(T&128){f.suspense.move(d,y,C);return}if(T&64){I.move(f,d,y,bt);return}if(I===Se){r(E,d,y);for(let L=0;LO.enter(E),w);else{const{leave:L,delayLeave:H,afterLeave:G}=O,X=()=>r(E,d,y),te=()=>{L(E,()=>{X(),G&&G()})};H?H(E,X,te):te()}else r(E,d,y)},$e=(f,d,y,C=!1,w=!1)=>{const{type:E,props:I,ref:O,children:A,dynamicChildren:T,shapeFlag:k,patchFlag:L,dirs:H,cacheIndex:G}=f;if(L===-2&&(w=!1),O!=null&&In(O,null,y,f,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(f);return}const X=k&1&&H,te=!gt(f);let z;if(te&&(z=I&&I.onVnodeBeforeUnmount)&&Oe(z,d,f),k&6)Yo(f.component,y,C);else{if(k&128){f.suspense.unmount(y,C);return}X&&Ve(f,null,d,"beforeUnmount"),k&64?f.type.remove(f,d,y,bt,C):T&&!T.hasOnce&&(E!==Se||L>0&&L&64)?Pt(T,d,y,!1,!0):(E===Se&&L&384||!w&&k&16)&&Pt(A,d,y),C&&as(f)}(te&&(z=I&&I.onVnodeUnmounted)||X)&&Ee(()=>{z&&Oe(z,d,f),X&&Ve(f,null,d,"unmounted")},y)},as=f=>{const{type:d,el:y,anchor:C,transition:w}=f;if(d===Se){Go(y,C);return}if(d===Ut){m(f);return}const E=()=>{s(y),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(f.shapeFlag&1&&w&&!w.persisted){const{leave:I,delayLeave:O}=w,A=()=>I(y,E);O?O(f.el,E,A):A()}else E()},Go=(f,d)=>{let y;for(;f!==d;)y=g(f),s(f),f=y;s(d)},Yo=(f,d,y)=>{const{bum:C,scope:w,job:E,subTree:I,um:O,m:A,a:T}=f;Ls(A),Ls(T),C&&wn(C),w.stop(),E&&(E.flags|=8,$e(I,f,d,y)),O&&Ee(O,d),Ee(()=>{f.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Pt=(f,d,y,C=!1,w=!1,E=0)=>{for(let I=E;I{if(f.shapeFlag&6)return on(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const d=g(f.anchor||f.el),y=d&&d[Vi];return y?g(y):d};let zn=!1;const fs=(f,d,y)=>{f==null?d._vnode&&$e(d._vnode,null,null,!0):S(d._vnode||null,f,d,null,null,null,y),d._vnode=f,zn||(zn=!0,_s(),On(),zn=!1)},bt={p:S,um:$e,m:lt,r:as,mt:re,mc:D,pc:B,pbc:v,n:on,o:e};let Qn,Zn;return t&&([Qn,Zn]=t(bt)),{render:fs,hydrate:Qn,createApp:Ec(fs,Qn)}}function lr({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 ct({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ho(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function rs(e,t,n=!1){const r=e.children,s=t.children;if(K(r)&&K(s))for(let i=0;i>1,e[n[l]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function po(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:po(t)}function Ls(e){if(e)for(let t=0;tMt(Nc);function ss(e,t){return Gn(e,null,t)}function jf(e,t){return Gn(e,null,{flush:"post"})}function Be(e,t,n){return Gn(e,t,n)}function Gn(e,t,n=ee){const{immediate:r,deep:s,flush:i,once:o}=n,l=fe({},n);let c;if(rn)if(i==="sync"){const g=Fc();c=g.__watcherHandles||(g.__watcherHandles=[])}else if(!t||r)l.once=!0;else return{stop:Ue,resume:Ue,pause:Ue};const u=ue;l.call=(g,b,_)=>Fe(g,u,b,_);let a=!1;i==="post"?l.scheduler=g=>{Ee(g,u&&u.suspense)}:i!=="sync"&&(a=!0,l.scheduler=(g,b)=>{b?g():Wn(g)}),l.augmentJob=g=>{t&&(g.flags|=4),a&&(g.flags|=2,u&&(g.id=u.uid,g.i=u))};const h=kl(e,t,l);return c&&c.push(h),h}function Hc(e,t,n){const r=this.proxy,s=se(e)?e.includes(".")?go(r,e):()=>r[e]:e.bind(r,r);let i;q(t)?i=t:(i=t.handler,n=t);const o=nn(this),l=Gn(s,i.bind(r),n);return o(),l}function go(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ne(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Dc(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ee;let s=n;const i=t.startsWith("update:"),o=i&&$c(r,t.slice(7));o&&(o.trim&&(s=n.map(a=>se(a)?a.trim():a)),o.number&&(s=n.map(Sr)));let l,c=r[l=_n(t)]||r[l=_n(Ne(t))];!c&&i&&(c=r[l=_n(st(t))]),c&&Fe(c,e,6,s);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Fe(u,e,6,s)}}function mo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const i=e.emits;let o={},l=!1;if(!q(e)){const c=u=>{const a=mo(u,t,!0);a&&(l=!0,fe(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&r.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):fe(o,i),ne(e)&&r.set(e,o),o)}function Yn(e,t){return!e||!Qt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Q(e,t[0].toLowerCase()+t.slice(1))||Q(e,st(t))||Q(e,t))}function cr(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:a,props:h,data:g,setupState:b,ctx:_,inheritAttrs:S}=e,V=Mn(e);let N,U;try{if(n.shapeFlag&4){const m=s||r,M=m;N=Me(u.call(M,m,a,h,b,g,_)),U=l}else{const m=t;N=Me(m.length>1?m(h,{attrs:l,slots:o,emit:c}):m(h,null)),U=t.props?l:jc(l)}}catch(m){Bt.length=0,en(m,e,1),N=le(ye)}let p=N;if(U&&S!==!1){const m=Object.keys(U),{shapeFlag:M}=p;m.length&&M&7&&(i&&m.some(Dr)&&(U=Vc(U,i)),p=nt(p,U,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(V),N}const jc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Qt(n))&&((t||(t={}))[n]=e[n]);return t},Vc=(e,t)=>{const n={};for(const r in e)(!Dr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Uc(e,t,n){const{props:r,children:s,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 r?Ps(r,o,u):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function vo(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):ql(e)}const Se=Symbol.for("v-fgt"),mt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Ut=Symbol.for("v-stc"),Bt=[];let Ae=null;function Lr(e=!1){Bt.push(Ae=e?null:[])}function kc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Xt=1;function Ns(e){Xt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function bo(e){return e.dynamicChildren=Xt>0?Ae||Ct:null,kc(),Xt>0&&Ae&&Ae.push(e),e}function Vf(e,t,n,r,s,i){return bo(wo(e,t,n,r,s,i,!0))}function Pr(e,t,n,r,s){return bo(le(e,t,n,r,s,!0))}function Pn(e){return e?e.__v_isVNode===!0:!1}function dt(e,t){return e.type===t.type&&e.key===t.key}const _o=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||ae(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function wo(e,t=null,n=null,r=0,s=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&_o(t),ref:t&&xn(t),scopeId:ji,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:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:de};return l?(is(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Xt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const le=Wc;function Wc(e,t=null,n=null,r=0,s=null,i=!1){if((!e||e===zi)&&(e=ye),Pn(e)){const l=nt(e,t,!0);return n&&is(l,n),Xt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(ea(e)&&(e=e.__vccOpts),t){t=Kc(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Br(l)),ne(c)&&(Xr(c)&&!K(c)&&(c=fe({},c)),t.style=Ur(c))}const o=se(e)?1:yo(e)?128:Ui(e)?64:ne(e)?4:q(e)?2:0;return wo(e,t,n,r,s,o,i,!0)}function Kc(e){return e?Xr(e)||so(e)?fe({},e):e:null}function nt(e,t,n=!1,r=!1){const{props:s,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?qc(s||{},t):s,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&_o(u),ref:t&&t.ref?n&&i?K(i)?i.concat(xn(t)):[i,xn(t)]:xn(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!==Se?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&&r&&Yt(a,c.clone(a)),a}function So(e=" ",t=0){return le(mt,null,e,t)}function Uf(e,t){const n=le(Ut,null,e);return n.staticCount=t,n}function Bf(e="",t=!1){return t?(Lr(),Pr(ye,null,e)):le(ye,null,e)}function Me(e){return e==null||typeof e=="boolean"?le(ye):K(e)?le(Se,null,e.slice()):typeof e=="object"?et(e):le(mt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function is(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),is(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!so(t)?t._ctx=de:s===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),r&64?(n=16,t=[So(t)]):n=8);e.children=t,e.shapeFlag|=n}function qc(...e){const t={};for(let n=0;nue||de;let Nn,Nr;{const e=gi(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),i=>{s.length>1?s.forEach(o=>o(i)):s[0](i)}};Nn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Nr=t("__VUE_SSR_SETTERS__",n=>rn=n)}const nn=e=>{const t=ue;return Nn(e),e.scope.on(),()=>{e.scope.off(),Nn(t)}},Fs=()=>{ue&&ue.scope.off(),Nn(null)};function Eo(e){return e.vnode.shapeFlag&4}let rn=!1;function Jc(e,t=!1,n=!1){t&&Nr(t);const{props:r,children:s}=e.vnode,i=Eo(e);Cc(e,r,i,t),Oc(e,s,n);const o=i?zc(e,t):void 0;return t&&Nr(!1),o}function zc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,gc);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Co(e):null,i=nn(e);it();const o=Zt(r,e,0,[e.props,s]);if(ot(),i(),ui(o)){if(gt(e)||es(e),o.then(Fs,Fs),t)return o.then(l=>{Hs(e,l,t)}).catch(l=>{en(l,e,0)});e.asyncDep=o}else Hs(e,o,t)}else xo(e,t)}function Hs(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Fi(t)),xo(e,n)}let $s;function xo(e,t,n){const r=e.type;if(!e.render){if(!t&&$s&&!r.render){const s=r.template||ts(e).template;if(s){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,u=fe(fe({isCustomElement:i,delimiters:l},o),c);r.render=$s(s,u)}}e.render=r.render||Ue}{const s=nn(e);it();try{yc(e)}finally{ot(),s()}}}const Qc={get(e,t){return ve(e,"get",""),e[t]}};function Co(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Qc),slots:e.slots,emit:e.emit,expose:t}}function Jn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Fi(Sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Vt)return Vt[n](e)},has(t,n){return n in t||n in Vt}})):e.proxy}function Zc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function ea(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Ul(e,t,rn);function Fr(e,t,n){const r=arguments.length;return r===2?ne(t)&&!K(t)?Pn(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Pn(n)&&(n=[n]),le(e,t,n))}const ta="3.5.3";/** +* @vue/runtime-dom v3.5.3 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Hr;const Ds=typeof window<"u"&&window.trustedTypes;if(Ds)try{Hr=Ds.createPolicy("vue",{createHTML:e=>e})}catch{}const To=Hr?e=>Hr.createHTML(e):e=>e,na="http://www.w3.org/2000/svg",ra="http://www.w3.org/1998/Math/MathML",Ke=typeof document<"u"?document:null,js=Ke&&Ke.createElement("template"),sa={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ke.createElementNS(na,e):t==="mathml"?Ke.createElementNS(ra,e):n?Ke.createElement(e,{is:n}):Ke.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},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,r,s,i){const o=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{js.innerHTML=To(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=js.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Je="transition",Ht="animation",Jt=Symbol("_vtc"),Ao={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},ia=fe({},ki,Ao),oa=e=>(e.displayName="Transition",e.props=ia,e),kf=oa((e,{slots:t})=>Fr(Zl,la(e),t)),at=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Vs=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function la(e){const t={};for(const x in e)x in Ao||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:b=`${n}-leave-to`}=e,_=ca(s),S=_&&_[0],V=_&&_[1],{onBeforeEnter:N,onEnter:U,onEnterCancelled:p,onLeave:m,onLeaveCancelled:M,onBeforeAppear:F=N,onAppear:$=U,onAppearCancelled:D=p}=t,R=(x,W,re)=>{ft(x,W?a:l),ft(x,W?u:o),re&&re()},v=(x,W)=>{x._isLeaving=!1,ft(x,h),ft(x,b),ft(x,g),W&&W()},P=x=>(W,re)=>{const ce=x?$:U,j=()=>R(W,x,re);at(ce,[W,j]),Us(()=>{ft(W,x?c:i),ze(W,x?a:l),Vs(ce)||Bs(W,r,S,j)})};return fe(t,{onBeforeEnter(x){at(N,[x]),ze(x,i),ze(x,o)},onBeforeAppear(x){at(F,[x]),ze(x,c),ze(x,u)},onEnter:P(!1),onAppear:P(!0),onLeave(x,W){x._isLeaving=!0;const re=()=>v(x,W);ze(x,h),ze(x,g),ua(),Us(()=>{x._isLeaving&&(ft(x,h),ze(x,b),Vs(m)||Bs(x,r,V,re))}),at(m,[x,re])},onEnterCancelled(x){R(x,!1),at(p,[x])},onAppearCancelled(x){R(x,!0),at(D,[x])},onLeaveCancelled(x){v(x),at(M,[x])}})}function ca(e){if(e==null)return null;if(ne(e))return[ar(e.enter),ar(e.leave)];{const t=ar(e);return[t,t]}}function ar(e){return el(e)}function ze(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Jt]||(e[Jt]=new Set)).add(t)}function ft(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Jt];n&&(n.delete(t),n.size||(e[Jt]=void 0))}function Us(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let aa=0;function Bs(e,t,n,r){const s=e._endId=++aa,i=()=>{s===e._endId&&r()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=fa(e,t);if(!o)return r();const u=o+"end";let a=0;const h=()=>{e.removeEventListener(u,g),i()},g=b=>{b.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[_]||"").split(", "),s=r(`${Je}Delay`),i=r(`${Je}Duration`),o=ks(s,i),l=r(`${Ht}Delay`),c=r(`${Ht}Duration`),u=ks(l,c);let a=null,h=0,g=0;t===Je?o>0&&(a=Je,h=o,g=i.length):t===Ht?u>0&&(a=Ht,h=u,g=c.length):(h=Math.max(o,u),a=h>0?o>u?Je:Ht:null,g=a?a===Je?i.length:c.length:0);const b=a===Je&&/\b(transform|all)(,|$)/.test(r(`${Je}Property`).toString());return{type:a,timeout:h,propCount:g,hasTransform:b}}function ks(e,t){for(;e.lengthWs(n)+Ws(e[r])))}function Ws(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ua(){return document.body.offsetHeight}function da(e,t,n){const r=e[Jt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ks=Symbol("_vod"),ha=Symbol("_vsh"),pa=Symbol(""),ga=/(^|;)\s*display\s*:/;function ma(e,t,n){const r=e.style,s=se(n);let i=!1;if(n&&!s){if(t)if(se(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Cn(r,l,"")}else for(const o in t)n[o]==null&&Cn(r,o,"");for(const o in n)o==="display"&&(i=!0),Cn(r,o,n[o])}else if(s){if(t!==n){const o=r[pa];o&&(n+=";"+o),r.cssText=n,i=ga.test(n)}}else t&&e.removeAttribute("style");Ks in e&&(e[Ks]=i?r.display:"",e[ha]&&(r.display="none"))}const qs=/\s*!important$/;function Cn(e,t,n){if(K(n))n.forEach(r=>Cn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=ya(e,t);qs.test(n)?e.setProperty(st(r),n.replace(qs,""),"important"):e[r]=n}}const Gs=["Webkit","Moz","ms"],fr={};function ya(e,t){const n=fr[t];if(n)return n;let r=Ne(t);if(r!=="filter"&&r in e)return fr[t]=r;r=$n(r);for(let s=0;sur||(Sa.then(()=>ur=0),ur=Date.now());function xa(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Fe(Ca(r,n.value),t,5,[r])};return n.value=e,n.attached=Ea(),n}function Ca(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Qs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ta=(e,t,n,r,s,i)=>{const o=s==="svg";t==="class"?da(e,r,o):t==="style"?ma(e,n,r):Qt(t)?Dr(t)||_a(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Aa(e,t,r,o))?(va(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Xs(e,t,r,o,i,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Xs(e,t,r,o))};function Aa(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Qs(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 s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Qs(t)&&se(n)?!1:!!(t in e||e._isVueCE&&(/[A-Z]/.test(t)||!se(n)))}const Zs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>wn(t,n):t};function Ra(e){e.target.composing=!0}function ei(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const dr=Symbol("_assign"),Wf={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[dr]=Zs(s);const i=r||s.props&&s.props.type==="number";Et(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=Sr(l)),e[dr](l)}),n&&Et(e,"change",()=>{e.value=e.value.trim()}),t||(Et(e,"compositionstart",Ra),Et(e,"compositionend",ei),Et(e,"change",ei))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:i}},o){if(e[dr]=Zs(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Sr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},Oa=["ctrl","shift","alt","meta"],Ma={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)=>Oa.some(n=>e[`${n}Key`]&&!t.includes(n))},Kf=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const i=st(s.key);if(t.some(o=>o===i||Ia[o]===i))return e(s)})},Ro=fe({patchProp:Ta},sa);let kt,ti=!1;function La(){return kt||(kt=Ic(Ro))}function Pa(){return kt=ti?kt:Lc(Ro),ti=!0,kt}const Gf=(...e)=>{const t=La().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Mo(r);if(!s)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const o=n(s,!1,Oo(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t},Yf=(...e)=>{const t=Pa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Mo(r);if(s)return n(s,!0,Oo(s))},t};function Oo(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Mo(e){return se(e)?document.querySelector(e):e}const Xf=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Na=window.__VP_SITE_DATA__;function os(e){return bi()?(al(e),!0):!1}function ke(e){return typeof e=="function"?e():Ni(e)}const Io=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Jf=e=>e!=null,Fa=Object.prototype.toString,Ha=e=>Fa.call(e)==="[object Object]",zt=()=>{},ni=$a();function $a(){var e,t;return Io&&((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 Da(e,t){function n(...r){return new Promise((s,i)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(i)})}return n}const Lo=e=>e();function ja(e,t={}){let n,r,s=zt;const i=l=>{clearTimeout(l),s(),s=zt};return l=>{const c=ke(e),u=ke(t.maxWait);return n&&i(n),c<=0||u!==void 0&&u<=0?(r&&(i(r),r=null),Promise.resolve(l())):new Promise((a,h)=>{s=t.rejectOnCancel?h:a,u&&!r&&(r=setTimeout(()=>{n&&i(n),r=null,a(l())},u)),n=setTimeout(()=>{r&&i(r),r=null,a(l())},c)})}}function Va(e=Lo){const t=oe(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...i)=>{t.value&&e(...i)};return{isActive:Bn(t),pause:n,resume:r,eventFilter:s}}function Ua(e){return Xn()}function Po(...e){if(e.length!==1)return Dl(...e);const t=e[0];return typeof t=="function"?Bn(Fl(()=>({get:t,set:zt}))):oe(t)}function No(e,t,n={}){const{eventFilter:r=Lo,...s}=n;return Be(e,Da(r,t),s)}function Ba(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Va(r);return{stop:No(e,t,{...s,eventFilter:i}),pause:o,resume:l,isActive:c}}function ls(e,t=!0,n){Ua()?Lt(e,n):t?e():kn(e)}function zf(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...i}=n;return No(e,t,{...i,eventFilter:ja(r,{maxWait:s})})}function Qf(e,t,n){let r;ae(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:i=void 0,shallow:o=!0,onError:l=zt}=r,c=oe(!s),u=o?zr(t):oe(t);let a=0;return ss(async h=>{if(!c.value)return;a++;const g=a;let b=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const _=await e(S=>{h(()=>{i&&(i.value=!1),b||S()})});g===a&&(u.value=_)}catch(_){l(_)}finally{i&&g===a&&(i.value=!1),b=!0}}),s?ie(()=>(c.value=!0,u.value)):u}function Fo(e){var t;const n=ke(e);return(t=n==null?void 0:n.$el)!=null?t:n}const He=Io?window:void 0;function It(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=He):[t,n,r,s]=e,!t)return zt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,g,b)=>(a.addEventListener(h,g,b),()=>a.removeEventListener(h,g,b)),c=Be(()=>[Fo(t),ke(s)],([a,h])=>{if(o(),!a)return;const g=Ha(h)?{...h}:h;i.push(...n.flatMap(b=>r.map(_=>l(a,b,_,g))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return os(u),u}function ka(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Zf(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=He,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=r,c=ka(t);return It(s,i,a=>{a.repeat&&ke(l)||c(a)&&n(a)},o)}function Wa(){const e=oe(!1),t=Xn();return t&&Lt(()=>{e.value=!0},t),e}function Ka(e){const t=Wa();return ie(()=>(t.value,!!e()))}function Ho(e,t={}){const{window:n=He}=t,r=Ka(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const i=oe(!1),o=u=>{i.value=u.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",o):s.removeListener(o))},c=ss(()=>{r.value&&(l(),s=n.matchMedia(ke(e)),"addEventListener"in s?s.addEventListener("change",o):s.addListener(o),i.value=s.matches)});return os(()=>{c(),l(),s=void 0}),i}const yn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vn="__vueuse_ssr_handlers__",qa=Ga();function Ga(){return vn in yn||(yn[vn]=yn[vn]||{}),yn[vn]}function $o(e,t){return qa[e]||t}function Ya(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 Xa={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()}},ri="vueuse-storage";function cs(e,t,n,r={}){var s;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:a,window:h=He,eventFilter:g,onError:b=v=>{console.error(v)},initOnMounted:_}=r,S=(a?zr:oe)(typeof t=="function"?t():t);if(!n)try{n=$o("getDefaultStorage",()=>{var v;return(v=He)==null?void 0:v.localStorage})()}catch(v){b(v)}if(!n)return S;const V=ke(t),N=Ya(V),U=(s=r.serializer)!=null?s:Xa[N],{pause:p,resume:m}=Ba(S,()=>F(S.value),{flush:i,deep:o,eventFilter:g});h&&l&&ls(()=>{n instanceof Storage?It(h,"storage",D):It(h,ri,R),_&&D()}),_||D();function M(v,P){if(h){const x={key:e,oldValue:v,newValue:P,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(ri,{detail:x}))}}function F(v){try{const P=n.getItem(e);if(v==null)M(P,null),n.removeItem(e);else{const x=U.write(v);P!==x&&(n.setItem(e,x),M(P,x))}}catch(P){b(P)}}function $(v){const P=v?v.newValue:n.getItem(e);if(P==null)return c&&V!=null&&n.setItem(e,U.write(V)),V;if(!v&&u){const x=U.read(P);return typeof u=="function"?u(x,V):N==="object"&&!Array.isArray(x)?{...V,...x}:x}else return typeof P!="string"?P:U.read(P)}function D(v){if(!(v&&v.storageArea!==n)){if(v&&v.key==null){S.value=V;return}if(!(v&&v.key!==e)){p();try{(v==null?void 0:v.newValue)!==U.write(S.value)&&(S.value=$(v))}catch(P){b(P)}finally{v?kn(m):m()}}}}function R(v){D(v.detail)}return S}function Do(e){return Ho("(prefers-color-scheme: dark)",e)}const Ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function za(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=He,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},g=Do({window:s}),b=ie(()=>g.value?"dark":"light"),_=c||(o==null?Po(r):cs(o,r,i,{window:s,listenToStorageChanges:l})),S=ie(()=>_.value==="auto"?b.value:_.value),V=$o("updateHTMLAttrs",(m,M,F)=>{const $=typeof m=="string"?s==null?void 0:s.document.querySelector(m):Fo(m);if(!$)return;const D=new Set,R=new Set;let v=null;if(M==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(W=>(W||"").split(/\s/g)).filter(Boolean).forEach(W=>{x.includes(W)?D.add(W):R.add(W)})}else v={key:M,value:F};if(D.size===0&&R.size===0&&v===null)return;let P;a&&(P=s.document.createElement("style"),P.appendChild(document.createTextNode(Ja)),s.document.head.appendChild(P));for(const x of D)$.classList.add(x);for(const x of R)$.classList.remove(x);v&&$.setAttribute(v.key,v.value),a&&(s.getComputedStyle(P).opacity,document.head.removeChild(P))});function N(m){var M;V(t,n,(M=h[m])!=null?M:m)}function U(m){e.onChanged?e.onChanged(m,N):N(m)}Be(S,U,{flush:"post",immediate:!0}),ls(()=>U(S.value));const p=ie({get(){return u?_.value:S.value},set(m){_.value=m}});try{return Object.assign(p,{store:_,system:b,state:S})}catch{return p}}function Qa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=He}=e,s=za({...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(()=>s.system?s.system.value:Do({window:r}).value?"dark":"light");return ie({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?s.value="auto":s.value=c}})}function hr(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function eu(e,t,n={}){const{window:r=He}=n;return cs(e,t,r==null?void 0:r.localStorage,n)}function jo(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 pr=new WeakMap;function tu(e,t=!1){const n=oe(t);let r=null,s="";Be(Po(e),l=>{const c=hr(ke(l));if(c){const u=c;if(pr.get(u)||pr.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(s=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=hr(ke(e));!l||n.value||(ni&&(r=It(l,"touchmove",c=>{Za(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=hr(ke(e));!l||!n.value||(ni&&(r==null||r()),l.style.overflow=s,pr.delete(l),n.value=!1)};return os(o),ie({get(){return n.value},set(l){l?i():o()}})}function nu(e,t,n={}){const{window:r=He}=n;return cs(e,t,r==null?void 0:r.sessionStorage,n)}function ru(e={}){const{window:t=He,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const r=oe(t.scrollX),s=oe(t.scrollY),i=ie({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return It(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function su(e={}){const{window:t=He,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(r),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(),ls(u),It("resize",u,{passive:!0}),s){const a=Ho("(orientation: portrait)");Be(a,()=>u())}return{width:l,height:c}}const gr={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var mr={};const Vo=/^(?:[a-z]+:|\/\/)/i,ef="vitepress-theme-appearance",tf=/#.*$/,nf=/[?#].*$/,rf=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Uo={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function sf(e,t,n=!1){if(t===void 0)return!1;if(e=si(`/${e}`),n)return new RegExp(t).test(e);if(si(t)!==e)return!1;const r=t.match(tf);return r?(ge?location.hash:"")===r[0]:!0}function si(e){return decodeURI(e).replace(nf,"").replace(rf,"$1")}function of(e){return Vo.test(e)}function lf(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!of(n)&&sf(t,`/${n}/`,!0))||"root"}function cf(e,t){var r,s,i,o,l,c,u;const n=lf(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((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:ko(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function Bo(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=af(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function af(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ff(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([i,o])=>i===n&&o[s[0]]===s[1])}function ko(e,t){return[...e.filter(n=>!ff(t,n)),...t]}const uf=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,df=/^[a-z]:/i;function ii(e){const t=df.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(uf,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const yr=new Set;function hf(e){if(yr.size===0){const n=typeof process=="object"&&(mr==null?void 0:mr.VITE_EXTRA_EXTENSIONS)||(gr==null?void 0:gr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>yr.add(r))}const t=e.split(".").pop();return t==null||!yr.has(t.toLowerCase())}function iu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const pf=Symbol(),yt=zr(Na);function ou(e){const t=ie(()=>cf(yt.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?oe(!0):n?Qa({storageKey:ef,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),s=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Be(()=>e.data,()=>{s.value=ge?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(()=>Bo(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:r,hash:ie(()=>s.value)}}function gf(){const e=Mt(pf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function mf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function oi(e){return Vo.test(e)||!e.startsWith("/")?e:mf(yt.value.base,e)}function yf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/";t=ii(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${ii(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function lu(e){Tn.push(e),qn(()=>{Tn=Tn.filter(t=>t!==e)})}function vf(){let e=yt.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=li(e,n);else if(Array.isArray(e))for(const r of e){const s=li(r,n);if(s){t=s;break}}return t}function li(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const bf=Symbol(),Wo="http://a.com",_f=()=>({path:"/",component:null,data:Uo});function cu(e,t){const n=Un(_f()),r={route:n,go:s};async function s(l=ge?location.href:"/"){var c,u;l=vr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(ge&&l!==vr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((u=r.onAfterRouteChanged)==null?void 0:u.call(r,l)))}let i=null;async function o(l,c=0,u=!1){var g;if(await((g=r.onBeforePageLoad)==null?void 0:g.call(r,l))===!1)return;const a=new URL(l,Wo),h=i=a.pathname;try{let b=await e(h);if(!b)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:S}=b;if(!_)throw new Error(`Invalid route component: ${_}`);n.path=ge?h:oi(h),n.component=Sn(_),n.data=Sn(S),ge&&kn(()=>{let V=yt.value.base+S.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!yt.value.cleanUrls&&!V.endsWith("/")&&(V+=".html"),V!==a.pathname&&(a.pathname=V,l=V+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let N=null;try{N=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(U){console.warn(U)}if(N){ci(N,a.hash);return}}window.scrollTo(0,c)})}}catch(b){if(!/fetch|Page not found/.test(b.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(b),!u)try{const _=await fetch(yt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:oi(h),n.component=t?Sn(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Uo,relativePath:_}}}}return ge&&(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:a,origin:h,pathname:g,hash:b,search:_}=new URL(u,c.baseURI),S=new URL(location.href);h===S.origin&&hf(g)&&(l.preventDefault(),g===S.pathname&&_===S.search?(b!==S.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:S.href,newURL:a}))),b?ci(c,b,c.classList.contains("header-anchor")):window.scrollTo(0,0)):s(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(vr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function wf(){const e=Mt(bf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ko(){return wf().route}function ci(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(r).paddingTop,10),o=window.scrollY+r.getBoundingClientRect().top-vf()+i;requestAnimationFrame(s)}}function vr(e){const t=new URL(e,Wo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),yt.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 br=()=>Tn.forEach(e=>e()),au=Zr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ko(),{site:n}=gf();return()=>Fr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Fr(t.component,{onVnodeMounted:br,onVnodeUpdated:br,onVnodeUnmounted:br}):"404 Page Not Found"])}}),Sf="modulepreload",Ef=function(e){return"/"+e},ai={},fu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=Ef(l),l in ai)return;ai[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const a=document.createElement("link");if(a.rel=c?"stylesheet":Sf,c||(a.as="script"),a.crossOrigin="",a.href=l,o&&a.setAttribute("nonce",o),document.head.appendChild(a),c)return new Promise((h,g)=>{a.addEventListener("load",h),a.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},uu=Zr({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function du(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const i=r.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[s];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function hu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,i=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),xf(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function xf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function pu(e,t){let n=!0,r=[];const s=i=>{if(n){n=!1,i.forEach(l=>{const c=_r(l);for(const u of document.head.children)if(u.isEqualNode(c)){r.push(u);return}});return}const o=i.map(_r);r.forEach((l,c)=>{const u=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete r[c])}),o.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...o].filter(Boolean)};ss(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=Bo(o,i);u!==document.title&&(document.title=u);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):_r(["meta",{name:"description",content:a}]),s(ko(o.head,Tf(c)))})}function _r([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function Cf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Tf(e){return e.filter(t=>!Cf(t))}const wr=new Set,qo=()=>document.createElement("link"),Af=e=>{const t=qo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Rf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let bn;const Of=ge&&(bn=qo())&&bn.relList&&bn.relList.supports&&bn.relList.supports("prefetch")?Af:Rf;function gu(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!wr.has(c)){wr.add(c);const u=yf(c);u&&Of(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):wr.add(l))})})};Lt(r);const s=Ko();Be(()=>s.path,r),qn(()=>{n&&n.disconnect()})}export{Xi as $,vf as A,Pf as B,Ff as C,zr as D,lu as E,Se as F,le as G,Nf as H,Vo as I,Ko as J,qc as K,Mt as L,su as M,Ur as N,Zf as O,kn as P,ru as Q,ge as R,Bn as S,kf as T,Lf as U,fu as V,tu as W,xc as X,qf as Y,$f as Z,Xf as _,So as a,Kf as a0,Df as a1,Uf as a2,pu as a3,bf as a4,ou as a5,pf as a6,au as a7,uu as a8,yt as a9,Yf as aa,cu as ab,yf as ac,gu as ad,hu as ae,du as af,Fr as ag,ke as ah,Fo as ai,Jf as aj,os as ak,Qf as al,nu as am,eu as an,zf as ao,wf as ap,It as aq,Mf as ar,Wf as as,ae as at,If as au,Sn as av,Gf as aw,iu as ax,Pr as b,Vf as c,Zr as d,Bf as e,hf as f,oi as g,ie as h,of as i,wo as j,Ni as k,sf as l,Ho as m,Br as n,Lr as o,oe as p,Be as q,Hf as r,ss as s,ll as t,gf as u,Lt as v,Gl as w,qn as x,jf as y,fc as z}; diff --git a/assets/chunks/metadata.97dc7206.js b/assets/chunks/metadata.97dc7206.js new file mode 100644 index 00000000..fd8b9448 --- /dev/null +++ b/assets/chunks/metadata.97dc7206.js @@ -0,0 +1 @@ +window.__VP_HASH_MAP__=JSON.parse("{\"advanced-usage_index.md\":\"CBsLYOHq\",\"advanced-usage_multi-level-sidebar-with-indents.md\":\"BwM3JzfA\",\"advanced-usage_multiple-sidebars-how-to.md\":\"CyFTdfBh\",\"changelog.md\":\"C3QyKCQv\",\"guide_api.md\":\"DKSkYdiv\",\"guide_getting-started.md\":\"DYGSUkQV\",\"guide_index.md\":\"BEfDrhJP\",\"index.md\":\"C90YfVNs\",\"introduction.md\":\"BHpka9lK\",\"ko_advanced-usage_index.md\":\"ASOTCoFU\",\"ko_advanced-usage_multi-level-sidebar-with-indents.md\":\"C68Qmefh\",\"ko_advanced-usage_multiple-sidebars-how-to.md\":\"BDUU0RwO\",\"ko_changelog.md\":\"DrgKN5Ov\",\"ko_guide_api.md\":\"Cn2BChr3\",\"ko_guide_getting-started.md\":\"L_Za747I\",\"ko_guide_index.md\":\"BYJyD7jh\",\"ko_index.md\":\"Br0FQalq\",\"ko_introduction.md\":\"DYjdzdIg\",\"ko_troubleshooting_err-require-esm.md\":\"jueESLZ_\",\"ko_troubleshooting_index.md\":\"XnPXA5O8\",\"troubleshooting_err-require-esm.md\":\"B23WtflU\",\"troubleshooting_index.md\":\"8UxK7tSN\",\"zhhans_advanced-usage_index.md\":\"CHqSt9Bt\",\"zhhans_advanced-usage_multi-level-sidebar-with-indents.md\":\"DojwCGVp\",\"zhhans_advanced-usage_multiple-sidebars-how-to.md\":\"MvLzNpu-\",\"zhhans_changelog.md\":\"D0V1uMFw\",\"zhhans_guide_api.md\":\"BnIfwLNm\",\"zhhans_guide_getting-started.md\":\"C3ScFuII\",\"zhhans_guide_index.md\":\"DtFUGJau\",\"zhhans_index.md\":\"wnbYp8zV\",\"zhhans_introduction.md\":\"DfrRTf8r\",\"zhhans_troubleshooting_err-require-esm.md\":\"CUz0KWMD\",\"zhhans_troubleshooting_index.md\":\"BqUeKVy8\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress Sidebar\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":{\"src\":\"/logo-32.png\",\"width\":24,\"height\":24},\"sidebar\":{\"/\":{\"base\":\"/\",\"items\":[{\"text\":\"Introduction\",\"link\":\"introduction\"},{\"text\":\"Guide\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"guide/getting-started\"},{\"text\":\"API\",\"link\":\"guide/api\"}],\"collapsed\":false},{\"text\":\"Advanced Usage\",\"items\":[{\"text\":\"Multi-level-sidebar with indents\",\"link\":\"advanced-usage/multi-level-sidebar-with-indents\"},{\"text\":\"Multiple Sidebars How-to\",\"link\":\"advanced-usage/multiple-sidebars-how-to\"}],\"collapsed\":false},{\"text\":\"Troubleshooting\",\"items\":[{\"text\":\"CommonJS: ERR_REQUIRE_ESM\",\"link\":\"troubleshooting/err-require-esm\"}],\"collapsed\":false}]},\"/ko/\":{\"base\":\"/ko/\",\"items\":[{\"text\":\"소개\",\"link\":\"introduction\"},{\"text\":\"가이드\",\"items\":[{\"text\":\"시작하기\",\"link\":\"guide/getting-started\"},{\"text\":\"API\",\"link\":\"guide/api\"}],\"collapsed\":false},{\"text\":\"고급\",\"items\":[{\"text\":\"다중 레벨 사이드바의 들여쓰기\",\"link\":\"advanced-usage/multi-level-sidebar-with-indents\"},{\"text\":\"다중 사이드바\",\"link\":\"advanced-usage/multiple-sidebars-how-to\"}],\"collapsed\":false},{\"text\":\"문제 해결\",\"items\":[{\"text\":\"CommonJS: ERR_REQUIRE_ESM\",\"link\":\"troubleshooting/err-require-esm\"}],\"collapsed\":false}]},\"/zhHans/\":{\"base\":\"/zhHans/\",\"items\":[{\"text\":\"导言\",\"link\":\"introduction\"},{\"text\":\"指南\",\"items\":[{\"text\":\"入门\",\"link\":\"guide/getting-started\"},{\"text\":\"API\",\"link\":\"guide/api\"}],\"collapsed\":false},{\"text\":\"高级使用\",\"items\":[{\"text\":\"带缩进的多级侧边栏\",\"link\":\"advanced-usage/multi-level-sidebar-with-indents\"},{\"text\":\"多侧边栏操作方法\",\"link\":\"advanced-usage/multiple-sidebars-how-to\"}],\"collapsed\":false},{\"text\":\"故障排除\",\"items\":[{\"text\":\"CommonJS: ERR_REQUIRE_ESM\",\"link\":\"troubleshooting/err-require-esm\"}],\"collapsed\":false}]}},\"search\":{\"provider\":\"local\",\"options\":{\"locales\":{\"root\":{\"translations\":{\"button\":{\"buttonText\":\"Search\",\"buttonAriaLabel\":\"Search\"},\"modal\":{\"displayDetails\":\"Display detailed list\",\"resetButtonTitle\":\"Reset search\",\"backButtonTitle\":\"Close search\",\"noResultsText\":\"No results for\",\"footer\":{\"selectText\":\"to select\",\"selectKeyAriaLabel\":\"enter\",\"navigateText\":\"to navigate\",\"navigateUpKeyAriaLabel\":\"up arrow\",\"navigateDownKeyAriaLabel\":\"down arrow\",\"closeText\":\"to close\",\"closeKeyAriaLabel\":\"escape\"}}}},\"ko\":{\"translations\":{\"button\":{\"buttonText\":\"검색\",\"buttonAriaLabel\":\"검색\"},\"modal\":{\"displayDetails\":\"상세 목록 표시\",\"resetButtonTitle\":\"검색 초기화\",\"backButtonTitle\":\"검색 닫기\",\"noResultsText\":\"결과를 찾을 수 없음\",\"footer\":{\"selectText\":\"선택\",\"selectKeyAriaLabel\":\"선택하기\",\"navigateText\":\"탐색\",\"navigateUpKeyAriaLabel\":\"위로\",\"navigateDownKeyAriaLabel\":\"아래로\",\"closeText\":\"닫기\",\"closeKeyAriaLabel\":\"esc\"}}}},\"zhHans\":{\"translations\":{\"button\":{\"buttonText\":\"搜索文档\",\"buttonAriaLabel\":\"搜索文档\"},\"modal\":{\"displayDetails\":\"显示详细列表\",\"resetButtonTitle\":\"清除查询条件\",\"backButtonTitle\":\"关闭搜索\",\"noResultsText\":\"无法找到相关结果\",\"footer\":{\"selectText\":\"选择\",\"selectKeyAriaLabel\":\"进行选择\",\"navigateText\":\"切换\",\"navigateUpKeyAriaLabel\":\"向上\",\"navigateDownKeyAriaLabel\":\"下降\",\"closeText\":\"關閉\",\"closeKeyAriaLabel\":\"esc\"}}}}}}},\"socialLinks\":[{\"icon\":\"npm\",\"link\":\"https://www.npmjs.com/package/vitepress-sidebar\"},{\"icon\":\"github\",\"link\":\"https://github.com/jooy2/vitepress-sidebar\"}],\"footer\":{\"message\":\"Released under the MIT License\",\"copyright\":\"© CDGet\"}},\"locales\":{\"root\":{\"lang\":\"en-US\",\"label\":\"English\",\"description\":\"VitePress Sidebar is a VitePress plugin that automatically generates sidebar menus with one setup and no hassle. Save time by easily creating taxonomies for tons of articles.\",\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/jooy2/vitepress-sidebar/edit/master/docs/:path\",\"text\":\"Edit this page\"},\"docFooter\":{\"prev\":\"Previous page\",\"next\":\"Next page\"},\"outline\":{\"label\":\"On this page\"},\"lastUpdated\":{\"text\":\"Last updated\"},\"langMenuLabel\":\"Change language\",\"returnToTopLabel\":\"Return to top\",\"sidebarMenuLabel\":\"Menu\",\"darkModeSwitchLabel\":\"Appearance\",\"lightModeSwitchTitle\":\"Switch to light theme\",\"darkModeSwitchTitle\":\"Switch to dark theme\",\"nav\":[{\"text\":\"Installation\",\"link\":\"/guide/getting-started\"},{\"text\":\"API Reference\",\"link\":\"/guide/api\"},{\"text\":\"Changelog\",\"link\":\"changelog\"}]}},\"ko\":{\"lang\":\"ko-KR\",\"label\":\"한국어\",\"description\":\"VitePress Sidebar는 번거로운 작업 없이 한번의 설정만으로 사이드바 메뉴를 자동으로 생성하는 VitePress 플러그인입니다. 수많은 문서에 대한 분류를 손쉽게 만들어 시간을 절약하세요.\",\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/jooy2/vitepress-sidebar/edit/master/docs/:path\",\"text\":\"이 페이지 편집 제안\"},\"docFooter\":{\"prev\":\"이전\",\"next\":\"다음\"},\"outline\":{\"label\":\"이 페이지 콘텐츠\"},\"lastUpdated\":{\"text\":\"업데이트 일자\"},\"langMenuLabel\":\"언어 변경\",\"returnToTopLabel\":\"맨 위로\",\"sidebarMenuLabel\":\"사이드바 메뉴\",\"darkModeSwitchLabel\":\"다크 모드\",\"lightModeSwitchTitle\":\"라이트 모드로 변경\",\"darkModeSwitchTitle\":\"다크 모드로 변경\",\"nav\":[{\"text\":\"설치\",\"link\":\"/ko/guide/getting-started\"},{\"text\":\"API\",\"link\":\"/ko/guide/api\"},{\"text\":\"변경사항\",\"link\":\"/ko/changelog\"}]}},\"zhHans\":{\"lang\":\"zh-CN\",\"label\":\"简体中文\",\"description\":\"VitePress Sidebar是一款VitePress插件,只需一次设置即可自动生成侧边栏菜单,无需任何麻烦。轻松为大量文章创建分类,节省时间。\",\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/jooy2/vitepress-sidebar/edit/master/docs/:path\",\"text\":\"在 GitHub 上编辑此页面\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":{\"label\":\"页面导航\"},\"lastUpdated\":{\"text\":\"最后更新于\"},\"langMenuLabel\":\"多语言\",\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"菜单\",\"darkModeSwitchLabel\":\"主题\",\"lightModeSwitchTitle\":\"切换到浅色模式\",\"darkModeSwitchTitle\":\"切换到深色模式\",\"nav\":[{\"text\":\"安装\",\"link\":\"/zhHans/guide/getting-started\"},{\"text\":\"API\",\"link\":\"/zhHans/guide/api\"},{\"text\":\"变化\",\"link\":\"/zhHans/changelog\"}]}}},\"scrollOffset\":134,\"cleanUrls\":true}"); \ No newline at end of file diff --git a/assets/chunks/theme.CSC3rl9h.js b/assets/chunks/theme.CSC3rl9h.js new file mode 100644 index 00000000..5ceb7562 --- /dev/null +++ b/assets/chunks/theme.CSC3rl9h.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DYw9iShf.js","assets/chunks/framework.Gf1jShja.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as I,a as D,t as N,b as k,w as v,e as h,T as ue,_ as g,u as Be,i as Ce,f as He,g as de,h as y,j as p,k as r,l as z,m as ae,p as M,q as O,s as Y,v as K,x as ve,y as pe,z as Ee,A as Fe,B as q,F as w,C,D as $e,E as Q,G as _,H as E,I as ye,J as Z,K as j,L as x,M as De,N as Pe,O as re,P as Oe,Q as Ve,R as ee,S as Ge,U as Ue,V as je,W as Le,X as Se,Y as ze,Z as Ke,$ as qe,a0 as We,a1 as Re}from"./framework.Gf1jShja.js";const Je=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[D(N(e.text),1)])],2))}}),Xe={key:0,class:"VPBackdrop"},Ye=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),k(ue,{name:"fade"},{default:v(()=>[e.show?(a(),u("div",Xe)):h("",!0)]),_:1}))}}),Qe=g(Ye,[["__scopeId","data-v-c79a1216"]]),V=Be;function Ze(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function ie(s){return/^\//.test(s)?s:`/${s}`}function fe(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(Ce(s)||s.startsWith("#")||!n.startsWith("http")||!He(e))return s;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${o}`);return de(l)}function R({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:i}=V(),l=y(()=>{var d,$;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:(($=e.value.locales[t.value])==null?void 0:$.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([d,$])=>l.value.label===$.label?[]:{text:$.label,link:xe($.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(/\/$/,"")+ie(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const et={class:"NotFound"},tt={class:"code"},nt={class:"title"},ot={class:"quote"},st={class:"action"},at=["href","aria-label"],rt=m({__name:"NotFound",setup(s){const{theme:e}=V(),{currentLang:t}=R();return(o,n)=>{var i,l,f,d,$;return a(),u("div",et,[p("p",tt,N(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",nt,N(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",ot,N(((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),p("div",st,[p("a",{class:"link",href:r(de)(r(t).link),"aria-label":((d=r(e).notFound)==null?void 0:d.linkLabel)??"go to home"},N((($=r(e).notFound)==null?void 0:$.linkText)??"Take me home"),9,at)])])}}}),it=g(rt,[["__scopeId","data-v-d6be1790"]]);function Te(s,e){if(Array.isArray(s))return J(s);if(s==null)return[];e=ie(e);const t=Object.keys(s).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ie(n))),o=t?s[t]:[];return Array.isArray(o)?J(o):J(o.items,o.base)}function lt(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 ct(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 le(s,e){return Array.isArray(e)?e.some(t=>le(s,t)):z(s,e.link)?!0:e.items?le(s,e.items):!1}function J(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=J(o.items,n)),o})}function G(){const{frontmatter:s,page:e,theme:t}=V(),o=ae("(min-width: 960px)"),n=M(!1),i=y(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?Te(B,S):[]}),l=M(i.value);O(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(l.value=i.value)});const f=y(()=>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=y(()=>f.value&&o.value),b=y(()=>f.value?lt(l.value):[]);function P(){n.value=!0}function T(){n.value=!1}function A(){n.value?T():P()}return{isOpen:n,sidebar:l,sidebarGroups:b,hasSidebar:f,hasAside:$,leftAside:d,isSidebarEnabled:L,open:P,close:T,toggle:A}}function ut(s,e){let t;Y(()=>{t=s.value?document.activeElement:void 0}),K(()=>{window.addEventListener("keyup",o)}),ve(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function dt(s){const{page:e,hash:t}=V(),o=M(!1),n=y(()=>s.value.collapsed!=null),i=y(()=>!!s.value.link),l=M(!1),f=()=>{l.value=z(e.value.relativePath,s.value.link)};O([e,s,t],f),K(f);const d=y(()=>l.value?!0:s.value.items?le(e.value.relativePath,s.value.items):!1),$=y(()=>!!(s.value.items&&s.value.items.length));Y(()=>{o.value=!!(n.value&&s.value.collapsed)}),pe(()=>{(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:$,toggle:L}}function vt(){const{hasSidebar:s}=G(),e=ae("(min-width: 960px)"),t=ae("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ce=[];function Ne(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function he(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:pt(t),link:"#"+t.id,level:o}});return ft(e,s)}function pt(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 ft(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;s=s.filter(l=>l.level>=o&&l.level<=n),ce.length=0;for(const{element:l,link:f}of s)ce.push({element:l,link:f});const i=[];e:for(let l=0;l=0;d--){const $=s[d];if($.level{requestAnimationFrame(i),window.addEventListener("scroll",o)}),Ee(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",o)});function i(){if(!t.value)return;const f=window.scrollY,d=window.innerHeight,$=document.body.offsetHeight,L=Math.abs(f+d-$)<1,b=ce.map(({element:T,link:A})=>({link:A,top:mt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!b.length){l(null);return}if(f<1){l(null);return}if(L){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:A}of b){if(A>f+Fe()+4)break;P=T}l(P)}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 mt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}const _t=["href","title"],kt=m({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function e({target:t}){const o=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(o));n==null||n.focus({preventScroll:!0})}return(t,o)=>{const n=q("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(w,null,C(t.headers,({children:i,link:l,title:f})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:f},N(f),9,_t),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Me=g(kt,[["__scopeId","data-v-b933a997"]]),bt={class:"content"},gt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},$t=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),o=$e([]);Q(()=>{o.value=he(e.value.outline??t.value.outline)});const n=M(),i=M();return ht(n,i),(l,f)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[p("div",bt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",gt,N(r(Ne)(r(t))),1),_(Me,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),yt=g($t,[["__scopeId","data-v-a5bbad30"]]),Pt={class:"VPDocAsideCarbonAds"},Vt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",Pt,[_(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Lt={class:"VPDocAside"},St=m({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,o)=>(a(),u("div",Lt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),_(yt),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(Vt,{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)]))}}),Tt=g(St,[["__scopeId","data-v-3f215769"]]);function Nt(){const{theme:s,page:e}=V();return y(()=>{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 Mt(){const{page:s,theme:e,frontmatter:t}=V();return y(()=>{var $,L,b,P,T,A,B,S;const o=Te(e.value.sidebar,s.value.relativePath),n=ct(o),i=It(n,H=>H.link.replace(/[?#].*$/,"")),l=i.findIndex(H=>z(s.value.relativePath,H.link)),f=(($=e.value.docFooter)==null?void 0:$.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)??((b=i[l-1])==null?void 0:b.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[l-1])==null?void 0:T.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)??((A=i[l+1])==null?void 0:A.docFooterText)??((B=i[l+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[l+1])==null?void 0:S.link)}}})}function It(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=y(()=>e.tag??(e.href?"a":"span")),o=y(()=>e.href&&ye.test(e.href)||e.target==="_blank");return(n,i)=>(a(),k(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?r(fe)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:v(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),wt={class:"VPLastUpdated"},At=["datetime"],Bt=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=M("");return K(()=>{Y(()=>{var f,d,$;l.value=new Intl.DateTimeFormat((d=(f=e.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&d.forceLocale?o.value:void 0,(($=e.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(f,d)=>{var $;return a(),u("p",wt,[D(N((($=r(e).lastUpdated)==null?void 0:$.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},N(l.value),9,At)])}}}),Ct=g(Bt,[["__scopeId","data-v-e98dd255"]]),Ht={key:0,class:"VPDocFooter"},Et={key:0,class:"edit-info"},Ft={key:0,class:"edit-link"},Dt={key:1,class:"last-updated"},Ot={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Gt={class:"pager"},Ut=["innerHTML"],jt=["innerHTML"],zt={class:"pager"},Kt=["innerHTML"],qt=["innerHTML"],Wt=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=V(),n=Nt(),i=Mt(),l=y(()=>e.value.editLink&&o.value.editLink!==!1),f=y(()=>t.value.lastUpdated),d=y(()=>l.value||f.value||i.value.prev||i.value.next);return($,L)=>{var b,P,T,A;return d.value?(a(),u("footer",Ht,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||f.value?(a(),u("div",Et,[l.value?(a(),u("div",Ft,[_(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:v(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),D(" "+N(r(n).text),1)]),_:1},8,["href"])])):h("",!0),f.value?(a(),u("div",Dt,[_(Ct)])):h("",!0)])):h("",!0),(b=r(i).prev)!=null&&b.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",Ot,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Gt,[(T=r(i).prev)!=null&&T.link?(a(),k(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,Ut),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,jt)]}),_:1},8,["href"])):h("",!0)]),p("div",zt,[(A=r(i).next)!=null&&A.link?(a(),k(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,Kt),p("span",{class:"title",innerHTML:r(i).next.text},null,8,qt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Rt=g(Wt,[["__scopeId","data-v-e257564d"]]),Jt={class:"container"},Xt={class:"aside-container"},Yt={class:"aside-content"},Qt={class:"content"},Zt={class:"content-container"},xt={class:"main"},en=m({__name:"VPDoc",setup(s){const{theme:e}=V(),t=Z(),{hasSidebar:o,hasAside:n,leftAside:i}=G(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,d)=>{const $=q("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":r(o),"has-aside":r(n)}])},[c(f.$slots,"doc-top",{},void 0,!0),p("div",Jt,[r(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":r(i)}])},[d[0]||(d[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",Xt,[p("div",Yt,[_(Tt,null,{"aside-top":v(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",Qt,[p("div",Zt,[c(f.$slots,"doc-before",{},void 0,!0),p("main",xt,[_($,{class:I(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(Rt,null,{"doc-footer-before":v(()=>[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)}}}),tn=g(en,[["__scopeId","data-v-39a288b8"]]),nn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.href&&ye.test(e.href)),o=y(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),k(E(o.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?r(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[D(N(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),on=g(nn,[["__scopeId","data-v-cad61b99"]]),sn=["src","alt"],an=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",j({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,sn)):(a(),u(w,{key:1},[_(o,j({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(o,j({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),X=g(an,[["__scopeId","data-v-8426fc1a"]]),rn={class:"container"},ln={class:"main"},cn={key:0,class:"name"},un=["innerHTML"],dn=["innerHTML"],vn=["innerHTML"],pn={key:0,class:"actions"},fn={key:0,class:"image"},hn={class:"image-container"},mn=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:I(["VPHero",{"has-image":t.image||r(e)}])},[p("div",rn,[p("div",ln,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",cn,[p("span",{innerHTML:t.name,class:"clip"},null,8,un)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,dn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,vn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",pn,[(a(!0),u(w,null,C(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[_(on,{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",fn,[p("div",hn,[o[0]||(o[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),_n=g(mn,[["__scopeId","data-v-303bb580"]]),kn=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).hero?(a(),k(_n,{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":v(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),bn={class:"box"},gn={key:0,class:"icon"},$n=["innerHTML"],yn=["innerHTML"],Pn=["innerHTML"],Vn={key:4,class:"link-text"},Ln={class:"link-text-value"},Sn=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:v(()=>[p("article",bn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",gn,[_(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,$n)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,yn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Pn)):h("",!0),e.linkText?(a(),u("div",Vn,[p("p",Ln,[D(N(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Tn=g(Sn,[["__scopeId","data-v-a3976bdc"]]),Nn={key:0,class:"VPFeatures"},Mn={class:"container"},In={class:"items"},wn=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{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",Nn,[p("div",Mn,[p("div",In,[(a(!0),u(w,null,C(o.features,i=>(a(),u("div",{key:i.title,class:I(["item",[t.value]])},[_(Tn,{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)}}),An=g(wn,[["__scopeId","data-v-a6181336"]]),Bn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).features?(a(),k(An,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Cn=m({__name:"VPHomeContent",setup(s){const{width:e}=De({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:Pe(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Hn=g(Cn,[["__scopeId","data-v-8e2d4988"]]),En={class:"VPHome"},Fn=m({__name:"VPHome",setup(s){const{frontmatter:e}=V();return(t,o)=>{const n=q("Content");return a(),u("div",En,[c(t.$slots,"home-hero-before",{},void 0,!0),_(kn,null,{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[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),_(Bn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(Hn,{key:0},{default:v(()=>[_(n)]),_:1})):(a(),k(n,{key:1}))])}}}),Dn=g(Fn,[["__scopeId","data-v-686f80a6"]]),On={},Gn={class:"VPPage"};function Un(s,e){const t=q("Content");return a(),u("div",Gn,[c(s.$slots,"page-top"),_(t),c(s.$slots,"page-bottom")])}const jn=g(On,[["render",Un]]),zn=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:o}=G();return(n,i)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":r(o),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[_(it)],!0):r(t).layout==="page"?(a(),k(jn,{key:1},{"page-top":v(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(Dn,{key:2},{"home-hero-before":v(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[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(tn,{key:4},{"doc-top":v(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Kn=g(zn,[["__scopeId","data-v-1428d186"]]),qn={class:"container"},Wn=["innerHTML"],Rn=["innerHTML"],Jn=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=G();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":r(o)}])},[p("div",qn,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Wn)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Rn)):h("",!0)])],2)):h("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-e315a0ad"]]);function Yn(){const{theme:s,frontmatter:e}=V(),t=$e([]),o=y(()=>t.value.length>0);return Q(()=>{t.value=he(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const Qn={class:"menu-text"},Zn={class:"header"},xn={class:"outline"},eo=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),o=M(!1),n=M(0),i=M(),l=M();function f(b){var P;(P=i.value)!=null&&P.contains(b.target)||(o.value=!1)}O(o,b=>{if(b){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),re("Escape",()=>{o.value=!1}),Q(()=>{o.value=!1});function d(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Oe(()=>{o.value=!1}))}function L(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Pe({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),u("button",{key:0,onClick:d,class:I({open:o.value})},[p("span",Qn,N(r(Ne)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},N(r(t).returnToTopLabel||"Return to top"),1)),_(ue,{name:"flyout"},{default:v(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[p("div",Zn,[p("a",{class:"top-link",href:"#",onClick:L},N(r(t).returnToTopLabel||"Return to top"),1)]),p("div",xn,[_(Me,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),to=g(eo,[["__scopeId","data-v-17a5e62e"]]),no={class:"container"},oo=["aria-expanded"],so={class:"menu-text"},ao=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=G(),{headers:n}=Yn(),{y:i}=Ve(),l=M(0);K(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Q(()=>{n.value=he(t.value.outline??e.value.outline)});const f=y(()=>n.value.length===0),d=y(()=>f.value&&!o.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:f.value,fixed:d.value}));return(L,b)=>r(t).layout!=="home"&&(!d.value||r(i)>=l.value)?(a(),u("div",{key:0,class:I($.value)},[p("div",no,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>L.$emit("open-menu"))},[b[1]||(b[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",so,N(r(e).sidebarMenuLabel||"Menu"),1)],8,oo)):h("",!0),_(to,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ro=g(ao,[["__scopeId","data-v-a6f0e41e"]]);function io(){const s=M(!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 O(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const lo={},co={class:"VPSwitch",type:"button",role:"switch"},uo={class:"check"},vo={key:0,class:"icon"};function po(s,e){return a(),u("button",co,[p("span",uo,[s.$slots.default?(a(),u("span",vo,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const fo=g(lo,[["render",po],["__scopeId","data-v-1d5665e3"]]),ho=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=V(),o=x("toggle-appearance",()=>{e.value=!e.value}),n=M("");return pe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),k(fo,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(o)},{default:v(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),me=g(ho,[["__scopeId","data-v-5337faa4"]]),mo={key:0,class:"VPNavBarAppearance"},_o=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",mo,[_(me)])):h("",!0)}}),ko=g(_o,[["__scopeId","data-v-6c893767"]]),_e=M();let Ie=!1,se=0;function bo(s){const e=M(!1);if(ee){!Ie&&go(),se++;const t=O(_e,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))});ve(()=>{t(),se--,se||$o()})}return Ge(e)}function go(){document.addEventListener("focusin",we),Ie=!0,_e.value=document.activeElement}function $o(){document.removeEventListener("focusin",we)}function we(){_e.value=document.activeElement}const yo={class:"VPMenuLink"},Po=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),u("div",yo,[_(F,{class:I({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[D(N(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),te=g(Po,[["__scopeId","data-v-43f1e123"]]),Vo={class:"VPMenuGroup"},Lo={key:0,class:"title"},So=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Vo,[e.text?(a(),u("p",Lo,N(e.text),1)):h("",!0),(a(!0),u(w,null,C(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=g(So,[["__scopeId","data-v-69e747b5"]]),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,C(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),j({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=g(Io,[["__scopeId","data-v-b98bc113"]]),Ao=["aria-expanded","aria-label"],Bo={key:0,class:"text"},Co=["innerHTML"],Ho={key:1,class:"vpi-more-horizontal icon"},Eo={class:"menu"},Fo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=M(!1),t=M();bo({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)},[p("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",Bo,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Co)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Ho))],8,Ao),p("div",Eo,[_(wo,{items:n.items},{default:v(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=g(Fo,[["__scopeId","data-v-b6c34ac9"]]),Do=["href","aria-label","innerHTML"],Oo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(o,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Do))}}),Go=g(Oo,[["__scopeId","data-v-eee4e7cb"]]),Uo={class:"VPSocialLinks"},jo=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",Uo,[(a(!0),u(w,null,C(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))]))}}),be=g(jo,[["__scopeId","data-v-7bc22406"]]),zo={key:0,class:"group translations"},Ko={class:"trans-title"},qo={key:1,class:"group"},Wo={class:"item appearance"},Ro={class:"label"},Jo={class:"appearance-action"},Xo={key:2,class:"group"},Yo={class:"item social-links"},Qo=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:o,currentLang:n}=R({correspondingLink:!0}),i=y(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,f)=>i.value?(a(),k(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(o).length&&r(n).label?(a(),u("div",zo,[p("p",Ko,N(r(n).label),1),(a(!0),u(w,null,C(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,[p("div",Wo,[p("p",Ro,N(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",Jo,[_(me)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Xo,[p("div",Yo,[_(be,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),Zo=g(Qo,[["__scopeId","data-v-bb2aa2f0"]]),xo=["aria-expanded"],es=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:I(["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]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,xo))}}),ts=g(es,[["__scopeId","data-v-e5dd9c1c"]]),ns=["innerHTML"],os=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),k(F,{class:I({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,ns)]),_:1},8,["class","href","noIcon","target","rel"]))}}),ss=g(os,[["__scopeId","data-v-9c663999"]]),as=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),o=i=>"component"in i?!1:"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(o),n=y(()=>o(e.item));return(i,l)=>(a(),k(ke,{class:I({VPNavBarMenuGroup:!0,active:r(z)(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}=V();return(t,o)=>r(e).nav?(a(),u("nav",rs,[o[0]||(o[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(w,null,C(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),j({key:1,ref_for:!0},n.props),null,16)):(a(),k(as,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),ls=g(is,[["__scopeId","data-v-dc692963"]]);function cs(s){const{localeIndex:e,theme:t}=V();function o(n){var A,B,S;const i=n.split("."),l=(A=t.value.search)==null?void 0:A.options,f=l&&typeof l=="object",d=f&&((S=(B=l.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,$=f&&l.translations||null;let L=d,b=$,P=s;const T=i.pop();for(const H of i){let U=null;const W=P==null?void 0:P[H];W&&(U=P=W);const ne=b==null?void 0:b[H];ne&&(U=b=ne);const oe=L==null?void 0:L[H];oe&&(U=L=oe),W||(P=U),ne||(b=U),oe||(L=U)}return(L==null?void 0:L[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return o}const us=["aria-label"],ds={class:"DocSearch-Button-Container"},vs={class:"DocSearch-Button-Placeholder"},ge=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")},[p("span",ds,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",vs,N(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("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=Ue(()=>je(()=>import("./VPLocalSearchBox.DYw9iShf.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=V(),n=M(!1),i=M(!1);K(()=>{});function l(){n.value||(n.value=!0,setTimeout(f,16))}function f(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}function d(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=M(!1);re("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),re("/",b=>{d(b)||(b.preventDefault(),$.value=!0)});const L="local";return(b,P)=>{var T;return a(),u("div",ps,[r(L)==="local"?(a(),u(w,{key:0},[$.value?(a(),k(r(e),{key:0,onClose:P[0]||(P[0]=A=>$.value=!1)})):h("",!0),p("div",fs,[_(ge,{onClick:P[1]||(P[1]=A=>$.value=!0)})])],64)):r(L)==="algolia"?(a(),u(w,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((T=r(o).search)==null?void 0:T.options)??r(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",hs,[_(ge,{onClick:l})]))],64)):h("",!0)])}}}),_s=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),k(be,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ks=g(_s,[["__scopeId","data-v-0394ad82"]]),bs=["href","rel","target"],gs={key:1},$s={key:2},ys=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:o}=G(),{currentLang:n}=R(),i=y(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),l=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),f=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,$)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":r(o)}])},[p("a",{class:"title",href:i.value??r(fe)(r(n).link),rel:l.value,target:f.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",gs,N(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",$s,N(r(e).title),1)):h("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,bs)],2))}}),Ps=g(ys,[["__scopeId","data-v-ab179fa1"]]),Vs={class:"items"},Ls={class:"title"},Ss=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:o}=R({correspondingLink:!0});return(n,i)=>r(t).length&&r(o).label?(a(),k(ke,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",Vs,[p("p",Ls,N(r(o).label),1),(a(!0),u(w,null,C(r(t),l=>(a(),k(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Ts=g(Ss,[["__scopeId","data-v-88af2de4"]]),Ns={class:"wrapper"},Ms={class:"container"},Is={class:"title"},ws={class:"content"},As={class:"content-body"},Bs=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Ve(),{hasSidebar:o}=G(),{frontmatter:n}=V(),i=M({});return pe(()=>{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:I(["VPNavBar",i.value])},[p("div",Ns,[p("div",Ms,[p("div",Is,[_(Ps,null,{"nav-bar-title-before":v(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ws,[p("div",As,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),_(ms,{class:"search"}),_(ls,{class:"menu"}),_(Ts,{class:"translations"}),_(ko,{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]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Cs=g(Bs,[["__scopeId","data-v-6aa21345"]]),Hs={key:0,class:"VPNavScreenAppearance"},Es={class:"text"},Fs=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(o,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Hs,[p("p",Es,N(r(t).darkModeSwitchLabel||"Appearance"),1),_(me)])):h("",!0)}}),Ds=g(Fs,[["__scopeId","data-v-b44890b2"]]),Os=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,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Gs=g(Os,[["__scopeId","data-v-7f31e1f6"]]),Us=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,onClick:r(e)},{default:v(()=>[D(N(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ae=g(Us,[["__scopeId","data-v-19976ae1"]]),js={class:"VPNavScreenMenuGroupSection"},zs={key:0,class:"title"},Ks=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",js,[e.text?(a(),u("p",zs,N(e.text),1)):h("",!0),(a(!0),u(w,null,C(e.items,o=>(a(),k(Ae,{key:o.text,item:o},null,8,["item"]))),128))]))}}),qs=g(Ks,[["__scopeId","data-v-8133b170"]]),Ws=["aria-controls","aria-expanded"],Rs=["innerHTML"],Js=["id"],Xs={key:0,class:"item"},Ys={key:1,class:"item"},Qs={key:2,class:"group"},Zs=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=M(!1),o=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,Rs),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,Ws),p("div",{id:o.value,class:"items"},[(a(!0),u(w,null,C(i.items,f=>(a(),u(w,{key:JSON.stringify(f)},["link"in f?(a(),u("div",Xs,[_(Ae,{item:f},null,8,["item"])])):"component"in f?(a(),u("div",Ys,[(a(),k(E(f.component),j({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(a(),u("div",Qs,[_(qs,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,Js)],2))}}),xs=g(Zs,[["__scopeId","data-v-b9ab8c58"]]),ea={key:0,class:"VPNavScreenMenu"},ta=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",ea,[(a(!0),u(w,null,C(r(e).nav,n=>(a(),u(w,{key:JSON.stringify(n)},["link"in n?(a(),k(Gs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),j({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(xs,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),na=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),k(be,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),oa={class:"list"},sa=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=R({correspondingLink:!0}),o=M(!1);function n(){o.value=!o.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:o.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),D(" "+N(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",oa,[(a(!0),u(w,null,C(r(e),f=>(a(),u("li",{key:f.link,class:"item"},[_(F,{class:"link",href:f.link},{default:v(()=>[D(N(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),aa=g(sa,[["__scopeId","data-v-858fe1a4"]]),ra={class:"container"},ia=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=M(null),t=Le(ee?document.body:null);return(o,n)=>(a(),k(ue,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:v(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ra,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),_(ta,{class:"menu"}),_(aa,{class:"translations"}),_(Ds,{class:"appearance"}),_(na,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),la=g(ia,[["__scopeId","data-v-f2779853"]]),ca={key:0,class:"VPNav"},ua=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=io(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return Se("close-screen",t),Y(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,f)=>i.value?(a(),u("header",ca,[_(Cs,{"is-screen-open":r(e),onToggleScreen:r(o)},{"nav-bar-title-before":v(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(la,{open:r(e)},{"nav-screen-content-before":v(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),da=g(ua,[["__scopeId","data-v-ae24b3ad"]]),va=["role","tabindex"],pa={key:1,class:"items"},fa=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}=dt(y(()=>e.item)),$=y(()=>f.value?"section":"div"),L=y(()=>n.value?"a":"div"),b=y(()=>f.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&d()}function B(){e.item.link&&d()}return(S,H)=>{const U=q("VPSidebarItem",!0);return a(),k(E($.value),{class:I(["VPSidebarItem",T.value])},{default:v(()=>[S.item.text?(a(),u("div",j({key:0,class:"item",role:P.value},Ke(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[H[1]||(H[1]=p("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:v(()=>[(a(),k(E(b.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(E(b.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:B,onKeydown:ze(B,["enter"]),tabindex:"0"},H[0]||(H[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,va)):h("",!0),S.item.items&&S.item.items.length?(a(),u("div",pa,[S.depth<5?(a(!0),u(w,{key:0},C(S.item.items,W=>(a(),k(U,{key:W.text,item:W,depth:S.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),ha=g(fa,[["__scopeId","data-v-b7550ba0"]]),ma=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=M(!0);let t=null;return K(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),qe(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(w,null,C(o.items,i=>(a(),u("div",{key:i.text,class:I(["group",{"no-transition":e.value}])},[_(ha,{item:i,depth:0},null,8,["item"])],2))),128))}}),_a=g(ma,[["__scopeId","data-v-c40bc020"]]),ka={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},ba=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=G(),o=s,n=M(null),i=Le(ee?document.body:null);O([o,n],()=>{var f;o.open?(i.value=!0,(f=n.value)==null||f.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=M(0);return O(e,()=>{l.value+=1},{deep:!0}),(f,d)=>r(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:f.open}]),ref_key:"navEl",ref:n,onClick:d[0]||(d[0]=We(()=>{},["stop"]))},[d[2]||(d[2]=p("div",{class:"curtain"},null,-1)),p("nav",ka,[d[1]||(d[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(f.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(_a,{items:r(e),key:l.value},null,8,["items"])),c(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),ga=g(ba,[["__scopeId","data-v-319d5ca6"]]),$a=m({__name:"VPSkipLink",setup(s){const e=Z(),t=M();O(()=>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,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),ya=g($a,[["__scopeId","data-v-0f60ec36"]]),Pa=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=G(),n=Z();O(()=>n.path,o),ut(e,o);const{frontmatter:i}=V(),l=Re(),f=y(()=>!!l["home-hero-image"]);return Se("hero-image-slot-exists",f),(d,$)=>{const L=q("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",r(i).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),_(ya),_(Qe,{class:"backdrop",show:r(e),onClick:r(o)},null,8,["show","onClick"]),_(da,null,{"nav-bar-title-before":v(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(ro,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),_(ga,{open:r(e)},{"sidebar-nav-before":v(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(Kn,null,{"page-top":v(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(Xn),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(L,{key:1}))}}}),Va=g(Pa,[["__scopeId","data-v-5d98c3a5"]]),Sa={Layout:Va,enhanceApp:({app:s})=>{s.component("Badge",Je)}};export{cs as c,Sa as t,V as u}; diff --git a/assets/guide_api.md.DKSkYdiv.js b/assets/guide_api.md.DKSkYdiv.js new file mode 100644 index 00000000..ec346c69 --- /dev/null +++ b/assets/guide_api.md.DKSkYdiv.js @@ -0,0 +1 @@ +import{_ as o}from"./chunks/doc-collapsed-example.CqMUHFlL.js";import{_ as t,c as a,a2 as i,o as d}from"./chunks/framework.Gf1jShja.js";const m=JSON.parse('{"title":"API","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"guide/api.md","filePath":"en/guide/api.md","lastUpdated":1725611780000}'),l={name:"guide/api.md"};function n(r,e,s,c,h,u){return d(),a("div",null,e[0]||(e[0]=[i('

API

This page describes all the options in the VitePress Sidebar.

Resolving PathsGrouping
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
Getting Menu TitleGetting Menu Link
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
Include/ExcludeStyling Menu Title
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
SortingMisc
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

The top-level path where documentation files are located. The default value is /.

This is the path where the .vitepress directory is located, and if the folder where the documentation is located in the project root is /docs, then the value of this option should be set to docs or /docs.

text
/\n├─ package.json\n├─ src/\n├─ docs/        <--------------- `documentRootPath` ('/docs')\n│  ├─ .vitepress/        <------ VitePress config directory\n│  ├─ another-directory/\n│  ├─ hello.md\n│  └─ index.md\n└─ ...

scanStartPath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

The path to the root directory to scan for document lists. Files in the path set in documentRootPath outside the path set in scanStartPath will not be scanned. It is recommended that you also set documentRootPath if you specify scanStartPath because the parent path set in documentRootPath should appear in the link.

For example, if the root path is /docs and the document to be scanned is /docs/sub-dir/scan-me, the setting would look like this:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (Do not include the path to documentRootPath.)

resolvePath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

Enter the path to the section to display a different sidebar for each path. The path must contain / before it. Options without this value will be set to the root section (/).

e.g. /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

This option can be utilized if the path has changed due to VitePress's rewrite option. It replaces the base path in VitePress. If this value does not exist, it will use the value from resolvePath instead.

useTitleFromFileHeading

  • Type: boolean
  • Default: false

If the value is true, display the title with the h1 heading content of the .md file. If the h1 heading does not exist in the file, it displays Unknown.

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

If the value is true, display the title based on the value of title in Frontmatter in the file. If this value cannot be parsed, it will be taken from the h1 tag if the useTitleFromFileHeading option is true, and from the filename if that fails.

The Frontmatter should be located at the top of the document, and should look like this (Space is required between the title: value and the title.)

markdown
---\ntitle: Hello World\n---

frontmatterTitleFieldName

  • Type: string
  • Default: title

Displays the menu title based on the key name in Frontmatter specified in the file. If the specified value does not exist in Frontmatter, the default title will be used as a fallback.

markdown
---\nname: This is frontmatter title value.\n---

For more information, see the following articles: https://vitepress.dev/guide/frontmatter

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

If this value is true, use the information in the current folder's index.md file to get the menu name. If the index.md file does not exist, the folder name is used. Since we typically get the name index from the index.md file, we recommend using the useTitleFromFileHeading or useTitleFromFrontmatter options together to get the title from the Markdown header or Frontmatter of that file.

The index.md file is hidden from the sidebar menu, but the index file can be shown in the menu if the includeFolderIndexFile option is true.

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

If this value is true, specifies a link to the folder so that you can navigate to the index.md file in the current folder. If the index.md file does not exist, no link is created.

The index.md file is hidden from the sidebar menu, but the index file can be shown in the menu if the includeFolderIndexFile option is true.

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

Sort by an array of file names (including extensions) in order. If there is no value in the array that matches the filename, the sort priority is sent back. This applies to both files and directories, and the same arrangement rules apply to subdirectories as well.

sortMenusByName

  • Type: boolean
  • Default: false

Sort the items in the menu item by name. Normally, folder scans are done with an ascending name sort, so the default sort is applied without this option applied, but if you use the useTitleFromFileHeading or useTitleFromFrontmatter options, you may need to re-sort by name because the menu name changes. This option forces sorting by name even for changed menu names.

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

If the value is true, sorts by date prefix in the name of the menu item. The date format must be in the form YYYY-MM-DD (e.g. 2024-01-01-menu-name, 2024-01-02.menu-name...)

To remove date prefixes that remain in the menu text afterward, you can utilize the prefixSeparator and removePrefixAfterOrdering options.

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

Sorts the menu items by the order property of the frontmatter. For each folder, sorts the value (number) of the order property in ascending order, or descending order if the sortMenusOrderByDescending option is true. If the value of order is non-numeric or does not exist, order is judged to be 0.

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

Sorts the menu items by the date property of the frontmatter. It also sorts the date property values in ascending order by oldest date (or descending order if the sortMenusOrderByDescending option is true) The date format must match YYYY-MM-DD or the JavaScript Date data type.

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

If this value is true, sorts the items in the menu item in descending order. This option is only enabled when sortMenusByName or sortMenusByFrontmatterOrder is true.

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

If this value is true, If a menu name contains a number at the beginning, it is sorted by the lower number, not the name. For example, if you have files named 1-a, 10-a, and 2-a, a normal sort would sort by name, ['1-a', '10-a', '2-a']. This causes the menu to display in an unintended order because 10-a takes precedence over 2-a.

With this option, they are sorted as follows: ['1-a', '2-a', '10-a']

It should be used with the sortMenusOrderByDescending option if you want a descending sort.

  • Type: boolean
  • Default: false

If this value is true, If a menu name contains a number at the beginning, it is sorted by the lower number, not the name. This option is the same as sortMenusOrderNumericallyFromTitle, but sorts by links instead of file titles. Therefore, it cannot be used with the sortMenusOrderNumericallyFromTitle option.

It should be used with the sortMenusOrderByDescending option if you want a descending sort.

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

Sets the default value for the order property of the frontmatter when not set. This option is only enabled when sortMenusByFrontmatterOrder is true.

collapsed

  • Type: boolean
  • Default: false

If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.

(Even if the value is true, the menu may be expanded if it is located in a document within a collapsed group.)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

At the specified depth, the menu group is made collapsed. When this option is specified, group collapsing/expanding is automatically enabled. The depth of the top-level folder is 1.

hyphenToSpace

  • Type: boolean
  • Default: false

If the value is true, the - symbol included in the file name is converted to a space and displayed as a title. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

underscoreToSpace

  • Type: boolean
  • Default: false

If the value is true, the _ symbol included in the file name is converted to a space and displayed as a title. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

capitalizeFirst

  • Type: boolean
  • Default: false

If the value is true, the first letter of the menu name is forced to uppercase. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

capitalizeEachWords

  • Type: boolean
  • Default: false

If the value is true, Capitalize all first letters of words separated by spaces. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

excludeFiles

  • Type: Array<string>
  • Default: []

Files that correspond to an array of file names (including extensions) are not shown in the list.

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

Documents with the value of the specified frontmatter field name set to true are excluded from the menu.

If no option is specified or the option value is undefined, it is ignored.

For example, if the option value is exclude, documents whose content contains exclude: true are not displayed in the menu.

markdown
---\ntitle: This article is excluded.\nexclude: true\n---\n\n# Article\n\nContent

Depending on the value of this option, you can use other names like draft, hide, etc. instead of exclude.

excludeFolders

  • Type: Array<string>
  • Default: []

Folders that correspond to an array of folder names are not shown in the list, and any sub-items within a folder are also not shown.

includeDotFiles

  • Type: boolean
  • Default: false

Normally, if file and folder names contain a dot (.) in front of them, they are considered hidden and not shown in the list. However, if this option is true, it forces all hidden files and folders to be shown in the list.

includeEmptyFolder

  • Type: boolean
  • Default: false

If the value is true, also displays directories where no md file exists as a group.

includeRootIndexFile

  • Type: boolean
  • Default: false

If the value is true, also include the top-level path index.md file in the sidebar menu. Use the includeFolderIndexFile option to include the index file of the child items as well. (If the file does not exist, it is ignored.)

includeFolderIndexFile

  • Type: boolean
  • Default: false

If the value is true, also include the folder path index.md file in the sidebar menu. Use the includeRootIndexFile option to include the index file of the root item as well. (If the file does not exist, it is ignored.)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

Removes a specific prefix from each menu title from the menu items that appear after everything is done. This is ideal if you want to sort by the number in the filename without using frontmatter's sorting, and you don't want that number to be visible in the menu.

For example, if prefixSeparator is the default (.), the following menus will be renamed as follows:

  • File name: 1.hello -> Menu name: hello
  • File name: 1.1.hello -> Menu name: 1.hello
  • File name: 1-1.hello -> Menu name: hello

Removes letters only once based on the separator, so a child item like 1.1. should be used like 1-1.. Alternatively, you can set a regular expression on the prefixSeparator value to work around it.

Can be used with the prefixSeparator option. See that option's description for more information.

(Note A: prefix only affects the title, the link will use the file link as it is).

(Note B: This option is ignored if you use the useTitleFromFileHeading or useTitleFromFrontmatter options).

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

This option can only be used in conjunction with the removePrefixAfterOrdering option to remove the prefix.

Removes the first part of a specified number of characters (at least one) from the extracted menu text. For example, if the menu name is 1. Text, and you set the prefixSeparator value to . , the result will be just Text.

You can also use regular expressions. Values matching the regular expression are removed. For example, to remove the date before the string in 2024-01-01-hello, specify the prefixSeparator value as /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g. The result is hello.

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

rootGroup specifies the entire group for the menu, regardless of directory structure. This uses one menu step, so you should be careful about using it, and you can disable the rootGroup option if you don't need it. If you specify this value, you specify a name for the top-level menu.

  • Type: string
  • Default: null

For more information about rootGroup, see the rootGroupText option description. Specifying this value specifies a link to the rootGroup. If the value is empty, no link is added.

rootGroupCollapsed

  • Type: boolean
  • Default: null

For more information about rootGroup, see the rootGroupText option description. The rootGroupCollapsed option sets whether child items of the root group are expanded or not. If specified with the default value of null or undefined, the expand/collapse button is not displayed. If the value is true, the child items are displayed collapsed, and if false, they are expanded.

This option only applies to top-level item. For general item collapsibility, see the collapsed option.

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.

For example, if you have a folder that looks like this:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

A link is added to the api folder, and the api page in the api folder is not included in the menu listing. Clicking the link in the folder displays the file in api/api.md.

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

This option is only used in special cases: when you have a rewrite rule and a subfile with the same folder name exists, use it in parallel with the convertSameNameSubFileToGroupIndexPage option.

If this value is true, when establishing a folder link, ignore the existence of child items and specify the link only as a folder path.

For example, if you have a folder that looks like this:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

With the convertSameNameSubFileToGroupIndexPage option, clicking on the guide/api folder menu will take you to guide/api/api, but if you use the folderLinkNotIncludesFileName option with it, the link will be guide/api/.

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

If this value is true, preserves the Markdown syntax contained in the title text without removing it. Usually retains any highlighting or inline code. Hyperlink text is removed regardless of this option.

debugPrint

  • Type: boolean
  • Default: false

If this value is true, prints the objects created after execution to the console log. If you configured Multiple sidebars, it will output all sidebar results even if you only include one of the options.

',170)]))}const b=t(l,[["render",n]]);export{m as __pageData,b as default}; diff --git a/assets/guide_api.md.DKSkYdiv.lean.js b/assets/guide_api.md.DKSkYdiv.lean.js new file mode 100644 index 00000000..ec346c69 --- /dev/null +++ b/assets/guide_api.md.DKSkYdiv.lean.js @@ -0,0 +1 @@ +import{_ as o}from"./chunks/doc-collapsed-example.CqMUHFlL.js";import{_ as t,c as a,a2 as i,o as d}from"./chunks/framework.Gf1jShja.js";const m=JSON.parse('{"title":"API","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"guide/api.md","filePath":"en/guide/api.md","lastUpdated":1725611780000}'),l={name:"guide/api.md"};function n(r,e,s,c,h,u){return d(),a("div",null,e[0]||(e[0]=[i('

API

This page describes all the options in the VitePress Sidebar.

Resolving PathsGrouping
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
Getting Menu TitleGetting Menu Link
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
Include/ExcludeStyling Menu Title
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
SortingMisc
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

The top-level path where documentation files are located. The default value is /.

This is the path where the .vitepress directory is located, and if the folder where the documentation is located in the project root is /docs, then the value of this option should be set to docs or /docs.

text
/\n├─ package.json\n├─ src/\n├─ docs/        <--------------- `documentRootPath` ('/docs')\n│  ├─ .vitepress/        <------ VitePress config directory\n│  ├─ another-directory/\n│  ├─ hello.md\n│  └─ index.md\n└─ ...

scanStartPath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

The path to the root directory to scan for document lists. Files in the path set in documentRootPath outside the path set in scanStartPath will not be scanned. It is recommended that you also set documentRootPath if you specify scanStartPath because the parent path set in documentRootPath should appear in the link.

For example, if the root path is /docs and the document to be scanned is /docs/sub-dir/scan-me, the setting would look like this:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (Do not include the path to documentRootPath.)

resolvePath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

Enter the path to the section to display a different sidebar for each path. The path must contain / before it. Options without this value will be set to the root section (/).

e.g. /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

This option can be utilized if the path has changed due to VitePress's rewrite option. It replaces the base path in VitePress. If this value does not exist, it will use the value from resolvePath instead.

useTitleFromFileHeading

  • Type: boolean
  • Default: false

If the value is true, display the title with the h1 heading content of the .md file. If the h1 heading does not exist in the file, it displays Unknown.

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

If the value is true, display the title based on the value of title in Frontmatter in the file. If this value cannot be parsed, it will be taken from the h1 tag if the useTitleFromFileHeading option is true, and from the filename if that fails.

The Frontmatter should be located at the top of the document, and should look like this (Space is required between the title: value and the title.)

markdown
---\ntitle: Hello World\n---

frontmatterTitleFieldName

  • Type: string
  • Default: title

Displays the menu title based on the key name in Frontmatter specified in the file. If the specified value does not exist in Frontmatter, the default title will be used as a fallback.

markdown
---\nname: This is frontmatter title value.\n---

For more information, see the following articles: https://vitepress.dev/guide/frontmatter

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

If this value is true, use the information in the current folder's index.md file to get the menu name. If the index.md file does not exist, the folder name is used. Since we typically get the name index from the index.md file, we recommend using the useTitleFromFileHeading or useTitleFromFrontmatter options together to get the title from the Markdown header or Frontmatter of that file.

The index.md file is hidden from the sidebar menu, but the index file can be shown in the menu if the includeFolderIndexFile option is true.

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

If this value is true, specifies a link to the folder so that you can navigate to the index.md file in the current folder. If the index.md file does not exist, no link is created.

The index.md file is hidden from the sidebar menu, but the index file can be shown in the menu if the includeFolderIndexFile option is true.

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

Sort by an array of file names (including extensions) in order. If there is no value in the array that matches the filename, the sort priority is sent back. This applies to both files and directories, and the same arrangement rules apply to subdirectories as well.

sortMenusByName

  • Type: boolean
  • Default: false

Sort the items in the menu item by name. Normally, folder scans are done with an ascending name sort, so the default sort is applied without this option applied, but if you use the useTitleFromFileHeading or useTitleFromFrontmatter options, you may need to re-sort by name because the menu name changes. This option forces sorting by name even for changed menu names.

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

If the value is true, sorts by date prefix in the name of the menu item. The date format must be in the form YYYY-MM-DD (e.g. 2024-01-01-menu-name, 2024-01-02.menu-name...)

To remove date prefixes that remain in the menu text afterward, you can utilize the prefixSeparator and removePrefixAfterOrdering options.

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

Sorts the menu items by the order property of the frontmatter. For each folder, sorts the value (number) of the order property in ascending order, or descending order if the sortMenusOrderByDescending option is true. If the value of order is non-numeric or does not exist, order is judged to be 0.

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

Sorts the menu items by the date property of the frontmatter. It also sorts the date property values in ascending order by oldest date (or descending order if the sortMenusOrderByDescending option is true) The date format must match YYYY-MM-DD or the JavaScript Date data type.

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

If this value is true, sorts the items in the menu item in descending order. This option is only enabled when sortMenusByName or sortMenusByFrontmatterOrder is true.

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

If this value is true, If a menu name contains a number at the beginning, it is sorted by the lower number, not the name. For example, if you have files named 1-a, 10-a, and 2-a, a normal sort would sort by name, ['1-a', '10-a', '2-a']. This causes the menu to display in an unintended order because 10-a takes precedence over 2-a.

With this option, they are sorted as follows: ['1-a', '2-a', '10-a']

It should be used with the sortMenusOrderByDescending option if you want a descending sort.

  • Type: boolean
  • Default: false

If this value is true, If a menu name contains a number at the beginning, it is sorted by the lower number, not the name. This option is the same as sortMenusOrderNumericallyFromTitle, but sorts by links instead of file titles. Therefore, it cannot be used with the sortMenusOrderNumericallyFromTitle option.

It should be used with the sortMenusOrderByDescending option if you want a descending sort.

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

Sets the default value for the order property of the frontmatter when not set. This option is only enabled when sortMenusByFrontmatterOrder is true.

collapsed

  • Type: boolean
  • Default: false

If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.

(Even if the value is true, the menu may be expanded if it is located in a document within a collapsed group.)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

At the specified depth, the menu group is made collapsed. When this option is specified, group collapsing/expanding is automatically enabled. The depth of the top-level folder is 1.

hyphenToSpace

  • Type: boolean
  • Default: false

If the value is true, the - symbol included in the file name is converted to a space and displayed as a title. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

underscoreToSpace

  • Type: boolean
  • Default: false

If the value is true, the _ symbol included in the file name is converted to a space and displayed as a title. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

capitalizeFirst

  • Type: boolean
  • Default: false

If the value is true, the first letter of the menu name is forced to uppercase. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

capitalizeEachWords

  • Type: boolean
  • Default: false

If the value is true, Capitalize all first letters of words separated by spaces. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

excludeFiles

  • Type: Array<string>
  • Default: []

Files that correspond to an array of file names (including extensions) are not shown in the list.

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

Documents with the value of the specified frontmatter field name set to true are excluded from the menu.

If no option is specified or the option value is undefined, it is ignored.

For example, if the option value is exclude, documents whose content contains exclude: true are not displayed in the menu.

markdown
---\ntitle: This article is excluded.\nexclude: true\n---\n\n# Article\n\nContent

Depending on the value of this option, you can use other names like draft, hide, etc. instead of exclude.

excludeFolders

  • Type: Array<string>
  • Default: []

Folders that correspond to an array of folder names are not shown in the list, and any sub-items within a folder are also not shown.

includeDotFiles

  • Type: boolean
  • Default: false

Normally, if file and folder names contain a dot (.) in front of them, they are considered hidden and not shown in the list. However, if this option is true, it forces all hidden files and folders to be shown in the list.

includeEmptyFolder

  • Type: boolean
  • Default: false

If the value is true, also displays directories where no md file exists as a group.

includeRootIndexFile

  • Type: boolean
  • Default: false

If the value is true, also include the top-level path index.md file in the sidebar menu. Use the includeFolderIndexFile option to include the index file of the child items as well. (If the file does not exist, it is ignored.)

includeFolderIndexFile

  • Type: boolean
  • Default: false

If the value is true, also include the folder path index.md file in the sidebar menu. Use the includeRootIndexFile option to include the index file of the root item as well. (If the file does not exist, it is ignored.)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

Removes a specific prefix from each menu title from the menu items that appear after everything is done. This is ideal if you want to sort by the number in the filename without using frontmatter's sorting, and you don't want that number to be visible in the menu.

For example, if prefixSeparator is the default (.), the following menus will be renamed as follows:

  • File name: 1.hello -> Menu name: hello
  • File name: 1.1.hello -> Menu name: 1.hello
  • File name: 1-1.hello -> Menu name: hello

Removes letters only once based on the separator, so a child item like 1.1. should be used like 1-1.. Alternatively, you can set a regular expression on the prefixSeparator value to work around it.

Can be used with the prefixSeparator option. See that option's description for more information.

(Note A: prefix only affects the title, the link will use the file link as it is).

(Note B: This option is ignored if you use the useTitleFromFileHeading or useTitleFromFrontmatter options).

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

This option can only be used in conjunction with the removePrefixAfterOrdering option to remove the prefix.

Removes the first part of a specified number of characters (at least one) from the extracted menu text. For example, if the menu name is 1. Text, and you set the prefixSeparator value to . , the result will be just Text.

You can also use regular expressions. Values matching the regular expression are removed. For example, to remove the date before the string in 2024-01-01-hello, specify the prefixSeparator value as /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g. The result is hello.

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

rootGroup specifies the entire group for the menu, regardless of directory structure. This uses one menu step, so you should be careful about using it, and you can disable the rootGroup option if you don't need it. If you specify this value, you specify a name for the top-level menu.

  • Type: string
  • Default: null

For more information about rootGroup, see the rootGroupText option description. Specifying this value specifies a link to the rootGroup. If the value is empty, no link is added.

rootGroupCollapsed

  • Type: boolean
  • Default: null

For more information about rootGroup, see the rootGroupText option description. The rootGroupCollapsed option sets whether child items of the root group are expanded or not. If specified with the default value of null or undefined, the expand/collapse button is not displayed. If the value is true, the child items are displayed collapsed, and if false, they are expanded.

This option only applies to top-level item. For general item collapsibility, see the collapsed option.

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.

For example, if you have a folder that looks like this:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

A link is added to the api folder, and the api page in the api folder is not included in the menu listing. Clicking the link in the folder displays the file in api/api.md.

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

This option is only used in special cases: when you have a rewrite rule and a subfile with the same folder name exists, use it in parallel with the convertSameNameSubFileToGroupIndexPage option.

If this value is true, when establishing a folder link, ignore the existence of child items and specify the link only as a folder path.

For example, if you have a folder that looks like this:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

With the convertSameNameSubFileToGroupIndexPage option, clicking on the guide/api folder menu will take you to guide/api/api, but if you use the folderLinkNotIncludesFileName option with it, the link will be guide/api/.

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

If this value is true, preserves the Markdown syntax contained in the title text without removing it. Usually retains any highlighting or inline code. Hyperlink text is removed regardless of this option.

debugPrint

  • Type: boolean
  • Default: false

If this value is true, prints the objects created after execution to the console log. If you configured Multiple sidebars, it will output all sidebar results even if you only include one of the options.

',170)]))}const b=t(l,[["render",n]]);export{m as __pageData,b as default}; diff --git a/assets/guide_getting-started.md.DYGSUkQV.js b/assets/guide_getting-started.md.DYGSUkQV.js new file mode 100644 index 00000000..0da29ee5 --- /dev/null +++ b/assets/guide_getting-started.md.DYGSUkQV.js @@ -0,0 +1,121 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const c=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"guide/getting-started.md","filePath":"en/guide/getting-started.md","lastUpdated":1725179973000}'),l={name:"guide/getting-started.md"};function t(p,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Getting Started

This page walks you through the installation and use of the VitePress Sidebar module.

Installation

First, you may need to pre-configure VitePress before using this module.

We recommend using Node.js 18.x or higher. The VitePress Sidebar is written in ESM. To use it in CommonJS, see instructions here.

You will need to install the module using NPM or any other Node module package manager. The package should be installed in devDependencies as it is only used in the developer environment. Use the command below:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

How to Use

You can automatically generate a sidebar using the generateSidebar method of VitePress Sidebar.

It scans the folder against the given root path (documentRootPath), finds the markdown files before they were built by VitePress, and returns a menu generated based on the folder tree structure.

First, import vitepress-sidebar in one of the two ways below.

1. Using named-import

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. Using default-import

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

Use the generateSidebar method in the themeConfig.sidebar property of the .vitepress/config.js file, which is VitePress's configuration file. VitePress's configuration file might have a different filename or extension depending on your project's settings.

To test how this will output, try building VitePress with the debugPrint option set to true. You should see the output in the console.

For more information about the configuration of generateSidebar, see API section below.

Code Example

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * For detailed instructions, see the links below:
+       * https://vitepress-sidebar.cdget.com/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

Example output

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/
`,22)]))}const g=i(l,[["render",t]]);export{c as __pageData,g as default}; diff --git a/assets/guide_getting-started.md.DYGSUkQV.lean.js b/assets/guide_getting-started.md.DYGSUkQV.lean.js new file mode 100644 index 00000000..0da29ee5 --- /dev/null +++ b/assets/guide_getting-started.md.DYGSUkQV.lean.js @@ -0,0 +1,121 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const c=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"guide/getting-started.md","filePath":"en/guide/getting-started.md","lastUpdated":1725179973000}'),l={name:"guide/getting-started.md"};function t(p,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Getting Started

This page walks you through the installation and use of the VitePress Sidebar module.

Installation

First, you may need to pre-configure VitePress before using this module.

We recommend using Node.js 18.x or higher. The VitePress Sidebar is written in ESM. To use it in CommonJS, see instructions here.

You will need to install the module using NPM or any other Node module package manager. The package should be installed in devDependencies as it is only used in the developer environment. Use the command below:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

How to Use

You can automatically generate a sidebar using the generateSidebar method of VitePress Sidebar.

It scans the folder against the given root path (documentRootPath), finds the markdown files before they were built by VitePress, and returns a menu generated based on the folder tree structure.

First, import vitepress-sidebar in one of the two ways below.

1. Using named-import

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. Using default-import

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

Use the generateSidebar method in the themeConfig.sidebar property of the .vitepress/config.js file, which is VitePress's configuration file. VitePress's configuration file might have a different filename or extension depending on your project's settings.

To test how this will output, try building VitePress with the debugPrint option set to true. You should see the output in the console.

For more information about the configuration of generateSidebar, see API section below.

Code Example

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * For detailed instructions, see the links below:
+       * https://vitepress-sidebar.cdget.com/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

Example output

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/
`,22)]))}const g=i(l,[["render",t]]);export{c as __pageData,g as default}; diff --git a/assets/guide_index.md.BEfDrhJP.js b/assets/guide_index.md.BEfDrhJP.js new file mode 100644 index 00000000..908a3e6f --- /dev/null +++ b/assets/guide_index.md.BEfDrhJP.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"Guide","description":"","frontmatter":{"title":"Guide"},"headers":[],"relativePath":"guide/index.md","filePath":"en/guide/index.md","lastUpdated":1725611780000}'),d={name:"guide/index.md"};function i(n,r,o,s,c,p){return a(),t("div")}const m=e(d,[["render",i]]);export{l as __pageData,m as default}; diff --git a/assets/guide_index.md.BEfDrhJP.lean.js b/assets/guide_index.md.BEfDrhJP.lean.js new file mode 100644 index 00000000..908a3e6f --- /dev/null +++ b/assets/guide_index.md.BEfDrhJP.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"Guide","description":"","frontmatter":{"title":"Guide"},"headers":[],"relativePath":"guide/index.md","filePath":"en/guide/index.md","lastUpdated":1725611780000}'),d={name:"guide/index.md"};function i(n,r,o,s,c,p){return a(),t("div")}const m=e(d,[["render",i]]);export{l as __pageData,m as default}; diff --git a/assets/index.md.C90YfVNs.js b/assets/index.md.C90YfVNs.js new file mode 100644 index 00000000..f38a4bf4 --- /dev/null +++ b/assets/index.md.C90YfVNs.js @@ -0,0 +1 @@ +import{_ as t,c as o,o as e}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"VitePress Sidebar","titleTemplate":"Powerful auto sidebar generator","description":"","frontmatter":{"layout":"home","title":"VitePress Sidebar","titleTemplate":"Powerful auto sidebar generator","hero":{"name":"VitePress Sidebar","text":"Powerful auto sidebar generator","tagline":"A VitePress auto sidebar plugin that automatically creates a simple configuration","actions":[{"theme":"brand","text":"Getting Started","link":"/guide/getting-started"},{"theme":"alt","text":"API","link":"/guide/api"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/vitepress-sidebar"}],"image":{"src":"/sidebar.png","alt":"Sidebar"}},"features":[{"icon":"","title":"Best Pairings with VitePress","details":"Optimized for the latest version of VitePress."},{"icon":"","title":"Easy and granular sidebar configuration","details":"Easy to use, lots of options to customize to your liking. Customize menus for sorting, special character conversion, file and folder filters, and more!"},{"icon":"","title":"Broadly scalable use cases","details":"Support for multiple sidebars, Frontmatter, and TypeScript to handle a variety of use cases."},{"icon":"","title":"Reliable maintenance support","details":"With 2K+ downloads, there are many real-world use cases, and we have fast technical support."}]},"headers":[],"relativePath":"index.md","filePath":"en/index.md","lastUpdated":1724827582000}'),i={name:"index.md"};function l(s,n,r,a,p,f){return e(),o("div")}const g=t(i,[["render",l]]);export{d as __pageData,g as default}; diff --git a/assets/index.md.C90YfVNs.lean.js b/assets/index.md.C90YfVNs.lean.js new file mode 100644 index 00000000..f38a4bf4 --- /dev/null +++ b/assets/index.md.C90YfVNs.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,o as e}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"VitePress Sidebar","titleTemplate":"Powerful auto sidebar generator","description":"","frontmatter":{"layout":"home","title":"VitePress Sidebar","titleTemplate":"Powerful auto sidebar generator","hero":{"name":"VitePress Sidebar","text":"Powerful auto sidebar generator","tagline":"A VitePress auto sidebar plugin that automatically creates a simple configuration","actions":[{"theme":"brand","text":"Getting Started","link":"/guide/getting-started"},{"theme":"alt","text":"API","link":"/guide/api"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/vitepress-sidebar"}],"image":{"src":"/sidebar.png","alt":"Sidebar"}},"features":[{"icon":"","title":"Best Pairings with VitePress","details":"Optimized for the latest version of VitePress."},{"icon":"","title":"Easy and granular sidebar configuration","details":"Easy to use, lots of options to customize to your liking. Customize menus for sorting, special character conversion, file and folder filters, and more!"},{"icon":"","title":"Broadly scalable use cases","details":"Support for multiple sidebars, Frontmatter, and TypeScript to handle a variety of use cases."},{"icon":"","title":"Reliable maintenance support","details":"With 2K+ downloads, there are many real-world use cases, and we have fast technical support."}]},"headers":[],"relativePath":"index.md","filePath":"en/index.md","lastUpdated":1724827582000}'),i={name:"index.md"};function l(s,n,r,a,p,f){return e(),o("div")}const g=t(i,[["render",l]]);export{d as __pageData,g 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 00000000..b6b603d5 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 00000000..def40a4f 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 00000000..e070c3d3 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 00000000..a3c16ca4 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 00000000..2210a899 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 00000000..790d62dc 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 00000000..1eec0775 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 00000000..2cfe6153 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 00000000..e3886dd1 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 00000000..36d67487 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 00000000..2bed1e85 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 00000000..9a8d1e2b 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 00000000..07d3c53a 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 00000000..57bdc22a Binary files /dev/null and b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/assets/introduction.md.BHpka9lK.js b/assets/introduction.md.BHpka9lK.js new file mode 100644 index 00000000..080066b3 --- /dev/null +++ b/assets/introduction.md.BHpka9lK.js @@ -0,0 +1 @@ +import{_ as t,c as r,a2 as i,o}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"en/introduction.md","lastUpdated":1724371989000}'),s={name:"introduction.md"};function a(n,e,l,d,p,u){return o(),r("div",null,e[0]||(e[0]=[i('

Introduction

VitePress Sidebar is a plugin for VitePress that automatically configures and manages the sidebar of your page with simple settings.

  • ⚡️ Optimized for the latest version of VitePress
  • ⚡️ Easy to use, lots of options to customize to your liking
  • ⚡️ Lightweight bundle file size, zero dependencies
  • ⚡️ Multiple Sidebars support
  • ⚡️ Frontmatter support
  • ⚡️ TypeScript support
  • ⚡️ Customize menus for sorting, special character conversion, file and folder filters, and more!

Real-world Uses

VitePress Sidebar is utilized in a variety of project environments, including my own web services.

',6)]))}const h=t(s,[["render",a]]);export{f as __pageData,h as default}; diff --git a/assets/introduction.md.BHpka9lK.lean.js b/assets/introduction.md.BHpka9lK.lean.js new file mode 100644 index 00000000..080066b3 --- /dev/null +++ b/assets/introduction.md.BHpka9lK.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,a2 as i,o}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"en/introduction.md","lastUpdated":1724371989000}'),s={name:"introduction.md"};function a(n,e,l,d,p,u){return o(),r("div",null,e[0]||(e[0]=[i('

Introduction

VitePress Sidebar is a plugin for VitePress that automatically configures and manages the sidebar of your page with simple settings.

  • ⚡️ Optimized for the latest version of VitePress
  • ⚡️ Easy to use, lots of options to customize to your liking
  • ⚡️ Lightweight bundle file size, zero dependencies
  • ⚡️ Multiple Sidebars support
  • ⚡️ Frontmatter support
  • ⚡️ TypeScript support
  • ⚡️ Customize menus for sorting, special character conversion, file and folder filters, and more!

Real-world Uses

VitePress Sidebar is utilized in a variety of project environments, including my own web services.

',6)]))}const h=t(s,[["render",a]]);export{f as __pageData,h as default}; diff --git a/assets/ko_advanced-usage_index.md.ASOTCoFU.js b/assets/ko_advanced-usage_index.md.ASOTCoFU.js new file mode 100644 index 00000000..ac207139 --- /dev/null +++ b/assets/ko_advanced-usage_index.md.ASOTCoFU.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"고급","description":"","frontmatter":{"title":"고급"},"headers":[],"relativePath":"ko/advanced-usage/index.md","filePath":"ko/advanced-usage/index.md","lastUpdated":1725611780000}'),d={name:"ko/advanced-usage/index.md"};function n(o,s,c,r,i,p){return t(),a("div")}const m=e(d,[["render",n]]);export{l as __pageData,m as default}; diff --git a/assets/ko_advanced-usage_index.md.ASOTCoFU.lean.js b/assets/ko_advanced-usage_index.md.ASOTCoFU.lean.js new file mode 100644 index 00000000..ac207139 --- /dev/null +++ b/assets/ko_advanced-usage_index.md.ASOTCoFU.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"고급","description":"","frontmatter":{"title":"고급"},"headers":[],"relativePath":"ko/advanced-usage/index.md","filePath":"ko/advanced-usage/index.md","lastUpdated":1725611780000}'),d={name:"ko/advanced-usage/index.md"};function n(o,s,c,r,i,p){return t(),a("div")}const m=e(d,[["render",n]]);export{l as __pageData,m as default}; diff --git a/assets/ko_advanced-usage_multi-level-sidebar-with-indents.md.C68Qmefh.js b/assets/ko_advanced-usage_multi-level-sidebar-with-indents.md.C68Qmefh.js new file mode 100644 index 00000000..1c4ec18d --- /dev/null +++ b/assets/ko_advanced-usage_multi-level-sidebar-with-indents.md.C68Qmefh.js @@ -0,0 +1,19 @@ +import{_ as i,a}from"./chunks/doc-multi-level-docs-after.BybuXf3W.js";import{_ as e,c as n,a2 as t,o as p}from"./chunks/framework.Gf1jShja.js";const y=JSON.parse('{"title":"다중 레벨 사이드바의 들여쓰기","description":"","frontmatter":{},"headers":[],"relativePath":"ko/advanced-usage/multi-level-sidebar-with-indents.md","filePath":"ko/advanced-usage/multi-level-sidebar-with-indents.md","lastUpdated":1724503632000}'),l={name:"ko/advanced-usage/multi-level-sidebar-with-indents.md"};function h(d,s,k,r,c,o){return p(),n("div",null,s[0]||(s[0]=[t('

다중 레벨 사이드바의 들여쓰기

다중 사이드바에서는 메뉴가 각 계층마다 들여쓰기로 표시됩니다. 그러나 VitePress는 기본적으로 두 번째 계층부터 들여쓰기를 시작합니다. 예를 들어:

Multi level docs before

위의 directory-level-2directory-level-1의 하위 파일이지만 같은 계층 구조에 있는 것으로 보입니다.

이 문제는 VitePress 사이드바의 문제가 아니므로 이 문제를 해결하려면 VitePress의 사용자 정의 CSS 기능을 사용하여 기존 테마의 스타일을 사용자 정의해야 합니다.

.vitepress 디렉토리에 theme 디렉토리를 만들어 기존 스타일에 필요한 스타일을 재정의합니다. 그런 다음 theme 디렉토리 안에 index.js 파일(타입스크립트를 사용하는 경우 index.js 대신 index.ts를 사용)과 custom.css 파일을 만듭니다.

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ 이 줄 추가
+│  │     ├─ custom.css     <------------ 이 줄 추가
+│  │     └─ index.js       <------------ 이 줄 추가
+│  ├─ example.md
+│  └─ index.md
+└─ ...

그런 다음 index.js 파일에 다음을 추가합니다:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

다음으로 custom.css 파일에 다음을 추가합니다:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

이제 VitePress 서버를 시작합니다. 이렇게 하면 하위 콘텐츠가 존재하는 그룹의 첫 번째 레벨의 계층 구조를 더 쉽게 확인할 수 있습니다.

Multi level docs before

여기에서 보이는 세로선은 CSS로만 생성된 것으로, indicator라는 CSS 클래스가 있는 div로 생성되어야 하므로 향후 동적 페이지를 작성할 때 세로선이 선택되지 않을 수 있다는 점에 유의해야 합니다.

',14)]))}const F=e(l,[["render",h]]);export{y as __pageData,F as default}; diff --git a/assets/ko_advanced-usage_multi-level-sidebar-with-indents.md.C68Qmefh.lean.js b/assets/ko_advanced-usage_multi-level-sidebar-with-indents.md.C68Qmefh.lean.js new file mode 100644 index 00000000..1c4ec18d --- /dev/null +++ b/assets/ko_advanced-usage_multi-level-sidebar-with-indents.md.C68Qmefh.lean.js @@ -0,0 +1,19 @@ +import{_ as i,a}from"./chunks/doc-multi-level-docs-after.BybuXf3W.js";import{_ as e,c as n,a2 as t,o as p}from"./chunks/framework.Gf1jShja.js";const y=JSON.parse('{"title":"다중 레벨 사이드바의 들여쓰기","description":"","frontmatter":{},"headers":[],"relativePath":"ko/advanced-usage/multi-level-sidebar-with-indents.md","filePath":"ko/advanced-usage/multi-level-sidebar-with-indents.md","lastUpdated":1724503632000}'),l={name:"ko/advanced-usage/multi-level-sidebar-with-indents.md"};function h(d,s,k,r,c,o){return p(),n("div",null,s[0]||(s[0]=[t('

다중 레벨 사이드바의 들여쓰기

다중 사이드바에서는 메뉴가 각 계층마다 들여쓰기로 표시됩니다. 그러나 VitePress는 기본적으로 두 번째 계층부터 들여쓰기를 시작합니다. 예를 들어:

Multi level docs before

위의 directory-level-2directory-level-1의 하위 파일이지만 같은 계층 구조에 있는 것으로 보입니다.

이 문제는 VitePress 사이드바의 문제가 아니므로 이 문제를 해결하려면 VitePress의 사용자 정의 CSS 기능을 사용하여 기존 테마의 스타일을 사용자 정의해야 합니다.

.vitepress 디렉토리에 theme 디렉토리를 만들어 기존 스타일에 필요한 스타일을 재정의합니다. 그런 다음 theme 디렉토리 안에 index.js 파일(타입스크립트를 사용하는 경우 index.js 대신 index.ts를 사용)과 custom.css 파일을 만듭니다.

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ 이 줄 추가
+│  │     ├─ custom.css     <------------ 이 줄 추가
+│  │     └─ index.js       <------------ 이 줄 추가
+│  ├─ example.md
+│  └─ index.md
+└─ ...

그런 다음 index.js 파일에 다음을 추가합니다:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

다음으로 custom.css 파일에 다음을 추가합니다:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

이제 VitePress 서버를 시작합니다. 이렇게 하면 하위 콘텐츠가 존재하는 그룹의 첫 번째 레벨의 계층 구조를 더 쉽게 확인할 수 있습니다.

Multi level docs before

여기에서 보이는 세로선은 CSS로만 생성된 것으로, indicator라는 CSS 클래스가 있는 div로 생성되어야 하므로 향후 동적 페이지를 작성할 때 세로선이 선택되지 않을 수 있다는 점에 유의해야 합니다.

',14)]))}const F=e(l,[["render",h]]);export{y as __pageData,F as default}; diff --git a/assets/ko_advanced-usage_multiple-sidebars-how-to.md.BDUU0RwO.js b/assets/ko_advanced-usage_multiple-sidebars-how-to.md.BDUU0RwO.js new file mode 100644 index 00000000..e6e41019 --- /dev/null +++ b/assets/ko_advanced-usage_multiple-sidebars-how-to.md.BDUU0RwO.js @@ -0,0 +1,129 @@ +import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.Gf1jShja.js";const c=JSON.parse('{"title":"다중 사이드바","description":"","frontmatter":{},"headers":[],"relativePath":"ko/advanced-usage/multiple-sidebars-how-to.md","filePath":"ko/advanced-usage/multiple-sidebars-how-to.md","lastUpdated":1724371989000}'),e={name:"ko/advanced-usage/multiple-sidebars-how-to.md"};function l(t,s,h,k,d,E){return p(),i("div",null,s[0]||(s[0]=[n(`

다중 사이드바

다중 사이드바는 특정 URI 경로에 따라 서로 다른 사이드바 메뉴를 표시할 수 있는 기능입니다.

이것은 몇 가지 간단한 설정으로 vitepress-sidebar에서 쉽게 구현할 수 있습니다. 결국 VitePress는 의도한 대로 옵션을 출력합니다.

다중 사이드바에 대해 자세히 알아보려면 먼저 아래의 VitePress 공식 문서를 살펴보는 것이 좋습니다:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

기본 사용법

먼저, 다음과 같이 docs라는 루트 프로젝트와 guideconfig라는 하위 디렉터리가 있다고 가정해 보겠습니다:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

URL이 /guide 페이지에 있는 경우 사용자는 메뉴에 guide의 하위 메뉴만 표시하고 config의 하위 메뉴는 숨기기를 원합니다. 마찬가지로 /config 페이지에 guide의 하위 메뉴가 있을 때 하위 메뉴를 숨기려고 합니다.

이를 vitepress-sidebar에서 구현하려면 기존 설정과 다르게 접근해야 합니다.

이전과 같이 generateSidebar 함수를 사용하되 배열을 전달합니다. 배열에는 vitepress-sidebar의 옵션이 하나 이상 포함됩니다. 배열의 값은 원하는 만큼의 URL을 지정할 수 있습니다. 물론 다른 설정으로 구성할 수도 있습니다.

javascript
// 배열 인수를 전달해야 함!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

이러한 옵션의 값은 다음과 같이 결과에 사용됩니다:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // \`<scanStartPath>/path/to/items\`
+    }
+  ]
+}

다음은 위 설정의 출력 예시입니다:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

다중 사이드바 설정

다중 사이드바에서 사용할 수 있는 옵션은 다음과 같습니다: scanStartPath, basePathresolvePath. 각 옵션은 선택 사항이지만 상황에 따라 올바르게 사용할 수 있어야 합니다.

각 옵션은 아래에 설명되어 있습니다. 그러나 먼저 API 페이지에서 각 옵션에 대한 설명을 참조하는 것이 좋습니다.

아래 설명은 다음 예시를 기반으로 합니다:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

이 옵션은 다른 라우팅 규칙의 루트 경로로 다른 디렉터리를 지정하는 데 사용됩니다. documenRootPath는 실제로 스캔할 루트 경로(.vitepress 디렉터리가 있는 위치)이고 scanStartPath는 이 경로 규칙에서 실제로 표시되어야 하는 루트 경로입니다.

예를 들어 /guide 디렉터리에 있는 파일만 포함하려면 scanStartPath의 값을 guide로 지정합니다. 단, documentRootPath의 경로는 포함되지 않아야 합니다.

resolvePath

이 옵션은 특정 URI를 발견했을 때 관련 메뉴를 표시하기 위해 VitePress에서 사용합니다. 예를 들어 example.com/guide/api에 도달할 때 guide/api 디렉토리의 내용만 표시하려면 resolvePath의 값은 /guide/api가 됩니다. 경로 앞에 /를 포함하는 것이 좋습니다.

이 값은 일반적으로 scanStartPath와 비슷한 값을 갖지만, i18n 라우팅을 위해 다르게 지정해야 하는 경우도 있습니다.

basePath

이 옵션은 주로 VitePress의 rewrite 규칙으로 작업할 때 사용되며, 그 외에는 선택 사항입니다.

VitePress에서 base 경로의 값을 대체합니다. 이 값을 지정하지 않으면 resolvePath 값 또는 루트 경로(/)가 지정됩니다.

디렉토리의 실제 경로가 URI의 경로 구조와 다른 경우 다시 쓰기를 통해 제공된 페이지로 이동할 수 있어야 합니다. 일반적으로 사이드바는 루트 디렉터리를 기반으로 경로를 생성하며 VitePress의 다시 쓰기 경로를 참조하지 않습니다.

예를 들어 다음과 같은 재작성 규칙이 있다고 가정해 보겠습니다:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

guide/one.md 문서가 help/one 경로에 표시됩니다. 그러나 이렇게 하면 사이드바가 경로인 help/one을 그대로 찾으려고 하기 때문에 메뉴가 표시되지 않습니다.

이 문제를 해결하려면 basePath의 경로를 help로 변경하세요:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- 이 라인을 추가합니다.
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

복잡한 경로 및 URI가 있는 메뉴 표시하기

위의 예는 일반적으로 경로가 단계로 정의된 경우이지만, 단계가 깊은 폴더를 표시하려는 경우, 특히 URI가 더 짧거나 실제 폴더 경로와 다른 규칙을 사용하는 경우에는 추가 방법을 사용해야 합니다. 예를 들어 다음과 같은 폴더 구조가 있습니다:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

이번에는 /api라는 한 단계 URI에 도달했을 때 docs/guide/api의 메뉴를 표시하고 싶습니다. 예상되는 메뉴는 api-one.mdapi-two.md만 표시하는 것입니다.

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

하지만 이렇게 옵션을 구성하면 api 디렉터리가 guide의 하위 디렉터리이기 때문에 메뉴를 표시할 수 없습니다. VitePress는 이를 감지하지 못하고 존재하지 않는 문서로 이동합니다.

이를 해결하려면 VitePress의 라우팅 기능을 병행해서 사용해야 합니다. 관련 내용은 아래 글을 참고하세요:

https://vitepress.dev/guide/routing#route-rewrites

위의 예에 따라 themeConfig 외부에 있어야 하는 VitePress 설정 파일인 config.js 파일에서 rewrites 옵션을 추가합니다:

javascript
export default defineConfig({
+  /* [START] 여기부터 */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] 여기까지 */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

이제 URI 경로가 /api로 시작하면 docs/guide/api의 하위 메뉴가 표시됩니다!

`,47)]))}const o=a(e,[["render",l]]);export{c as __pageData,o as default}; diff --git a/assets/ko_advanced-usage_multiple-sidebars-how-to.md.BDUU0RwO.lean.js b/assets/ko_advanced-usage_multiple-sidebars-how-to.md.BDUU0RwO.lean.js new file mode 100644 index 00000000..e6e41019 --- /dev/null +++ b/assets/ko_advanced-usage_multiple-sidebars-how-to.md.BDUU0RwO.lean.js @@ -0,0 +1,129 @@ +import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.Gf1jShja.js";const c=JSON.parse('{"title":"다중 사이드바","description":"","frontmatter":{},"headers":[],"relativePath":"ko/advanced-usage/multiple-sidebars-how-to.md","filePath":"ko/advanced-usage/multiple-sidebars-how-to.md","lastUpdated":1724371989000}'),e={name:"ko/advanced-usage/multiple-sidebars-how-to.md"};function l(t,s,h,k,d,E){return p(),i("div",null,s[0]||(s[0]=[n(`

다중 사이드바

다중 사이드바는 특정 URI 경로에 따라 서로 다른 사이드바 메뉴를 표시할 수 있는 기능입니다.

이것은 몇 가지 간단한 설정으로 vitepress-sidebar에서 쉽게 구현할 수 있습니다. 결국 VitePress는 의도한 대로 옵션을 출력합니다.

다중 사이드바에 대해 자세히 알아보려면 먼저 아래의 VitePress 공식 문서를 살펴보는 것이 좋습니다:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

기본 사용법

먼저, 다음과 같이 docs라는 루트 프로젝트와 guideconfig라는 하위 디렉터리가 있다고 가정해 보겠습니다:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

URL이 /guide 페이지에 있는 경우 사용자는 메뉴에 guide의 하위 메뉴만 표시하고 config의 하위 메뉴는 숨기기를 원합니다. 마찬가지로 /config 페이지에 guide의 하위 메뉴가 있을 때 하위 메뉴를 숨기려고 합니다.

이를 vitepress-sidebar에서 구현하려면 기존 설정과 다르게 접근해야 합니다.

이전과 같이 generateSidebar 함수를 사용하되 배열을 전달합니다. 배열에는 vitepress-sidebar의 옵션이 하나 이상 포함됩니다. 배열의 값은 원하는 만큼의 URL을 지정할 수 있습니다. 물론 다른 설정으로 구성할 수도 있습니다.

javascript
// 배열 인수를 전달해야 함!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

이러한 옵션의 값은 다음과 같이 결과에 사용됩니다:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // \`<scanStartPath>/path/to/items\`
+    }
+  ]
+}

다음은 위 설정의 출력 예시입니다:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

다중 사이드바 설정

다중 사이드바에서 사용할 수 있는 옵션은 다음과 같습니다: scanStartPath, basePathresolvePath. 각 옵션은 선택 사항이지만 상황에 따라 올바르게 사용할 수 있어야 합니다.

각 옵션은 아래에 설명되어 있습니다. 그러나 먼저 API 페이지에서 각 옵션에 대한 설명을 참조하는 것이 좋습니다.

아래 설명은 다음 예시를 기반으로 합니다:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

이 옵션은 다른 라우팅 규칙의 루트 경로로 다른 디렉터리를 지정하는 데 사용됩니다. documenRootPath는 실제로 스캔할 루트 경로(.vitepress 디렉터리가 있는 위치)이고 scanStartPath는 이 경로 규칙에서 실제로 표시되어야 하는 루트 경로입니다.

예를 들어 /guide 디렉터리에 있는 파일만 포함하려면 scanStartPath의 값을 guide로 지정합니다. 단, documentRootPath의 경로는 포함되지 않아야 합니다.

resolvePath

이 옵션은 특정 URI를 발견했을 때 관련 메뉴를 표시하기 위해 VitePress에서 사용합니다. 예를 들어 example.com/guide/api에 도달할 때 guide/api 디렉토리의 내용만 표시하려면 resolvePath의 값은 /guide/api가 됩니다. 경로 앞에 /를 포함하는 것이 좋습니다.

이 값은 일반적으로 scanStartPath와 비슷한 값을 갖지만, i18n 라우팅을 위해 다르게 지정해야 하는 경우도 있습니다.

basePath

이 옵션은 주로 VitePress의 rewrite 규칙으로 작업할 때 사용되며, 그 외에는 선택 사항입니다.

VitePress에서 base 경로의 값을 대체합니다. 이 값을 지정하지 않으면 resolvePath 값 또는 루트 경로(/)가 지정됩니다.

디렉토리의 실제 경로가 URI의 경로 구조와 다른 경우 다시 쓰기를 통해 제공된 페이지로 이동할 수 있어야 합니다. 일반적으로 사이드바는 루트 디렉터리를 기반으로 경로를 생성하며 VitePress의 다시 쓰기 경로를 참조하지 않습니다.

예를 들어 다음과 같은 재작성 규칙이 있다고 가정해 보겠습니다:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

guide/one.md 문서가 help/one 경로에 표시됩니다. 그러나 이렇게 하면 사이드바가 경로인 help/one을 그대로 찾으려고 하기 때문에 메뉴가 표시되지 않습니다.

이 문제를 해결하려면 basePath의 경로를 help로 변경하세요:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- 이 라인을 추가합니다.
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

복잡한 경로 및 URI가 있는 메뉴 표시하기

위의 예는 일반적으로 경로가 단계로 정의된 경우이지만, 단계가 깊은 폴더를 표시하려는 경우, 특히 URI가 더 짧거나 실제 폴더 경로와 다른 규칙을 사용하는 경우에는 추가 방법을 사용해야 합니다. 예를 들어 다음과 같은 폴더 구조가 있습니다:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

이번에는 /api라는 한 단계 URI에 도달했을 때 docs/guide/api의 메뉴를 표시하고 싶습니다. 예상되는 메뉴는 api-one.mdapi-two.md만 표시하는 것입니다.

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

하지만 이렇게 옵션을 구성하면 api 디렉터리가 guide의 하위 디렉터리이기 때문에 메뉴를 표시할 수 없습니다. VitePress는 이를 감지하지 못하고 존재하지 않는 문서로 이동합니다.

이를 해결하려면 VitePress의 라우팅 기능을 병행해서 사용해야 합니다. 관련 내용은 아래 글을 참고하세요:

https://vitepress.dev/guide/routing#route-rewrites

위의 예에 따라 themeConfig 외부에 있어야 하는 VitePress 설정 파일인 config.js 파일에서 rewrites 옵션을 추가합니다:

javascript
export default defineConfig({
+  /* [START] 여기부터 */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] 여기까지 */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

이제 URI 경로가 /api로 시작하면 docs/guide/api의 하위 메뉴가 표시됩니다!

`,47)]))}const o=a(e,[["render",l]]);export{c as __pageData,o as default}; diff --git a/assets/ko_changelog.md.DrgKN5Ov.js b/assets/ko_changelog.md.DrgKN5Ov.js new file mode 100644 index 00000000..6f0228b8 --- /dev/null +++ b/assets/ko_changelog.md.DrgKN5Ov.js @@ -0,0 +1 @@ +import{_ as o,c as a,a2 as i,o as l}from"./chunks/framework.Gf1jShja.js";const p=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ko/changelog.md","filePath":"ko/changelog.md","lastUpdated":null}'),t={name:"ko/changelog.md"};function d(r,e,n,c,s,h){return l(),a("div",null,e[0]||(e[0]=[i('

Changelog

1.25.3 (2024-09-03)

  • If convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile options are defined together, try with title from index file when title is not fetched (#170)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

  • Fix convertSameNameSubFileToGroupIndexPage to get the name normally if subfile doesn't exist when set
  • Use the title of the index file if convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile are defined together (#170)

1.25.1 (2024-09-03)

  • BREAKING CHANGES: The Options type for TypeScript has been renamed to VitePressSidebarOptions.
  • Fix to avoid converting non-first letter items to lowercase when using capitalizeEachWords
  • Support for specifying sidebar option types for TypeScript
  • Documentation page domain now changed to vitepress-sidebar.cdget.com!
  • Korean documentation support

1.25.0 (2024-08-22)

  • Add basePath option
  • Fix incorrect directory path when using rewrite and convertSameNameSubFileToGroupIndexPage option. (#146)

1.24.2 (2024-08-13)

  • Fix index link is blank in multiple sidebars (#167)

1.24.1 (2024-07-31)

  • If a link exists in the directory, it will appear in the menu regardless of the option
  • Fix do not include index link when index.md file is shown (#147)
  • More precise argument checking

1.24.0 (2024-07-06)

  • Add frontmatterTitleFieldName option. When used with useTitleFromFrontmatter, the text field of sidebar will extract from the value of frontmatterTitleFieldName instead of default title field if it exists. (@liudonghua123)

1.23.2 (2024-05-16)

  • Revert 5ed188e. do not warn 'use option together'

1.23.1 (2024-05-15)

  • Warning against using the removePrefixAfterOrdering option and the useTitleFrom option together
  • Fix to return full filename if separator is not present in filename when using removePrefixAfterOrdering option

1.23.0 (2024-05-13)

  • BREAKING CHANGES: The excludeFilesByFrontmatter option is deprecated and replaced by the excludeFilesByFrontmatterFieldName option. You can now specify any field name you want, including Frontmatter's exclude field name, and documents will be excluded from the menu when that field value is true. Existing users should work fine with the following settings excludeFilesByFrontmatterFieldName: 'exclude'. For more information, see the documentation.
  • Allow empty values or empty object options to be passed in

1.22.0 (2024-03-28)

  • prefixSeparator now accepts regular expressions
  • Add sortMenusByFileDatePrefix option

1.21.0 (2024-03-15)

  • Add removePrefixAfterOrdering and prefixSeparator option
  • Documentation enhancements

1.20.0 (2024-03-12)

  • BREAKING CHANGES: The sortMenusOrderNumerically option has been split into the sortMenusOrderNumericallyFromTitle and sortMenusOrderNumericallyFromLink options. Therefore, the old option is deprecated. Renamed to allow you to sort by file title or link. For more information, see README.md.
  • Add sortMenusByFrontmatterDate option
  • Add sortMenusOrderNumericallyFromLink option
  • In useFolderLinkFromIndexFile, show the path to index.md together
  • Fix folders with only an index file are not recognized as empty

1.19.0 (2024-02-26)

  • Add excludeFilesByFrontmatter option (@aslafy-z)

1.18.6 (2024-01-03)

  • Fix typescript issue

1.18.5 (2023-12-11)

  • Add frontmatterOrderDefaultValue option (@aslafy-z)
  • Fix recursive sort of items (@aslafy-z)
  • Retrieve ordering for top level folder indexes (@aslafy-z)

1.18.0 (2023-10-02)

  • Add capitalizeEachWords option
  • The option to modify menu names is also reflected correctly when pulling names from MarkDown heading, frontmatter.

1.17.0 (2023-09-26)

  • Add sortMenusOrderNumerically option

1.16.5 (2023-09-22)

  • Fix nested links being created in multiple sidebars

1.16.0 (2023-09-21)

  • BREAKING CHANGES: The useIndexFileForFolderMenuInfo option has been split into the useFolderTitleFromIndexFile and useFolderLinkFromIndexFile options. Therefore, the old option is deprecated. You can now specify whether the folder menu should get its name and link from the index.md file, respectively. For more information, see README.md.
  • Make sure the link to the index page is clearly marked (e.g., folder/ instead of folder/index).

1.15.0 (2023-09-19)

  • Fix correct base url for multiple sidebars
  • The rootGroupText, rootGroupLink, and rootGroupCollapsed options are available again. However, these options are no longer required.

1.14.0 (2023-09-18)

  • NOTE: The options rootGroupText, rootGroupLink, and rootGroupCollapsed are not available in this version. Please update to the latest version. These options have been restored!
  • Use a better algorithm for stripping formatting from titles that contain Markdown syntax

1.13.0 (2023-09-13)

  • BREAKING CHANGES: The generator normally strips some of the Markdown syntax when using useTitleFromFileHeading. If you do not want to remove Markdown syntax, set the keepMarkdownSyntaxFromTitle option to true.
  • Add debugPrint option
  • Add keepMarkdownSyntaxFromTitle option
  • Improved test example files

1.12.0 (2023-09-12)

  • Add sortMenusByFrontmatterOrder option

1.11.0 (2023-08-24)

  • BREAKING CHANGES: useFolderLinkAsIndexPage option was renamed to useIndexFileForFolderMenuInfo
  • BREAKING CHANGES: sortByFileName option was renamed to manualSortFileNameByPriority
  • BREAKING CHANGES: The useFolderLinkAsIndexPage option now also gets the title information of the index.md file, so the name of the folder menu is set to the title of the index.md file
  • The useFolderLinkAsIndexPage option, if the index file (index.md) does not exist, will display it without setting a link, replacing the name with the folder name
  • Add sortMenusByName and sortMenusOrderByDescending options
  • Added deprecated warning for changed option names

1.10.1 (2023-08-08)

  • Fixed issue with rootGroupCollapsed option not being applied correctly

1.10.0 (2023-07-25)

  • Add includeFolderIndexFile option
  • Add useFolderLinkAsIndexPage option

1.9.5 (2023-07-25)

  • Troubleshooting when links are not prefixed with /
  • Allow null or undefined value for collapsed options

1.9.0 (2023-07-24)

  • Add rootGroupCollapsed option. This option is separate from the collapsed option and allows you to set whether the RootGroup (the item displayed in the Table of Contents) is expanded or not. See README.md for more information.
  • Correct behavior of collapseDepth

1.8.2 (2023-07-18)

  • Remove unnecessary files
  • Upgrade package dependencies
  • Update README.md

1.8.1 (2023-06-15)

  • Make sure to apply multi-sidebar settings for settings containing resolvePath

1.8.0 (2023-06-13)

  • BREAKING CHANGES: The root option was renamed to documentRootPath.
  • Support for multiple sidebars (Add scanStartPath and resolvePath option. Please read README.md file.)
  • Improved multiple validation checks
  • Improved Frontmatter inspections with special characters or newlines

1.7.5 (2023-05-28)

  • Add folderLinkNotIncludesFileName option

1.7.0 (2023-05-28)

  • BREAKING CHANGES: The withIndex option was renamed to includeRootIndexFile.
  • BREAKING CHANGES: The includeEmptyGroup option was renamed to includeEmptyFolder.
  • Add excludeFiles option
  • Add excludeFolders option
  • Add includeDotFiles option
  • Parsing markdown h1 tag and frontmatter correctly

1.6.5 (2023-05-27)

  • Fix convertSameNameSubFileToGroupIndexPage and rename option not working together

1.6.0 (2023-05-27)

  • BREAKING CHANGES: The default value for hyphenToSpace is now false.
  • Add convertSameNameSubFileToGroupIndexPage option: If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.
  • Fixed issue with hyphenToSpace and underscoreToSpace options not being applied to directories
  • Add rootGroupLink option

1.5.1 (2023-05-26)

  • Add .mocharc.json, remove tsconfig.prod.json file in .npmignore

1.5.0 (2023-05-26)

  • Add useTitleFromFrontmatter option. See README.md.
  • useTitleFromFileHeading: Use only valid title values in titles that contain links

1.4.0 (2023-05-26)

  • Fix TypeScript lint error
  • Upgrade package dependencies

1.3.1 (2023-04-20)

  • Fix build issue

1.3.0 (2023-04-20)

  • Upgrade package dependencies
  • Cleanup codes and update documentation

1.2.0 (2023-02-07)

  • BREAKING CHANGES: The collapsible option has been removed by VitePress 1.0.0-alpha.44 breaking changes. See: https://vitepress.vuejs.org/config/theme-configs
    • If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.
  • Upgrade package dependencies

1.1.5 (2023-01-12)

  • Remove CODE_OF_CONDUCT.md for npm release

1.1.4 (2023-01-12)

  • Upgrade package dependencies

1.1.3 (2022-12-08)

  • Upgrade package dependencies
  • Add includeEmptyGroup option
  • Do not include empty group by default

1.1.2 (2022-11-23)

  • Upgrade package dependencies
  • Fix README.md and codes indent

1.1.1 (2022-11-02)

  • Fix capitalizeFirst bug

1.1.0 (2022-11-02)

  • Add capitalizeFirst option
  • Fix null check for option

1.0.9 (2022-11-02)

  • Add sortByFileName option

1.0.8 (2022-11-02)

  • Add collapseDepth option
  • Fix correct import fs module
  • Upgrade package dependencies

1.0.7 (2022-10-31)

  • Fix execution order and cleanup codes
  • Add .editorconfig file and reformat codes (Development only)

1.0.6 (2022-10-31)

  • Add useTitleFromFileHeading option
  • Upgrade package dependencies

1.0.5 (2022-10-27)

  • Change require NodeJS version to 14
  • Add mocha test (Development only)

1.0.4 (2022-10-25)

  • First production release

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

  • Alpha release (Not tested. Do not use production.)
',112)]))}const m=o(t,[["render",d]]);export{p as __pageData,m as default}; diff --git a/assets/ko_changelog.md.DrgKN5Ov.lean.js b/assets/ko_changelog.md.DrgKN5Ov.lean.js new file mode 100644 index 00000000..6f0228b8 --- /dev/null +++ b/assets/ko_changelog.md.DrgKN5Ov.lean.js @@ -0,0 +1 @@ +import{_ as o,c as a,a2 as i,o as l}from"./chunks/framework.Gf1jShja.js";const p=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ko/changelog.md","filePath":"ko/changelog.md","lastUpdated":null}'),t={name:"ko/changelog.md"};function d(r,e,n,c,s,h){return l(),a("div",null,e[0]||(e[0]=[i('

Changelog

1.25.3 (2024-09-03)

  • If convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile options are defined together, try with title from index file when title is not fetched (#170)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

  • Fix convertSameNameSubFileToGroupIndexPage to get the name normally if subfile doesn't exist when set
  • Use the title of the index file if convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile are defined together (#170)

1.25.1 (2024-09-03)

  • BREAKING CHANGES: The Options type for TypeScript has been renamed to VitePressSidebarOptions.
  • Fix to avoid converting non-first letter items to lowercase when using capitalizeEachWords
  • Support for specifying sidebar option types for TypeScript
  • Documentation page domain now changed to vitepress-sidebar.cdget.com!
  • Korean documentation support

1.25.0 (2024-08-22)

  • Add basePath option
  • Fix incorrect directory path when using rewrite and convertSameNameSubFileToGroupIndexPage option. (#146)

1.24.2 (2024-08-13)

  • Fix index link is blank in multiple sidebars (#167)

1.24.1 (2024-07-31)

  • If a link exists in the directory, it will appear in the menu regardless of the option
  • Fix do not include index link when index.md file is shown (#147)
  • More precise argument checking

1.24.0 (2024-07-06)

  • Add frontmatterTitleFieldName option. When used with useTitleFromFrontmatter, the text field of sidebar will extract from the value of frontmatterTitleFieldName instead of default title field if it exists. (@liudonghua123)

1.23.2 (2024-05-16)

  • Revert 5ed188e. do not warn 'use option together'

1.23.1 (2024-05-15)

  • Warning against using the removePrefixAfterOrdering option and the useTitleFrom option together
  • Fix to return full filename if separator is not present in filename when using removePrefixAfterOrdering option

1.23.0 (2024-05-13)

  • BREAKING CHANGES: The excludeFilesByFrontmatter option is deprecated and replaced by the excludeFilesByFrontmatterFieldName option. You can now specify any field name you want, including Frontmatter's exclude field name, and documents will be excluded from the menu when that field value is true. Existing users should work fine with the following settings excludeFilesByFrontmatterFieldName: 'exclude'. For more information, see the documentation.
  • Allow empty values or empty object options to be passed in

1.22.0 (2024-03-28)

  • prefixSeparator now accepts regular expressions
  • Add sortMenusByFileDatePrefix option

1.21.0 (2024-03-15)

  • Add removePrefixAfterOrdering and prefixSeparator option
  • Documentation enhancements

1.20.0 (2024-03-12)

  • BREAKING CHANGES: The sortMenusOrderNumerically option has been split into the sortMenusOrderNumericallyFromTitle and sortMenusOrderNumericallyFromLink options. Therefore, the old option is deprecated. Renamed to allow you to sort by file title or link. For more information, see README.md.
  • Add sortMenusByFrontmatterDate option
  • Add sortMenusOrderNumericallyFromLink option
  • In useFolderLinkFromIndexFile, show the path to index.md together
  • Fix folders with only an index file are not recognized as empty

1.19.0 (2024-02-26)

  • Add excludeFilesByFrontmatter option (@aslafy-z)

1.18.6 (2024-01-03)

  • Fix typescript issue

1.18.5 (2023-12-11)

  • Add frontmatterOrderDefaultValue option (@aslafy-z)
  • Fix recursive sort of items (@aslafy-z)
  • Retrieve ordering for top level folder indexes (@aslafy-z)

1.18.0 (2023-10-02)

  • Add capitalizeEachWords option
  • The option to modify menu names is also reflected correctly when pulling names from MarkDown heading, frontmatter.

1.17.0 (2023-09-26)

  • Add sortMenusOrderNumerically option

1.16.5 (2023-09-22)

  • Fix nested links being created in multiple sidebars

1.16.0 (2023-09-21)

  • BREAKING CHANGES: The useIndexFileForFolderMenuInfo option has been split into the useFolderTitleFromIndexFile and useFolderLinkFromIndexFile options. Therefore, the old option is deprecated. You can now specify whether the folder menu should get its name and link from the index.md file, respectively. For more information, see README.md.
  • Make sure the link to the index page is clearly marked (e.g., folder/ instead of folder/index).

1.15.0 (2023-09-19)

  • Fix correct base url for multiple sidebars
  • The rootGroupText, rootGroupLink, and rootGroupCollapsed options are available again. However, these options are no longer required.

1.14.0 (2023-09-18)

  • NOTE: The options rootGroupText, rootGroupLink, and rootGroupCollapsed are not available in this version. Please update to the latest version. These options have been restored!
  • Use a better algorithm for stripping formatting from titles that contain Markdown syntax

1.13.0 (2023-09-13)

  • BREAKING CHANGES: The generator normally strips some of the Markdown syntax when using useTitleFromFileHeading. If you do not want to remove Markdown syntax, set the keepMarkdownSyntaxFromTitle option to true.
  • Add debugPrint option
  • Add keepMarkdownSyntaxFromTitle option
  • Improved test example files

1.12.0 (2023-09-12)

  • Add sortMenusByFrontmatterOrder option

1.11.0 (2023-08-24)

  • BREAKING CHANGES: useFolderLinkAsIndexPage option was renamed to useIndexFileForFolderMenuInfo
  • BREAKING CHANGES: sortByFileName option was renamed to manualSortFileNameByPriority
  • BREAKING CHANGES: The useFolderLinkAsIndexPage option now also gets the title information of the index.md file, so the name of the folder menu is set to the title of the index.md file
  • The useFolderLinkAsIndexPage option, if the index file (index.md) does not exist, will display it without setting a link, replacing the name with the folder name
  • Add sortMenusByName and sortMenusOrderByDescending options
  • Added deprecated warning for changed option names

1.10.1 (2023-08-08)

  • Fixed issue with rootGroupCollapsed option not being applied correctly

1.10.0 (2023-07-25)

  • Add includeFolderIndexFile option
  • Add useFolderLinkAsIndexPage option

1.9.5 (2023-07-25)

  • Troubleshooting when links are not prefixed with /
  • Allow null or undefined value for collapsed options

1.9.0 (2023-07-24)

  • Add rootGroupCollapsed option. This option is separate from the collapsed option and allows you to set whether the RootGroup (the item displayed in the Table of Contents) is expanded or not. See README.md for more information.
  • Correct behavior of collapseDepth

1.8.2 (2023-07-18)

  • Remove unnecessary files
  • Upgrade package dependencies
  • Update README.md

1.8.1 (2023-06-15)

  • Make sure to apply multi-sidebar settings for settings containing resolvePath

1.8.0 (2023-06-13)

  • BREAKING CHANGES: The root option was renamed to documentRootPath.
  • Support for multiple sidebars (Add scanStartPath and resolvePath option. Please read README.md file.)
  • Improved multiple validation checks
  • Improved Frontmatter inspections with special characters or newlines

1.7.5 (2023-05-28)

  • Add folderLinkNotIncludesFileName option

1.7.0 (2023-05-28)

  • BREAKING CHANGES: The withIndex option was renamed to includeRootIndexFile.
  • BREAKING CHANGES: The includeEmptyGroup option was renamed to includeEmptyFolder.
  • Add excludeFiles option
  • Add excludeFolders option
  • Add includeDotFiles option
  • Parsing markdown h1 tag and frontmatter correctly

1.6.5 (2023-05-27)

  • Fix convertSameNameSubFileToGroupIndexPage and rename option not working together

1.6.0 (2023-05-27)

  • BREAKING CHANGES: The default value for hyphenToSpace is now false.
  • Add convertSameNameSubFileToGroupIndexPage option: If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.
  • Fixed issue with hyphenToSpace and underscoreToSpace options not being applied to directories
  • Add rootGroupLink option

1.5.1 (2023-05-26)

  • Add .mocharc.json, remove tsconfig.prod.json file in .npmignore

1.5.0 (2023-05-26)

  • Add useTitleFromFrontmatter option. See README.md.
  • useTitleFromFileHeading: Use only valid title values in titles that contain links

1.4.0 (2023-05-26)

  • Fix TypeScript lint error
  • Upgrade package dependencies

1.3.1 (2023-04-20)

  • Fix build issue

1.3.0 (2023-04-20)

  • Upgrade package dependencies
  • Cleanup codes and update documentation

1.2.0 (2023-02-07)

  • BREAKING CHANGES: The collapsible option has been removed by VitePress 1.0.0-alpha.44 breaking changes. See: https://vitepress.vuejs.org/config/theme-configs
    • If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.
  • Upgrade package dependencies

1.1.5 (2023-01-12)

  • Remove CODE_OF_CONDUCT.md for npm release

1.1.4 (2023-01-12)

  • Upgrade package dependencies

1.1.3 (2022-12-08)

  • Upgrade package dependencies
  • Add includeEmptyGroup option
  • Do not include empty group by default

1.1.2 (2022-11-23)

  • Upgrade package dependencies
  • Fix README.md and codes indent

1.1.1 (2022-11-02)

  • Fix capitalizeFirst bug

1.1.0 (2022-11-02)

  • Add capitalizeFirst option
  • Fix null check for option

1.0.9 (2022-11-02)

  • Add sortByFileName option

1.0.8 (2022-11-02)

  • Add collapseDepth option
  • Fix correct import fs module
  • Upgrade package dependencies

1.0.7 (2022-10-31)

  • Fix execution order and cleanup codes
  • Add .editorconfig file and reformat codes (Development only)

1.0.6 (2022-10-31)

  • Add useTitleFromFileHeading option
  • Upgrade package dependencies

1.0.5 (2022-10-27)

  • Change require NodeJS version to 14
  • Add mocha test (Development only)

1.0.4 (2022-10-25)

  • First production release

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

  • Alpha release (Not tested. Do not use production.)
',112)]))}const m=o(t,[["render",d]]);export{p as __pageData,m as default}; diff --git a/assets/ko_guide_api.md.Cn2BChr3.js b/assets/ko_guide_api.md.Cn2BChr3.js new file mode 100644 index 00000000..67f3331c --- /dev/null +++ b/assets/ko_guide_api.md.Cn2BChr3.js @@ -0,0 +1 @@ +import{_ as o}from"./chunks/doc-collapsed-example.CqMUHFlL.js";import{_ as a,c as d,a2 as t,o as l}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"API","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"ko/guide/api.md","filePath":"ko/guide/api.md","lastUpdated":1725611780000}'),r={name:"ko/guide/api.md"};function i(c,e,n,s,p,u){return l(),d("div",null,e[0]||(e[0]=[t('

API

이 페이지에서는 VitePress Sidebar의 모든 옵션에 대해 설명합니다.

@ 빠른 검색

경로 해석그룹핑
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
메뉴 제목메뉴 링크
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
포함 및 제외메뉴 제목 스타일링
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
정렬기타
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

문서 파일이 위치한 최상위 경로입니다. 기본값은 /입니다.

이 옵션은 .vitepress 디렉터리가 있는 경로이며, 프로젝트 루트에서 문서가 있는 폴더가 /docs인 경우 이 옵션의 값을 docs 또는 /docs로 설정해야 합니다.

text
/\n├─ package.json\n├─ src/\n├─ docs/        <--------------- `documentRootPath` ('/docs')\n│  ├─ .vitepress/        <------ VitePress 설정 디렉토리\n│  ├─ another-directory/\n│  ├─ hello.md\n│  └─ index.md\n└─ ...

scanStartPath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

문서 목록을 스캔할 루트 디렉터리 경로입니다. scanStartPath에 설정된 경로를 벗어난 documentRootPath에 설정된 경로에 있는 파일은 스캔되지 않습니다. documentRootPath에 설정된 상위 경로가 link에 표시되어야 하므로 scanStartPath를 지정하는 경우 documentRootPath도 함께 설정하는 것이 좋습니다.

예를 들어 루트 경로가 /docs이고 스캔할 문서가 /docs/sub-dir/scan-me인 경우, 설정은 다음과 같이 표시됩니다:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (documentRootPath 경로를 포함하지 마세요.)

resolvePath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

각 경로마다 다른 사이드바를 표시하려면 섹션의 경로를 입력합니다. 경로 앞에 /가 포함되어야 합니다. 이 값이 없는 옵션은 루트 섹션(/)으로 설정됩니다.

e.g. /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

이 옵션은 VitePress의 rewrites 옵션으로 인해 경로가 변경된 경우에 사용할 수 있습니다. VitePress의 기본 경로를 대체합니다. 이 값이 존재하지 않으면 resolvePath의 값을 대신 사용합니다.

useTitleFromFileHeading

  • Type: boolean
  • Default: false

값이 true이면 .md 파일의 h1 제목 내용이 포함된 제목을 표시합니다. 파일에 h1 제목이 존재하지 않으면 Unknown으로 표시됩니다.

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

값이 true이면 파일의 Frontmatter에 있는 title 값에 따라 제목을 표시합니다. 이 값을 구문 분석할 수 없는 경우 useTitleFromFileHeading 옵션이 true인 경우 h1 태그에서, 실패하면 파일 이름에서 가져옵니다.

'제목'은 문서 상단에 위치해야 하며 다음과 같이 표시되어야 합니다(title: 값과 제목 사이에 공백이 필요합니다).

markdown
---\ntitle: Hello World\n---

frontmatterTitleFieldName

  • Type: string
  • Default: title

파일에 지정된 Frontmatter에서 지정한 키 이름을 기준으로 메뉴 제목을 표시합니다. 지정한 값이 Frontmatter에 존재하지 않으면 기본 title이 대체로 사용됩니다.

markdown
---\nname: 이 것은 Frontmatter의 제목값입니다.\n---

자세한 내용은 다음 문서를 참조하세요: https://vitepress.dev/guide/frontmatter

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

이 값이 true이면 현재 폴더의 index.md 파일에 있는 정보를 사용하여 메뉴 이름을 가져옵니다. 인덱스 파일이 존재하지 않으면 폴더 이름이 사용됩니다. 일반적으로 index라는 이름은 index.md 파일에서 가져오기 때문에 useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 함께 사용하여 해당 파일의 마크다운 헤더 또는 프론트매터에서 제목을 가져오는 것이 좋습니다.

인덱스 파일은 사이드바 메뉴에서 숨겨져 있지만, 인덱스 파일은 includeFolderIndexFile 옵션이 true인 경우 메뉴에 표시될 수 있습니다.

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

이 값이 true이면 현재 폴더에 있는 index.md 파일로 이동할 수 있도록 폴더에 대한 링크를 지정합니다. 인덱스 파일이 존재하지 않으면 링크가 생성되지 않습니다.

인덱스 파일은 사이드바 메뉴에서 숨겨져 있지만, 인덱스 파일은 includeFolderIndexFile 옵션이 true인 경우 메뉴에 표시될 수 있습니다.

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

파일 이름(확장자 포함) 배열을 순서대로 정렬합니다. 배열에 파일 이름과 일치하는 값이 없으면 정렬 우선순위가 반송됩니다. 이는 파일과 디렉터리 모두에 적용되며 하위 디렉터리에도 동일한 정렬 규칙이 적용됩니다.

sortMenusByName

  • Type: boolean
  • Default: false

메뉴 항목의 항목을 이름별로 정렬합니다. 일반적으로 폴더 스캔은 오름차순 이름 정렬로 이루어지므로 이 옵션을 적용하지 않고 기본 정렬이 적용되지만, useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 사용하는 경우 메뉴 이름이 변경되어 이름별로 다시 정렬해야 할 수 있습니다. 이 옵션은 변경된 메뉴 이름에 대해서도 이름별로 강제로 정렬합니다.

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

값이 true이면 메뉴 항목 이름의 날짜 접두사를 기준으로 정렬합니다. 날짜 형식은 YYYY-MM-DD 형식이어야 합니다(예: 2024-01-01-menu-name, 2024-01-02.menu-name...).

이후 메뉴 텍스트에 남아있는 날짜 접두사를 제거하려면 prefixSeparatorremovePrefixAfterOrdering 옵션을 활용하면 됩니다.

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

앞부분의 order 속성을 기준으로 메뉴 항목을 정렬합니다. 각 폴더에 대해 order 속성의 값(숫자)을 오름차순으로 정렬하거나, sortMenusOrderByDescending 옵션이 true인 경우 내림차순으로 정렬합니다. order 값이 숫자가 아니거나 존재하지 않는 경우 order0으로 판단됩니다.

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

앞부분의 date 속성을 기준으로 메뉴 항목을 정렬합니다. 또한 date 속성 값을 가장 오래된 날짜 순으로 오름차순으로 정렬합니다(sortMenusOrderByDescending 옵션이 true인 경우 내림차순). 날짜 형식은 YYYY-MM-DD 또는 JavaScript 날짜 데이터 유형과 일치해야 합니다.

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 항목의 항목을 내림차순으로 정렬합니다. 이 옵션은 sortMenusByName 또는 sortMenusByFrontmatterOrdertrue인 경우에만 활성화됩니다.

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 이름 앞에 숫자가 포함된 경우 이름이 아닌 낮은 숫자를 기준으로 정렬됩니다. 예를 들어 1-a, 10-a, 2-a라는 이름의 파일이 있는 경우 일반 정렬에서는 ['1-a', '10-a', '2-a']라는 이름으로 정렬됩니다. 이렇게 하면 10-a2-a보다 우선하기 때문에 메뉴가 의도하지 않은 순서로 표시됩니다.

이 옵션을 사용하면 다음과 같이 정렬됩니다: ['1-a', '2-a', '10-a']

내림차순 정렬을 원할 경우 sortMenusOrderByDescending 옵션과 함께 사용해야 합니다.

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 이름 앞에 숫자가 포함된 경우 이름이 아닌 낮은 숫자를 기준으로 정렬됩니다. 이 옵션은 sortMenusOrderNumericallyFromTitle과 동일하지만 파일 제목이 아닌 링크를 기준으로 정렬합니다. 따라서 sortMenusOrderNumericallyFromTitle 옵션과 함께 사용할 수 없습니다.

내림차순 정렬을 원할 경우 sortMenusOrderByDescending 옵션과 함께 사용해야 합니다.

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

설정되지 않은 경우 앞부분의 order 속성에 대한 기본값을 설정합니다. 이 옵션은 sortMenusByFrontmatterOrdertrue인 경우에만 활성화됩니다.

collapsed

  • Type: boolean
  • Default: false

collapsed 옵션을 지정하지 않으면(null 또는 정의되지 않음) 그룹 접기/확장이 사용되지 않고 모든 메뉴가 한꺼번에 표시됩니다. false이면 모든 그룹이 확장된 상태로 메뉴가 생성됩니다. true이면 모든 그룹이 접힌 상태로 메뉴가 생성됩니다.

(값이 true이더라도 메뉴가 접힌 그룹 내의 문서에 있는 경우 메뉴가 확장될 수 있습니다.)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

지정된 깊이에서 메뉴 그룹이 축소됩니다. 이 옵션을 지정하면 그룹 축소/확장이 자동으로 활성화됩니다. 최상위 폴더의 깊이는 1입니다.

hyphenToSpace

  • Type: boolean
  • Default: false

값이 true이면 파일 이름에 포함된 - 기호가 공백으로 변환되어 제목으로 표시됩니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

underscoreToSpace

  • Type: boolean
  • Default: false

값이 true이면 파일 이름에 포함된 _ 기호가 공백으로 변환되어 제목으로 표시됩니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

capitalizeFirst

  • Type: boolean
  • Default: false

값이 true이면 메뉴 이름의 첫 글자가 강제로 대문자로 바뀝니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

capitalizeEachWords

  • Type: boolean
  • Default: false

값이 true이면 공백으로 구분된 단어의 첫 글자를 모두 대문자로 표시합니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

excludeFiles

  • Type: Array<string>
  • Default: []

파일 이름 배열(확장자 포함)에 해당하는 파일은 목록에 표시되지 않습니다.

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

지정된 앞부분 필드 이름의 값이 true로 설정된 문서는 메뉴에서 제외됩니다.

옵션이 지정되지 않았거나 옵션 값이 정의되지 않은 경우 무시됩니다.

예를 들어 옵션 값이 exclude인 경우 콘텐츠에 exclude: true가 포함된 문서는 메뉴에 표시되지 않습니다.

markdown
---\ntitle: This article is excluded.\nexclude: true\n---\n\n# Article\n\nContent

이 옵션의 값에 따라 exclude 대신 draft, hide 등과 같은 다른 이름을 사용할 수 있습니다.

excludeFolders

  • Type: Array<string>
  • Default: []

폴더 이름의 배열에 해당하는 폴더는 목록에 표시되지 않으며, 폴더 내의 하위 항목도 표시되지 않습니다.

includeDotFiles

  • Type: boolean
  • Default: false

일반적으로 파일 및 폴더 이름 앞에 점(.)이 있으면 숨겨진 것으로 간주되어 목록에 표시되지 않습니다. 하지만 이 옵션이 true이면 모든 숨겨진 파일과 폴더가 목록에 강제로 표시됩니다.

includeEmptyFolder

  • Type: boolean
  • Default: false

값이 true인 경우, md 파일이 그룹으로 존재하지 않는 디렉터리도 표시합니다.

includeRootIndexFile

  • Type: boolean
  • Default: false

값이 true인 경우 사이드바 메뉴에 최상위 경로 index.md 파일도 포함합니다. includeFolderIndexFile 옵션을 사용하여 하위 항목의 인덱스 파일도 포함합니다. (파일이 존재하지 않으면 무시됩니다.)

includeFolderIndexFile

  • Type: boolean
  • Default: false

값이 true인 경우 사이드바 메뉴에 폴더 경로 index.md 파일도 포함합니다. 루트 항목의 인덱스 파일도 포함하려면 includeRootIndexFile 옵션을 사용합니다. (파일이 존재하지 않으면 무시됩니다.)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

모든 작업이 완료된 후에 표시되는 메뉴 항목에서 각 메뉴 제목의 특정 접두사를 제거합니다. 이 옵션은 앞부분의 정렬을 사용하지 않고 파일 이름의 숫자를 기준으로 정렬하고 메뉴에 해당 숫자를 표시하지 않으려는 경우에 이상적입니다.

예를 들어 prefixSeparator가 기본값(.)인 경우 다음 메뉴의 이름이 다음과 같이 변경됩니다:

  • 파일명: 1.hello -> 메뉴명: hello
  • 파일명: 1.1.hello -> 메뉴명: 1.hello
  • 파일명: 1-1.hello -> 메뉴명: hello

구분 기호에 따라 문자를 한 번만 제거하므로 1.1.과 같은 하위 항목은 1-1.처럼 사용해야 합니다. 또는 prefixSeparator 값에 정규식을 설정하여 이 문제를 해결할 수 있습니다.

prefixSeparator 옵션과 함께 사용할 수 있습니다. 자세한 내용은 해당 옵션의 설명을 참조하세요.

(참고: 접두사는 제목에만 영향을 미치며, 링크는 파일 링크를 그대로 사용합니다).

(참고 B: 이 옵션은 useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 사용하는 경우 무시됩니다).

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

이 옵션은 접두사를 제거하기 위해 removePrefixAfterOrdering 옵션과 함께 사용할 때만 사용할 수 있습니다.

추출된 메뉴 텍스트에서 지정된 문자 수(하나 이상)의 첫 부분을 제거합니다. 예를 들어 메뉴 이름이 1. Text이고 prefixSeparator 값을 . '로 설정하면 결과는 Text`가 됩니다.

정규식을 사용할 수도 있습니다. 정규식과 일치하는 값은 제거됩니다. 예를 들어 2024-01-01-hello에서 문자열 앞의 날짜를 제거하려면 prefixSeparator 값을 /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g로 지정합니다. 결과는 hello입니다.

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

루트 그룹은 디렉토리 구조에 관계없이 메뉴의 전체 그룹을 지정합니다. 이 옵션은 하나의 메뉴 단계를 사용하므로 사용에 주의해야 하며, 필요하지 않은 경우 루트 그룹 옵션을 비활성화할 수 있습니다. 이 값을 지정하면 최상위 메뉴의 이름을 지정하는 것입니다.

  • Type: string
  • Default: null

루트 그룹에 대한 자세한 내용은 rootGroupText 옵션 설명을 참조하세요. 이 값을 지정하면 루트 그룹에 대한 링크가 지정됩니다. 값이 비어 있으면 링크가 추가되지 않습니다.

rootGroupCollapsed

  • Type: boolean
  • Default: null

루트 그룹에 대한 자세한 내용은 rootGroupText 옵션 설명을 참조하세요. rootGroupCollapsed 옵션은 루트 그룹의 하위 항목을 펼칠지 여부를 설정합니다. 기본값인 null 또는 정의되지 않음으로 지정하면 확장/축소 버튼이 표시되지 않습니다. 값이 true이면 하위 항목이 접힌 상태로 표시되고, false이면 확장됩니다.

이 옵션은 최상위 항목에만 적용됩니다. 일반적인 항목 축소 여부는 collapsed 옵션을 참조하세요.

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

이 값이 true이면 폴더와 같은 이름의 하위 파일이 있는 경우 폴더에 해당 파일로 이동할 수 있는 링크가 생성되고 하위 항목에 해당 파일이 표시되지 않습니다.

예를 들어 다음과 같은 폴더가 있는 경우:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

api 폴더에 링크가 추가되며, api 폴더의 api 페이지는 메뉴 목록에 포함되지 않습니다. 폴더의 링크를 클릭하면 api/api.md에 파일이 표시됩니다.

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

이 옵션은 특별한 경우에만 사용됩니다. 다시 쓰기 규칙이 있고 폴더 이름이 같은 하위 파일이 있는 경우 convertSameNameSubFileToGroupIndexPage 옵션과 병렬로 사용합니다.

이 값이 true인 경우 폴더 링크를 설정할 때 하위 항목의 존재를 무시하고 링크를 폴더 경로로만 지정합니다.

예를 들어 다음과 같은 폴더가 있는 경우:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

convertSameNameSubFileToGroupIndexPage 옵션을 사용하면 guide/api 폴더 메뉴를 클릭하면 guide/api/로 이동하지만 folderLinkNotIncludesFileName 옵션을 함께 사용하면 guide/api/로 링크가 연결됩니다.

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

이 값이 true이면 제목 텍스트에 포함된 마크다운 구문을 제거하지 않고 그대로 유지합니다. 일반적으로 강조 표시 또는 인라인 코드를 유지합니다. 하이퍼링크 텍스트는 이 옵션과 관계없이 제거됩니다.

debugPrint

  • Type: boolean
  • Default: false

이 값이 true이면 실행 후 생성된 객체를 콘솔 로그에 출력합니다. 여러 사이드바를 구성한 경우 옵션 중 하나만 포함하더라도 모든 사이드바 결과를 출력합니다.

',170)]))}const b=a(r,[["render",i]]);export{f as __pageData,b as default}; diff --git a/assets/ko_guide_api.md.Cn2BChr3.lean.js b/assets/ko_guide_api.md.Cn2BChr3.lean.js new file mode 100644 index 00000000..67f3331c --- /dev/null +++ b/assets/ko_guide_api.md.Cn2BChr3.lean.js @@ -0,0 +1 @@ +import{_ as o}from"./chunks/doc-collapsed-example.CqMUHFlL.js";import{_ as a,c as d,a2 as t,o as l}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"API","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"ko/guide/api.md","filePath":"ko/guide/api.md","lastUpdated":1725611780000}'),r={name:"ko/guide/api.md"};function i(c,e,n,s,p,u){return l(),d("div",null,e[0]||(e[0]=[t('

API

이 페이지에서는 VitePress Sidebar의 모든 옵션에 대해 설명합니다.

@ 빠른 검색

경로 해석그룹핑
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
메뉴 제목메뉴 링크
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
포함 및 제외메뉴 제목 스타일링
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
정렬기타
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

문서 파일이 위치한 최상위 경로입니다. 기본값은 /입니다.

이 옵션은 .vitepress 디렉터리가 있는 경로이며, 프로젝트 루트에서 문서가 있는 폴더가 /docs인 경우 이 옵션의 값을 docs 또는 /docs로 설정해야 합니다.

text
/\n├─ package.json\n├─ src/\n├─ docs/        <--------------- `documentRootPath` ('/docs')\n│  ├─ .vitepress/        <------ VitePress 설정 디렉토리\n│  ├─ another-directory/\n│  ├─ hello.md\n│  └─ index.md\n└─ ...

scanStartPath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

문서 목록을 스캔할 루트 디렉터리 경로입니다. scanStartPath에 설정된 경로를 벗어난 documentRootPath에 설정된 경로에 있는 파일은 스캔되지 않습니다. documentRootPath에 설정된 상위 경로가 link에 표시되어야 하므로 scanStartPath를 지정하는 경우 documentRootPath도 함께 설정하는 것이 좋습니다.

예를 들어 루트 경로가 /docs이고 스캔할 문서가 /docs/sub-dir/scan-me인 경우, 설정은 다음과 같이 표시됩니다:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (documentRootPath 경로를 포함하지 마세요.)

resolvePath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

각 경로마다 다른 사이드바를 표시하려면 섹션의 경로를 입력합니다. 경로 앞에 /가 포함되어야 합니다. 이 값이 없는 옵션은 루트 섹션(/)으로 설정됩니다.

e.g. /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

이 옵션은 VitePress의 rewrites 옵션으로 인해 경로가 변경된 경우에 사용할 수 있습니다. VitePress의 기본 경로를 대체합니다. 이 값이 존재하지 않으면 resolvePath의 값을 대신 사용합니다.

useTitleFromFileHeading

  • Type: boolean
  • Default: false

값이 true이면 .md 파일의 h1 제목 내용이 포함된 제목을 표시합니다. 파일에 h1 제목이 존재하지 않으면 Unknown으로 표시됩니다.

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

값이 true이면 파일의 Frontmatter에 있는 title 값에 따라 제목을 표시합니다. 이 값을 구문 분석할 수 없는 경우 useTitleFromFileHeading 옵션이 true인 경우 h1 태그에서, 실패하면 파일 이름에서 가져옵니다.

'제목'은 문서 상단에 위치해야 하며 다음과 같이 표시되어야 합니다(title: 값과 제목 사이에 공백이 필요합니다).

markdown
---\ntitle: Hello World\n---

frontmatterTitleFieldName

  • Type: string
  • Default: title

파일에 지정된 Frontmatter에서 지정한 키 이름을 기준으로 메뉴 제목을 표시합니다. 지정한 값이 Frontmatter에 존재하지 않으면 기본 title이 대체로 사용됩니다.

markdown
---\nname: 이 것은 Frontmatter의 제목값입니다.\n---

자세한 내용은 다음 문서를 참조하세요: https://vitepress.dev/guide/frontmatter

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

이 값이 true이면 현재 폴더의 index.md 파일에 있는 정보를 사용하여 메뉴 이름을 가져옵니다. 인덱스 파일이 존재하지 않으면 폴더 이름이 사용됩니다. 일반적으로 index라는 이름은 index.md 파일에서 가져오기 때문에 useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 함께 사용하여 해당 파일의 마크다운 헤더 또는 프론트매터에서 제목을 가져오는 것이 좋습니다.

인덱스 파일은 사이드바 메뉴에서 숨겨져 있지만, 인덱스 파일은 includeFolderIndexFile 옵션이 true인 경우 메뉴에 표시될 수 있습니다.

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

이 값이 true이면 현재 폴더에 있는 index.md 파일로 이동할 수 있도록 폴더에 대한 링크를 지정합니다. 인덱스 파일이 존재하지 않으면 링크가 생성되지 않습니다.

인덱스 파일은 사이드바 메뉴에서 숨겨져 있지만, 인덱스 파일은 includeFolderIndexFile 옵션이 true인 경우 메뉴에 표시될 수 있습니다.

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

파일 이름(확장자 포함) 배열을 순서대로 정렬합니다. 배열에 파일 이름과 일치하는 값이 없으면 정렬 우선순위가 반송됩니다. 이는 파일과 디렉터리 모두에 적용되며 하위 디렉터리에도 동일한 정렬 규칙이 적용됩니다.

sortMenusByName

  • Type: boolean
  • Default: false

메뉴 항목의 항목을 이름별로 정렬합니다. 일반적으로 폴더 스캔은 오름차순 이름 정렬로 이루어지므로 이 옵션을 적용하지 않고 기본 정렬이 적용되지만, useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 사용하는 경우 메뉴 이름이 변경되어 이름별로 다시 정렬해야 할 수 있습니다. 이 옵션은 변경된 메뉴 이름에 대해서도 이름별로 강제로 정렬합니다.

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

값이 true이면 메뉴 항목 이름의 날짜 접두사를 기준으로 정렬합니다. 날짜 형식은 YYYY-MM-DD 형식이어야 합니다(예: 2024-01-01-menu-name, 2024-01-02.menu-name...).

이후 메뉴 텍스트에 남아있는 날짜 접두사를 제거하려면 prefixSeparatorremovePrefixAfterOrdering 옵션을 활용하면 됩니다.

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

앞부분의 order 속성을 기준으로 메뉴 항목을 정렬합니다. 각 폴더에 대해 order 속성의 값(숫자)을 오름차순으로 정렬하거나, sortMenusOrderByDescending 옵션이 true인 경우 내림차순으로 정렬합니다. order 값이 숫자가 아니거나 존재하지 않는 경우 order0으로 판단됩니다.

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

앞부분의 date 속성을 기준으로 메뉴 항목을 정렬합니다. 또한 date 속성 값을 가장 오래된 날짜 순으로 오름차순으로 정렬합니다(sortMenusOrderByDescending 옵션이 true인 경우 내림차순). 날짜 형식은 YYYY-MM-DD 또는 JavaScript 날짜 데이터 유형과 일치해야 합니다.

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 항목의 항목을 내림차순으로 정렬합니다. 이 옵션은 sortMenusByName 또는 sortMenusByFrontmatterOrdertrue인 경우에만 활성화됩니다.

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 이름 앞에 숫자가 포함된 경우 이름이 아닌 낮은 숫자를 기준으로 정렬됩니다. 예를 들어 1-a, 10-a, 2-a라는 이름의 파일이 있는 경우 일반 정렬에서는 ['1-a', '10-a', '2-a']라는 이름으로 정렬됩니다. 이렇게 하면 10-a2-a보다 우선하기 때문에 메뉴가 의도하지 않은 순서로 표시됩니다.

이 옵션을 사용하면 다음과 같이 정렬됩니다: ['1-a', '2-a', '10-a']

내림차순 정렬을 원할 경우 sortMenusOrderByDescending 옵션과 함께 사용해야 합니다.

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 이름 앞에 숫자가 포함된 경우 이름이 아닌 낮은 숫자를 기준으로 정렬됩니다. 이 옵션은 sortMenusOrderNumericallyFromTitle과 동일하지만 파일 제목이 아닌 링크를 기준으로 정렬합니다. 따라서 sortMenusOrderNumericallyFromTitle 옵션과 함께 사용할 수 없습니다.

내림차순 정렬을 원할 경우 sortMenusOrderByDescending 옵션과 함께 사용해야 합니다.

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

설정되지 않은 경우 앞부분의 order 속성에 대한 기본값을 설정합니다. 이 옵션은 sortMenusByFrontmatterOrdertrue인 경우에만 활성화됩니다.

collapsed

  • Type: boolean
  • Default: false

collapsed 옵션을 지정하지 않으면(null 또는 정의되지 않음) 그룹 접기/확장이 사용되지 않고 모든 메뉴가 한꺼번에 표시됩니다. false이면 모든 그룹이 확장된 상태로 메뉴가 생성됩니다. true이면 모든 그룹이 접힌 상태로 메뉴가 생성됩니다.

(값이 true이더라도 메뉴가 접힌 그룹 내의 문서에 있는 경우 메뉴가 확장될 수 있습니다.)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

지정된 깊이에서 메뉴 그룹이 축소됩니다. 이 옵션을 지정하면 그룹 축소/확장이 자동으로 활성화됩니다. 최상위 폴더의 깊이는 1입니다.

hyphenToSpace

  • Type: boolean
  • Default: false

값이 true이면 파일 이름에 포함된 - 기호가 공백으로 변환되어 제목으로 표시됩니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

underscoreToSpace

  • Type: boolean
  • Default: false

값이 true이면 파일 이름에 포함된 _ 기호가 공백으로 변환되어 제목으로 표시됩니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

capitalizeFirst

  • Type: boolean
  • Default: false

값이 true이면 메뉴 이름의 첫 글자가 강제로 대문자로 바뀝니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

capitalizeEachWords

  • Type: boolean
  • Default: false

값이 true이면 공백으로 구분된 단어의 첫 글자를 모두 대문자로 표시합니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

excludeFiles

  • Type: Array<string>
  • Default: []

파일 이름 배열(확장자 포함)에 해당하는 파일은 목록에 표시되지 않습니다.

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

지정된 앞부분 필드 이름의 값이 true로 설정된 문서는 메뉴에서 제외됩니다.

옵션이 지정되지 않았거나 옵션 값이 정의되지 않은 경우 무시됩니다.

예를 들어 옵션 값이 exclude인 경우 콘텐츠에 exclude: true가 포함된 문서는 메뉴에 표시되지 않습니다.

markdown
---\ntitle: This article is excluded.\nexclude: true\n---\n\n# Article\n\nContent

이 옵션의 값에 따라 exclude 대신 draft, hide 등과 같은 다른 이름을 사용할 수 있습니다.

excludeFolders

  • Type: Array<string>
  • Default: []

폴더 이름의 배열에 해당하는 폴더는 목록에 표시되지 않으며, 폴더 내의 하위 항목도 표시되지 않습니다.

includeDotFiles

  • Type: boolean
  • Default: false

일반적으로 파일 및 폴더 이름 앞에 점(.)이 있으면 숨겨진 것으로 간주되어 목록에 표시되지 않습니다. 하지만 이 옵션이 true이면 모든 숨겨진 파일과 폴더가 목록에 강제로 표시됩니다.

includeEmptyFolder

  • Type: boolean
  • Default: false

값이 true인 경우, md 파일이 그룹으로 존재하지 않는 디렉터리도 표시합니다.

includeRootIndexFile

  • Type: boolean
  • Default: false

값이 true인 경우 사이드바 메뉴에 최상위 경로 index.md 파일도 포함합니다. includeFolderIndexFile 옵션을 사용하여 하위 항목의 인덱스 파일도 포함합니다. (파일이 존재하지 않으면 무시됩니다.)

includeFolderIndexFile

  • Type: boolean
  • Default: false

값이 true인 경우 사이드바 메뉴에 폴더 경로 index.md 파일도 포함합니다. 루트 항목의 인덱스 파일도 포함하려면 includeRootIndexFile 옵션을 사용합니다. (파일이 존재하지 않으면 무시됩니다.)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

모든 작업이 완료된 후에 표시되는 메뉴 항목에서 각 메뉴 제목의 특정 접두사를 제거합니다. 이 옵션은 앞부분의 정렬을 사용하지 않고 파일 이름의 숫자를 기준으로 정렬하고 메뉴에 해당 숫자를 표시하지 않으려는 경우에 이상적입니다.

예를 들어 prefixSeparator가 기본값(.)인 경우 다음 메뉴의 이름이 다음과 같이 변경됩니다:

  • 파일명: 1.hello -> 메뉴명: hello
  • 파일명: 1.1.hello -> 메뉴명: 1.hello
  • 파일명: 1-1.hello -> 메뉴명: hello

구분 기호에 따라 문자를 한 번만 제거하므로 1.1.과 같은 하위 항목은 1-1.처럼 사용해야 합니다. 또는 prefixSeparator 값에 정규식을 설정하여 이 문제를 해결할 수 있습니다.

prefixSeparator 옵션과 함께 사용할 수 있습니다. 자세한 내용은 해당 옵션의 설명을 참조하세요.

(참고: 접두사는 제목에만 영향을 미치며, 링크는 파일 링크를 그대로 사용합니다).

(참고 B: 이 옵션은 useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 사용하는 경우 무시됩니다).

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

이 옵션은 접두사를 제거하기 위해 removePrefixAfterOrdering 옵션과 함께 사용할 때만 사용할 수 있습니다.

추출된 메뉴 텍스트에서 지정된 문자 수(하나 이상)의 첫 부분을 제거합니다. 예를 들어 메뉴 이름이 1. Text이고 prefixSeparator 값을 . '로 설정하면 결과는 Text`가 됩니다.

정규식을 사용할 수도 있습니다. 정규식과 일치하는 값은 제거됩니다. 예를 들어 2024-01-01-hello에서 문자열 앞의 날짜를 제거하려면 prefixSeparator 값을 /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g로 지정합니다. 결과는 hello입니다.

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

루트 그룹은 디렉토리 구조에 관계없이 메뉴의 전체 그룹을 지정합니다. 이 옵션은 하나의 메뉴 단계를 사용하므로 사용에 주의해야 하며, 필요하지 않은 경우 루트 그룹 옵션을 비활성화할 수 있습니다. 이 값을 지정하면 최상위 메뉴의 이름을 지정하는 것입니다.

  • Type: string
  • Default: null

루트 그룹에 대한 자세한 내용은 rootGroupText 옵션 설명을 참조하세요. 이 값을 지정하면 루트 그룹에 대한 링크가 지정됩니다. 값이 비어 있으면 링크가 추가되지 않습니다.

rootGroupCollapsed

  • Type: boolean
  • Default: null

루트 그룹에 대한 자세한 내용은 rootGroupText 옵션 설명을 참조하세요. rootGroupCollapsed 옵션은 루트 그룹의 하위 항목을 펼칠지 여부를 설정합니다. 기본값인 null 또는 정의되지 않음으로 지정하면 확장/축소 버튼이 표시되지 않습니다. 값이 true이면 하위 항목이 접힌 상태로 표시되고, false이면 확장됩니다.

이 옵션은 최상위 항목에만 적용됩니다. 일반적인 항목 축소 여부는 collapsed 옵션을 참조하세요.

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

이 값이 true이면 폴더와 같은 이름의 하위 파일이 있는 경우 폴더에 해당 파일로 이동할 수 있는 링크가 생성되고 하위 항목에 해당 파일이 표시되지 않습니다.

예를 들어 다음과 같은 폴더가 있는 경우:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

api 폴더에 링크가 추가되며, api 폴더의 api 페이지는 메뉴 목록에 포함되지 않습니다. 폴더의 링크를 클릭하면 api/api.md에 파일이 표시됩니다.

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

이 옵션은 특별한 경우에만 사용됩니다. 다시 쓰기 규칙이 있고 폴더 이름이 같은 하위 파일이 있는 경우 convertSameNameSubFileToGroupIndexPage 옵션과 병렬로 사용합니다.

이 값이 true인 경우 폴더 링크를 설정할 때 하위 항목의 존재를 무시하고 링크를 폴더 경로로만 지정합니다.

예를 들어 다음과 같은 폴더가 있는 경우:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

convertSameNameSubFileToGroupIndexPage 옵션을 사용하면 guide/api 폴더 메뉴를 클릭하면 guide/api/로 이동하지만 folderLinkNotIncludesFileName 옵션을 함께 사용하면 guide/api/로 링크가 연결됩니다.

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

이 값이 true이면 제목 텍스트에 포함된 마크다운 구문을 제거하지 않고 그대로 유지합니다. 일반적으로 강조 표시 또는 인라인 코드를 유지합니다. 하이퍼링크 텍스트는 이 옵션과 관계없이 제거됩니다.

debugPrint

  • Type: boolean
  • Default: false

이 값이 true이면 실행 후 생성된 객체를 콘솔 로그에 출력합니다. 여러 사이드바를 구성한 경우 옵션 중 하나만 포함하더라도 모든 사이드바 결과를 출력합니다.

',170)]))}const b=a(r,[["render",i]]);export{f as __pageData,b as default}; diff --git a/assets/ko_guide_getting-started.md.L_Za747I.js b/assets/ko_guide_getting-started.md.L_Za747I.js new file mode 100644 index 00000000..96b3e645 --- /dev/null +++ b/assets/ko_guide_getting-started.md.L_Za747I.js @@ -0,0 +1,121 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const g=JSON.parse('{"title":"시작하기","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"ko/guide/getting-started.md","filePath":"ko/guide/getting-started.md","lastUpdated":1725179973000}'),l={name:"ko/guide/getting-started.md"};function p(t,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

시작하기

이 페이지에서는 VitePress Sidebar 모듈의 설치 및 사용 방법을 안내합니다.

설치

먼저 이 모듈을 사용하기 전에 VitePress 모듈을 사전 구성해야 할 수 있습니다.

Node.js 버전은 18.x 이상을 사용하는 것이 좋습니다. VitePress SidebarESM으로 작성되었습니다. CommonJS 환경에서 사용하려면 여기 지침을 참조하세요.

NPM 또는 다른 노드 모듈 패키지 관리자를 사용하여 모듈을 설치할 수 있습니다. 이 패키지는 개발자 환경에서만 사용되므로 devDependencies에 설치해야 합니다. 아래 명령어로 설치하세요:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

사용 방법

VitePress Sidebar의 generateSidebar 메서드를 사용하여 사이드바를 자동으로 생성할 수 있습니다.

지정된 루트 경로(documentRootPath)에 대해 폴더를 검색하고 VitePress에서 마크다운 파일을 작성하기 전에 찾은 다음 폴더 트리 구조에 따라 생성된 메뉴를 반환합니다.

먼저 아래 두 가지 방법 중 하나로 vitepress-sidebar를 import합니다.

1. named-import 사용

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. default-import 사용

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

VitePress의 구성 파일인 .vitepress/config.js 파일의 themeConfig.sidebar 속성에서 generateSidebar 메서드를 사용합니다. VitePress의 구성 파일은 프로젝트 설정에 따라 파일 이름이나 확장자가 다를 수 있습니다.

이것이 어떻게 출력되는지 테스트하려면 debugPrint 옵션을 true로 설정하여 VitePress를 빌드해 보세요. 콘솔에 출력이 표시될 것입니다.

generateSidebar의 설정에 대한 자세한 내용은 아래 API 섹션을 참조하세요.

코드 예시

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * For detailed instructions, see the links below:
+       * https://vitepress-sidebar.cdget.com/ko/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

출력 예시

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/
`,22)]))}const o=i(l,[["render",p]]);export{g as __pageData,o as default}; diff --git a/assets/ko_guide_getting-started.md.L_Za747I.lean.js b/assets/ko_guide_getting-started.md.L_Za747I.lean.js new file mode 100644 index 00000000..96b3e645 --- /dev/null +++ b/assets/ko_guide_getting-started.md.L_Za747I.lean.js @@ -0,0 +1,121 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const g=JSON.parse('{"title":"시작하기","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"ko/guide/getting-started.md","filePath":"ko/guide/getting-started.md","lastUpdated":1725179973000}'),l={name:"ko/guide/getting-started.md"};function p(t,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

시작하기

이 페이지에서는 VitePress Sidebar 모듈의 설치 및 사용 방법을 안내합니다.

설치

먼저 이 모듈을 사용하기 전에 VitePress 모듈을 사전 구성해야 할 수 있습니다.

Node.js 버전은 18.x 이상을 사용하는 것이 좋습니다. VitePress SidebarESM으로 작성되었습니다. CommonJS 환경에서 사용하려면 여기 지침을 참조하세요.

NPM 또는 다른 노드 모듈 패키지 관리자를 사용하여 모듈을 설치할 수 있습니다. 이 패키지는 개발자 환경에서만 사용되므로 devDependencies에 설치해야 합니다. 아래 명령어로 설치하세요:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

사용 방법

VitePress Sidebar의 generateSidebar 메서드를 사용하여 사이드바를 자동으로 생성할 수 있습니다.

지정된 루트 경로(documentRootPath)에 대해 폴더를 검색하고 VitePress에서 마크다운 파일을 작성하기 전에 찾은 다음 폴더 트리 구조에 따라 생성된 메뉴를 반환합니다.

먼저 아래 두 가지 방법 중 하나로 vitepress-sidebar를 import합니다.

1. named-import 사용

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. default-import 사용

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

VitePress의 구성 파일인 .vitepress/config.js 파일의 themeConfig.sidebar 속성에서 generateSidebar 메서드를 사용합니다. VitePress의 구성 파일은 프로젝트 설정에 따라 파일 이름이나 확장자가 다를 수 있습니다.

이것이 어떻게 출력되는지 테스트하려면 debugPrint 옵션을 true로 설정하여 VitePress를 빌드해 보세요. 콘솔에 출력이 표시될 것입니다.

generateSidebar의 설정에 대한 자세한 내용은 아래 API 섹션을 참조하세요.

코드 예시

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * For detailed instructions, see the links below:
+       * https://vitepress-sidebar.cdget.com/ko/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

출력 예시

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/
`,22)]))}const o=i(l,[["render",p]]);export{g as __pageData,o as default}; diff --git a/assets/ko_guide_index.md.BYJyD7jh.js b/assets/ko_guide_index.md.BYJyD7jh.js new file mode 100644 index 00000000..3b34cf41 --- /dev/null +++ b/assets/ko_guide_index.md.BYJyD7jh.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"가이드","description":"","frontmatter":{"title":"가이드"},"headers":[],"relativePath":"ko/guide/index.md","filePath":"ko/guide/index.md","lastUpdated":1725611780000}'),o={name:"ko/guide/index.md"};function d(n,i,r,s,c,p){return a(),t("div")}const m=e(o,[["render",d]]);export{l as __pageData,m as default}; diff --git a/assets/ko_guide_index.md.BYJyD7jh.lean.js b/assets/ko_guide_index.md.BYJyD7jh.lean.js new file mode 100644 index 00000000..3b34cf41 --- /dev/null +++ b/assets/ko_guide_index.md.BYJyD7jh.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"가이드","description":"","frontmatter":{"title":"가이드"},"headers":[],"relativePath":"ko/guide/index.md","filePath":"ko/guide/index.md","lastUpdated":1725611780000}'),o={name:"ko/guide/index.md"};function d(n,i,r,s,c,p){return a(),t("div")}const m=e(o,[["render",d]]);export{l as __pageData,m as default}; diff --git a/assets/ko_index.md.Br0FQalq.js b/assets/ko_index.md.Br0FQalq.js new file mode 100644 index 00000000..9a234c49 --- /dev/null +++ b/assets/ko_index.md.Br0FQalq.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"VitePress Sidebar","titleTemplate":"강력한 사이드바 생성 자동화 도구","description":"","frontmatter":{"layout":"home","title":"VitePress Sidebar","titleTemplate":"강력한 사이드바 생성 자동화 도구","hero":{"name":"VitePress Sidebar","text":"강력한 사이드바 생성 자동화 도구","tagline":"간단한 구성으로 알아서 생성하는 VitePress의 사이드바 플러그인을 소개합니다.","actions":[{"theme":"brand","text":"시작하기","link":"/ko/guide/getting-started"},{"theme":"alt","text":"API","link":"/ko/guide/api"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/vitepress-sidebar"}],"image":{"src":"/sidebar.png","alt":"Sidebar"}},"features":[{"icon":"","title":"VitePress를 효율적으로 활용","details":"최신 버전의 VitePress에 최적화되었습니다."},{"icon":"","title":"쉽고 세분화된 사이드바 구성","details":"사용하기 쉽고, 원하는 대로 사용자 지정할 수 있는 다양한 옵션이 있습니다. 정렬, 특수 문자 변환, 파일 및 폴더 필터 등을 위한 메뉴를 사용자 지정하세요!"},{"icon":"","title":"광범위한 사용 사례","details":"다양한 사용 사례를 처리할 수 있도록 다중 사이드바, Frontmatter, TypeScript를 지원합니다."},{"icon":"","title":"안정적인 유지 관리 지원","details":"2K 이상의 다운로드를 통해 실제 사용 사례가 많으며, 빠른 기술 지원을 제공합니다."}]},"headers":[],"relativePath":"ko/index.md","filePath":"ko/index.md","lastUpdated":1724827582000}'),l={name:"ko/index.md"};function i(n,s,p,r,f,a){return e(),t("div")}const g=o(l,[["render",i]]);export{d as __pageData,g as default}; diff --git a/assets/ko_index.md.Br0FQalq.lean.js b/assets/ko_index.md.Br0FQalq.lean.js new file mode 100644 index 00000000..9a234c49 --- /dev/null +++ b/assets/ko_index.md.Br0FQalq.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"VitePress Sidebar","titleTemplate":"강력한 사이드바 생성 자동화 도구","description":"","frontmatter":{"layout":"home","title":"VitePress Sidebar","titleTemplate":"강력한 사이드바 생성 자동화 도구","hero":{"name":"VitePress Sidebar","text":"강력한 사이드바 생성 자동화 도구","tagline":"간단한 구성으로 알아서 생성하는 VitePress의 사이드바 플러그인을 소개합니다.","actions":[{"theme":"brand","text":"시작하기","link":"/ko/guide/getting-started"},{"theme":"alt","text":"API","link":"/ko/guide/api"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/vitepress-sidebar"}],"image":{"src":"/sidebar.png","alt":"Sidebar"}},"features":[{"icon":"","title":"VitePress를 효율적으로 활용","details":"최신 버전의 VitePress에 최적화되었습니다."},{"icon":"","title":"쉽고 세분화된 사이드바 구성","details":"사용하기 쉽고, 원하는 대로 사용자 지정할 수 있는 다양한 옵션이 있습니다. 정렬, 특수 문자 변환, 파일 및 폴더 필터 등을 위한 메뉴를 사용자 지정하세요!"},{"icon":"","title":"광범위한 사용 사례","details":"다양한 사용 사례를 처리할 수 있도록 다중 사이드바, Frontmatter, TypeScript를 지원합니다."},{"icon":"","title":"안정적인 유지 관리 지원","details":"2K 이상의 다운로드를 통해 실제 사용 사례가 많으며, 빠른 기술 지원을 제공합니다."}]},"headers":[],"relativePath":"ko/index.md","filePath":"ko/index.md","lastUpdated":1724827582000}'),l={name:"ko/index.md"};function i(n,s,p,r,f,a){return e(),t("div")}const g=o(l,[["render",i]]);export{d as __pageData,g as default}; diff --git a/assets/ko_introduction.md.DYjdzdIg.js b/assets/ko_introduction.md.DYjdzdIg.js new file mode 100644 index 00000000..88e83f3e --- /dev/null +++ b/assets/ko_introduction.md.DYjdzdIg.js @@ -0,0 +1 @@ +import{_ as t,c as r,a2 as a,o as i}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"소개","description":"","frontmatter":{},"headers":[],"relativePath":"ko/introduction.md","filePath":"ko/introduction.md","lastUpdated":1724371989000}'),s={name:"ko/introduction.md"};function o(n,e,l,d,p,c){return i(),r("div",null,e[0]||(e[0]=[a('

소개

VitePress Sidebar는 번거로운 작업 없이 한번의 설정만으로 사이드바 메뉴를 자동으로 생성하는 VitePress 플러그인입니다. 수많은 문서에 대한 분류를 손쉽게 만들어 시간을 절약하세요.

  • ⚡️ 최신 버전의 VitePress을 지원합니다.
  • ⚡️ 간편하게 사용하고, 원하는 대로 사용자 지정할 수 있습니다.
  • ⚡️ 가벼운 번들 파일 크기, 제로 종속성
  • ⚡️ 다중 사이드바 지원
  • ⚡️ Frontmatter 지원
  • ⚡️ TypeScript 지원
  • ⚡️ 정렬, 특수 문자 변환, 파일 및 폴더 필터 등을 위한 메뉴를 사용자 지정하세요!

어디에서 사용되나요?

VitePress Sidebar는 다양한 프로젝트 환경에서 활용되고 있습니다.

',6)]))}const u=t(s,[["render",o]]);export{f as __pageData,u as default}; diff --git a/assets/ko_introduction.md.DYjdzdIg.lean.js b/assets/ko_introduction.md.DYjdzdIg.lean.js new file mode 100644 index 00000000..88e83f3e --- /dev/null +++ b/assets/ko_introduction.md.DYjdzdIg.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,a2 as a,o as i}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"소개","description":"","frontmatter":{},"headers":[],"relativePath":"ko/introduction.md","filePath":"ko/introduction.md","lastUpdated":1724371989000}'),s={name:"ko/introduction.md"};function o(n,e,l,d,p,c){return i(),r("div",null,e[0]||(e[0]=[a('

소개

VitePress Sidebar는 번거로운 작업 없이 한번의 설정만으로 사이드바 메뉴를 자동으로 생성하는 VitePress 플러그인입니다. 수많은 문서에 대한 분류를 손쉽게 만들어 시간을 절약하세요.

  • ⚡️ 최신 버전의 VitePress을 지원합니다.
  • ⚡️ 간편하게 사용하고, 원하는 대로 사용자 지정할 수 있습니다.
  • ⚡️ 가벼운 번들 파일 크기, 제로 종속성
  • ⚡️ 다중 사이드바 지원
  • ⚡️ Frontmatter 지원
  • ⚡️ TypeScript 지원
  • ⚡️ 정렬, 특수 문자 변환, 파일 및 폴더 필터 등을 위한 메뉴를 사용자 지정하세요!

어디에서 사용되나요?

VitePress Sidebar는 다양한 프로젝트 환경에서 활용되고 있습니다.

',6)]))}const u=t(s,[["render",o]]);export{f as __pageData,u as default}; diff --git a/assets/ko_troubleshooting_err-require-esm.md.jueESLZ_.js b/assets/ko_troubleshooting_err-require-esm.md.jueESLZ_.js new file mode 100644 index 00000000..f7c1c994 --- /dev/null +++ b/assets/ko_troubleshooting_err-require-esm.md.jueESLZ_.js @@ -0,0 +1,10 @@ +import{_ as i,c as a,a2 as e,o as n}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"CommonJS: ERR_REQUIRE_ESM","description":"","frontmatter":{"title":"CommonJS: ERR_REQUIRE_ESM"},"headers":[],"relativePath":"ko/troubleshooting/err-require-esm.md","filePath":"ko/troubleshooting/err-require-esm.md","lastUpdated":1724371989000}'),t={name:"ko/troubleshooting/err-require-esm.md"};function r(h,s,l,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebarESM 모듈입니다. 프로젝트에서 CJS를 사용하는 경우 ESM 모듈로 변환해야 합니다.

ESM 모듈에 대한 자세한 내용은 아래를 참조하세요: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

이러한 문제를 해결하기 위한 몇 가지 해결책이 아래에 나와 있습니다:

해결책 A

CJS 프로젝트에 사용하려는 경우 파일 확장자를 .js에서 .mjs로 변경한 후 다시 시도하세요. 특정 파일에 모듈 스크립트를 사용하도록 정의할 수 있습니다.

해결책 B

package.json 파일에 "type": "module" 줄을 추가합니다. 이 경우 프로젝트를 ESM 프로젝트로 변환해야 할 수도 있습니다.

json5
{
+  name: 'docs',
+  type: 'module', // <-- 이 부분을 추가하세요.
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}
`,9)]))}const c=i(t,[["render",r]]);export{d as __pageData,c as default}; diff --git a/assets/ko_troubleshooting_err-require-esm.md.jueESLZ_.lean.js b/assets/ko_troubleshooting_err-require-esm.md.jueESLZ_.lean.js new file mode 100644 index 00000000..f7c1c994 --- /dev/null +++ b/assets/ko_troubleshooting_err-require-esm.md.jueESLZ_.lean.js @@ -0,0 +1,10 @@ +import{_ as i,c as a,a2 as e,o as n}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"CommonJS: ERR_REQUIRE_ESM","description":"","frontmatter":{"title":"CommonJS: ERR_REQUIRE_ESM"},"headers":[],"relativePath":"ko/troubleshooting/err-require-esm.md","filePath":"ko/troubleshooting/err-require-esm.md","lastUpdated":1724371989000}'),t={name:"ko/troubleshooting/err-require-esm.md"};function r(h,s,l,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebarESM 모듈입니다. 프로젝트에서 CJS를 사용하는 경우 ESM 모듈로 변환해야 합니다.

ESM 모듈에 대한 자세한 내용은 아래를 참조하세요: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

이러한 문제를 해결하기 위한 몇 가지 해결책이 아래에 나와 있습니다:

해결책 A

CJS 프로젝트에 사용하려는 경우 파일 확장자를 .js에서 .mjs로 변경한 후 다시 시도하세요. 특정 파일에 모듈 스크립트를 사용하도록 정의할 수 있습니다.

해결책 B

package.json 파일에 "type": "module" 줄을 추가합니다. 이 경우 프로젝트를 ESM 프로젝트로 변환해야 할 수도 있습니다.

json5
{
+  name: 'docs',
+  type: 'module', // <-- 이 부분을 추가하세요.
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}
`,9)]))}const c=i(t,[["render",r]]);export{d as __pageData,c as default}; diff --git a/assets/ko_troubleshooting_index.md.XnPXA5O8.js b/assets/ko_troubleshooting_index.md.XnPXA5O8.js new file mode 100644 index 00000000..83d158f1 --- /dev/null +++ b/assets/ko_troubleshooting_index.md.XnPXA5O8.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.Gf1jShja.js";const _=JSON.parse('{"title":"문제 해결","description":"","frontmatter":{"title":"문제 해결"},"headers":[],"relativePath":"ko/troubleshooting/index.md","filePath":"ko/troubleshooting/index.md","lastUpdated":1725611780000}'),a={name:"ko/troubleshooting/index.md"};function n(r,s,i,d,c,l){return o(),t("div")}const m=e(a,[["render",n]]);export{_ as __pageData,m as default}; diff --git a/assets/ko_troubleshooting_index.md.XnPXA5O8.lean.js b/assets/ko_troubleshooting_index.md.XnPXA5O8.lean.js new file mode 100644 index 00000000..83d158f1 --- /dev/null +++ b/assets/ko_troubleshooting_index.md.XnPXA5O8.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.Gf1jShja.js";const _=JSON.parse('{"title":"문제 해결","description":"","frontmatter":{"title":"문제 해결"},"headers":[],"relativePath":"ko/troubleshooting/index.md","filePath":"ko/troubleshooting/index.md","lastUpdated":1725611780000}'),a={name:"ko/troubleshooting/index.md"};function n(r,s,i,d,c,l){return o(),t("div")}const m=e(a,[["render",n]]);export{_ as __pageData,m as default}; diff --git a/assets/style.DPolWJ4h.css b/assets/style.DPolWJ4h.css new file mode 100644 index 00000000..3207e345 --- /dev/null +++ b/assets/style.DPolWJ4h.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc 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;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-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{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-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{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-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{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-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e98dd255]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e98dd255]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-e257564d]{margin-top:64px}.edit-info[data-v-e257564d]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-e257564d]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-e257564d]{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-e257564d]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-e257564d]{margin-right:8px}.prev-next[data-v-e257564d]{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-e257564d]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-e257564d]{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-e257564d]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-e257564d]{margin-left:auto;text-align:right}.desc[data-v-e257564d]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-e257564d]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{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-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{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-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{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-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]: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-cad61b99]: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-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]: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-cad61b99]: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-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]: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-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{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-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{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-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{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-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{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-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{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-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{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-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{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-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{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-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{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-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{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-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{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-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{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-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{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-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{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-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{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-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-5337faa4]{opacity:1}.moon[data-v-5337faa4],.dark .sun[data-v-5337faa4]{opacity:0}.dark .moon[data-v-5337faa4]{opacity:1}.dark .VPSwitchAppearance[data-v-5337faa4] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-6c893767]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-6c893767]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-b98bc113]{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-b98bc113] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-b98bc113] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-b98bc113] .group:last-child{padding-bottom:0}.VPMenu[data-v-b98bc113] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-b98bc113] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-b98bc113] .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-b98bc113] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{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-b6c34ac9]{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-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{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-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-bb2aa2f0]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-bb2aa2f0]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-bb2aa2f0]{display:none}}.trans-title[data-v-bb2aa2f0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-bb2aa2f0],.item.social-links[data-v-bb2aa2f0]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-bb2aa2f0]{min-width:176px}.appearance-action[data-v-bb2aa2f0]{margin-right:-2px}.social-links-list[data-v-bb2aa2f0]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{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-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-dc692963]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-dc692963]{display:flex}}/*! @docsearch/css 3.6.1 | 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-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{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-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-6aa21345]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-6aa21345]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-6aa21345]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-6aa21345]:not(.home){background-color:transparent}.VPNavBar[data-v-6aa21345]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-6aa21345]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-6aa21345]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-6aa21345]{padding:0}}.container[data-v-6aa21345]{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-6aa21345],.container>.content[data-v-6aa21345]{pointer-events:none}.container[data-v-6aa21345] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-6aa21345]{max-width:100%}}.title[data-v-6aa21345]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{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-6aa21345]{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-6aa21345]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{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-6aa21345]{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-6aa21345]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-6aa21345]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-6aa21345]{column-gap:.5rem}}.menu+.translations[data-v-6aa21345]:before,.menu+.appearance[data-v-6aa21345]:before,.menu+.social-links[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before,.appearance+.social-links[data-v-6aa21345]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before{margin-right:16px}.appearance+.social-links[data-v-6aa21345]:before{margin-left:16px}.social-links[data-v-6aa21345]{margin-right:-8px}.divider[data-v-6aa21345]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-6aa21345]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-6aa21345]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-b44890b2]{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-b44890b2]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{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-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-b9ab8c58]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-b9ab8c58]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-b9ab8c58]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-b9ab8c58]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-b9ab8c58]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-b9ab8c58]{transform:rotate(45deg)}.button[data-v-b9ab8c58]{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-b9ab8c58]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-b9ab8c58]{transition:transform .25s}.group[data-v-b9ab8c58]:first-child{padding-top:0}.group+.group[data-v-b9ab8c58],.group+.item[data-v-b9ab8c58]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-f2779853]{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-f2779853],.VPNavScreen.fade-leave-active[data-v-f2779853]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-f2779853],.VPNavScreen.fade-leave-active .container[data-v-f2779853]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-f2779853],.VPNavScreen.fade-leave-to[data-v-f2779853]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-f2779853],.VPNavScreen.fade-leave-to .container[data-v-f2779853]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-f2779853]{display:none}}.container[data-v-f2779853]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-f2779853],.menu+.appearance[data-v-f2779853],.translations+.appearance[data-v-f2779853]{margin-top:24px}.menu+.social-links[data-v-f2779853]{margin-top:16px}.appearance+.social-links[data-v-f2779853]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b7550ba0]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b7550ba0]{padding-bottom:10px}.item[data-v-b7550ba0]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b7550ba0]{cursor:pointer}.indicator[data-v-b7550ba0]{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-b7550ba0],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b7550ba0]{background-color:var(--vp-c-brand-1)}.link[data-v-b7550ba0]{display:flex;align-items:center;flex-grow:1}.text[data-v-b7550ba0]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b7550ba0]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b7550ba0],.VPSidebarItem.level-2 .text[data-v-b7550ba0],.VPSidebarItem.level-3 .text[data-v-b7550ba0],.VPSidebarItem.level-4 .text[data-v-b7550ba0],.VPSidebarItem.level-5 .text[data-v-b7550ba0]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b7550ba0]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.caret[data-v-b7550ba0]{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-b7550ba0]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b7550ba0]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b7550ba0]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b7550ba0]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b7550ba0],.VPSidebarItem.level-2 .items[data-v-b7550ba0],.VPSidebarItem.level-3 .items[data-v-b7550ba0],.VPSidebarItem.level-4 .items[data-v-b7550ba0],.VPSidebarItem.level-5 .items[data-v-b7550ba0]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b7550ba0]{display:none}.no-transition[data-v-c40bc020] .caret-icon{transition:none}.group+.group[data-v-c40bc020]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-c40bc020]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-319d5ca6]{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-319d5ca6]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-319d5ca6]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-319d5ca6]{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-319d5ca6]{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-319d5ca6]{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-319d5ca6]{outline:0}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{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-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{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-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #34e8b8 30%, #006cd9);--vp-home-hero-image-background-image: linear-gradient(-45deg, #34b8e8 60%, #006cd9 60%);--vp-home-hero-image-filter: blur(20px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(35px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(40px)}}.VPLocalSearchBox[data-v-797a7f7c]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-797a7f7c]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-797a7f7c]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-797a7f7c]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-797a7f7c]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-797a7f7c]{padding:0 8px}}.search-bar[data-v-797a7f7c]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-797a7f7c]{display:block;font-size:18px}.navigate-icon[data-v-797a7f7c]{display:block;font-size:14px}.search-icon[data-v-797a7f7c]{margin:8px}@media (max-width: 767px){.search-icon[data-v-797a7f7c]{display:none}}.search-input[data-v-797a7f7c]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-797a7f7c]{padding:6px 4px}}.search-actions[data-v-797a7f7c]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-797a7f7c]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-797a7f7c]{display:none}}.search-actions button[data-v-797a7f7c]{padding:8px}.search-actions button[data-v-797a7f7c]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-797a7f7c]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-797a7f7c]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-797a7f7c]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-797a7f7c]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-797a7f7c]{display:none}}.search-keyboard-shortcuts kbd[data-v-797a7f7c]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-797a7f7c]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-797a7f7c]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-797a7f7c]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-797a7f7c]{margin:8px}}.titles[data-v-797a7f7c]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-797a7f7c]{display:flex;align-items:center;gap:4px}.title.main[data-v-797a7f7c]{font-weight:500}.title-icon[data-v-797a7f7c]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-797a7f7c]{opacity:.5}.result.selected[data-v-797a7f7c]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-797a7f7c]{position:relative}.excerpt[data-v-797a7f7c]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-797a7f7c]{opacity:1}.excerpt[data-v-797a7f7c] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-797a7f7c] mark,.excerpt[data-v-797a7f7c] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-797a7f7c] .vp-code-group .tabs{display:none}.excerpt[data-v-797a7f7c] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-797a7f7c]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-797a7f7c]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-797a7f7c],.result.selected .title-icon[data-v-797a7f7c]{color:var(--vp-c-brand-1)!important}.no-results[data-v-797a7f7c]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-797a7f7c]{flex:none} diff --git a/assets/troubleshooting_err-require-esm.md.B23WtflU.js b/assets/troubleshooting_err-require-esm.md.B23WtflU.js new file mode 100644 index 00000000..c2131c69 --- /dev/null +++ b/assets/troubleshooting_err-require-esm.md.B23WtflU.js @@ -0,0 +1,10 @@ +import{_ as i,c as e,a2 as a,o as t}from"./chunks/framework.Gf1jShja.js";const E=JSON.parse('{"title":"CommonJS: ERR_REQUIRE_ESM","description":"","frontmatter":{"title":"CommonJS: ERR_REQUIRE_ESM"},"headers":[],"relativePath":"troubleshooting/err-require-esm.md","filePath":"en/troubleshooting/err-require-esm.md","lastUpdated":1724371989000}'),n={name:"troubleshooting/err-require-esm.md"};function o(r,s,l,h,p,d){return t(),e("div",null,s[0]||(s[0]=[a(`

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebar is an ESM module. If your project is using CJS, you will need to convert it to an ESM module.

For more information about the ESM module, see below: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

To address these issues, there are several solutions below:

Solution A

If you are trying to use it with a CJS project, change the file extension from .js to .mjs and try again. You can define that you want to use the module script for a specific file.

Solution B

in the package.json file, add the line "type": "module" line. This may require the project to be converted to an ESM project.

json5
{
+  name: 'docs',
+  type: 'module', // <-- Add this
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}
`,9)]))}const c=i(n,[["render",o]]);export{E as __pageData,c as default}; diff --git a/assets/troubleshooting_err-require-esm.md.B23WtflU.lean.js b/assets/troubleshooting_err-require-esm.md.B23WtflU.lean.js new file mode 100644 index 00000000..c2131c69 --- /dev/null +++ b/assets/troubleshooting_err-require-esm.md.B23WtflU.lean.js @@ -0,0 +1,10 @@ +import{_ as i,c as e,a2 as a,o as t}from"./chunks/framework.Gf1jShja.js";const E=JSON.parse('{"title":"CommonJS: ERR_REQUIRE_ESM","description":"","frontmatter":{"title":"CommonJS: ERR_REQUIRE_ESM"},"headers":[],"relativePath":"troubleshooting/err-require-esm.md","filePath":"en/troubleshooting/err-require-esm.md","lastUpdated":1724371989000}'),n={name:"troubleshooting/err-require-esm.md"};function o(r,s,l,h,p,d){return t(),e("div",null,s[0]||(s[0]=[a(`

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebar is an ESM module. If your project is using CJS, you will need to convert it to an ESM module.

For more information about the ESM module, see below: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

To address these issues, there are several solutions below:

Solution A

If you are trying to use it with a CJS project, change the file extension from .js to .mjs and try again. You can define that you want to use the module script for a specific file.

Solution B

in the package.json file, add the line "type": "module" line. This may require the project to be converted to an ESM project.

json5
{
+  name: 'docs',
+  type: 'module', // <-- Add this
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}
`,9)]))}const c=i(n,[["render",o]]);export{E as __pageData,c as default}; diff --git a/assets/troubleshooting_index.md.8UxK7tSN.js b/assets/troubleshooting_index.md.8UxK7tSN.js new file mode 100644 index 00000000..54dac597 --- /dev/null +++ b/assets/troubleshooting_index.md.8UxK7tSN.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.Gf1jShja.js";const _=JSON.parse('{"title":"Troubleshooting","description":"","frontmatter":{"title":"Troubleshooting"},"headers":[],"relativePath":"troubleshooting/index.md","filePath":"en/troubleshooting/index.md","lastUpdated":1725611780000}'),n={name:"troubleshooting/index.md"};function r(a,s,i,d,c,l){return o(),t("div")}const h=e(n,[["render",r]]);export{_ as __pageData,h as default}; diff --git a/assets/troubleshooting_index.md.8UxK7tSN.lean.js b/assets/troubleshooting_index.md.8UxK7tSN.lean.js new file mode 100644 index 00000000..54dac597 --- /dev/null +++ b/assets/troubleshooting_index.md.8UxK7tSN.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.Gf1jShja.js";const _=JSON.parse('{"title":"Troubleshooting","description":"","frontmatter":{"title":"Troubleshooting"},"headers":[],"relativePath":"troubleshooting/index.md","filePath":"en/troubleshooting/index.md","lastUpdated":1725611780000}'),n={name:"troubleshooting/index.md"};function r(a,s,i,d,c,l){return o(),t("div")}const h=e(n,[["render",r]]);export{_ as __pageData,h as default}; diff --git a/assets/zhHans_advanced-usage_index.md.CHqSt9Bt.js b/assets/zhHans_advanced-usage_index.md.CHqSt9Bt.js new file mode 100644 index 00000000..fbb38ef4 --- /dev/null +++ b/assets/zhHans_advanced-usage_index.md.CHqSt9Bt.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"高级使用","description":"","frontmatter":{"title":"高级使用"},"headers":[],"relativePath":"zhHans/advanced-usage/index.md","filePath":"zhHans/advanced-usage/index.md","lastUpdated":1725611780000}'),n={name:"zhHans/advanced-usage/index.md"};function s(d,c,r,o,i,p){return t(),a("div")}const m=e(n,[["render",s]]);export{l as __pageData,m as default}; diff --git a/assets/zhHans_advanced-usage_index.md.CHqSt9Bt.lean.js b/assets/zhHans_advanced-usage_index.md.CHqSt9Bt.lean.js new file mode 100644 index 00000000..fbb38ef4 --- /dev/null +++ b/assets/zhHans_advanced-usage_index.md.CHqSt9Bt.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"高级使用","description":"","frontmatter":{"title":"高级使用"},"headers":[],"relativePath":"zhHans/advanced-usage/index.md","filePath":"zhHans/advanced-usage/index.md","lastUpdated":1725611780000}'),n={name:"zhHans/advanced-usage/index.md"};function s(d,c,r,o,i,p){return t(),a("div")}const m=e(n,[["render",s]]);export{l as __pageData,m as default}; diff --git a/assets/zhHans_advanced-usage_multi-level-sidebar-with-indents.md.DojwCGVp.js b/assets/zhHans_advanced-usage_multi-level-sidebar-with-indents.md.DojwCGVp.js new file mode 100644 index 00000000..e7bc32c4 --- /dev/null +++ b/assets/zhHans_advanced-usage_multi-level-sidebar-with-indents.md.DojwCGVp.js @@ -0,0 +1,19 @@ +import{_ as i,a}from"./chunks/doc-multi-level-docs-after.BybuXf3W.js";import{_ as e,c as n,a2 as t,o as p}from"./chunks/framework.Gf1jShja.js";const y=JSON.parse('{"title":"带缩进的多级侧边栏","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/advanced-usage/multi-level-sidebar-with-indents.md","filePath":"zhHans/advanced-usage/multi-level-sidebar-with-indents.md","lastUpdated":1725611780000}'),l={name:"zhHans/advanced-usage/multi-level-sidebar-with-indents.md"};function h(d,s,k,r,c,o){return p(),n("div",null,s[0]||(s[0]=[t('

带缩进的多级侧边栏

在多层侧边栏中,菜单显示时每层都会缩进。不过,VitePress 默认从第二层开始缩进。例如

Multi level docs before

上面,directory-level-2directory-level-1的子文件,但看起来处于相同的层级。

这不是VitePress侧边栏的问题,要解决这个问题,您需要通过**VitePress的自定义CSS**自定义现有主题的样式。

.vitepress目录下创建一个theme目录,以覆盖现有样式所需的样式。然后在theme目录下创建一个index.js文件(如果您使用的是Typescript,请使用index.ts而不是index.js)和一个custom.css文件。

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ Add this
+│  │     ├─ custom.css     <------------ Add this
+│  │     └─ index.js       <------------ Add this
+│  ├─ example.md
+│  └─ index.md
+└─ ...

然后在 index.js 文件中添加以下内容:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

接下来,在 custom.css 文件中添加以下内容:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

现在启动 VitePress 服务器。这样就能更容易地看到子内容所在组的第一级层次结构。

Multi level docs before

需要注意的是,这里看到的垂直分隔线只是用CSS创建的;它应该创建为一个带有CSS类名为indicatordiv,所以你应该知道,当你以后创建动态页面时,垂直分隔线可能不会被选中。

',14)]))}const F=e(l,[["render",h]]);export{y as __pageData,F as default}; diff --git a/assets/zhHans_advanced-usage_multi-level-sidebar-with-indents.md.DojwCGVp.lean.js b/assets/zhHans_advanced-usage_multi-level-sidebar-with-indents.md.DojwCGVp.lean.js new file mode 100644 index 00000000..e7bc32c4 --- /dev/null +++ b/assets/zhHans_advanced-usage_multi-level-sidebar-with-indents.md.DojwCGVp.lean.js @@ -0,0 +1,19 @@ +import{_ as i,a}from"./chunks/doc-multi-level-docs-after.BybuXf3W.js";import{_ as e,c as n,a2 as t,o as p}from"./chunks/framework.Gf1jShja.js";const y=JSON.parse('{"title":"带缩进的多级侧边栏","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/advanced-usage/multi-level-sidebar-with-indents.md","filePath":"zhHans/advanced-usage/multi-level-sidebar-with-indents.md","lastUpdated":1725611780000}'),l={name:"zhHans/advanced-usage/multi-level-sidebar-with-indents.md"};function h(d,s,k,r,c,o){return p(),n("div",null,s[0]||(s[0]=[t('

带缩进的多级侧边栏

在多层侧边栏中,菜单显示时每层都会缩进。不过,VitePress 默认从第二层开始缩进。例如

Multi level docs before

上面,directory-level-2directory-level-1的子文件,但看起来处于相同的层级。

这不是VitePress侧边栏的问题,要解决这个问题,您需要通过**VitePress的自定义CSS**自定义现有主题的样式。

.vitepress目录下创建一个theme目录,以覆盖现有样式所需的样式。然后在theme目录下创建一个index.js文件(如果您使用的是Typescript,请使用index.ts而不是index.js)和一个custom.css文件。

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ Add this
+│  │     ├─ custom.css     <------------ Add this
+│  │     └─ index.js       <------------ Add this
+│  ├─ example.md
+│  └─ index.md
+└─ ...

然后在 index.js 文件中添加以下内容:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

接下来,在 custom.css 文件中添加以下内容:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

现在启动 VitePress 服务器。这样就能更容易地看到子内容所在组的第一级层次结构。

Multi level docs before

需要注意的是,这里看到的垂直分隔线只是用CSS创建的;它应该创建为一个带有CSS类名为indicatordiv,所以你应该知道,当你以后创建动态页面时,垂直分隔线可能不会被选中。

',14)]))}const F=e(l,[["render",h]]);export{y as __pageData,F as default}; diff --git a/assets/zhHans_advanced-usage_multiple-sidebars-how-to.md.MvLzNpu-.js b/assets/zhHans_advanced-usage_multiple-sidebars-how-to.md.MvLzNpu-.js new file mode 100644 index 00000000..88b9143e --- /dev/null +++ b/assets/zhHans_advanced-usage_multiple-sidebars-how-to.md.MvLzNpu-.js @@ -0,0 +1,129 @@ +import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.Gf1jShja.js";const c=JSON.parse('{"title":"多侧边栏操作方法","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/advanced-usage/multiple-sidebars-how-to.md","filePath":"zhHans/advanced-usage/multiple-sidebars-how-to.md","lastUpdated":1725611780000}'),e={name:"zhHans/advanced-usage/multiple-sidebars-how-to.md"};function l(t,s,h,k,d,E){return p(),i("div",null,s[0]||(s[0]=[n(`

多侧边栏操作方法

多侧边栏是一项允许根据特定 URI 路径显示不同侧边栏菜单的功能。

只需在 vitepress-sidebar 中进行一些简单设置,就能轻松实现这一功能。最终,VitePress将按照预期输出选项。

要先了解有关多侧边栏的更多信息,我们建议您查看下面VitePress 的官方文档:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

基本用法

首先,假设你有一个名为 docs 的根项目,其中有名为 guideconfig 的子目录,就像这样:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

当URL位于/guide页面时,用户希望菜单仅显示guide的子菜单,隐藏config的子菜单。同样,当guide位于/config页面时,您希望隐藏guide的子菜单。

要在 vitepress-sidebar 中实现此功能,您需要采用与现有设置不同的方法。

像以前一样使用generateSidebar函数,但传递一个数组。该数组至少包含一个来自vitepress-sidebar的选项。数组中的值可以是任意数量的URL。当然,您也可以使用不同的设置进行配置。

javascript
// 必须传递数组参数!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

这些选项的值在结果中的使用情况如下:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // \`<scanStartPath>/path/to/items\`
+    }
+  ]
+}

下面是上述设置的输出示例:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

多个侧边栏选项

以下选项可用于多个侧边栏:scanStartPathbasePathresolvePath。每个选项都是可选的,但应根据具体情况正确使用。

下文将对每个选项进行说明。但我们建议您首先参考API页面上对每个选项的描述。

以下描述基于以下示例:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

此选项用于为不同的路由规则指定不同的根目录。documentRootPath是实际要扫描的根目录(即.vitepress目录所在的位置),而scanStartPath是此路由规则中实际要显示的根目录。

例如,若要仅包含/guide目录中的文件,请将scanStartPath的值指定为guide。但是,documentRootPath中的路径不应包含在内。

resolvePath

VitePress使用此选项在遇到特定URI时显示相关菜单。例如,如果您想在到达example.com/guide/api时仅显示guide/api目录的内容,则resolvePath的值为/guide/api。建议您在路径前添加/

通常,它的值与 scanStartPath 类似,但有时您可能需要为 i18n 路由指定不同的值。

basePath

此选项主要用于VitePress的重写规则,否则为可选。

它取代了VitePress中base路径的值。如果未指定该值,则指定resolvePath的值或根路径(/)。

如果目录的实际路径与URI中的路径结构不同,您应该能够通过重写功能导航到页面。通常情况下,侧边栏会根据根目录生成路径,而不会引用VitePress中的重写路径。

例如,假设您有一个重写规则,如下所示:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

guide/one.md 文档显示在 help/one 的路径中。但是,如果您这样做,侧边栏将不会显示菜单,因为它会尝试找到 help/one,而这是路径本身。

要解决这个问题,请将basePath中的路径改为help:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- Add this
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

显示带有复杂路径和 URI 的菜单

上面的例子通常是在路径按步骤定义的情况下,但当你想显示按步骤深入的文件夹时,特别是当 URI 较短或使用与实际文件夹路径不同的约定时,你需要使用额外的方法。例如,你有一个这样的文件夹结构:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

这次,我们希望当到达单级 URI /api 时,在 docs/guide/api 中显示菜单。预期的菜单仅显示 api-one.mdapi-two.md

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

但是,如果您这样配置选项,将无法显示菜单,因为api目录是guide的子目录。VitePress无法检测到这一点,并会导航到一个不存在的文档。

要解决这个问题,您需要同时使用VitePress的路由功能,请参阅以下文章以获取说明:

https://vitepress.dev/guide/routing#route-rewrites

按照上面的示例,我们将把“重写rewritesVitePress的config.js文件中,该文件应位于themeConfig之外:

javascript
export default defineConfig({
+  /* [START] Add This */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] Add This */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

现在,当 URI 路径以 /api 开头时,将显示 docs/guide/api 的子菜单!

`,47)]))}const o=a(e,[["render",l]]);export{c as __pageData,o as default}; diff --git a/assets/zhHans_advanced-usage_multiple-sidebars-how-to.md.MvLzNpu-.lean.js b/assets/zhHans_advanced-usage_multiple-sidebars-how-to.md.MvLzNpu-.lean.js new file mode 100644 index 00000000..88b9143e --- /dev/null +++ b/assets/zhHans_advanced-usage_multiple-sidebars-how-to.md.MvLzNpu-.lean.js @@ -0,0 +1,129 @@ +import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.Gf1jShja.js";const c=JSON.parse('{"title":"多侧边栏操作方法","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/advanced-usage/multiple-sidebars-how-to.md","filePath":"zhHans/advanced-usage/multiple-sidebars-how-to.md","lastUpdated":1725611780000}'),e={name:"zhHans/advanced-usage/multiple-sidebars-how-to.md"};function l(t,s,h,k,d,E){return p(),i("div",null,s[0]||(s[0]=[n(`

多侧边栏操作方法

多侧边栏是一项允许根据特定 URI 路径显示不同侧边栏菜单的功能。

只需在 vitepress-sidebar 中进行一些简单设置,就能轻松实现这一功能。最终,VitePress将按照预期输出选项。

要先了解有关多侧边栏的更多信息,我们建议您查看下面VitePress 的官方文档:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

基本用法

首先,假设你有一个名为 docs 的根项目,其中有名为 guideconfig 的子目录,就像这样:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

当URL位于/guide页面时,用户希望菜单仅显示guide的子菜单,隐藏config的子菜单。同样,当guide位于/config页面时,您希望隐藏guide的子菜单。

要在 vitepress-sidebar 中实现此功能,您需要采用与现有设置不同的方法。

像以前一样使用generateSidebar函数,但传递一个数组。该数组至少包含一个来自vitepress-sidebar的选项。数组中的值可以是任意数量的URL。当然,您也可以使用不同的设置进行配置。

javascript
// 必须传递数组参数!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

这些选项的值在结果中的使用情况如下:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // \`<scanStartPath>/path/to/items\`
+    }
+  ]
+}

下面是上述设置的输出示例:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

多个侧边栏选项

以下选项可用于多个侧边栏:scanStartPathbasePathresolvePath。每个选项都是可选的,但应根据具体情况正确使用。

下文将对每个选项进行说明。但我们建议您首先参考API页面上对每个选项的描述。

以下描述基于以下示例:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

此选项用于为不同的路由规则指定不同的根目录。documentRootPath是实际要扫描的根目录(即.vitepress目录所在的位置),而scanStartPath是此路由规则中实际要显示的根目录。

例如,若要仅包含/guide目录中的文件,请将scanStartPath的值指定为guide。但是,documentRootPath中的路径不应包含在内。

resolvePath

VitePress使用此选项在遇到特定URI时显示相关菜单。例如,如果您想在到达example.com/guide/api时仅显示guide/api目录的内容,则resolvePath的值为/guide/api。建议您在路径前添加/

通常,它的值与 scanStartPath 类似,但有时您可能需要为 i18n 路由指定不同的值。

basePath

此选项主要用于VitePress的重写规则,否则为可选。

它取代了VitePress中base路径的值。如果未指定该值,则指定resolvePath的值或根路径(/)。

如果目录的实际路径与URI中的路径结构不同,您应该能够通过重写功能导航到页面。通常情况下,侧边栏会根据根目录生成路径,而不会引用VitePress中的重写路径。

例如,假设您有一个重写规则,如下所示:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

guide/one.md 文档显示在 help/one 的路径中。但是,如果您这样做,侧边栏将不会显示菜单,因为它会尝试找到 help/one,而这是路径本身。

要解决这个问题,请将basePath中的路径改为help:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- Add this
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

显示带有复杂路径和 URI 的菜单

上面的例子通常是在路径按步骤定义的情况下,但当你想显示按步骤深入的文件夹时,特别是当 URI 较短或使用与实际文件夹路径不同的约定时,你需要使用额外的方法。例如,你有一个这样的文件夹结构:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

这次,我们希望当到达单级 URI /api 时,在 docs/guide/api 中显示菜单。预期的菜单仅显示 api-one.mdapi-two.md

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

但是,如果您这样配置选项,将无法显示菜单,因为api目录是guide的子目录。VitePress无法检测到这一点,并会导航到一个不存在的文档。

要解决这个问题,您需要同时使用VitePress的路由功能,请参阅以下文章以获取说明:

https://vitepress.dev/guide/routing#route-rewrites

按照上面的示例,我们将把“重写rewritesVitePress的config.js文件中,该文件应位于themeConfig之外:

javascript
export default defineConfig({
+  /* [START] Add This */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] Add This */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

现在,当 URI 路径以 /api 开头时,将显示 docs/guide/api 的子菜单!

`,47)]))}const o=a(e,[["render",l]]);export{c as __pageData,o as default}; diff --git a/assets/zhHans_changelog.md.D0V1uMFw.js b/assets/zhHans_changelog.md.D0V1uMFw.js new file mode 100644 index 00000000..337471db --- /dev/null +++ b/assets/zhHans_changelog.md.D0V1uMFw.js @@ -0,0 +1 @@ +import{_ as o,c as a,a2 as i,o as l}from"./chunks/framework.Gf1jShja.js";const p=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/changelog.md","filePath":"zhHans/changelog.md","lastUpdated":null}'),t={name:"zhHans/changelog.md"};function d(r,e,n,c,s,h){return l(),a("div",null,e[0]||(e[0]=[i('

Changelog

1.25.3 (2024-09-03)

  • If convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile options are defined together, try with title from index file when title is not fetched (#170)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

  • Fix convertSameNameSubFileToGroupIndexPage to get the name normally if subfile doesn't exist when set
  • Use the title of the index file if convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile are defined together (#170)

1.25.1 (2024-09-03)

  • BREAKING CHANGES: The Options type for TypeScript has been renamed to VitePressSidebarOptions.
  • Fix to avoid converting non-first letter items to lowercase when using capitalizeEachWords
  • Support for specifying sidebar option types for TypeScript
  • Documentation page domain now changed to vitepress-sidebar.cdget.com!
  • Korean documentation support

1.25.0 (2024-08-22)

  • Add basePath option
  • Fix incorrect directory path when using rewrite and convertSameNameSubFileToGroupIndexPage option. (#146)

1.24.2 (2024-08-13)

  • Fix index link is blank in multiple sidebars (#167)

1.24.1 (2024-07-31)

  • If a link exists in the directory, it will appear in the menu regardless of the option
  • Fix do not include index link when index.md file is shown (#147)
  • More precise argument checking

1.24.0 (2024-07-06)

  • Add frontmatterTitleFieldName option. When used with useTitleFromFrontmatter, the text field of sidebar will extract from the value of frontmatterTitleFieldName instead of default title field if it exists. (@liudonghua123)

1.23.2 (2024-05-16)

  • Revert 5ed188e. do not warn 'use option together'

1.23.1 (2024-05-15)

  • Warning against using the removePrefixAfterOrdering option and the useTitleFrom option together
  • Fix to return full filename if separator is not present in filename when using removePrefixAfterOrdering option

1.23.0 (2024-05-13)

  • BREAKING CHANGES: The excludeFilesByFrontmatter option is deprecated and replaced by the excludeFilesByFrontmatterFieldName option. You can now specify any field name you want, including Frontmatter's exclude field name, and documents will be excluded from the menu when that field value is true. Existing users should work fine with the following settings excludeFilesByFrontmatterFieldName: 'exclude'. For more information, see the documentation.
  • Allow empty values or empty object options to be passed in

1.22.0 (2024-03-28)

  • prefixSeparator now accepts regular expressions
  • Add sortMenusByFileDatePrefix option

1.21.0 (2024-03-15)

  • Add removePrefixAfterOrdering and prefixSeparator option
  • Documentation enhancements

1.20.0 (2024-03-12)

  • BREAKING CHANGES: The sortMenusOrderNumerically option has been split into the sortMenusOrderNumericallyFromTitle and sortMenusOrderNumericallyFromLink options. Therefore, the old option is deprecated. Renamed to allow you to sort by file title or link. For more information, see README.md.
  • Add sortMenusByFrontmatterDate option
  • Add sortMenusOrderNumericallyFromLink option
  • In useFolderLinkFromIndexFile, show the path to index.md together
  • Fix folders with only an index file are not recognized as empty

1.19.0 (2024-02-26)

  • Add excludeFilesByFrontmatter option (@aslafy-z)

1.18.6 (2024-01-03)

  • Fix typescript issue

1.18.5 (2023-12-11)

  • Add frontmatterOrderDefaultValue option (@aslafy-z)
  • Fix recursive sort of items (@aslafy-z)
  • Retrieve ordering for top level folder indexes (@aslafy-z)

1.18.0 (2023-10-02)

  • Add capitalizeEachWords option
  • The option to modify menu names is also reflected correctly when pulling names from MarkDown heading, frontmatter.

1.17.0 (2023-09-26)

  • Add sortMenusOrderNumerically option

1.16.5 (2023-09-22)

  • Fix nested links being created in multiple sidebars

1.16.0 (2023-09-21)

  • BREAKING CHANGES: The useIndexFileForFolderMenuInfo option has been split into the useFolderTitleFromIndexFile and useFolderLinkFromIndexFile options. Therefore, the old option is deprecated. You can now specify whether the folder menu should get its name and link from the index.md file, respectively. For more information, see README.md.
  • Make sure the link to the index page is clearly marked (e.g., folder/ instead of folder/index).

1.15.0 (2023-09-19)

  • Fix correct base url for multiple sidebars
  • The rootGroupText, rootGroupLink, and rootGroupCollapsed options are available again. However, these options are no longer required.

1.14.0 (2023-09-18)

  • NOTE: The options rootGroupText, rootGroupLink, and rootGroupCollapsed are not available in this version. Please update to the latest version. These options have been restored!
  • Use a better algorithm for stripping formatting from titles that contain Markdown syntax

1.13.0 (2023-09-13)

  • BREAKING CHANGES: The generator normally strips some of the Markdown syntax when using useTitleFromFileHeading. If you do not want to remove Markdown syntax, set the keepMarkdownSyntaxFromTitle option to true.
  • Add debugPrint option
  • Add keepMarkdownSyntaxFromTitle option
  • Improved test example files

1.12.0 (2023-09-12)

  • Add sortMenusByFrontmatterOrder option

1.11.0 (2023-08-24)

  • BREAKING CHANGES: useFolderLinkAsIndexPage option was renamed to useIndexFileForFolderMenuInfo
  • BREAKING CHANGES: sortByFileName option was renamed to manualSortFileNameByPriority
  • BREAKING CHANGES: The useFolderLinkAsIndexPage option now also gets the title information of the index.md file, so the name of the folder menu is set to the title of the index.md file
  • The useFolderLinkAsIndexPage option, if the index file (index.md) does not exist, will display it without setting a link, replacing the name with the folder name
  • Add sortMenusByName and sortMenusOrderByDescending options
  • Added deprecated warning for changed option names

1.10.1 (2023-08-08)

  • Fixed issue with rootGroupCollapsed option not being applied correctly

1.10.0 (2023-07-25)

  • Add includeFolderIndexFile option
  • Add useFolderLinkAsIndexPage option

1.9.5 (2023-07-25)

  • Troubleshooting when links are not prefixed with /
  • Allow null or undefined value for collapsed options

1.9.0 (2023-07-24)

  • Add rootGroupCollapsed option. This option is separate from the collapsed option and allows you to set whether the RootGroup (the item displayed in the Table of Contents) is expanded or not. See README.md for more information.
  • Correct behavior of collapseDepth

1.8.2 (2023-07-18)

  • Remove unnecessary files
  • Upgrade package dependencies
  • Update README.md

1.8.1 (2023-06-15)

  • Make sure to apply multi-sidebar settings for settings containing resolvePath

1.8.0 (2023-06-13)

  • BREAKING CHANGES: The root option was renamed to documentRootPath.
  • Support for multiple sidebars (Add scanStartPath and resolvePath option. Please read README.md file.)
  • Improved multiple validation checks
  • Improved Frontmatter inspections with special characters or newlines

1.7.5 (2023-05-28)

  • Add folderLinkNotIncludesFileName option

1.7.0 (2023-05-28)

  • BREAKING CHANGES: The withIndex option was renamed to includeRootIndexFile.
  • BREAKING CHANGES: The includeEmptyGroup option was renamed to includeEmptyFolder.
  • Add excludeFiles option
  • Add excludeFolders option
  • Add includeDotFiles option
  • Parsing markdown h1 tag and frontmatter correctly

1.6.5 (2023-05-27)

  • Fix convertSameNameSubFileToGroupIndexPage and rename option not working together

1.6.0 (2023-05-27)

  • BREAKING CHANGES: The default value for hyphenToSpace is now false.
  • Add convertSameNameSubFileToGroupIndexPage option: If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.
  • Fixed issue with hyphenToSpace and underscoreToSpace options not being applied to directories
  • Add rootGroupLink option

1.5.1 (2023-05-26)

  • Add .mocharc.json, remove tsconfig.prod.json file in .npmignore

1.5.0 (2023-05-26)

  • Add useTitleFromFrontmatter option. See README.md.
  • useTitleFromFileHeading: Use only valid title values in titles that contain links

1.4.0 (2023-05-26)

  • Fix TypeScript lint error
  • Upgrade package dependencies

1.3.1 (2023-04-20)

  • Fix build issue

1.3.0 (2023-04-20)

  • Upgrade package dependencies
  • Cleanup codes and update documentation

1.2.0 (2023-02-07)

  • BREAKING CHANGES: The collapsible option has been removed by VitePress 1.0.0-alpha.44 breaking changes. See: https://vitepress.vuejs.org/config/theme-configs
    • If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.
  • Upgrade package dependencies

1.1.5 (2023-01-12)

  • Remove CODE_OF_CONDUCT.md for npm release

1.1.4 (2023-01-12)

  • Upgrade package dependencies

1.1.3 (2022-12-08)

  • Upgrade package dependencies
  • Add includeEmptyGroup option
  • Do not include empty group by default

1.1.2 (2022-11-23)

  • Upgrade package dependencies
  • Fix README.md and codes indent

1.1.1 (2022-11-02)

  • Fix capitalizeFirst bug

1.1.0 (2022-11-02)

  • Add capitalizeFirst option
  • Fix null check for option

1.0.9 (2022-11-02)

  • Add sortByFileName option

1.0.8 (2022-11-02)

  • Add collapseDepth option
  • Fix correct import fs module
  • Upgrade package dependencies

1.0.7 (2022-10-31)

  • Fix execution order and cleanup codes
  • Add .editorconfig file and reformat codes (Development only)

1.0.6 (2022-10-31)

  • Add useTitleFromFileHeading option
  • Upgrade package dependencies

1.0.5 (2022-10-27)

  • Change require NodeJS version to 14
  • Add mocha test (Development only)

1.0.4 (2022-10-25)

  • First production release

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

  • Alpha release (Not tested. Do not use production.)
',112)]))}const m=o(t,[["render",d]]);export{p as __pageData,m as default}; diff --git a/assets/zhHans_changelog.md.D0V1uMFw.lean.js b/assets/zhHans_changelog.md.D0V1uMFw.lean.js new file mode 100644 index 00000000..337471db --- /dev/null +++ b/assets/zhHans_changelog.md.D0V1uMFw.lean.js @@ -0,0 +1 @@ +import{_ as o,c as a,a2 as i,o as l}from"./chunks/framework.Gf1jShja.js";const p=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/changelog.md","filePath":"zhHans/changelog.md","lastUpdated":null}'),t={name:"zhHans/changelog.md"};function d(r,e,n,c,s,h){return l(),a("div",null,e[0]||(e[0]=[i('

Changelog

1.25.3 (2024-09-03)

  • If convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile options are defined together, try with title from index file when title is not fetched (#170)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

  • Fix convertSameNameSubFileToGroupIndexPage to get the name normally if subfile doesn't exist when set
  • Use the title of the index file if convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile are defined together (#170)

1.25.1 (2024-09-03)

  • BREAKING CHANGES: The Options type for TypeScript has been renamed to VitePressSidebarOptions.
  • Fix to avoid converting non-first letter items to lowercase when using capitalizeEachWords
  • Support for specifying sidebar option types for TypeScript
  • Documentation page domain now changed to vitepress-sidebar.cdget.com!
  • Korean documentation support

1.25.0 (2024-08-22)

  • Add basePath option
  • Fix incorrect directory path when using rewrite and convertSameNameSubFileToGroupIndexPage option. (#146)

1.24.2 (2024-08-13)

  • Fix index link is blank in multiple sidebars (#167)

1.24.1 (2024-07-31)

  • If a link exists in the directory, it will appear in the menu regardless of the option
  • Fix do not include index link when index.md file is shown (#147)
  • More precise argument checking

1.24.0 (2024-07-06)

  • Add frontmatterTitleFieldName option. When used with useTitleFromFrontmatter, the text field of sidebar will extract from the value of frontmatterTitleFieldName instead of default title field if it exists. (@liudonghua123)

1.23.2 (2024-05-16)

  • Revert 5ed188e. do not warn 'use option together'

1.23.1 (2024-05-15)

  • Warning against using the removePrefixAfterOrdering option and the useTitleFrom option together
  • Fix to return full filename if separator is not present in filename when using removePrefixAfterOrdering option

1.23.0 (2024-05-13)

  • BREAKING CHANGES: The excludeFilesByFrontmatter option is deprecated and replaced by the excludeFilesByFrontmatterFieldName option. You can now specify any field name you want, including Frontmatter's exclude field name, and documents will be excluded from the menu when that field value is true. Existing users should work fine with the following settings excludeFilesByFrontmatterFieldName: 'exclude'. For more information, see the documentation.
  • Allow empty values or empty object options to be passed in

1.22.0 (2024-03-28)

  • prefixSeparator now accepts regular expressions
  • Add sortMenusByFileDatePrefix option

1.21.0 (2024-03-15)

  • Add removePrefixAfterOrdering and prefixSeparator option
  • Documentation enhancements

1.20.0 (2024-03-12)

  • BREAKING CHANGES: The sortMenusOrderNumerically option has been split into the sortMenusOrderNumericallyFromTitle and sortMenusOrderNumericallyFromLink options. Therefore, the old option is deprecated. Renamed to allow you to sort by file title or link. For more information, see README.md.
  • Add sortMenusByFrontmatterDate option
  • Add sortMenusOrderNumericallyFromLink option
  • In useFolderLinkFromIndexFile, show the path to index.md together
  • Fix folders with only an index file are not recognized as empty

1.19.0 (2024-02-26)

  • Add excludeFilesByFrontmatter option (@aslafy-z)

1.18.6 (2024-01-03)

  • Fix typescript issue

1.18.5 (2023-12-11)

  • Add frontmatterOrderDefaultValue option (@aslafy-z)
  • Fix recursive sort of items (@aslafy-z)
  • Retrieve ordering for top level folder indexes (@aslafy-z)

1.18.0 (2023-10-02)

  • Add capitalizeEachWords option
  • The option to modify menu names is also reflected correctly when pulling names from MarkDown heading, frontmatter.

1.17.0 (2023-09-26)

  • Add sortMenusOrderNumerically option

1.16.5 (2023-09-22)

  • Fix nested links being created in multiple sidebars

1.16.0 (2023-09-21)

  • BREAKING CHANGES: The useIndexFileForFolderMenuInfo option has been split into the useFolderTitleFromIndexFile and useFolderLinkFromIndexFile options. Therefore, the old option is deprecated. You can now specify whether the folder menu should get its name and link from the index.md file, respectively. For more information, see README.md.
  • Make sure the link to the index page is clearly marked (e.g., folder/ instead of folder/index).

1.15.0 (2023-09-19)

  • Fix correct base url for multiple sidebars
  • The rootGroupText, rootGroupLink, and rootGroupCollapsed options are available again. However, these options are no longer required.

1.14.0 (2023-09-18)

  • NOTE: The options rootGroupText, rootGroupLink, and rootGroupCollapsed are not available in this version. Please update to the latest version. These options have been restored!
  • Use a better algorithm for stripping formatting from titles that contain Markdown syntax

1.13.0 (2023-09-13)

  • BREAKING CHANGES: The generator normally strips some of the Markdown syntax when using useTitleFromFileHeading. If you do not want to remove Markdown syntax, set the keepMarkdownSyntaxFromTitle option to true.
  • Add debugPrint option
  • Add keepMarkdownSyntaxFromTitle option
  • Improved test example files

1.12.0 (2023-09-12)

  • Add sortMenusByFrontmatterOrder option

1.11.0 (2023-08-24)

  • BREAKING CHANGES: useFolderLinkAsIndexPage option was renamed to useIndexFileForFolderMenuInfo
  • BREAKING CHANGES: sortByFileName option was renamed to manualSortFileNameByPriority
  • BREAKING CHANGES: The useFolderLinkAsIndexPage option now also gets the title information of the index.md file, so the name of the folder menu is set to the title of the index.md file
  • The useFolderLinkAsIndexPage option, if the index file (index.md) does not exist, will display it without setting a link, replacing the name with the folder name
  • Add sortMenusByName and sortMenusOrderByDescending options
  • Added deprecated warning for changed option names

1.10.1 (2023-08-08)

  • Fixed issue with rootGroupCollapsed option not being applied correctly

1.10.0 (2023-07-25)

  • Add includeFolderIndexFile option
  • Add useFolderLinkAsIndexPage option

1.9.5 (2023-07-25)

  • Troubleshooting when links are not prefixed with /
  • Allow null or undefined value for collapsed options

1.9.0 (2023-07-24)

  • Add rootGroupCollapsed option. This option is separate from the collapsed option and allows you to set whether the RootGroup (the item displayed in the Table of Contents) is expanded or not. See README.md for more information.
  • Correct behavior of collapseDepth

1.8.2 (2023-07-18)

  • Remove unnecessary files
  • Upgrade package dependencies
  • Update README.md

1.8.1 (2023-06-15)

  • Make sure to apply multi-sidebar settings for settings containing resolvePath

1.8.0 (2023-06-13)

  • BREAKING CHANGES: The root option was renamed to documentRootPath.
  • Support for multiple sidebars (Add scanStartPath and resolvePath option. Please read README.md file.)
  • Improved multiple validation checks
  • Improved Frontmatter inspections with special characters or newlines

1.7.5 (2023-05-28)

  • Add folderLinkNotIncludesFileName option

1.7.0 (2023-05-28)

  • BREAKING CHANGES: The withIndex option was renamed to includeRootIndexFile.
  • BREAKING CHANGES: The includeEmptyGroup option was renamed to includeEmptyFolder.
  • Add excludeFiles option
  • Add excludeFolders option
  • Add includeDotFiles option
  • Parsing markdown h1 tag and frontmatter correctly

1.6.5 (2023-05-27)

  • Fix convertSameNameSubFileToGroupIndexPage and rename option not working together

1.6.0 (2023-05-27)

  • BREAKING CHANGES: The default value for hyphenToSpace is now false.
  • Add convertSameNameSubFileToGroupIndexPage option: If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.
  • Fixed issue with hyphenToSpace and underscoreToSpace options not being applied to directories
  • Add rootGroupLink option

1.5.1 (2023-05-26)

  • Add .mocharc.json, remove tsconfig.prod.json file in .npmignore

1.5.0 (2023-05-26)

  • Add useTitleFromFrontmatter option. See README.md.
  • useTitleFromFileHeading: Use only valid title values in titles that contain links

1.4.0 (2023-05-26)

  • Fix TypeScript lint error
  • Upgrade package dependencies

1.3.1 (2023-04-20)

  • Fix build issue

1.3.0 (2023-04-20)

  • Upgrade package dependencies
  • Cleanup codes and update documentation

1.2.0 (2023-02-07)

  • BREAKING CHANGES: The collapsible option has been removed by VitePress 1.0.0-alpha.44 breaking changes. See: https://vitepress.vuejs.org/config/theme-configs
    • If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.
  • Upgrade package dependencies

1.1.5 (2023-01-12)

  • Remove CODE_OF_CONDUCT.md for npm release

1.1.4 (2023-01-12)

  • Upgrade package dependencies

1.1.3 (2022-12-08)

  • Upgrade package dependencies
  • Add includeEmptyGroup option
  • Do not include empty group by default

1.1.2 (2022-11-23)

  • Upgrade package dependencies
  • Fix README.md and codes indent

1.1.1 (2022-11-02)

  • Fix capitalizeFirst bug

1.1.0 (2022-11-02)

  • Add capitalizeFirst option
  • Fix null check for option

1.0.9 (2022-11-02)

  • Add sortByFileName option

1.0.8 (2022-11-02)

  • Add collapseDepth option
  • Fix correct import fs module
  • Upgrade package dependencies

1.0.7 (2022-10-31)

  • Fix execution order and cleanup codes
  • Add .editorconfig file and reformat codes (Development only)

1.0.6 (2022-10-31)

  • Add useTitleFromFileHeading option
  • Upgrade package dependencies

1.0.5 (2022-10-27)

  • Change require NodeJS version to 14
  • Add mocha test (Development only)

1.0.4 (2022-10-25)

  • First production release

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

  • Alpha release (Not tested. Do not use production.)
',112)]))}const m=o(t,[["render",d]]);export{p as __pageData,m as default}; diff --git a/assets/zhHans_guide_api.md.BnIfwLNm.js b/assets/zhHans_guide_api.md.BnIfwLNm.js new file mode 100644 index 00000000..066e74aa --- /dev/null +++ b/assets/zhHans_guide_api.md.BnIfwLNm.js @@ -0,0 +1 @@ +import{_ as o}from"./chunks/doc-collapsed-example.CqMUHFlL.js";import{_ as a,c as d,a2 as t,o as l}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"API","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"zhHans/guide/api.md","filePath":"zhHans/guide/api.md","lastUpdated":1725611780000}'),r={name:"zhHans/guide/api.md"};function i(c,e,n,s,p,u){return l(),d("div",null,e[0]||(e[0]=[t('

API

本页介绍 VitePress 侧边栏的所有选项。

@ 快速搜索

解决路径问题分组
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
获取菜单标题获取菜单链接
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
包括/排除菜单标题样式
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
分类杂项
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

文档文件所在的顶级路径。默认值为 /

这是 .vitepress目录所在的路径,如果项目根目录中文档所在的文件夹是 /docs,则该选项的值应设为 docs/docs

text
/\n├─ package.json\n├─ src/\n├─ docs/        <--------------- `documentRootPath` ('/docs')\n│  ├─ .vitepress/        <------ VitePress 配置目录\n│  ├─ another-directory/\n│  ├─ hello.md\n│  └─ index.md\n└─ ...

scanStartPath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

用于扫描文档列表的根目录路径。在documentRootPath中设置的路径中的文件,在scanStartPath中设置的路径之外,不会被扫描。如果您指定了scanStartPath,建议您也设置documentRootPath,因为documentRootPath中设置的父路径应该出现在link中。

例如,如果根路径是/docs,要扫描的文件是/docs/sub-dir/scan-me,则设置如下:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (请勿包含 documentRootPath 的路径。)

resolvePath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

输入路径,为每个路径显示不同的侧边栏。路径前必须包含/。没有此值的选项将设置为根路径(/)。

例如: /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

如果路径因VitePress的重写选项而改变,则可以使用此选项。它替换VitePress中的基本路径。如果此值不存在,则将使用来自resolvePath的值。

useTitleFromFileHeading

  • Type: boolean
  • Default: false

如果值为 true,则显示带有 .md 文件中 h1 标题内容的标题。如果文件中不存在 h1 标题,则显示 Unknown

默认菜单项按文件夹树顺序排序,因此如果您想按更改后的菜单名称重新排序,请将sortMenusByName选项设置为true

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

如果值为true,则根据文件Frontmattertitle的值显示标题。如果无法解析该值,则如果useTitleFromFileHeading选项为true,则从h1标签中获取该值,如果失败,则从文件名中获取该值。

Frontmatter应位于文档顶部,并应如下所示(在 title: 值和标题之间需要留出空格)。

markdown
---\ntitle: Hello World\n---

frontmatterTitleFieldName

  • Type: string
  • Default: title

根据文件中指定的Frontmatter中的键名显示菜单标题。如果指定的值在Frontmatter中不存在,将使用默认的title作为后备。

markdown
---\nname: This is frontmatter title value.\n---

欲了解更多信息,请参阅以下文章: https://vitepress.dev/guide/frontmatter

默认菜单项是按文件夹树顺序排序的,因此如果想按更改后的菜单名称重新排序,请将 sortMenusByName 选项设置为 true

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

如果该值为 true,则使用当前文件夹的 index.md 文件中的信息来获取菜单名称。如果不存在 index.md 文件,则使用文件夹名称。由于我们通常从 index.md 文件中获取 index 名称,因此建议同时使用 useTitleFromFileHeadinguseTitleFromFrontmatter 选项,从该文件的 Markdown 标题或 Frontmatter 中获取标题。

侧边栏菜单会隐藏 index.md 文件,但如果 includeFolderIndexFile 选项为 true,索引文件就会显示在菜单中。

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

如果此值为 true,将指定一个指向文件夹的链接,以便您可以导航到当前文件夹中的 index.md 文件。如果 index.md 文件不存在,则不会创建链接。

侧边栏菜单会隐藏 index.md 文件,但如果 includeFolderIndexFile 选项为 true,则可在菜单中显示索引文件。

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

按文件名(包括扩展名)数组的顺序排序。如果数组中没有与文件名匹配的值,排序优先级将被退回。这适用于文件和目录,同样的排列规则也适用于子目录。

sortMenusByName

  • Type: boolean
  • Default: false

按名称对菜单项中的项目进行排序。通常情况下,文件夹扫描是按名称升序排序的,因此,如果不应用此选项,则应用默认排序,但如果使用useTitleFromFileHeadinguseTitleFromFrontmatter选项,则可能需要按名称重新排序,因为菜单名称已更改。此选项强制按名称排序,即使菜单名称已更改也是如此。

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

如果值为 true,则按菜单项名称中的日期前缀排序。日期格式必须是 YYYY-MM-DD 格式(例如 2024-01-01-menu-name, 2024-01-02.menu-name...)

要删除菜单文本中残留的日期前缀,可以使用 prefixSeparatorremovePrefixAfterOrdering 选项。

默认菜单项是按文件夹树顺序排序的,因此如果想按更改后的菜单名称重新排序,请将 sortMenusByName 选项设置为 true

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

按 frontmatter 的 order 属性对菜单项排序。对于每个文件夹,按 order 属性的值(数字)升序排序,如果 sortMenusOrderByDescending 选项为 true,则按降序排序。如果 order 属性的值不是数字或不存在,则 order 会被判定为 0

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

根据前端的date属性对菜单项进行排序。它还会按日期升序(如果sortMenusOrderByDescendingtrue,则按日期降序)对date属性值进行排序。日期格式必须符合YYYY-MM-DD或JavaScript Date数据类型。

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

如果此值为 true,则按降序排列菜单项中的项目。只有当 sortMenusByNamesortMenusByFrontmatterOrdertrue时,才会启用此选项。

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

如果该值为true,则如果菜单名称以数字开头,则按数字而不是名称排序。例如,如果您有名为1-a10-a2-a的文件,则常规排序将按名称排序,即['1-a', '10-a', '2-a']。这会导致菜单以非预期的顺序显示,因为10-a优先于2-a

使用此选项,它们按以下顺序排序:['1-a', '2-a', '10-a']

如果您希望按降序排序,则应与sortMenusOrderByDescending选项一起使用。

  • Type: boolean
  • Default: false

如果此值为true,则如果菜单名称以数字开头,则按数字而不是名称排序。此选项与sortMenusOrderNumericallyFromTitle相同,但按链接而不是文件标题排序。因此,它不能与sortMenusOrderNumericallyFromTitle选项一起使用。

如果您希望按降序排序,则应与sortMenusOrderByDescending选项一起使用。

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

设置 frontmatter 的 order 属性未设置时的默认值。该选项仅在 sortMenusByFrontmatterOrdertrue 时启用。

collapsed

  • Type: boolean
  • Default: false

如果未指定collapsed选项(nullundefined),则不使用分组折叠/展开,所有菜单将一次性显示。如果为false,则创建菜单时所有分组都处于展开状态。如果为true,则创建菜单时所有分组都处于折叠状态。

(即使值为true,如果菜单位于折叠组中的文档中,也可能被展开。)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

在指定的深度,菜单组会折叠。指定该选项后,组的折叠/展开将自动启用。顶层文件夹的深度为 1

hyphenToSpace

  • Type: boolean
  • Default: false

如果值为 true,文件名中的-符号将转换为空格并显示为标题。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

underscoreToSpace

  • Type: boolean
  • Default: false

如果值为 true,文件名中的_符号将转换为空格并显示为标题。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

capitalizeFirst

  • Type: boolean
  • Default: false

如果值为 true,菜单名称的第一个字母将强制为大写。当菜单名称通过 Markdown 标题或 frontmatter 导入时,该选项也会受到影响。

capitalizeEachWords

  • Type: boolean
  • Default: false

如果值为 true,则单词的所有首字母大写,并用空格分隔。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

excludeFiles

  • Type: Array<string>
  • Default: []

与文件名(包括扩展名)相对应的文件不会显示在列表中。

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

指定前缀字段名称为true的文档将从菜单中排除。

如果未指定选项或选项值未定义,则忽略该选项。

例如,如果选项值为exclude,则菜单中不会显示内容包含exclude: true的文档。

markdown
---\ntitle: This article is excluded.\nexclude: true\n---\n\n# Article\n\nContent

根据选项的值,您可以使用其他名称,如drafthide等,来代替exclude

excludeFolders

  • Type: Array<string>
  • Default: []

列表中不显示与文件夹名称相对应的文件夹,也不显示文件夹中的任何子项。

includeDotFiles

  • Type: boolean
  • Default: false

通常情况下,如果文件和文件夹名称前有句点(.),它们会被视为隐藏文件,不会在列表中显示。但是,如果此选项为true,则强制在列表中显示所有隐藏文件和文件夹。

includeEmptyFolder

  • Type: boolean
  • Default: false

如果值为true,则还会显示不存在md文件的目录。

includeRootIndexFile

  • Type: boolean
  • Default: false

如果值为true,则还要在侧边栏菜单中包含顶级路径index.md文件。使用includeFolderIndexFile选项还可以包含子项目的索引文件。(如果文件不存在,则忽略它。)

includeFolderIndexFile

  • Type: boolean
  • Default: false

如果值为true,则还要在侧边栏菜单中包含文件夹路径index.md文件。使用includeRootIndexFile选项还可以包含根项目的索引文件。(如果文件不存在,则忽略它。)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

从所有操作完成后显示的菜单项的每个菜单标题中删除特定的前缀。如果您想按文件名中的数字排序,而不使用前缀的排序,并且不希望该数字在菜单中显示,这是理想的选择。

例如,如果默认使用前缀分隔符(.),则以下菜单将重命名为

  • 文件名:1.hello -> 菜单名:hello
  • 文件名:1.1.hello -> 菜单名:1.hello
  • 文件名:1-1.hello -> 菜单名:hello

根据分隔符仅删除一次字母,因此子项(如1.1.)应使用1-1.。或者,您可以在前缀分隔符值上设置正则表达式来绕过它。

可与prefixSeparator选项一起使用。更多信息请参阅该选项的描述。

(注A:前缀仅影响标题,链接将使用文件链接的原始形式)。

(备注B:如果您使用useTitleFromFileHeadinguseTitleFromFrontmatter选项,则忽略此选项)。

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

此选项只能与 removePrefixAfterOrdering 选项结合使用以删除前缀。

从提取的菜单文本中删除指定数量字符(至少一个)的第一部分。例如,如果菜单名称为 1. Text,并且您将 prefixSeparator 值设置为 . ,则结果将仅为 Text

您还可以使用正则表达式。与正则表达式匹配的值将被删除。例如,要删除 2024-01-01-hello 中字符串之前的日期,请将 prefixSeparator 值指定为 /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g。结果为 hello

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

rootGroup 指定整个菜单组,而与目录结构无关。这将使用一个菜单步骤,因此您在使用时应格外小心。如果您不需要 rootGroup 选项,可以将其禁用。如果指定此值,则指定顶级菜单的名称。

  • Type: string
  • Default: null

有关 rootGroup 的更多信息,请参阅 rootGroupText 选项说明。指定此值可指定指向 rootGroup 的链接。如果值为空,则不添加链接。

rootGroupCollapsed

  • Type: boolean
  • Default: null

有关 rootGroup 的更多信息,请参阅 rootGroupText 选项说明。rootGroupCollapsed选项设置是否展开根组的子项。如果指定的默认值为 nullundefined,则不显示展开/折叠按钮。如果该值为 true,子项将以折叠方式显示;如果为 false,子项将以展开方式显示。

此选项仅适用于顶层项目。有关一般项目的折叠性,请参阅 collapsed 选项。

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

如果此值为true,则当存在与文件夹同名的子文件时,将在文件夹中创建一个链接,用于导航至该文件,而该文件不会显示在子项中。

例如,如果您有一个文件夹,如下所示:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

api 文件夹中添加了一个链接,而 api 文件夹中的 api 页面不包含在菜单列表中。点击文件夹中的链接会显示 api/api.md中的文件。

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

此选项仅在特殊情况下使用:当您有重写规则并且存在具有相同文件夹名称的子文件时,请将其与 convertSameNameSubFileToGroupIndexPage 选项并行使用。

如果此值为 true,则在建立文件夹链接时,忽略子项的存在,并仅将链接指定为文件夹路径。

例如,如果您有一个如下所示的文件夹:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

使用 convertSameNameSubFileToGroupIndexPage 选项,单击 guide/api 文件夹菜单将带您进入 guide/api/api,但如果您使用 folderLinkNotIncludesFileName 选项,则链接将为 guide/api/

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

如果此值为 true,则保留标题文本中包含的 Markdown 语法,而不删除它。通常会保留任何高亮或内联代码。无论是否使用此选项,超链接文本都会被移除。

debugPrint

  • Type: boolean
  • Default: false

如果该值为true,则会将执行后创建的对象打印到控制台日志中。如果您配置了多个侧边栏,即使只包含其中一个选项,它也会输出所有侧边栏的结果。

',170)]))}const b=a(r,[["render",i]]);export{f as __pageData,b as default}; diff --git a/assets/zhHans_guide_api.md.BnIfwLNm.lean.js b/assets/zhHans_guide_api.md.BnIfwLNm.lean.js new file mode 100644 index 00000000..066e74aa --- /dev/null +++ b/assets/zhHans_guide_api.md.BnIfwLNm.lean.js @@ -0,0 +1 @@ +import{_ as o}from"./chunks/doc-collapsed-example.CqMUHFlL.js";import{_ as a,c as d,a2 as t,o as l}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"API","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"zhHans/guide/api.md","filePath":"zhHans/guide/api.md","lastUpdated":1725611780000}'),r={name:"zhHans/guide/api.md"};function i(c,e,n,s,p,u){return l(),d("div",null,e[0]||(e[0]=[t('

API

本页介绍 VitePress 侧边栏的所有选项。

@ 快速搜索

解决路径问题分组
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
获取菜单标题获取菜单链接
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
包括/排除菜单标题样式
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
分类杂项
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

文档文件所在的顶级路径。默认值为 /

这是 .vitepress目录所在的路径,如果项目根目录中文档所在的文件夹是 /docs,则该选项的值应设为 docs/docs

text
/\n├─ package.json\n├─ src/\n├─ docs/        <--------------- `documentRootPath` ('/docs')\n│  ├─ .vitepress/        <------ VitePress 配置目录\n│  ├─ another-directory/\n│  ├─ hello.md\n│  └─ index.md\n└─ ...

scanStartPath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

用于扫描文档列表的根目录路径。在documentRootPath中设置的路径中的文件,在scanStartPath中设置的路径之外,不会被扫描。如果您指定了scanStartPath,建议您也设置documentRootPath,因为documentRootPath中设置的父路径应该出现在link中。

例如,如果根路径是/docs,要扫描的文件是/docs/sub-dir/scan-me,则设置如下:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (请勿包含 documentRootPath 的路径。)

resolvePath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

输入路径,为每个路径显示不同的侧边栏。路径前必须包含/。没有此值的选项将设置为根路径(/)。

例如: /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

如果路径因VitePress的重写选项而改变,则可以使用此选项。它替换VitePress中的基本路径。如果此值不存在,则将使用来自resolvePath的值。

useTitleFromFileHeading

  • Type: boolean
  • Default: false

如果值为 true,则显示带有 .md 文件中 h1 标题内容的标题。如果文件中不存在 h1 标题,则显示 Unknown

默认菜单项按文件夹树顺序排序,因此如果您想按更改后的菜单名称重新排序,请将sortMenusByName选项设置为true

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

如果值为true,则根据文件Frontmattertitle的值显示标题。如果无法解析该值,则如果useTitleFromFileHeading选项为true,则从h1标签中获取该值,如果失败,则从文件名中获取该值。

Frontmatter应位于文档顶部,并应如下所示(在 title: 值和标题之间需要留出空格)。

markdown
---\ntitle: Hello World\n---

frontmatterTitleFieldName

  • Type: string
  • Default: title

根据文件中指定的Frontmatter中的键名显示菜单标题。如果指定的值在Frontmatter中不存在,将使用默认的title作为后备。

markdown
---\nname: This is frontmatter title value.\n---

欲了解更多信息,请参阅以下文章: https://vitepress.dev/guide/frontmatter

默认菜单项是按文件夹树顺序排序的,因此如果想按更改后的菜单名称重新排序,请将 sortMenusByName 选项设置为 true

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

如果该值为 true,则使用当前文件夹的 index.md 文件中的信息来获取菜单名称。如果不存在 index.md 文件,则使用文件夹名称。由于我们通常从 index.md 文件中获取 index 名称,因此建议同时使用 useTitleFromFileHeadinguseTitleFromFrontmatter 选项,从该文件的 Markdown 标题或 Frontmatter 中获取标题。

侧边栏菜单会隐藏 index.md 文件,但如果 includeFolderIndexFile 选项为 true,索引文件就会显示在菜单中。

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

如果此值为 true,将指定一个指向文件夹的链接,以便您可以导航到当前文件夹中的 index.md 文件。如果 index.md 文件不存在,则不会创建链接。

侧边栏菜单会隐藏 index.md 文件,但如果 includeFolderIndexFile 选项为 true,则可在菜单中显示索引文件。

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

按文件名(包括扩展名)数组的顺序排序。如果数组中没有与文件名匹配的值,排序优先级将被退回。这适用于文件和目录,同样的排列规则也适用于子目录。

sortMenusByName

  • Type: boolean
  • Default: false

按名称对菜单项中的项目进行排序。通常情况下,文件夹扫描是按名称升序排序的,因此,如果不应用此选项,则应用默认排序,但如果使用useTitleFromFileHeadinguseTitleFromFrontmatter选项,则可能需要按名称重新排序,因为菜单名称已更改。此选项强制按名称排序,即使菜单名称已更改也是如此。

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

如果值为 true,则按菜单项名称中的日期前缀排序。日期格式必须是 YYYY-MM-DD 格式(例如 2024-01-01-menu-name, 2024-01-02.menu-name...)

要删除菜单文本中残留的日期前缀,可以使用 prefixSeparatorremovePrefixAfterOrdering 选项。

默认菜单项是按文件夹树顺序排序的,因此如果想按更改后的菜单名称重新排序,请将 sortMenusByName 选项设置为 true

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

按 frontmatter 的 order 属性对菜单项排序。对于每个文件夹,按 order 属性的值(数字)升序排序,如果 sortMenusOrderByDescending 选项为 true,则按降序排序。如果 order 属性的值不是数字或不存在,则 order 会被判定为 0

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

根据前端的date属性对菜单项进行排序。它还会按日期升序(如果sortMenusOrderByDescendingtrue,则按日期降序)对date属性值进行排序。日期格式必须符合YYYY-MM-DD或JavaScript Date数据类型。

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

如果此值为 true,则按降序排列菜单项中的项目。只有当 sortMenusByNamesortMenusByFrontmatterOrdertrue时,才会启用此选项。

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

如果该值为true,则如果菜单名称以数字开头,则按数字而不是名称排序。例如,如果您有名为1-a10-a2-a的文件,则常规排序将按名称排序,即['1-a', '10-a', '2-a']。这会导致菜单以非预期的顺序显示,因为10-a优先于2-a

使用此选项,它们按以下顺序排序:['1-a', '2-a', '10-a']

如果您希望按降序排序,则应与sortMenusOrderByDescending选项一起使用。

  • Type: boolean
  • Default: false

如果此值为true,则如果菜单名称以数字开头,则按数字而不是名称排序。此选项与sortMenusOrderNumericallyFromTitle相同,但按链接而不是文件标题排序。因此,它不能与sortMenusOrderNumericallyFromTitle选项一起使用。

如果您希望按降序排序,则应与sortMenusOrderByDescending选项一起使用。

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

设置 frontmatter 的 order 属性未设置时的默认值。该选项仅在 sortMenusByFrontmatterOrdertrue 时启用。

collapsed

  • Type: boolean
  • Default: false

如果未指定collapsed选项(nullundefined),则不使用分组折叠/展开,所有菜单将一次性显示。如果为false,则创建菜单时所有分组都处于展开状态。如果为true,则创建菜单时所有分组都处于折叠状态。

(即使值为true,如果菜单位于折叠组中的文档中,也可能被展开。)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

在指定的深度,菜单组会折叠。指定该选项后,组的折叠/展开将自动启用。顶层文件夹的深度为 1

hyphenToSpace

  • Type: boolean
  • Default: false

如果值为 true,文件名中的-符号将转换为空格并显示为标题。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

underscoreToSpace

  • Type: boolean
  • Default: false

如果值为 true,文件名中的_符号将转换为空格并显示为标题。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

capitalizeFirst

  • Type: boolean
  • Default: false

如果值为 true,菜单名称的第一个字母将强制为大写。当菜单名称通过 Markdown 标题或 frontmatter 导入时,该选项也会受到影响。

capitalizeEachWords

  • Type: boolean
  • Default: false

如果值为 true,则单词的所有首字母大写,并用空格分隔。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

excludeFiles

  • Type: Array<string>
  • Default: []

与文件名(包括扩展名)相对应的文件不会显示在列表中。

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

指定前缀字段名称为true的文档将从菜单中排除。

如果未指定选项或选项值未定义,则忽略该选项。

例如,如果选项值为exclude,则菜单中不会显示内容包含exclude: true的文档。

markdown
---\ntitle: This article is excluded.\nexclude: true\n---\n\n# Article\n\nContent

根据选项的值,您可以使用其他名称,如drafthide等,来代替exclude

excludeFolders

  • Type: Array<string>
  • Default: []

列表中不显示与文件夹名称相对应的文件夹,也不显示文件夹中的任何子项。

includeDotFiles

  • Type: boolean
  • Default: false

通常情况下,如果文件和文件夹名称前有句点(.),它们会被视为隐藏文件,不会在列表中显示。但是,如果此选项为true,则强制在列表中显示所有隐藏文件和文件夹。

includeEmptyFolder

  • Type: boolean
  • Default: false

如果值为true,则还会显示不存在md文件的目录。

includeRootIndexFile

  • Type: boolean
  • Default: false

如果值为true,则还要在侧边栏菜单中包含顶级路径index.md文件。使用includeFolderIndexFile选项还可以包含子项目的索引文件。(如果文件不存在,则忽略它。)

includeFolderIndexFile

  • Type: boolean
  • Default: false

如果值为true,则还要在侧边栏菜单中包含文件夹路径index.md文件。使用includeRootIndexFile选项还可以包含根项目的索引文件。(如果文件不存在,则忽略它。)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

从所有操作完成后显示的菜单项的每个菜单标题中删除特定的前缀。如果您想按文件名中的数字排序,而不使用前缀的排序,并且不希望该数字在菜单中显示,这是理想的选择。

例如,如果默认使用前缀分隔符(.),则以下菜单将重命名为

  • 文件名:1.hello -> 菜单名:hello
  • 文件名:1.1.hello -> 菜单名:1.hello
  • 文件名:1-1.hello -> 菜单名:hello

根据分隔符仅删除一次字母,因此子项(如1.1.)应使用1-1.。或者,您可以在前缀分隔符值上设置正则表达式来绕过它。

可与prefixSeparator选项一起使用。更多信息请参阅该选项的描述。

(注A:前缀仅影响标题,链接将使用文件链接的原始形式)。

(备注B:如果您使用useTitleFromFileHeadinguseTitleFromFrontmatter选项,则忽略此选项)。

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

此选项只能与 removePrefixAfterOrdering 选项结合使用以删除前缀。

从提取的菜单文本中删除指定数量字符(至少一个)的第一部分。例如,如果菜单名称为 1. Text,并且您将 prefixSeparator 值设置为 . ,则结果将仅为 Text

您还可以使用正则表达式。与正则表达式匹配的值将被删除。例如,要删除 2024-01-01-hello 中字符串之前的日期,请将 prefixSeparator 值指定为 /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g。结果为 hello

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

rootGroup 指定整个菜单组,而与目录结构无关。这将使用一个菜单步骤,因此您在使用时应格外小心。如果您不需要 rootGroup 选项,可以将其禁用。如果指定此值,则指定顶级菜单的名称。

  • Type: string
  • Default: null

有关 rootGroup 的更多信息,请参阅 rootGroupText 选项说明。指定此值可指定指向 rootGroup 的链接。如果值为空,则不添加链接。

rootGroupCollapsed

  • Type: boolean
  • Default: null

有关 rootGroup 的更多信息,请参阅 rootGroupText 选项说明。rootGroupCollapsed选项设置是否展开根组的子项。如果指定的默认值为 nullundefined,则不显示展开/折叠按钮。如果该值为 true,子项将以折叠方式显示;如果为 false,子项将以展开方式显示。

此选项仅适用于顶层项目。有关一般项目的折叠性,请参阅 collapsed 选项。

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

如果此值为true,则当存在与文件夹同名的子文件时,将在文件夹中创建一个链接,用于导航至该文件,而该文件不会显示在子项中。

例如,如果您有一个文件夹,如下所示:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

api 文件夹中添加了一个链接,而 api 文件夹中的 api 页面不包含在菜单列表中。点击文件夹中的链接会显示 api/api.md中的文件。

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

此选项仅在特殊情况下使用:当您有重写规则并且存在具有相同文件夹名称的子文件时,请将其与 convertSameNameSubFileToGroupIndexPage 选项并行使用。

如果此值为 true,则在建立文件夹链接时,忽略子项的存在,并仅将链接指定为文件夹路径。

例如,如果您有一个如下所示的文件夹:

docs/\n├─ guide/\n│  ├─ api/\n│  │  └─ api.md\n│  ├─ one.md\n│  └─ two.md\n└─ config/\n   └─ index.md

使用 convertSameNameSubFileToGroupIndexPage 选项,单击 guide/api 文件夹菜单将带您进入 guide/api/api,但如果您使用 folderLinkNotIncludesFileName 选项,则链接将为 guide/api/

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

如果此值为 true,则保留标题文本中包含的 Markdown 语法,而不删除它。通常会保留任何高亮或内联代码。无论是否使用此选项,超链接文本都会被移除。

debugPrint

  • Type: boolean
  • Default: false

如果该值为true,则会将执行后创建的对象打印到控制台日志中。如果您配置了多个侧边栏,即使只包含其中一个选项,它也会输出所有侧边栏的结果。

',170)]))}const b=a(r,[["render",i]]);export{f as __pageData,b as default}; diff --git a/assets/zhHans_guide_getting-started.md.C3ScFuII.js b/assets/zhHans_guide_getting-started.md.C3ScFuII.js new file mode 100644 index 00000000..622c7550 --- /dev/null +++ b/assets/zhHans_guide_getting-started.md.C3ScFuII.js @@ -0,0 +1,121 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const g=JSON.parse('{"title":"入门","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"zhHans/guide/getting-started.md","filePath":"zhHans/guide/getting-started.md","lastUpdated":1725681781000}'),l={name:"zhHans/guide/getting-started.md"};function p(t,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

入门

本页面将指导您安装和使用"VitePress Sidebar"模块。

安装

首先,在使用本模块之前,您可能需要预先配置 VitePress

我们建议使用 Node.js 18.x 或更高版本。VitePress Sidebar是用ESM编写的。要在 "CommonJS" 中使用它,请参见此处的说明

您需要使用 NPM 或任何其他 Node 模块包管理器安装该模块。该软件包应安装在 devDependencies 中,因为它仅在开发人员环境中使用。使用下面的命令:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

如何使用

您可以使用 VitePress Sidebar 的 generateSidebar 方法自动生成侧边栏。

该方法会根据给定的根路径(documentRootPath)扫描文件夹,在 VitePress 构建之前找到标记文件,并返回根据文件夹树结构生成的菜单。

首先,用以下两种方法之一导入 vitepress-sidebar

1. 使用命名导入

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. 使用默认导入

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

使用.vitepress/config.js文件中themeConfig.sidebar属性中的generateSidebar方法,该文件是VitePress的配置文件。VitePress 的配置文件可能有不同的文件名或扩展名,这取决于您的项目设置。

要测试输出结果如何,请尝试在将 debugPrint 选项设置为 true的情况下构建 VitePress。你应该能在控制台中看到输出结果。

有关generateSidebar配置的更多信息,请参阅下面的 API 部分。

代码示例

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * 有关详细说明,请参阅下面的链接:
+       * https://vitepress-sidebar.cdget.com/zhHans/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

输出示例

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/
`,22)]))}const o=i(l,[["render",p]]);export{g as __pageData,o as default}; diff --git a/assets/zhHans_guide_getting-started.md.C3ScFuII.lean.js b/assets/zhHans_guide_getting-started.md.C3ScFuII.lean.js new file mode 100644 index 00000000..622c7550 --- /dev/null +++ b/assets/zhHans_guide_getting-started.md.C3ScFuII.lean.js @@ -0,0 +1,121 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.Gf1jShja.js";const g=JSON.parse('{"title":"入门","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"zhHans/guide/getting-started.md","filePath":"zhHans/guide/getting-started.md","lastUpdated":1725681781000}'),l={name:"zhHans/guide/getting-started.md"};function p(t,s,h,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

入门

本页面将指导您安装和使用"VitePress Sidebar"模块。

安装

首先,在使用本模块之前,您可能需要预先配置 VitePress

我们建议使用 Node.js 18.x 或更高版本。VitePress Sidebar是用ESM编写的。要在 "CommonJS" 中使用它,请参见此处的说明

您需要使用 NPM 或任何其他 Node 模块包管理器安装该模块。该软件包应安装在 devDependencies 中,因为它仅在开发人员环境中使用。使用下面的命令:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

如何使用

您可以使用 VitePress Sidebar 的 generateSidebar 方法自动生成侧边栏。

该方法会根据给定的根路径(documentRootPath)扫描文件夹,在 VitePress 构建之前找到标记文件,并返回根据文件夹树结构生成的菜单。

首先,用以下两种方法之一导入 vitepress-sidebar

1. 使用命名导入

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. 使用默认导入

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

使用.vitepress/config.js文件中themeConfig.sidebar属性中的generateSidebar方法,该文件是VitePress的配置文件。VitePress 的配置文件可能有不同的文件名或扩展名,这取决于您的项目设置。

要测试输出结果如何,请尝试在将 debugPrint 选项设置为 true的情况下构建 VitePress。你应该能在控制台中看到输出结果。

有关generateSidebar配置的更多信息,请参阅下面的 API 部分。

代码示例

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * 有关详细说明,请参阅下面的链接:
+       * https://vitepress-sidebar.cdget.com/zhHans/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

输出示例

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/
`,22)]))}const o=i(l,[["render",p]]);export{g as __pageData,o as default}; diff --git a/assets/zhHans_guide_index.md.DtFUGJau.js b/assets/zhHans_guide_index.md.DtFUGJau.js new file mode 100644 index 00000000..a2cac740 --- /dev/null +++ b/assets/zhHans_guide_index.md.DtFUGJau.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"指南","description":"","frontmatter":{"title":"指南"},"headers":[],"relativePath":"zhHans/guide/index.md","filePath":"zhHans/guide/index.md","lastUpdated":1725611780000}'),n={name:"zhHans/guide/index.md"};function s(d,i,r,o,c,p){return a(),t("div")}const m=e(n,[["render",s]]);export{l as __pageData,m as default}; diff --git a/assets/zhHans_guide_index.md.DtFUGJau.lean.js b/assets/zhHans_guide_index.md.DtFUGJau.lean.js new file mode 100644 index 00000000..a2cac740 --- /dev/null +++ b/assets/zhHans_guide_index.md.DtFUGJau.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.Gf1jShja.js";const l=JSON.parse('{"title":"指南","description":"","frontmatter":{"title":"指南"},"headers":[],"relativePath":"zhHans/guide/index.md","filePath":"zhHans/guide/index.md","lastUpdated":1725611780000}'),n={name:"zhHans/guide/index.md"};function s(d,i,r,o,c,p){return a(),t("div")}const m=e(n,[["render",s]]);export{l as __pageData,m as default}; diff --git a/assets/zhHans_index.md.wnbYp8zV.js b/assets/zhHans_index.md.wnbYp8zV.js new file mode 100644 index 00000000..a615ec83 --- /dev/null +++ b/assets/zhHans_index.md.wnbYp8zV.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"VitePress Sidebar","titleTemplate":"功能强大的自动侧边栏生成器","description":"","frontmatter":{"layout":"home","title":"VitePress Sidebar","titleTemplate":"功能强大的自动侧边栏生成器","hero":{"name":"VitePress Sidebar","text":"功能强大的自动侧边栏生成器","tagline":"VitePress自动侧边栏插件,可自动创建一个简单的配置","actions":[{"theme":"brand","text":"入门","link":"/zhHans/guide/getting-started"},{"theme":"alt","text":"API","link":"/zhHans/guide/api"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/vitepress-sidebar"}],"image":{"src":"/sidebar.png","alt":"Sidebar"}},"features":[{"icon":"","title":"与 VitePress 的最佳搭配","details":"针对最新版本的VitePress进行了优化。"},{"icon":"","title":"轻松配置细粒度侧边栏","details":"简单易用,大量选项可按你的喜好自定义。自定义菜单可用于排序、特殊字符转换、文件和文件夹过滤器等!"},{"icon":"","title":"可广泛扩展的用例","details":"支持多个侧边栏、Frontmatter 和 TypeScript,以处理各种使用情况。"},{"icon":"","title":"可靠的维护支持","details":"我们的下载量超过 2K+,在现实世界中有许多使用案例,而且我们拥有快速的技术支持。"}]},"headers":[],"relativePath":"zhHans/index.md","filePath":"zhHans/index.md","lastUpdated":1725611780000}'),l={name:"zhHans/index.md"};function i(n,s,p,r,f,a){return e(),t("div")}const g=o(l,[["render",i]]);export{d as __pageData,g as default}; diff --git a/assets/zhHans_index.md.wnbYp8zV.lean.js b/assets/zhHans_index.md.wnbYp8zV.lean.js new file mode 100644 index 00000000..a615ec83 --- /dev/null +++ b/assets/zhHans_index.md.wnbYp8zV.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"VitePress Sidebar","titleTemplate":"功能强大的自动侧边栏生成器","description":"","frontmatter":{"layout":"home","title":"VitePress Sidebar","titleTemplate":"功能强大的自动侧边栏生成器","hero":{"name":"VitePress Sidebar","text":"功能强大的自动侧边栏生成器","tagline":"VitePress自动侧边栏插件,可自动创建一个简单的配置","actions":[{"theme":"brand","text":"入门","link":"/zhHans/guide/getting-started"},{"theme":"alt","text":"API","link":"/zhHans/guide/api"},{"theme":"alt","text":"GitHub","link":"https://github.com/jooy2/vitepress-sidebar"}],"image":{"src":"/sidebar.png","alt":"Sidebar"}},"features":[{"icon":"","title":"与 VitePress 的最佳搭配","details":"针对最新版本的VitePress进行了优化。"},{"icon":"","title":"轻松配置细粒度侧边栏","details":"简单易用,大量选项可按你的喜好自定义。自定义菜单可用于排序、特殊字符转换、文件和文件夹过滤器等!"},{"icon":"","title":"可广泛扩展的用例","details":"支持多个侧边栏、Frontmatter 和 TypeScript,以处理各种使用情况。"},{"icon":"","title":"可靠的维护支持","details":"我们的下载量超过 2K+,在现实世界中有许多使用案例,而且我们拥有快速的技术支持。"}]},"headers":[],"relativePath":"zhHans/index.md","filePath":"zhHans/index.md","lastUpdated":1725611780000}'),l={name:"zhHans/index.md"};function i(n,s,p,r,f,a){return e(),t("div")}const g=o(l,[["render",i]]);export{d as __pageData,g as default}; diff --git a/assets/zhHans_introduction.md.DfrRTf8r.js b/assets/zhHans_introduction.md.DfrRTf8r.js new file mode 100644 index 00000000..10fdf66d --- /dev/null +++ b/assets/zhHans_introduction.md.DfrRTf8r.js @@ -0,0 +1 @@ +import{_ as t,c as r,a2 as a,o as s}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"导言","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/introduction.md","filePath":"zhHans/introduction.md","lastUpdated":1725611780000}'),i={name:"zhHans/introduction.md"};function n(o,e,l,d,p,h){return s(),r("div",null,e[0]||(e[0]=[a('

导言

VitePress SidebarVitePress 的一个插件,可通过简单的设置自动配置和管理页面的侧边栏。

  • ⚡️ 针对最新版VitePress进行了优化
  • ⚡️ 易于使用,有很多选项可根据自己的喜好进行定制
  • ⚡️ 轻量级捆绑文件大小,零依赖
  • ⚡️ 支持 多个侧边栏
  • ⚡️ 支持Frontmatter
  • ⚡️ 支持TypeScript
  • ⚡️ 自定义分类、特殊字符转换、文件和文件夹过滤器等菜单!

实际用途

VitePress侧边栏用于各种项目环境,包括我自己的网络服务。

',6)]))}const u=t(i,[["render",n]]);export{f as __pageData,u as default}; diff --git a/assets/zhHans_introduction.md.DfrRTf8r.lean.js b/assets/zhHans_introduction.md.DfrRTf8r.lean.js new file mode 100644 index 00000000..10fdf66d --- /dev/null +++ b/assets/zhHans_introduction.md.DfrRTf8r.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,a2 as a,o as s}from"./chunks/framework.Gf1jShja.js";const f=JSON.parse('{"title":"导言","description":"","frontmatter":{},"headers":[],"relativePath":"zhHans/introduction.md","filePath":"zhHans/introduction.md","lastUpdated":1725611780000}'),i={name:"zhHans/introduction.md"};function n(o,e,l,d,p,h){return s(),r("div",null,e[0]||(e[0]=[a('

导言

VitePress SidebarVitePress 的一个插件,可通过简单的设置自动配置和管理页面的侧边栏。

  • ⚡️ 针对最新版VitePress进行了优化
  • ⚡️ 易于使用,有很多选项可根据自己的喜好进行定制
  • ⚡️ 轻量级捆绑文件大小,零依赖
  • ⚡️ 支持 多个侧边栏
  • ⚡️ 支持Frontmatter
  • ⚡️ 支持TypeScript
  • ⚡️ 自定义分类、特殊字符转换、文件和文件夹过滤器等菜单!

实际用途

VitePress侧边栏用于各种项目环境,包括我自己的网络服务。

',6)]))}const u=t(i,[["render",n]]);export{f as __pageData,u as default}; diff --git a/assets/zhHans_troubleshooting_err-require-esm.md.CUz0KWMD.js b/assets/zhHans_troubleshooting_err-require-esm.md.CUz0KWMD.js new file mode 100644 index 00000000..59788232 --- /dev/null +++ b/assets/zhHans_troubleshooting_err-require-esm.md.CUz0KWMD.js @@ -0,0 +1,10 @@ +import{_ as i,c as a,a2 as e,o as n}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"CommonJS: ERR_REQUIRE_ESM","description":"","frontmatter":{"title":"CommonJS: ERR_REQUIRE_ESM"},"headers":[],"relativePath":"zhHans/troubleshooting/err-require-esm.md","filePath":"zhHans/troubleshooting/err-require-esm.md","lastUpdated":1725681781000}'),t={name:"zhHans/troubleshooting/err-require-esm.md"};function h(r,s,l,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebar是一个ESM模块。如果您的项目使用CJS,则需要将其转换为ESM模块。

如需了解ESM模块的更多信息,请参阅以下内容:https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

为解决这些问题,有以下几种解决方案:

解决方案 A

如果您想在 CJS 项目中使用该模块,请将文件扩展名从.js 改为 .mjs,然后再试一次。您可以为特定文件定义模块脚本。

解决方案 B

package.json文件中,添加"type":"module"行。这可能需要将项目转换为 ESM 项目。

json5
{
+  name: 'docs',
+  type: 'module', // <-- 添加此内容
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}
`,9)]))}const c=i(t,[["render",h]]);export{d as __pageData,c as default}; diff --git a/assets/zhHans_troubleshooting_err-require-esm.md.CUz0KWMD.lean.js b/assets/zhHans_troubleshooting_err-require-esm.md.CUz0KWMD.lean.js new file mode 100644 index 00000000..59788232 --- /dev/null +++ b/assets/zhHans_troubleshooting_err-require-esm.md.CUz0KWMD.lean.js @@ -0,0 +1,10 @@ +import{_ as i,c as a,a2 as e,o as n}from"./chunks/framework.Gf1jShja.js";const d=JSON.parse('{"title":"CommonJS: ERR_REQUIRE_ESM","description":"","frontmatter":{"title":"CommonJS: ERR_REQUIRE_ESM"},"headers":[],"relativePath":"zhHans/troubleshooting/err-require-esm.md","filePath":"zhHans/troubleshooting/err-require-esm.md","lastUpdated":1725681781000}'),t={name:"zhHans/troubleshooting/err-require-esm.md"};function h(r,s,l,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebar是一个ESM模块。如果您的项目使用CJS,则需要将其转换为ESM模块。

如需了解ESM模块的更多信息,请参阅以下内容:https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

为解决这些问题,有以下几种解决方案:

解决方案 A

如果您想在 CJS 项目中使用该模块,请将文件扩展名从.js 改为 .mjs,然后再试一次。您可以为特定文件定义模块脚本。

解决方案 B

package.json文件中,添加"type":"module"行。这可能需要将项目转换为 ESM 项目。

json5
{
+  name: 'docs',
+  type: 'module', // <-- 添加此内容
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}
`,9)]))}const c=i(t,[["render",h]]);export{d as __pageData,c as default}; diff --git a/assets/zhHans_troubleshooting_index.md.BqUeKVy8.js b/assets/zhHans_troubleshooting_index.md.BqUeKVy8.js new file mode 100644 index 00000000..b04b6245 --- /dev/null +++ b/assets/zhHans_troubleshooting_index.md.BqUeKVy8.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.Gf1jShja.js";const _=JSON.parse('{"title":"故障排除","description":"","frontmatter":{"title":"故障排除"},"headers":[],"relativePath":"zhHans/troubleshooting/index.md","filePath":"zhHans/troubleshooting/index.md","lastUpdated":1725611780000}'),a={name:"zhHans/troubleshooting/index.md"};function n(s,r,i,d,c,l){return o(),t("div")}const h=e(a,[["render",n]]);export{_ as __pageData,h as default}; diff --git a/assets/zhHans_troubleshooting_index.md.BqUeKVy8.lean.js b/assets/zhHans_troubleshooting_index.md.BqUeKVy8.lean.js new file mode 100644 index 00000000..b04b6245 --- /dev/null +++ b/assets/zhHans_troubleshooting_index.md.BqUeKVy8.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.Gf1jShja.js";const _=JSON.parse('{"title":"故障排除","description":"","frontmatter":{"title":"故障排除"},"headers":[],"relativePath":"zhHans/troubleshooting/index.md","filePath":"zhHans/troubleshooting/index.md","lastUpdated":1725611780000}'),a={name:"zhHans/troubleshooting/index.md"};function n(s,r,i,d,c,l){return o(),t("div")}const h=e(a,[["render",n]]);export{_ as __pageData,h as default}; diff --git a/changelog.html b/changelog.html new file mode 100644 index 00000000..484036b5 --- /dev/null +++ b/changelog.html @@ -0,0 +1,27 @@ + + + + + + Changelog | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Changelog

1.25.3 (2024-09-03)

  • If convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile options are defined together, try with title from index file when title is not fetched (#170)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

  • Fix convertSameNameSubFileToGroupIndexPage to get the name normally if subfile doesn't exist when set
  • Use the title of the index file if convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile are defined together (#170)

1.25.1 (2024-09-03)

  • BREAKING CHANGES: The Options type for TypeScript has been renamed to VitePressSidebarOptions.
  • Fix to avoid converting non-first letter items to lowercase when using capitalizeEachWords
  • Support for specifying sidebar option types for TypeScript
  • Documentation page domain now changed to vitepress-sidebar.cdget.com!
  • Korean documentation support

1.25.0 (2024-08-22)

  • Add basePath option
  • Fix incorrect directory path when using rewrite and convertSameNameSubFileToGroupIndexPage option. (#146)

1.24.2 (2024-08-13)

  • Fix index link is blank in multiple sidebars (#167)

1.24.1 (2024-07-31)

  • If a link exists in the directory, it will appear in the menu regardless of the option
  • Fix do not include index link when index.md file is shown (#147)
  • More precise argument checking

1.24.0 (2024-07-06)

  • Add frontmatterTitleFieldName option. When used with useTitleFromFrontmatter, the text field of sidebar will extract from the value of frontmatterTitleFieldName instead of default title field if it exists. (@liudonghua123)

1.23.2 (2024-05-16)

  • Revert 5ed188e. do not warn 'use option together'

1.23.1 (2024-05-15)

  • Warning against using the removePrefixAfterOrdering option and the useTitleFrom option together
  • Fix to return full filename if separator is not present in filename when using removePrefixAfterOrdering option

1.23.0 (2024-05-13)

  • BREAKING CHANGES: The excludeFilesByFrontmatter option is deprecated and replaced by the excludeFilesByFrontmatterFieldName option. You can now specify any field name you want, including Frontmatter's exclude field name, and documents will be excluded from the menu when that field value is true. Existing users should work fine with the following settings excludeFilesByFrontmatterFieldName: 'exclude'. For more information, see the documentation.
  • Allow empty values or empty object options to be passed in

1.22.0 (2024-03-28)

  • prefixSeparator now accepts regular expressions
  • Add sortMenusByFileDatePrefix option

1.21.0 (2024-03-15)

  • Add removePrefixAfterOrdering and prefixSeparator option
  • Documentation enhancements

1.20.0 (2024-03-12)

  • BREAKING CHANGES: The sortMenusOrderNumerically option has been split into the sortMenusOrderNumericallyFromTitle and sortMenusOrderNumericallyFromLink options. Therefore, the old option is deprecated. Renamed to allow you to sort by file title or link. For more information, see README.md.
  • Add sortMenusByFrontmatterDate option
  • Add sortMenusOrderNumericallyFromLink option
  • In useFolderLinkFromIndexFile, show the path to index.md together
  • Fix folders with only an index file are not recognized as empty

1.19.0 (2024-02-26)

  • Add excludeFilesByFrontmatter option (@aslafy-z)

1.18.6 (2024-01-03)

  • Fix typescript issue

1.18.5 (2023-12-11)

  • Add frontmatterOrderDefaultValue option (@aslafy-z)
  • Fix recursive sort of items (@aslafy-z)
  • Retrieve ordering for top level folder indexes (@aslafy-z)

1.18.0 (2023-10-02)

  • Add capitalizeEachWords option
  • The option to modify menu names is also reflected correctly when pulling names from MarkDown heading, frontmatter.

1.17.0 (2023-09-26)

  • Add sortMenusOrderNumerically option

1.16.5 (2023-09-22)

  • Fix nested links being created in multiple sidebars

1.16.0 (2023-09-21)

  • BREAKING CHANGES: The useIndexFileForFolderMenuInfo option has been split into the useFolderTitleFromIndexFile and useFolderLinkFromIndexFile options. Therefore, the old option is deprecated. You can now specify whether the folder menu should get its name and link from the index.md file, respectively. For more information, see README.md.
  • Make sure the link to the index page is clearly marked (e.g., folder/ instead of folder/index).

1.15.0 (2023-09-19)

  • Fix correct base url for multiple sidebars
  • The rootGroupText, rootGroupLink, and rootGroupCollapsed options are available again. However, these options are no longer required.

1.14.0 (2023-09-18)

  • NOTE: The options rootGroupText, rootGroupLink, and rootGroupCollapsed are not available in this version. Please update to the latest version. These options have been restored!
  • Use a better algorithm for stripping formatting from titles that contain Markdown syntax

1.13.0 (2023-09-13)

  • BREAKING CHANGES: The generator normally strips some of the Markdown syntax when using useTitleFromFileHeading. If you do not want to remove Markdown syntax, set the keepMarkdownSyntaxFromTitle option to true.
  • Add debugPrint option
  • Add keepMarkdownSyntaxFromTitle option
  • Improved test example files

1.12.0 (2023-09-12)

  • Add sortMenusByFrontmatterOrder option

1.11.0 (2023-08-24)

  • BREAKING CHANGES: useFolderLinkAsIndexPage option was renamed to useIndexFileForFolderMenuInfo
  • BREAKING CHANGES: sortByFileName option was renamed to manualSortFileNameByPriority
  • BREAKING CHANGES: The useFolderLinkAsIndexPage option now also gets the title information of the index.md file, so the name of the folder menu is set to the title of the index.md file
  • The useFolderLinkAsIndexPage option, if the index file (index.md) does not exist, will display it without setting a link, replacing the name with the folder name
  • Add sortMenusByName and sortMenusOrderByDescending options
  • Added deprecated warning for changed option names

1.10.1 (2023-08-08)

  • Fixed issue with rootGroupCollapsed option not being applied correctly

1.10.0 (2023-07-25)

  • Add includeFolderIndexFile option
  • Add useFolderLinkAsIndexPage option

1.9.5 (2023-07-25)

  • Troubleshooting when links are not prefixed with /
  • Allow null or undefined value for collapsed options

1.9.0 (2023-07-24)

  • Add rootGroupCollapsed option. This option is separate from the collapsed option and allows you to set whether the RootGroup (the item displayed in the Table of Contents) is expanded or not. See README.md for more information.
  • Correct behavior of collapseDepth

1.8.2 (2023-07-18)

  • Remove unnecessary files
  • Upgrade package dependencies
  • Update README.md

1.8.1 (2023-06-15)

  • Make sure to apply multi-sidebar settings for settings containing resolvePath

1.8.0 (2023-06-13)

  • BREAKING CHANGES: The root option was renamed to documentRootPath.
  • Support for multiple sidebars (Add scanStartPath and resolvePath option. Please read README.md file.)
  • Improved multiple validation checks
  • Improved Frontmatter inspections with special characters or newlines

1.7.5 (2023-05-28)

  • Add folderLinkNotIncludesFileName option

1.7.0 (2023-05-28)

  • BREAKING CHANGES: The withIndex option was renamed to includeRootIndexFile.
  • BREAKING CHANGES: The includeEmptyGroup option was renamed to includeEmptyFolder.
  • Add excludeFiles option
  • Add excludeFolders option
  • Add includeDotFiles option
  • Parsing markdown h1 tag and frontmatter correctly

1.6.5 (2023-05-27)

  • Fix convertSameNameSubFileToGroupIndexPage and rename option not working together

1.6.0 (2023-05-27)

  • BREAKING CHANGES: The default value for hyphenToSpace is now false.
  • Add convertSameNameSubFileToGroupIndexPage option: If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.
  • Fixed issue with hyphenToSpace and underscoreToSpace options not being applied to directories
  • Add rootGroupLink option

1.5.1 (2023-05-26)

  • Add .mocharc.json, remove tsconfig.prod.json file in .npmignore

1.5.0 (2023-05-26)

  • Add useTitleFromFrontmatter option. See README.md.
  • useTitleFromFileHeading: Use only valid title values in titles that contain links

1.4.0 (2023-05-26)

  • Fix TypeScript lint error
  • Upgrade package dependencies

1.3.1 (2023-04-20)

  • Fix build issue

1.3.0 (2023-04-20)

  • Upgrade package dependencies
  • Cleanup codes and update documentation

1.2.0 (2023-02-07)

  • BREAKING CHANGES: The collapsible option has been removed by VitePress 1.0.0-alpha.44 breaking changes. See: https://vitepress.vuejs.org/config/theme-configs
    • If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.
  • Upgrade package dependencies

1.1.5 (2023-01-12)

  • Remove CODE_OF_CONDUCT.md for npm release

1.1.4 (2023-01-12)

  • Upgrade package dependencies

1.1.3 (2022-12-08)

  • Upgrade package dependencies
  • Add includeEmptyGroup option
  • Do not include empty group by default

1.1.2 (2022-11-23)

  • Upgrade package dependencies
  • Fix README.md and codes indent

1.1.1 (2022-11-02)

  • Fix capitalizeFirst bug

1.1.0 (2022-11-02)

  • Add capitalizeFirst option
  • Fix null check for option

1.0.9 (2022-11-02)

  • Add sortByFileName option

1.0.8 (2022-11-02)

  • Add collapseDepth option
  • Fix correct import fs module
  • Upgrade package dependencies

1.0.7 (2022-10-31)

  • Fix execution order and cleanup codes
  • Add .editorconfig file and reformat codes (Development only)

1.0.6 (2022-10-31)

  • Add useTitleFromFileHeading option
  • Upgrade package dependencies

1.0.5 (2022-10-27)

  • Change require NodeJS version to 14
  • Add mocha test (Development only)

1.0.4 (2022-10-25)

  • First production release

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

  • Alpha release (Not tested. Do not use production.)

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/doc-collapsed-example.png b/doc-collapsed-example.png new file mode 100644 index 00000000..bc4953f7 Binary files /dev/null and b/doc-collapsed-example.png differ diff --git a/doc-multi-level-docs-after.png b/doc-multi-level-docs-after.png new file mode 100644 index 00000000..78541d22 Binary files /dev/null and b/doc-multi-level-docs-after.png differ diff --git a/doc-multi-level-docs-before.png b/doc-multi-level-docs-before.png new file mode 100644 index 00000000..94e6d01a Binary files /dev/null and b/doc-multi-level-docs-before.png differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..548f8828 Binary files /dev/null and b/favicon.ico differ diff --git a/guide/api.html b/guide/api.html new file mode 100644 index 00000000..f383ab7b --- /dev/null +++ b/guide/api.html @@ -0,0 +1,61 @@ + + + + + + API | VitePress Sidebar + + + + + + + + + + + + + + + + + +
Skip to content

API

This page describes all the options in the VitePress Sidebar.

Resolving PathsGrouping
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
Getting Menu TitleGetting Menu Link
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
Include/ExcludeStyling Menu Title
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
SortingMisc
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

The top-level path where documentation files are located. The default value is /.

This is the path where the .vitepress directory is located, and if the folder where the documentation is located in the project root is /docs, then the value of this option should be set to docs or /docs.

text
/
+├─ package.json
+├─ src/
+├─ docs/        <--------------- `documentRootPath` ('/docs')
+│  ├─ .vitepress/        <------ VitePress config directory
+│  ├─ another-directory/
+│  ├─ hello.md
+│  └─ index.md
+└─ ...

scanStartPath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

The path to the root directory to scan for document lists. Files in the path set in documentRootPath outside the path set in scanStartPath will not be scanned. It is recommended that you also set documentRootPath if you specify scanStartPath because the parent path set in documentRootPath should appear in the link.

For example, if the root path is /docs and the document to be scanned is /docs/sub-dir/scan-me, the setting would look like this:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (Do not include the path to documentRootPath.)

resolvePath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

Enter the path to the section to display a different sidebar for each path. The path must contain / before it. Options without this value will be set to the root section (/).

e.g. /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

This option is used to configure multiple sidebars. You can learn more on the Multiple sidebars page.

This option can be utilized if the path has changed due to VitePress's rewrite option. It replaces the base path in VitePress. If this value does not exist, it will use the value from resolvePath instead.

useTitleFromFileHeading

  • Type: boolean
  • Default: false

If the value is true, display the title with the h1 heading content of the .md file. If the h1 heading does not exist in the file, it displays Unknown.

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

If the value is true, display the title based on the value of title in Frontmatter in the file. If this value cannot be parsed, it will be taken from the h1 tag if the useTitleFromFileHeading option is true, and from the filename if that fails.

The Frontmatter should be located at the top of the document, and should look like this (Space is required between the title: value and the title.)

markdown
---
+title: Hello World
+---

frontmatterTitleFieldName

  • Type: string
  • Default: title

Displays the menu title based on the key name in Frontmatter specified in the file. If the specified value does not exist in Frontmatter, the default title will be used as a fallback.

markdown
---
+name: This is frontmatter title value.
+---

For more information, see the following articles: https://vitepress.dev/guide/frontmatter

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

If this value is true, use the information in the current folder's index.md file to get the menu name. If the index.md file does not exist, the folder name is used. Since we typically get the name index from the index.md file, we recommend using the useTitleFromFileHeading or useTitleFromFrontmatter options together to get the title from the Markdown header or Frontmatter of that file.

The index.md file is hidden from the sidebar menu, but the index file can be shown in the menu if the includeFolderIndexFile option is true.

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

If this value is true, specifies a link to the folder so that you can navigate to the index.md file in the current folder. If the index.md file does not exist, no link is created.

The index.md file is hidden from the sidebar menu, but the index file can be shown in the menu if the includeFolderIndexFile option is true.

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

Sort by an array of file names (including extensions) in order. If there is no value in the array that matches the filename, the sort priority is sent back. This applies to both files and directories, and the same arrangement rules apply to subdirectories as well.

sortMenusByName

  • Type: boolean
  • Default: false

Sort the items in the menu item by name. Normally, folder scans are done with an ascending name sort, so the default sort is applied without this option applied, but if you use the useTitleFromFileHeading or useTitleFromFrontmatter options, you may need to re-sort by name because the menu name changes. This option forces sorting by name even for changed menu names.

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

If the value is true, sorts by date prefix in the name of the menu item. The date format must be in the form YYYY-MM-DD (e.g. 2024-01-01-menu-name, 2024-01-02.menu-name...)

To remove date prefixes that remain in the menu text afterward, you can utilize the prefixSeparator and removePrefixAfterOrdering options.

The default menu items are sorted in folder tree order, so set the sortMenusByName option to true if you want to re-sort by the changed menu name.

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

Sorts the menu items by the order property of the frontmatter. For each folder, sorts the value (number) of the order property in ascending order, or descending order if the sortMenusOrderByDescending option is true. If the value of order is non-numeric or does not exist, order is judged to be 0.

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

Sorts the menu items by the date property of the frontmatter. It also sorts the date property values in ascending order by oldest date (or descending order if the sortMenusOrderByDescending option is true) The date format must match YYYY-MM-DD or the JavaScript Date data type.

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

If this value is true, sorts the items in the menu item in descending order. This option is only enabled when sortMenusByName or sortMenusByFrontmatterOrder is true.

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

If this value is true, If a menu name contains a number at the beginning, it is sorted by the lower number, not the name. For example, if you have files named 1-a, 10-a, and 2-a, a normal sort would sort by name, ['1-a', '10-a', '2-a']. This causes the menu to display in an unintended order because 10-a takes precedence over 2-a.

With this option, they are sorted as follows: ['1-a', '2-a', '10-a']

It should be used with the sortMenusOrderByDescending option if you want a descending sort.

  • Type: boolean
  • Default: false

If this value is true, If a menu name contains a number at the beginning, it is sorted by the lower number, not the name. This option is the same as sortMenusOrderNumericallyFromTitle, but sorts by links instead of file titles. Therefore, it cannot be used with the sortMenusOrderNumericallyFromTitle option.

It should be used with the sortMenusOrderByDescending option if you want a descending sort.

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

Sets the default value for the order property of the frontmatter when not set. This option is only enabled when sortMenusByFrontmatterOrder is true.

collapsed

  • Type: boolean
  • Default: false

If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.

(Even if the value is true, the menu may be expanded if it is located in a document within a collapsed group.)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

At the specified depth, the menu group is made collapsed. When this option is specified, group collapsing/expanding is automatically enabled. The depth of the top-level folder is 1.

hyphenToSpace

  • Type: boolean
  • Default: false

If the value is true, the - symbol included in the file name is converted to a space and displayed as a title. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

underscoreToSpace

  • Type: boolean
  • Default: false

If the value is true, the _ symbol included in the file name is converted to a space and displayed as a title. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

capitalizeFirst

  • Type: boolean
  • Default: false

If the value is true, the first letter of the menu name is forced to uppercase. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

capitalizeEachWords

  • Type: boolean
  • Default: false

If the value is true, Capitalize all first letters of words separated by spaces. This option is also affected when the menu name is imported via a MarkDown heading or frontmatter.

excludeFiles

  • Type: Array<string>
  • Default: []

Files that correspond to an array of file names (including extensions) are not shown in the list.

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

Documents with the value of the specified frontmatter field name set to true are excluded from the menu.

If no option is specified or the option value is undefined, it is ignored.

For example, if the option value is exclude, documents whose content contains exclude: true are not displayed in the menu.

markdown
---
+title: This article is excluded.
+exclude: true
+---
+
+# Article
+
+Content

Depending on the value of this option, you can use other names like draft, hide, etc. instead of exclude.

excludeFolders

  • Type: Array<string>
  • Default: []

Folders that correspond to an array of folder names are not shown in the list, and any sub-items within a folder are also not shown.

includeDotFiles

  • Type: boolean
  • Default: false

Normally, if file and folder names contain a dot (.) in front of them, they are considered hidden and not shown in the list. However, if this option is true, it forces all hidden files and folders to be shown in the list.

includeEmptyFolder

  • Type: boolean
  • Default: false

If the value is true, also displays directories where no md file exists as a group.

includeRootIndexFile

  • Type: boolean
  • Default: false

If the value is true, also include the top-level path index.md file in the sidebar menu. Use the includeFolderIndexFile option to include the index file of the child items as well. (If the file does not exist, it is ignored.)

includeFolderIndexFile

  • Type: boolean
  • Default: false

If the value is true, also include the folder path index.md file in the sidebar menu. Use the includeRootIndexFile option to include the index file of the root item as well. (If the file does not exist, it is ignored.)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

Removes a specific prefix from each menu title from the menu items that appear after everything is done. This is ideal if you want to sort by the number in the filename without using frontmatter's sorting, and you don't want that number to be visible in the menu.

For example, if prefixSeparator is the default (.), the following menus will be renamed as follows:

  • File name: 1.hello -> Menu name: hello
  • File name: 1.1.hello -> Menu name: 1.hello
  • File name: 1-1.hello -> Menu name: hello

Removes letters only once based on the separator, so a child item like 1.1. should be used like 1-1.. Alternatively, you can set a regular expression on the prefixSeparator value to work around it.

Can be used with the prefixSeparator option. See that option's description for more information.

(Note A: prefix only affects the title, the link will use the file link as it is).

(Note B: This option is ignored if you use the useTitleFromFileHeading or useTitleFromFrontmatter options).

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

This option can only be used in conjunction with the removePrefixAfterOrdering option to remove the prefix.

Removes the first part of a specified number of characters (at least one) from the extracted menu text. For example, if the menu name is 1. Text, and you set the prefixSeparator value to . , the result will be just Text.

You can also use regular expressions. Values matching the regular expression are removed. For example, to remove the date before the string in 2024-01-01-hello, specify the prefixSeparator value as /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g. The result is hello.

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

rootGroup specifies the entire group for the menu, regardless of directory structure. This uses one menu step, so you should be careful about using it, and you can disable the rootGroup option if you don't need it. If you specify this value, you specify a name for the top-level menu.

  • Type: string
  • Default: null

For more information about rootGroup, see the rootGroupText option description. Specifying this value specifies a link to the rootGroup. If the value is empty, no link is added.

rootGroupCollapsed

  • Type: boolean
  • Default: null

For more information about rootGroup, see the rootGroupText option description. The rootGroupCollapsed option sets whether child items of the root group are expanded or not. If specified with the default value of null or undefined, the expand/collapse button is not displayed. If the value is true, the child items are displayed collapsed, and if false, they are expanded.

This option only applies to top-level item. For general item collapsibility, see the collapsed option.

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.

For example, if you have a folder that looks like this:

docs/
+├─ guide/
+│  ├─ api/
+│  │  └─ api.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   └─ index.md

A link is added to the api folder, and the api page in the api folder is not included in the menu listing. Clicking the link in the folder displays the file in api/api.md.

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

This option is only used in special cases: when you have a rewrite rule and a subfile with the same folder name exists, use it in parallel with the convertSameNameSubFileToGroupIndexPage option.

If this value is true, when establishing a folder link, ignore the existence of child items and specify the link only as a folder path.

For example, if you have a folder that looks like this:

docs/
+├─ guide/
+│  ├─ api/
+│  │  └─ api.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   └─ index.md

With the convertSameNameSubFileToGroupIndexPage option, clicking on the guide/api folder menu will take you to guide/api/api, but if you use the folderLinkNotIncludesFileName option with it, the link will be guide/api/.

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

If this value is true, preserves the Markdown syntax contained in the title text without removing it. Usually retains any highlighting or inline code. Hyperlink text is removed regardless of this option.

debugPrint

  • Type: boolean
  • Default: false

If this value is true, prints the objects created after execution to the console log. If you configured Multiple sidebars, it will output all sidebar results even if you only include one of the options.

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/guide/getting-started.html b/guide/getting-started.html new file mode 100644 index 00000000..c708251a --- /dev/null +++ b/guide/getting-started.html @@ -0,0 +1,147 @@ + + + + + + Getting Started | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Getting Started

This page walks you through the installation and use of the VitePress Sidebar module.

Installation

First, you may need to pre-configure VitePress before using this module.

We recommend using Node.js 18.x or higher. The VitePress Sidebar is written in ESM. To use it in CommonJS, see instructions here.

You will need to install the module using NPM or any other Node module package manager. The package should be installed in devDependencies as it is only used in the developer environment. Use the command below:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

How to Use

You can automatically generate a sidebar using the generateSidebar method of VitePress Sidebar.

It scans the folder against the given root path (documentRootPath), finds the markdown files before they were built by VitePress, and returns a menu generated based on the folder tree structure.

First, import vitepress-sidebar in one of the two ways below.

1. Using named-import

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. Using default-import

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

Use the generateSidebar method in the themeConfig.sidebar property of the .vitepress/config.js file, which is VitePress's configuration file. VitePress's configuration file might have a different filename or extension depending on your project's settings.

To test how this will output, try building VitePress with the debugPrint option set to true. You should see the output in the console.

For more information about the configuration of generateSidebar, see API section below.

Code Example

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * For detailed instructions, see the links below:
+       * https://vitepress-sidebar.cdget.com/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

Example output

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/guide/index.html b/guide/index.html new file mode 100644 index 00000000..a88955b5 --- /dev/null +++ b/guide/index.html @@ -0,0 +1,27 @@ + + + + + + Guide | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 00000000..2c77b98b --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"advanced-usage_index.md":"CBsLYOHq","advanced-usage_multi-level-sidebar-with-indents.md":"BwM3JzfA","advanced-usage_multiple-sidebars-how-to.md":"CyFTdfBh","changelog.md":"C3QyKCQv","guide_api.md":"DKSkYdiv","guide_getting-started.md":"DYGSUkQV","guide_index.md":"BEfDrhJP","index.md":"C90YfVNs","introduction.md":"BHpka9lK","ko_advanced-usage_index.md":"ASOTCoFU","ko_advanced-usage_multi-level-sidebar-with-indents.md":"C68Qmefh","ko_advanced-usage_multiple-sidebars-how-to.md":"BDUU0RwO","ko_changelog.md":"DrgKN5Ov","ko_guide_api.md":"Cn2BChr3","ko_guide_getting-started.md":"L_Za747I","ko_guide_index.md":"BYJyD7jh","ko_index.md":"Br0FQalq","ko_introduction.md":"DYjdzdIg","ko_troubleshooting_err-require-esm.md":"jueESLZ_","ko_troubleshooting_index.md":"XnPXA5O8","troubleshooting_err-require-esm.md":"B23WtflU","troubleshooting_index.md":"8UxK7tSN","zhhans_advanced-usage_index.md":"CHqSt9Bt","zhhans_advanced-usage_multi-level-sidebar-with-indents.md":"DojwCGVp","zhhans_advanced-usage_multiple-sidebars-how-to.md":"MvLzNpu-","zhhans_changelog.md":"D0V1uMFw","zhhans_guide_api.md":"BnIfwLNm","zhhans_guide_getting-started.md":"C3ScFuII","zhhans_guide_index.md":"DtFUGJau","zhhans_index.md":"wnbYp8zV","zhhans_introduction.md":"DfrRTf8r","zhhans_troubleshooting_err-require-esm.md":"CUz0KWMD","zhhans_troubleshooting_index.md":"BqUeKVy8"} diff --git a/index.html b/index.html new file mode 100644 index 00000000..aefe2715 --- /dev/null +++ b/index.html @@ -0,0 +1,27 @@ + + + + + + VitePress Sidebar | Powerful auto sidebar generator + + + + + + + + + + + + + + + + +
Skip to content

VitePress Sidebar

Powerful auto sidebar generator

A VitePress auto sidebar plugin that automatically creates a simple configuration

Sidebar

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/introduction.html b/introduction.html new file mode 100644 index 00000000..0fb37578 --- /dev/null +++ b/introduction.html @@ -0,0 +1,27 @@ + + + + + + Introduction | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Introduction

VitePress Sidebar is a plugin for VitePress that automatically configures and manages the sidebar of your page with simple settings.

  • ⚡️ Optimized for the latest version of VitePress
  • ⚡️ Easy to use, lots of options to customize to your liking
  • ⚡️ Lightweight bundle file size, zero dependencies
  • ⚡️ Multiple Sidebars support
  • ⚡️ Frontmatter support
  • ⚡️ TypeScript support
  • ⚡️ Customize menus for sorting, special character conversion, file and folder filters, and more!

Real-world Uses

VitePress Sidebar is utilized in a variety of project environments, including my own web services.

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/advanced-usage/index.html b/ko/advanced-usage/index.html new file mode 100644 index 00000000..15f5251d --- /dev/null +++ b/ko/advanced-usage/index.html @@ -0,0 +1,27 @@ + + + + + + 고급 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/advanced-usage/multi-level-sidebar-with-indents.html b/ko/advanced-usage/multi-level-sidebar-with-indents.html new file mode 100644 index 00000000..a01d9198 --- /dev/null +++ b/ko/advanced-usage/multi-level-sidebar-with-indents.html @@ -0,0 +1,46 @@ + + + + + + 다중 레벨 사이드바의 들여쓰기 | VitePress Sidebar + + + + + + + + + + + + + + + + + +
Skip to content

다중 레벨 사이드바의 들여쓰기

다중 사이드바에서는 메뉴가 각 계층마다 들여쓰기로 표시됩니다. 그러나 VitePress는 기본적으로 두 번째 계층부터 들여쓰기를 시작합니다. 예를 들어:

Multi level docs before

위의 directory-level-2directory-level-1의 하위 파일이지만 같은 계층 구조에 있는 것으로 보입니다.

이 문제는 VitePress 사이드바의 문제가 아니므로 이 문제를 해결하려면 VitePress의 사용자 정의 CSS 기능을 사용하여 기존 테마의 스타일을 사용자 정의해야 합니다.

.vitepress 디렉토리에 theme 디렉토리를 만들어 기존 스타일에 필요한 스타일을 재정의합니다. 그런 다음 theme 디렉토리 안에 index.js 파일(타입스크립트를 사용하는 경우 index.js 대신 index.ts를 사용)과 custom.css 파일을 만듭니다.

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ 이 줄 추가
+│  │     ├─ custom.css     <------------ 이 줄 추가
+│  │     └─ index.js       <------------ 이 줄 추가
+│  ├─ example.md
+│  └─ index.md
+└─ ...

그런 다음 index.js 파일에 다음을 추가합니다:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

다음으로 custom.css 파일에 다음을 추가합니다:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

이제 VitePress 서버를 시작합니다. 이렇게 하면 하위 콘텐츠가 존재하는 그룹의 첫 번째 레벨의 계층 구조를 더 쉽게 확인할 수 있습니다.

Multi level docs before

여기에서 보이는 세로선은 CSS로만 생성된 것으로, indicator라는 CSS 클래스가 있는 div로 생성되어야 하므로 향후 동적 페이지를 작성할 때 세로선이 선택되지 않을 수 있다는 점에 유의해야 합니다.

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/advanced-usage/multiple-sidebars-how-to.html b/ko/advanced-usage/multiple-sidebars-how-to.html new file mode 100644 index 00000000..5a3f4e5e --- /dev/null +++ b/ko/advanced-usage/multiple-sidebars-how-to.html @@ -0,0 +1,155 @@ + + + + + + 다중 사이드바 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

다중 사이드바

다중 사이드바는 특정 URI 경로에 따라 서로 다른 사이드바 메뉴를 표시할 수 있는 기능입니다.

이것은 몇 가지 간단한 설정으로 vitepress-sidebar에서 쉽게 구현할 수 있습니다. 결국 VitePress는 의도한 대로 옵션을 출력합니다.

다중 사이드바에 대해 자세히 알아보려면 먼저 아래의 VitePress 공식 문서를 살펴보는 것이 좋습니다:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

기본 사용법

먼저, 다음과 같이 docs라는 루트 프로젝트와 guideconfig라는 하위 디렉터리가 있다고 가정해 보겠습니다:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

URL이 /guide 페이지에 있는 경우 사용자는 메뉴에 guide의 하위 메뉴만 표시하고 config의 하위 메뉴는 숨기기를 원합니다. 마찬가지로 /config 페이지에 guide의 하위 메뉴가 있을 때 하위 메뉴를 숨기려고 합니다.

이를 vitepress-sidebar에서 구현하려면 기존 설정과 다르게 접근해야 합니다.

이전과 같이 generateSidebar 함수를 사용하되 배열을 전달합니다. 배열에는 vitepress-sidebar의 옵션이 하나 이상 포함됩니다. 배열의 값은 원하는 만큼의 URL을 지정할 수 있습니다. 물론 다른 설정으로 구성할 수도 있습니다.

javascript
// 배열 인수를 전달해야 함!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

이러한 옵션의 값은 다음과 같이 결과에 사용됩니다:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // `<scanStartPath>/path/to/items`
+    }
+  ]
+}

다음은 위 설정의 출력 예시입니다:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

다중 사이드바 설정

다중 사이드바에서 사용할 수 있는 옵션은 다음과 같습니다: scanStartPath, basePathresolvePath. 각 옵션은 선택 사항이지만 상황에 따라 올바르게 사용할 수 있어야 합니다.

각 옵션은 아래에 설명되어 있습니다. 그러나 먼저 API 페이지에서 각 옵션에 대한 설명을 참조하는 것이 좋습니다.

아래 설명은 다음 예시를 기반으로 합니다:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

이 옵션은 다른 라우팅 규칙의 루트 경로로 다른 디렉터리를 지정하는 데 사용됩니다. documenRootPath는 실제로 스캔할 루트 경로(.vitepress 디렉터리가 있는 위치)이고 scanStartPath는 이 경로 규칙에서 실제로 표시되어야 하는 루트 경로입니다.

예를 들어 /guide 디렉터리에 있는 파일만 포함하려면 scanStartPath의 값을 guide로 지정합니다. 단, documentRootPath의 경로는 포함되지 않아야 합니다.

resolvePath

이 옵션은 특정 URI를 발견했을 때 관련 메뉴를 표시하기 위해 VitePress에서 사용합니다. 예를 들어 example.com/guide/api에 도달할 때 guide/api 디렉토리의 내용만 표시하려면 resolvePath의 값은 /guide/api가 됩니다. 경로 앞에 /를 포함하는 것이 좋습니다.

이 값은 일반적으로 scanStartPath와 비슷한 값을 갖지만, i18n 라우팅을 위해 다르게 지정해야 하는 경우도 있습니다.

basePath

이 옵션은 주로 VitePress의 rewrite 규칙으로 작업할 때 사용되며, 그 외에는 선택 사항입니다.

VitePress에서 base 경로의 값을 대체합니다. 이 값을 지정하지 않으면 resolvePath 값 또는 루트 경로(/)가 지정됩니다.

디렉토리의 실제 경로가 URI의 경로 구조와 다른 경우 다시 쓰기를 통해 제공된 페이지로 이동할 수 있어야 합니다. 일반적으로 사이드바는 루트 디렉터리를 기반으로 경로를 생성하며 VitePress의 다시 쓰기 경로를 참조하지 않습니다.

예를 들어 다음과 같은 재작성 규칙이 있다고 가정해 보겠습니다:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

guide/one.md 문서가 help/one 경로에 표시됩니다. 그러나 이렇게 하면 사이드바가 경로인 help/one을 그대로 찾으려고 하기 때문에 메뉴가 표시되지 않습니다.

이 문제를 해결하려면 basePath의 경로를 help로 변경하세요:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- 이 라인을 추가합니다.
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

복잡한 경로 및 URI가 있는 메뉴 표시하기

위의 예는 일반적으로 경로가 단계로 정의된 경우이지만, 단계가 깊은 폴더를 표시하려는 경우, 특히 URI가 더 짧거나 실제 폴더 경로와 다른 규칙을 사용하는 경우에는 추가 방법을 사용해야 합니다. 예를 들어 다음과 같은 폴더 구조가 있습니다:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

이번에는 /api라는 한 단계 URI에 도달했을 때 docs/guide/api의 메뉴를 표시하고 싶습니다. 예상되는 메뉴는 api-one.mdapi-two.md만 표시하는 것입니다.

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

하지만 이렇게 옵션을 구성하면 api 디렉터리가 guide의 하위 디렉터리이기 때문에 메뉴를 표시할 수 없습니다. VitePress는 이를 감지하지 못하고 존재하지 않는 문서로 이동합니다.

이를 해결하려면 VitePress의 라우팅 기능을 병행해서 사용해야 합니다. 관련 내용은 아래 글을 참고하세요:

https://vitepress.dev/guide/routing#route-rewrites

위의 예에 따라 themeConfig 외부에 있어야 하는 VitePress 설정 파일인 config.js 파일에서 rewrites 옵션을 추가합니다:

javascript
export default defineConfig({
+  /* [START] 여기부터 */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] 여기까지 */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

이제 URI 경로가 /api로 시작하면 docs/guide/api의 하위 메뉴가 표시됩니다!

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/changelog.html b/ko/changelog.html new file mode 100644 index 00000000..7dbfdcbd --- /dev/null +++ b/ko/changelog.html @@ -0,0 +1,27 @@ + + + + + + Changelog | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Changelog

1.25.3 (2024-09-03)

  • If convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile options are defined together, try with title from index file when title is not fetched (#170)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

  • Fix convertSameNameSubFileToGroupIndexPage to get the name normally if subfile doesn't exist when set
  • Use the title of the index file if convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile are defined together (#170)

1.25.1 (2024-09-03)

  • BREAKING CHANGES: The Options type for TypeScript has been renamed to VitePressSidebarOptions.
  • Fix to avoid converting non-first letter items to lowercase when using capitalizeEachWords
  • Support for specifying sidebar option types for TypeScript
  • Documentation page domain now changed to vitepress-sidebar.cdget.com!
  • Korean documentation support

1.25.0 (2024-08-22)

  • Add basePath option
  • Fix incorrect directory path when using rewrite and convertSameNameSubFileToGroupIndexPage option. (#146)

1.24.2 (2024-08-13)

  • Fix index link is blank in multiple sidebars (#167)

1.24.1 (2024-07-31)

  • If a link exists in the directory, it will appear in the menu regardless of the option
  • Fix do not include index link when index.md file is shown (#147)
  • More precise argument checking

1.24.0 (2024-07-06)

  • Add frontmatterTitleFieldName option. When used with useTitleFromFrontmatter, the text field of sidebar will extract from the value of frontmatterTitleFieldName instead of default title field if it exists. (@liudonghua123)

1.23.2 (2024-05-16)

  • Revert 5ed188e. do not warn 'use option together'

1.23.1 (2024-05-15)

  • Warning against using the removePrefixAfterOrdering option and the useTitleFrom option together
  • Fix to return full filename if separator is not present in filename when using removePrefixAfterOrdering option

1.23.0 (2024-05-13)

  • BREAKING CHANGES: The excludeFilesByFrontmatter option is deprecated and replaced by the excludeFilesByFrontmatterFieldName option. You can now specify any field name you want, including Frontmatter's exclude field name, and documents will be excluded from the menu when that field value is true. Existing users should work fine with the following settings excludeFilesByFrontmatterFieldName: 'exclude'. For more information, see the documentation.
  • Allow empty values or empty object options to be passed in

1.22.0 (2024-03-28)

  • prefixSeparator now accepts regular expressions
  • Add sortMenusByFileDatePrefix option

1.21.0 (2024-03-15)

  • Add removePrefixAfterOrdering and prefixSeparator option
  • Documentation enhancements

1.20.0 (2024-03-12)

  • BREAKING CHANGES: The sortMenusOrderNumerically option has been split into the sortMenusOrderNumericallyFromTitle and sortMenusOrderNumericallyFromLink options. Therefore, the old option is deprecated. Renamed to allow you to sort by file title or link. For more information, see README.md.
  • Add sortMenusByFrontmatterDate option
  • Add sortMenusOrderNumericallyFromLink option
  • In useFolderLinkFromIndexFile, show the path to index.md together
  • Fix folders with only an index file are not recognized as empty

1.19.0 (2024-02-26)

  • Add excludeFilesByFrontmatter option (@aslafy-z)

1.18.6 (2024-01-03)

  • Fix typescript issue

1.18.5 (2023-12-11)

  • Add frontmatterOrderDefaultValue option (@aslafy-z)
  • Fix recursive sort of items (@aslafy-z)
  • Retrieve ordering for top level folder indexes (@aslafy-z)

1.18.0 (2023-10-02)

  • Add capitalizeEachWords option
  • The option to modify menu names is also reflected correctly when pulling names from MarkDown heading, frontmatter.

1.17.0 (2023-09-26)

  • Add sortMenusOrderNumerically option

1.16.5 (2023-09-22)

  • Fix nested links being created in multiple sidebars

1.16.0 (2023-09-21)

  • BREAKING CHANGES: The useIndexFileForFolderMenuInfo option has been split into the useFolderTitleFromIndexFile and useFolderLinkFromIndexFile options. Therefore, the old option is deprecated. You can now specify whether the folder menu should get its name and link from the index.md file, respectively. For more information, see README.md.
  • Make sure the link to the index page is clearly marked (e.g., folder/ instead of folder/index).

1.15.0 (2023-09-19)

  • Fix correct base url for multiple sidebars
  • The rootGroupText, rootGroupLink, and rootGroupCollapsed options are available again. However, these options are no longer required.

1.14.0 (2023-09-18)

  • NOTE: The options rootGroupText, rootGroupLink, and rootGroupCollapsed are not available in this version. Please update to the latest version. These options have been restored!
  • Use a better algorithm for stripping formatting from titles that contain Markdown syntax

1.13.0 (2023-09-13)

  • BREAKING CHANGES: The generator normally strips some of the Markdown syntax when using useTitleFromFileHeading. If you do not want to remove Markdown syntax, set the keepMarkdownSyntaxFromTitle option to true.
  • Add debugPrint option
  • Add keepMarkdownSyntaxFromTitle option
  • Improved test example files

1.12.0 (2023-09-12)

  • Add sortMenusByFrontmatterOrder option

1.11.0 (2023-08-24)

  • BREAKING CHANGES: useFolderLinkAsIndexPage option was renamed to useIndexFileForFolderMenuInfo
  • BREAKING CHANGES: sortByFileName option was renamed to manualSortFileNameByPriority
  • BREAKING CHANGES: The useFolderLinkAsIndexPage option now also gets the title information of the index.md file, so the name of the folder menu is set to the title of the index.md file
  • The useFolderLinkAsIndexPage option, if the index file (index.md) does not exist, will display it without setting a link, replacing the name with the folder name
  • Add sortMenusByName and sortMenusOrderByDescending options
  • Added deprecated warning for changed option names

1.10.1 (2023-08-08)

  • Fixed issue with rootGroupCollapsed option not being applied correctly

1.10.0 (2023-07-25)

  • Add includeFolderIndexFile option
  • Add useFolderLinkAsIndexPage option

1.9.5 (2023-07-25)

  • Troubleshooting when links are not prefixed with /
  • Allow null or undefined value for collapsed options

1.9.0 (2023-07-24)

  • Add rootGroupCollapsed option. This option is separate from the collapsed option and allows you to set whether the RootGroup (the item displayed in the Table of Contents) is expanded or not. See README.md for more information.
  • Correct behavior of collapseDepth

1.8.2 (2023-07-18)

  • Remove unnecessary files
  • Upgrade package dependencies
  • Update README.md

1.8.1 (2023-06-15)

  • Make sure to apply multi-sidebar settings for settings containing resolvePath

1.8.0 (2023-06-13)

  • BREAKING CHANGES: The root option was renamed to documentRootPath.
  • Support for multiple sidebars (Add scanStartPath and resolvePath option. Please read README.md file.)
  • Improved multiple validation checks
  • Improved Frontmatter inspections with special characters or newlines

1.7.5 (2023-05-28)

  • Add folderLinkNotIncludesFileName option

1.7.0 (2023-05-28)

  • BREAKING CHANGES: The withIndex option was renamed to includeRootIndexFile.
  • BREAKING CHANGES: The includeEmptyGroup option was renamed to includeEmptyFolder.
  • Add excludeFiles option
  • Add excludeFolders option
  • Add includeDotFiles option
  • Parsing markdown h1 tag and frontmatter correctly

1.6.5 (2023-05-27)

  • Fix convertSameNameSubFileToGroupIndexPage and rename option not working together

1.6.0 (2023-05-27)

  • BREAKING CHANGES: The default value for hyphenToSpace is now false.
  • Add convertSameNameSubFileToGroupIndexPage option: If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.
  • Fixed issue with hyphenToSpace and underscoreToSpace options not being applied to directories
  • Add rootGroupLink option

1.5.1 (2023-05-26)

  • Add .mocharc.json, remove tsconfig.prod.json file in .npmignore

1.5.0 (2023-05-26)

  • Add useTitleFromFrontmatter option. See README.md.
  • useTitleFromFileHeading: Use only valid title values in titles that contain links

1.4.0 (2023-05-26)

  • Fix TypeScript lint error
  • Upgrade package dependencies

1.3.1 (2023-04-20)

  • Fix build issue

1.3.0 (2023-04-20)

  • Upgrade package dependencies
  • Cleanup codes and update documentation

1.2.0 (2023-02-07)

  • BREAKING CHANGES: The collapsible option has been removed by VitePress 1.0.0-alpha.44 breaking changes. See: https://vitepress.vuejs.org/config/theme-configs
    • If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.
  • Upgrade package dependencies

1.1.5 (2023-01-12)

  • Remove CODE_OF_CONDUCT.md for npm release

1.1.4 (2023-01-12)

  • Upgrade package dependencies

1.1.3 (2022-12-08)

  • Upgrade package dependencies
  • Add includeEmptyGroup option
  • Do not include empty group by default

1.1.2 (2022-11-23)

  • Upgrade package dependencies
  • Fix README.md and codes indent

1.1.1 (2022-11-02)

  • Fix capitalizeFirst bug

1.1.0 (2022-11-02)

  • Add capitalizeFirst option
  • Fix null check for option

1.0.9 (2022-11-02)

  • Add sortByFileName option

1.0.8 (2022-11-02)

  • Add collapseDepth option
  • Fix correct import fs module
  • Upgrade package dependencies

1.0.7 (2022-10-31)

  • Fix execution order and cleanup codes
  • Add .editorconfig file and reformat codes (Development only)

1.0.6 (2022-10-31)

  • Add useTitleFromFileHeading option
  • Upgrade package dependencies

1.0.5 (2022-10-27)

  • Change require NodeJS version to 14
  • Add mocha test (Development only)

1.0.4 (2022-10-25)

  • First production release

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

  • Alpha release (Not tested. Do not use production.)

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/guide/api.html b/ko/guide/api.html new file mode 100644 index 00000000..1b91401d --- /dev/null +++ b/ko/guide/api.html @@ -0,0 +1,61 @@ + + + + + + API | VitePress Sidebar + + + + + + + + + + + + + + + + + +
Skip to content

API

이 페이지에서는 VitePress Sidebar의 모든 옵션에 대해 설명합니다.

@ 빠른 검색

경로 해석그룹핑
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
메뉴 제목메뉴 링크
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
포함 및 제외메뉴 제목 스타일링
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
정렬기타
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

문서 파일이 위치한 최상위 경로입니다. 기본값은 /입니다.

이 옵션은 .vitepress 디렉터리가 있는 경로이며, 프로젝트 루트에서 문서가 있는 폴더가 /docs인 경우 이 옵션의 값을 docs 또는 /docs로 설정해야 합니다.

text
/
+├─ package.json
+├─ src/
+├─ docs/        <--------------- `documentRootPath` ('/docs')
+│  ├─ .vitepress/        <------ VitePress 설정 디렉토리
+│  ├─ another-directory/
+│  ├─ hello.md
+│  └─ index.md
+└─ ...

scanStartPath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

문서 목록을 스캔할 루트 디렉터리 경로입니다. scanStartPath에 설정된 경로를 벗어난 documentRootPath에 설정된 경로에 있는 파일은 스캔되지 않습니다. documentRootPath에 설정된 상위 경로가 link에 표시되어야 하므로 scanStartPath를 지정하는 경우 documentRootPath도 함께 설정하는 것이 좋습니다.

예를 들어 루트 경로가 /docs이고 스캔할 문서가 /docs/sub-dir/scan-me인 경우, 설정은 다음과 같이 표시됩니다:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (documentRootPath 경로를 포함하지 마세요.)

resolvePath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

각 경로마다 다른 사이드바를 표시하려면 섹션의 경로를 입력합니다. 경로 앞에 /가 포함되어야 합니다. 이 값이 없는 옵션은 루트 섹션(/)으로 설정됩니다.

e.g. /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

이 옵션은 다중 사이드바를 구성하는 데 사용됩니다. 다중 사이드바 페이지에서 자세히 알아볼 수 있습니다.

이 옵션은 VitePress의 rewrites 옵션으로 인해 경로가 변경된 경우에 사용할 수 있습니다. VitePress의 기본 경로를 대체합니다. 이 값이 존재하지 않으면 resolvePath의 값을 대신 사용합니다.

useTitleFromFileHeading

  • Type: boolean
  • Default: false

값이 true이면 .md 파일의 h1 제목 내용이 포함된 제목을 표시합니다. 파일에 h1 제목이 존재하지 않으면 Unknown으로 표시됩니다.

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

값이 true이면 파일의 Frontmatter에 있는 title 값에 따라 제목을 표시합니다. 이 값을 구문 분석할 수 없는 경우 useTitleFromFileHeading 옵션이 true인 경우 h1 태그에서, 실패하면 파일 이름에서 가져옵니다.

'제목'은 문서 상단에 위치해야 하며 다음과 같이 표시되어야 합니다(title: 값과 제목 사이에 공백이 필요합니다).

markdown
---
+title: Hello World
+---

frontmatterTitleFieldName

  • Type: string
  • Default: title

파일에 지정된 Frontmatter에서 지정한 키 이름을 기준으로 메뉴 제목을 표시합니다. 지정한 값이 Frontmatter에 존재하지 않으면 기본 title이 대체로 사용됩니다.

markdown
---
+name: 이 것은 Frontmatter의 제목값입니다.
+---

자세한 내용은 다음 문서를 참조하세요: https://vitepress.dev/guide/frontmatter

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

이 값이 true이면 현재 폴더의 index.md 파일에 있는 정보를 사용하여 메뉴 이름을 가져옵니다. 인덱스 파일이 존재하지 않으면 폴더 이름이 사용됩니다. 일반적으로 index라는 이름은 index.md 파일에서 가져오기 때문에 useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 함께 사용하여 해당 파일의 마크다운 헤더 또는 프론트매터에서 제목을 가져오는 것이 좋습니다.

인덱스 파일은 사이드바 메뉴에서 숨겨져 있지만, 인덱스 파일은 includeFolderIndexFile 옵션이 true인 경우 메뉴에 표시될 수 있습니다.

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

이 값이 true이면 현재 폴더에 있는 index.md 파일로 이동할 수 있도록 폴더에 대한 링크를 지정합니다. 인덱스 파일이 존재하지 않으면 링크가 생성되지 않습니다.

인덱스 파일은 사이드바 메뉴에서 숨겨져 있지만, 인덱스 파일은 includeFolderIndexFile 옵션이 true인 경우 메뉴에 표시될 수 있습니다.

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

파일 이름(확장자 포함) 배열을 순서대로 정렬합니다. 배열에 파일 이름과 일치하는 값이 없으면 정렬 우선순위가 반송됩니다. 이는 파일과 디렉터리 모두에 적용되며 하위 디렉터리에도 동일한 정렬 규칙이 적용됩니다.

sortMenusByName

  • Type: boolean
  • Default: false

메뉴 항목의 항목을 이름별로 정렬합니다. 일반적으로 폴더 스캔은 오름차순 이름 정렬로 이루어지므로 이 옵션을 적용하지 않고 기본 정렬이 적용되지만, useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 사용하는 경우 메뉴 이름이 변경되어 이름별로 다시 정렬해야 할 수 있습니다. 이 옵션은 변경된 메뉴 이름에 대해서도 이름별로 강제로 정렬합니다.

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

값이 true이면 메뉴 항목 이름의 날짜 접두사를 기준으로 정렬합니다. 날짜 형식은 YYYY-MM-DD 형식이어야 합니다(예: 2024-01-01-menu-name, 2024-01-02.menu-name...).

이후 메뉴 텍스트에 남아있는 날짜 접두사를 제거하려면 prefixSeparatorremovePrefixAfterOrdering 옵션을 활용하면 됩니다.

기본 메뉴 항목은 폴더 트리 순서로 정렬되므로 변경된 메뉴 이름으로 다시 정렬하려면 sortMenusByName 옵션을 true로 설정합니다.

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

앞부분의 order 속성을 기준으로 메뉴 항목을 정렬합니다. 각 폴더에 대해 order 속성의 값(숫자)을 오름차순으로 정렬하거나, sortMenusOrderByDescending 옵션이 true인 경우 내림차순으로 정렬합니다. order 값이 숫자가 아니거나 존재하지 않는 경우 order0으로 판단됩니다.

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

앞부분의 date 속성을 기준으로 메뉴 항목을 정렬합니다. 또한 date 속성 값을 가장 오래된 날짜 순으로 오름차순으로 정렬합니다(sortMenusOrderByDescending 옵션이 true인 경우 내림차순). 날짜 형식은 YYYY-MM-DD 또는 JavaScript 날짜 데이터 유형과 일치해야 합니다.

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 항목의 항목을 내림차순으로 정렬합니다. 이 옵션은 sortMenusByName 또는 sortMenusByFrontmatterOrdertrue인 경우에만 활성화됩니다.

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 이름 앞에 숫자가 포함된 경우 이름이 아닌 낮은 숫자를 기준으로 정렬됩니다. 예를 들어 1-a, 10-a, 2-a라는 이름의 파일이 있는 경우 일반 정렬에서는 ['1-a', '10-a', '2-a']라는 이름으로 정렬됩니다. 이렇게 하면 10-a2-a보다 우선하기 때문에 메뉴가 의도하지 않은 순서로 표시됩니다.

이 옵션을 사용하면 다음과 같이 정렬됩니다: ['1-a', '2-a', '10-a']

내림차순 정렬을 원할 경우 sortMenusOrderByDescending 옵션과 함께 사용해야 합니다.

  • Type: boolean
  • Default: false

이 값이 true이면 메뉴 이름 앞에 숫자가 포함된 경우 이름이 아닌 낮은 숫자를 기준으로 정렬됩니다. 이 옵션은 sortMenusOrderNumericallyFromTitle과 동일하지만 파일 제목이 아닌 링크를 기준으로 정렬합니다. 따라서 sortMenusOrderNumericallyFromTitle 옵션과 함께 사용할 수 없습니다.

내림차순 정렬을 원할 경우 sortMenusOrderByDescending 옵션과 함께 사용해야 합니다.

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

설정되지 않은 경우 앞부분의 order 속성에 대한 기본값을 설정합니다. 이 옵션은 sortMenusByFrontmatterOrdertrue인 경우에만 활성화됩니다.

collapsed

  • Type: boolean
  • Default: false

collapsed 옵션을 지정하지 않으면(null 또는 정의되지 않음) 그룹 접기/확장이 사용되지 않고 모든 메뉴가 한꺼번에 표시됩니다. false이면 모든 그룹이 확장된 상태로 메뉴가 생성됩니다. true이면 모든 그룹이 접힌 상태로 메뉴가 생성됩니다.

(값이 true이더라도 메뉴가 접힌 그룹 내의 문서에 있는 경우 메뉴가 확장될 수 있습니다.)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

지정된 깊이에서 메뉴 그룹이 축소됩니다. 이 옵션을 지정하면 그룹 축소/확장이 자동으로 활성화됩니다. 최상위 폴더의 깊이는 1입니다.

hyphenToSpace

  • Type: boolean
  • Default: false

값이 true이면 파일 이름에 포함된 - 기호가 공백으로 변환되어 제목으로 표시됩니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

underscoreToSpace

  • Type: boolean
  • Default: false

값이 true이면 파일 이름에 포함된 _ 기호가 공백으로 변환되어 제목으로 표시됩니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

capitalizeFirst

  • Type: boolean
  • Default: false

값이 true이면 메뉴 이름의 첫 글자가 강제로 대문자로 바뀝니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

capitalizeEachWords

  • Type: boolean
  • Default: false

값이 true이면 공백으로 구분된 단어의 첫 글자를 모두 대문자로 표시합니다. 이 옵션은 메뉴 이름을 마크다운 머리글 또는 앞부분을 통해 가져올 때도 영향을 받습니다.

excludeFiles

  • Type: Array<string>
  • Default: []

파일 이름 배열(확장자 포함)에 해당하는 파일은 목록에 표시되지 않습니다.

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

지정된 앞부분 필드 이름의 값이 true로 설정된 문서는 메뉴에서 제외됩니다.

옵션이 지정되지 않았거나 옵션 값이 정의되지 않은 경우 무시됩니다.

예를 들어 옵션 값이 exclude인 경우 콘텐츠에 exclude: true가 포함된 문서는 메뉴에 표시되지 않습니다.

markdown
---
+title: This article is excluded.
+exclude: true
+---
+
+# Article
+
+Content

이 옵션의 값에 따라 exclude 대신 draft, hide 등과 같은 다른 이름을 사용할 수 있습니다.

excludeFolders

  • Type: Array<string>
  • Default: []

폴더 이름의 배열에 해당하는 폴더는 목록에 표시되지 않으며, 폴더 내의 하위 항목도 표시되지 않습니다.

includeDotFiles

  • Type: boolean
  • Default: false

일반적으로 파일 및 폴더 이름 앞에 점(.)이 있으면 숨겨진 것으로 간주되어 목록에 표시되지 않습니다. 하지만 이 옵션이 true이면 모든 숨겨진 파일과 폴더가 목록에 강제로 표시됩니다.

includeEmptyFolder

  • Type: boolean
  • Default: false

값이 true인 경우, md 파일이 그룹으로 존재하지 않는 디렉터리도 표시합니다.

includeRootIndexFile

  • Type: boolean
  • Default: false

값이 true인 경우 사이드바 메뉴에 최상위 경로 index.md 파일도 포함합니다. includeFolderIndexFile 옵션을 사용하여 하위 항목의 인덱스 파일도 포함합니다. (파일이 존재하지 않으면 무시됩니다.)

includeFolderIndexFile

  • Type: boolean
  • Default: false

값이 true인 경우 사이드바 메뉴에 폴더 경로 index.md 파일도 포함합니다. 루트 항목의 인덱스 파일도 포함하려면 includeRootIndexFile 옵션을 사용합니다. (파일이 존재하지 않으면 무시됩니다.)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

모든 작업이 완료된 후에 표시되는 메뉴 항목에서 각 메뉴 제목의 특정 접두사를 제거합니다. 이 옵션은 앞부분의 정렬을 사용하지 않고 파일 이름의 숫자를 기준으로 정렬하고 메뉴에 해당 숫자를 표시하지 않으려는 경우에 이상적입니다.

예를 들어 prefixSeparator가 기본값(.)인 경우 다음 메뉴의 이름이 다음과 같이 변경됩니다:

  • 파일명: 1.hello -> 메뉴명: hello
  • 파일명: 1.1.hello -> 메뉴명: 1.hello
  • 파일명: 1-1.hello -> 메뉴명: hello

구분 기호에 따라 문자를 한 번만 제거하므로 1.1.과 같은 하위 항목은 1-1.처럼 사용해야 합니다. 또는 prefixSeparator 값에 정규식을 설정하여 이 문제를 해결할 수 있습니다.

prefixSeparator 옵션과 함께 사용할 수 있습니다. 자세한 내용은 해당 옵션의 설명을 참조하세요.

(참고: 접두사는 제목에만 영향을 미치며, 링크는 파일 링크를 그대로 사용합니다).

(참고 B: 이 옵션은 useTitleFromFileHeading 또는 useTitleFromFrontmatter 옵션을 사용하는 경우 무시됩니다).

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

이 옵션은 접두사를 제거하기 위해 removePrefixAfterOrdering 옵션과 함께 사용할 때만 사용할 수 있습니다.

추출된 메뉴 텍스트에서 지정된 문자 수(하나 이상)의 첫 부분을 제거합니다. 예를 들어 메뉴 이름이 1. Text이고 prefixSeparator 값을 . '로 설정하면 결과는 Text`가 됩니다.

정규식을 사용할 수도 있습니다. 정규식과 일치하는 값은 제거됩니다. 예를 들어 2024-01-01-hello에서 문자열 앞의 날짜를 제거하려면 prefixSeparator 값을 /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g로 지정합니다. 결과는 hello입니다.

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

루트 그룹은 디렉토리 구조에 관계없이 메뉴의 전체 그룹을 지정합니다. 이 옵션은 하나의 메뉴 단계를 사용하므로 사용에 주의해야 하며, 필요하지 않은 경우 루트 그룹 옵션을 비활성화할 수 있습니다. 이 값을 지정하면 최상위 메뉴의 이름을 지정하는 것입니다.

  • Type: string
  • Default: null

루트 그룹에 대한 자세한 내용은 rootGroupText 옵션 설명을 참조하세요. 이 값을 지정하면 루트 그룹에 대한 링크가 지정됩니다. 값이 비어 있으면 링크가 추가되지 않습니다.

rootGroupCollapsed

  • Type: boolean
  • Default: null

루트 그룹에 대한 자세한 내용은 rootGroupText 옵션 설명을 참조하세요. rootGroupCollapsed 옵션은 루트 그룹의 하위 항목을 펼칠지 여부를 설정합니다. 기본값인 null 또는 정의되지 않음으로 지정하면 확장/축소 버튼이 표시되지 않습니다. 값이 true이면 하위 항목이 접힌 상태로 표시되고, false이면 확장됩니다.

이 옵션은 최상위 항목에만 적용됩니다. 일반적인 항목 축소 여부는 collapsed 옵션을 참조하세요.

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

이 값이 true이면 폴더와 같은 이름의 하위 파일이 있는 경우 폴더에 해당 파일로 이동할 수 있는 링크가 생성되고 하위 항목에 해당 파일이 표시되지 않습니다.

예를 들어 다음과 같은 폴더가 있는 경우:

docs/
+├─ guide/
+│  ├─ api/
+│  │  └─ api.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   └─ index.md

api 폴더에 링크가 추가되며, api 폴더의 api 페이지는 메뉴 목록에 포함되지 않습니다. 폴더의 링크를 클릭하면 api/api.md에 파일이 표시됩니다.

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

이 옵션은 특별한 경우에만 사용됩니다. 다시 쓰기 규칙이 있고 폴더 이름이 같은 하위 파일이 있는 경우 convertSameNameSubFileToGroupIndexPage 옵션과 병렬로 사용합니다.

이 값이 true인 경우 폴더 링크를 설정할 때 하위 항목의 존재를 무시하고 링크를 폴더 경로로만 지정합니다.

예를 들어 다음과 같은 폴더가 있는 경우:

docs/
+├─ guide/
+│  ├─ api/
+│  │  └─ api.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   └─ index.md

convertSameNameSubFileToGroupIndexPage 옵션을 사용하면 guide/api 폴더 메뉴를 클릭하면 guide/api/로 이동하지만 folderLinkNotIncludesFileName 옵션을 함께 사용하면 guide/api/로 링크가 연결됩니다.

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

이 값이 true이면 제목 텍스트에 포함된 마크다운 구문을 제거하지 않고 그대로 유지합니다. 일반적으로 강조 표시 또는 인라인 코드를 유지합니다. 하이퍼링크 텍스트는 이 옵션과 관계없이 제거됩니다.

debugPrint

  • Type: boolean
  • Default: false

이 값이 true이면 실행 후 생성된 객체를 콘솔 로그에 출력합니다. 여러 사이드바를 구성한 경우 옵션 중 하나만 포함하더라도 모든 사이드바 결과를 출력합니다.

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/guide/getting-started.html b/ko/guide/getting-started.html new file mode 100644 index 00000000..ab22fd8a --- /dev/null +++ b/ko/guide/getting-started.html @@ -0,0 +1,147 @@ + + + + + + 시작하기 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

시작하기

이 페이지에서는 VitePress Sidebar 모듈의 설치 및 사용 방법을 안내합니다.

설치

먼저 이 모듈을 사용하기 전에 VitePress 모듈을 사전 구성해야 할 수 있습니다.

Node.js 버전은 18.x 이상을 사용하는 것이 좋습니다. VitePress SidebarESM으로 작성되었습니다. CommonJS 환경에서 사용하려면 여기 지침을 참조하세요.

NPM 또는 다른 노드 모듈 패키지 관리자를 사용하여 모듈을 설치할 수 있습니다. 이 패키지는 개발자 환경에서만 사용되므로 devDependencies에 설치해야 합니다. 아래 명령어로 설치하세요:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

사용 방법

VitePress Sidebar의 generateSidebar 메서드를 사용하여 사이드바를 자동으로 생성할 수 있습니다.

지정된 루트 경로(documentRootPath)에 대해 폴더를 검색하고 VitePress에서 마크다운 파일을 작성하기 전에 찾은 다음 폴더 트리 구조에 따라 생성된 메뉴를 반환합니다.

먼저 아래 두 가지 방법 중 하나로 vitepress-sidebar를 import합니다.

1. named-import 사용

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. default-import 사용

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

VitePress의 구성 파일인 .vitepress/config.js 파일의 themeConfig.sidebar 속성에서 generateSidebar 메서드를 사용합니다. VitePress의 구성 파일은 프로젝트 설정에 따라 파일 이름이나 확장자가 다를 수 있습니다.

이것이 어떻게 출력되는지 테스트하려면 debugPrint 옵션을 true로 설정하여 VitePress를 빌드해 보세요. 콘솔에 출력이 표시될 것입니다.

generateSidebar의 설정에 대한 자세한 내용은 아래 API 섹션을 참조하세요.

코드 예시

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * For detailed instructions, see the links below:
+       * https://vitepress-sidebar.cdget.com/ko/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

출력 예시

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/guide/index.html b/ko/guide/index.html new file mode 100644 index 00000000..22cbf2b2 --- /dev/null +++ b/ko/guide/index.html @@ -0,0 +1,27 @@ + + + + + + 가이드 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/index.html b/ko/index.html new file mode 100644 index 00000000..7be4eb1e --- /dev/null +++ b/ko/index.html @@ -0,0 +1,27 @@ + + + + + + VitePress Sidebar | 강력한 사이드바 생성 자동화 도구 + + + + + + + + + + + + + + + + +
Skip to content

VitePress Sidebar

강력한 사이드바 생성 자동화 도구

간단한 구성으로 알아서 생성하는 VitePress의 사이드바 플러그인을 소개합니다.

Sidebar

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/introduction.html b/ko/introduction.html new file mode 100644 index 00000000..0ffb1489 --- /dev/null +++ b/ko/introduction.html @@ -0,0 +1,27 @@ + + + + + + 소개 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

소개

VitePress Sidebar는 번거로운 작업 없이 한번의 설정만으로 사이드바 메뉴를 자동으로 생성하는 VitePress 플러그인입니다. 수많은 문서에 대한 분류를 손쉽게 만들어 시간을 절약하세요.

  • ⚡️ 최신 버전의 VitePress을 지원합니다.
  • ⚡️ 간편하게 사용하고, 원하는 대로 사용자 지정할 수 있습니다.
  • ⚡️ 가벼운 번들 파일 크기, 제로 종속성
  • ⚡️ 다중 사이드바 지원
  • ⚡️ Frontmatter 지원
  • ⚡️ TypeScript 지원
  • ⚡️ 정렬, 특수 문자 변환, 파일 및 폴더 필터 등을 위한 메뉴를 사용자 지정하세요!

어디에서 사용되나요?

VitePress Sidebar는 다양한 프로젝트 환경에서 활용되고 있습니다.

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/troubleshooting/err-require-esm.html b/ko/troubleshooting/err-require-esm.html new file mode 100644 index 00000000..7831f931 --- /dev/null +++ b/ko/troubleshooting/err-require-esm.html @@ -0,0 +1,36 @@ + + + + + + CommonJS: ERR_REQUIRE_ESM | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebarESM 모듈입니다. 프로젝트에서 CJS를 사용하는 경우 ESM 모듈로 변환해야 합니다.

ESM 모듈에 대한 자세한 내용은 아래를 참조하세요: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

이러한 문제를 해결하기 위한 몇 가지 해결책이 아래에 나와 있습니다:

해결책 A

CJS 프로젝트에 사용하려는 경우 파일 확장자를 .js에서 .mjs로 변경한 후 다시 시도하세요. 특정 파일에 모듈 스크립트를 사용하도록 정의할 수 있습니다.

해결책 B

package.json 파일에 "type": "module" 줄을 추가합니다. 이 경우 프로젝트를 ESM 프로젝트로 변환해야 할 수도 있습니다.

json5
{
+  name: 'docs',
+  type: 'module', // <-- 이 부분을 추가하세요.
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/ko/troubleshooting/index.html b/ko/troubleshooting/index.html new file mode 100644 index 00000000..399e10b0 --- /dev/null +++ b/ko/troubleshooting/index.html @@ -0,0 +1,27 @@ + + + + + + 문제 해결 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/logo-16.png b/logo-16.png new file mode 100644 index 00000000..ac149e81 Binary files /dev/null and b/logo-16.png differ diff --git a/logo-32.png b/logo-32.png new file mode 100644 index 00000000..a4733523 Binary files /dev/null and b/logo-32.png differ diff --git a/sidebar.png b/sidebar.png new file mode 100644 index 00000000..6a3c8862 Binary files /dev/null and b/sidebar.png differ diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..9a5965ee --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://vitepress-sidebar.cdget.com/advanced-usage/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/ko/advanced-usage/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/zhHans/advanced-usage/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/advanced-usage/multi-level-sidebar-with-indents2024-08-23T00:13:09.000Zhttps://vitepress-sidebar.cdget.com/ko/advanced-usage/multi-level-sidebar-with-indents2024-08-24T12:47:12.000Zhttps://vitepress-sidebar.cdget.com/zhHans/advanced-usage/multi-level-sidebar-with-indents2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/advanced-usage/multiple-sidebars-how-to2024-08-23T00:13:09.000Zhttps://vitepress-sidebar.cdget.com/ko/advanced-usage/multiple-sidebars-how-to2024-08-23T00:13:09.000Zhttps://vitepress-sidebar.cdget.com/zhHans/advanced-usage/multiple-sidebars-how-to2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/changeloghttps://vitepress-sidebar.cdget.com/ko/changeloghttps://vitepress-sidebar.cdget.com/zhHans/changeloghttps://vitepress-sidebar.cdget.com/guide/api2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/ko/guide/api2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/zhHans/guide/api2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/guide/getting-started2024-09-01T08:39:33.000Zhttps://vitepress-sidebar.cdget.com/ko/guide/getting-started2024-09-01T08:39:33.000Zhttps://vitepress-sidebar.cdget.com/zhHans/guide/getting-started2024-09-07T04:03:01.000Zhttps://vitepress-sidebar.cdget.com/guide/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/ko/guide/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/zhHans/guide/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/2024-08-28T06:46:22.000Zhttps://vitepress-sidebar.cdget.com/ko/2024-08-28T06:46:22.000Zhttps://vitepress-sidebar.cdget.com/zhHans/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/introduction2024-08-23T00:13:09.000Zhttps://vitepress-sidebar.cdget.com/ko/introduction2024-08-23T00:13:09.000Zhttps://vitepress-sidebar.cdget.com/zhHans/introduction2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/troubleshooting/err-require-esm2024-08-23T00:13:09.000Zhttps://vitepress-sidebar.cdget.com/ko/troubleshooting/err-require-esm2024-08-23T00:13:09.000Zhttps://vitepress-sidebar.cdget.com/zhHans/troubleshooting/err-require-esm2024-09-07T04:03:01.000Zhttps://vitepress-sidebar.cdget.com/troubleshooting/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/ko/troubleshooting/2024-09-06T08:36:20.000Zhttps://vitepress-sidebar.cdget.com/zhHans/troubleshooting/2024-09-06T08:36:20.000Z \ No newline at end of file diff --git a/troubleshooting/err-require-esm.html b/troubleshooting/err-require-esm.html new file mode 100644 index 00000000..c17db0d7 --- /dev/null +++ b/troubleshooting/err-require-esm.html @@ -0,0 +1,36 @@ + + + + + + CommonJS: ERR_REQUIRE_ESM | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebar is an ESM module. If your project is using CJS, you will need to convert it to an ESM module.

For more information about the ESM module, see below: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

To address these issues, there are several solutions below:

Solution A

If you are trying to use it with a CJS project, change the file extension from .js to .mjs and try again. You can define that you want to use the module script for a specific file.

Solution B

in the package.json file, add the line "type": "module" line. This may require the project to be converted to an ESM project.

json5
{
+  name: 'docs',
+  type: 'module', // <-- Add this
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/troubleshooting/index.html b/troubleshooting/index.html new file mode 100644 index 00000000..5bb76e0b --- /dev/null +++ b/troubleshooting/index.html @@ -0,0 +1,27 @@ + + + + + + Troubleshooting | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/advanced-usage/index.html b/zhHans/advanced-usage/index.html new file mode 100644 index 00000000..e63a1b69 --- /dev/null +++ b/zhHans/advanced-usage/index.html @@ -0,0 +1,27 @@ + + + + + + 高级使用 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/advanced-usage/multi-level-sidebar-with-indents.html b/zhHans/advanced-usage/multi-level-sidebar-with-indents.html new file mode 100644 index 00000000..1cd57b3e --- /dev/null +++ b/zhHans/advanced-usage/multi-level-sidebar-with-indents.html @@ -0,0 +1,46 @@ + + + + + + 带缩进的多级侧边栏 | VitePress Sidebar + + + + + + + + + + + + + + + + + +
Skip to content

带缩进的多级侧边栏

在多层侧边栏中,菜单显示时每层都会缩进。不过,VitePress 默认从第二层开始缩进。例如

Multi level docs before

上面,directory-level-2directory-level-1的子文件,但看起来处于相同的层级。

这不是VitePress侧边栏的问题,要解决这个问题,您需要通过**VitePress的自定义CSS**自定义现有主题的样式。

.vitepress目录下创建一个theme目录,以覆盖现有样式所需的样式。然后在theme目录下创建一个index.js文件(如果您使用的是Typescript,请使用index.ts而不是index.js)和一个custom.css文件。

text
/
+├─ package.json
+├─ src/
+├─ docs/
+│  ├─ .vitepress/
+│  │  └─ theme/            <------------ Add this
+│  │     ├─ custom.css     <------------ Add this
+│  │     └─ index.js       <------------ Add this
+│  ├─ example.md
+│  └─ index.md
+└─ ...

然后在 index.js 文件中添加以下内容:

javascript
import DefaultTheme from 'vitepress/theme';
+import './custom.css';
+
+export default DefaultTheme;

接下来,在 custom.css 文件中添加以下内容:

css
.group:has([role='button']) .VPSidebarItem.level-0 .items {
+  padding-left: 16px !important;
+  border-left: 1px solid var(--vp-c-divider);
+  border-radius: 2px;
+  transition: background-color 0.25s;
+}

现在启动 VitePress 服务器。这样就能更容易地看到子内容所在组的第一级层次结构。

Multi level docs before

需要注意的是,这里看到的垂直分隔线只是用CSS创建的;它应该创建为一个带有CSS类名为indicatordiv,所以你应该知道,当你以后创建动态页面时,垂直分隔线可能不会被选中。

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/advanced-usage/multiple-sidebars-how-to.html b/zhHans/advanced-usage/multiple-sidebars-how-to.html new file mode 100644 index 00000000..0c0060ec --- /dev/null +++ b/zhHans/advanced-usage/multiple-sidebars-how-to.html @@ -0,0 +1,155 @@ + + + + + + 多侧边栏操作方法 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

多侧边栏操作方法

多侧边栏是一项允许根据特定 URI 路径显示不同侧边栏菜单的功能。

只需在 vitepress-sidebar 中进行一些简单设置,就能轻松实现这一功能。最终,VitePress将按照预期输出选项。

要先了解有关多侧边栏的更多信息,我们建议您查看下面VitePress 的官方文档:

https://vitepress.dev/reference/default-theme-sidebar#multiple-sidebars

基本用法

首先,假设你有一个名为 docs 的根项目,其中有名为 guideconfig 的子目录,就像这样:

docs/
+├─ guide/
+│  ├─ index.md
+│  ├─ one.md
+│  ├─ two.md
+│  └─ do-not-include.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

当URL位于/guide页面时,用户希望菜单仅显示guide的子菜单,隐藏config的子菜单。同样,当guide位于/config页面时,您希望隐藏guide的子菜单。

要在 vitepress-sidebar 中实现此功能,您需要采用与现有设置不同的方法。

像以前一样使用generateSidebar函数,但传递一个数组。该数组至少包含一个来自vitepress-sidebar的选项。数组中的值可以是任意数量的URL。当然,您也可以使用不同的设置进行配置。

javascript
// 必须传递数组参数!!!!
+generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide',
+    basePath: '/guide/',
+    resolvePath: '/guide/',
+    useTitleFromFileHeading: true,
+    excludeFiles: ['do-not-include.md']
+  },
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'config',
+    resolvePath: '/config/',
+    useTitleFromFrontmatter: true
+  }
+]);

这些选项的值在结果中的使用情况如下:

text
{
+  <resolvePath>: [
+    {
+      base: <basePath or resolvePath>,
+      items: [...] // `<scanStartPath>/path/to/items`
+    }
+  ]
+}

下面是上述设置的输出示例:

json5
{
+  '/guide/': {
+    base: '/guide/',
+    items: [
+      {
+        text: 'One',
+        link: 'one'
+      },
+      {
+        text: 'Two',
+        link: 'two'
+      }
+    ]
+  },
+  '/config/': {
+    base: '/config/',
+    items: [
+      {
+        text: 'Three',
+        link: 'three'
+      },
+      {
+        text: 'Four',
+        link: 'four'
+      }
+    ]
+  }
+}

多个侧边栏选项

以下选项可用于多个侧边栏:scanStartPathbasePathresolvePath。每个选项都是可选的,但应根据具体情况正确使用。

下文将对每个选项进行说明。但我们建议您首先参考API页面上对每个选项的描述。

以下描述基于以下示例:

text
docs/
+├─ .vitepress/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

scanStartPath

此选项用于为不同的路由规则指定不同的根目录。documentRootPath是实际要扫描的根目录(即.vitepress目录所在的位置),而scanStartPath是此路由规则中实际要显示的根目录。

例如,若要仅包含/guide目录中的文件,请将scanStartPath的值指定为guide。但是,documentRootPath中的路径不应包含在内。

resolvePath

VitePress使用此选项在遇到特定URI时显示相关菜单。例如,如果您想在到达example.com/guide/api时仅显示guide/api目录的内容,则resolvePath的值为/guide/api。建议您在路径前添加/

通常,它的值与 scanStartPath 类似,但有时您可能需要为 i18n 路由指定不同的值。

basePath

此选项主要用于VitePress的重写规则,否则为可选。

它取代了VitePress中base路径的值。如果未指定该值,则指定resolvePath的值或根路径(/)。

如果目录的实际路径与URI中的路径结构不同,您应该能够通过重写功能导航到页面。通常情况下,侧边栏会根据根目录生成路径,而不会引用VitePress中的重写路径。

例如,假设您有一个重写规则,如下所示:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

guide/one.md 文档显示在 help/one 的路径中。但是,如果您这样做,侧边栏将不会显示菜单,因为它会尝试找到 help/one,而这是路径本身。

要解决这个问题,请将basePath中的路径改为help:

javascript
export default defineConfig({
+  rewrites: {
+    'guide/:page': 'help/:page'
+  },
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide',
+        basePath: 'help', // <---------------------- Add this
+        resolvePath: '/guide/'
+      }
+    ])
+  }
+});

显示带有复杂路径和 URI 的菜单

上面的例子通常是在路径按步骤定义的情况下,但当你想显示按步骤深入的文件夹时,特别是当 URI 较短或使用与实际文件夹路径不同的约定时,你需要使用额外的方法。例如,你有一个这样的文件夹结构:

docs/
+├─ guide/
+│  ├─ api/
+│  │  ├─ api-one.md
+│  │  └─ api-two.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   ├─ index.md
+   ├─ three.md
+   └─ four.md

这次,我们希望当到达单级 URI /api 时,在 docs/guide/api 中显示菜单。预期的菜单仅显示 api-one.mdapi-two.md

javascript
generateSidebar([
+  {
+    documentRootPath: 'docs',
+    scanStartPath: 'guide/api',
+    resolvePath: '/api/'
+  }
+]);

但是,如果您这样配置选项,将无法显示菜单,因为api目录是guide的子目录。VitePress无法检测到这一点,并会导航到一个不存在的文档。

要解决这个问题,您需要同时使用VitePress的路由功能,请参阅以下文章以获取说明:

https://vitepress.dev/guide/routing#route-rewrites

按照上面的示例,我们将把“重写rewritesVitePress的config.js文件中,该文件应位于themeConfig之外:

javascript
export default defineConfig({
+  /* [START] Add This */
+  rewrites: {
+    'guide/api/:page': 'api/:page'
+  },
+  /* [END] Add This */
+  themeConfig: {
+    sidebar: generateSidebar([
+      {
+        documentRootPath: 'docs',
+        scanStartPath: 'guide/api',
+        resolvePath: '/api/'
+      }
+    ])
+  }
+});

现在,当 URI 路径以 /api 开头时,将显示 docs/guide/api 的子菜单!

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/changelog.html b/zhHans/changelog.html new file mode 100644 index 00000000..0c758e01 --- /dev/null +++ b/zhHans/changelog.html @@ -0,0 +1,27 @@ + + + + + + Changelog | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Changelog

1.25.3 (2024-09-03)

  • If convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile options are defined together, try with title from index file when title is not fetched (#170)

1.25.2 (2024-09-03)

This version may cause unintended behavior. Please ignore this version.

  • Fix convertSameNameSubFileToGroupIndexPage to get the name normally if subfile doesn't exist when set
  • Use the title of the index file if convertSameNameSubFileToGroupIndexPage and useFolderTitleFromIndexFile are defined together (#170)

1.25.1 (2024-09-03)

  • BREAKING CHANGES: The Options type for TypeScript has been renamed to VitePressSidebarOptions.
  • Fix to avoid converting non-first letter items to lowercase when using capitalizeEachWords
  • Support for specifying sidebar option types for TypeScript
  • Documentation page domain now changed to vitepress-sidebar.cdget.com!
  • Korean documentation support

1.25.0 (2024-08-22)

  • Add basePath option
  • Fix incorrect directory path when using rewrite and convertSameNameSubFileToGroupIndexPage option. (#146)

1.24.2 (2024-08-13)

  • Fix index link is blank in multiple sidebars (#167)

1.24.1 (2024-07-31)

  • If a link exists in the directory, it will appear in the menu regardless of the option
  • Fix do not include index link when index.md file is shown (#147)
  • More precise argument checking

1.24.0 (2024-07-06)

  • Add frontmatterTitleFieldName option. When used with useTitleFromFrontmatter, the text field of sidebar will extract from the value of frontmatterTitleFieldName instead of default title field if it exists. (@liudonghua123)

1.23.2 (2024-05-16)

  • Revert 5ed188e. do not warn 'use option together'

1.23.1 (2024-05-15)

  • Warning against using the removePrefixAfterOrdering option and the useTitleFrom option together
  • Fix to return full filename if separator is not present in filename when using removePrefixAfterOrdering option

1.23.0 (2024-05-13)

  • BREAKING CHANGES: The excludeFilesByFrontmatter option is deprecated and replaced by the excludeFilesByFrontmatterFieldName option. You can now specify any field name you want, including Frontmatter's exclude field name, and documents will be excluded from the menu when that field value is true. Existing users should work fine with the following settings excludeFilesByFrontmatterFieldName: 'exclude'. For more information, see the documentation.
  • Allow empty values or empty object options to be passed in

1.22.0 (2024-03-28)

  • prefixSeparator now accepts regular expressions
  • Add sortMenusByFileDatePrefix option

1.21.0 (2024-03-15)

  • Add removePrefixAfterOrdering and prefixSeparator option
  • Documentation enhancements

1.20.0 (2024-03-12)

  • BREAKING CHANGES: The sortMenusOrderNumerically option has been split into the sortMenusOrderNumericallyFromTitle and sortMenusOrderNumericallyFromLink options. Therefore, the old option is deprecated. Renamed to allow you to sort by file title or link. For more information, see README.md.
  • Add sortMenusByFrontmatterDate option
  • Add sortMenusOrderNumericallyFromLink option
  • In useFolderLinkFromIndexFile, show the path to index.md together
  • Fix folders with only an index file are not recognized as empty

1.19.0 (2024-02-26)

  • Add excludeFilesByFrontmatter option (@aslafy-z)

1.18.6 (2024-01-03)

  • Fix typescript issue

1.18.5 (2023-12-11)

  • Add frontmatterOrderDefaultValue option (@aslafy-z)
  • Fix recursive sort of items (@aslafy-z)
  • Retrieve ordering for top level folder indexes (@aslafy-z)

1.18.0 (2023-10-02)

  • Add capitalizeEachWords option
  • The option to modify menu names is also reflected correctly when pulling names from MarkDown heading, frontmatter.

1.17.0 (2023-09-26)

  • Add sortMenusOrderNumerically option

1.16.5 (2023-09-22)

  • Fix nested links being created in multiple sidebars

1.16.0 (2023-09-21)

  • BREAKING CHANGES: The useIndexFileForFolderMenuInfo option has been split into the useFolderTitleFromIndexFile and useFolderLinkFromIndexFile options. Therefore, the old option is deprecated. You can now specify whether the folder menu should get its name and link from the index.md file, respectively. For more information, see README.md.
  • Make sure the link to the index page is clearly marked (e.g., folder/ instead of folder/index).

1.15.0 (2023-09-19)

  • Fix correct base url for multiple sidebars
  • The rootGroupText, rootGroupLink, and rootGroupCollapsed options are available again. However, these options are no longer required.

1.14.0 (2023-09-18)

  • NOTE: The options rootGroupText, rootGroupLink, and rootGroupCollapsed are not available in this version. Please update to the latest version. These options have been restored!
  • Use a better algorithm for stripping formatting from titles that contain Markdown syntax

1.13.0 (2023-09-13)

  • BREAKING CHANGES: The generator normally strips some of the Markdown syntax when using useTitleFromFileHeading. If you do not want to remove Markdown syntax, set the keepMarkdownSyntaxFromTitle option to true.
  • Add debugPrint option
  • Add keepMarkdownSyntaxFromTitle option
  • Improved test example files

1.12.0 (2023-09-12)

  • Add sortMenusByFrontmatterOrder option

1.11.0 (2023-08-24)

  • BREAKING CHANGES: useFolderLinkAsIndexPage option was renamed to useIndexFileForFolderMenuInfo
  • BREAKING CHANGES: sortByFileName option was renamed to manualSortFileNameByPriority
  • BREAKING CHANGES: The useFolderLinkAsIndexPage option now also gets the title information of the index.md file, so the name of the folder menu is set to the title of the index.md file
  • The useFolderLinkAsIndexPage option, if the index file (index.md) does not exist, will display it without setting a link, replacing the name with the folder name
  • Add sortMenusByName and sortMenusOrderByDescending options
  • Added deprecated warning for changed option names

1.10.1 (2023-08-08)

  • Fixed issue with rootGroupCollapsed option not being applied correctly

1.10.0 (2023-07-25)

  • Add includeFolderIndexFile option
  • Add useFolderLinkAsIndexPage option

1.9.5 (2023-07-25)

  • Troubleshooting when links are not prefixed with /
  • Allow null or undefined value for collapsed options

1.9.0 (2023-07-24)

  • Add rootGroupCollapsed option. This option is separate from the collapsed option and allows you to set whether the RootGroup (the item displayed in the Table of Contents) is expanded or not. See README.md for more information.
  • Correct behavior of collapseDepth

1.8.2 (2023-07-18)

  • Remove unnecessary files
  • Upgrade package dependencies
  • Update README.md

1.8.1 (2023-06-15)

  • Make sure to apply multi-sidebar settings for settings containing resolvePath

1.8.0 (2023-06-13)

  • BREAKING CHANGES: The root option was renamed to documentRootPath.
  • Support for multiple sidebars (Add scanStartPath and resolvePath option. Please read README.md file.)
  • Improved multiple validation checks
  • Improved Frontmatter inspections with special characters or newlines

1.7.5 (2023-05-28)

  • Add folderLinkNotIncludesFileName option

1.7.0 (2023-05-28)

  • BREAKING CHANGES: The withIndex option was renamed to includeRootIndexFile.
  • BREAKING CHANGES: The includeEmptyGroup option was renamed to includeEmptyFolder.
  • Add excludeFiles option
  • Add excludeFolders option
  • Add includeDotFiles option
  • Parsing markdown h1 tag and frontmatter correctly

1.6.5 (2023-05-27)

  • Fix convertSameNameSubFileToGroupIndexPage and rename option not working together

1.6.0 (2023-05-27)

  • BREAKING CHANGES: The default value for hyphenToSpace is now false.
  • Add convertSameNameSubFileToGroupIndexPage option: If this value is true, then if a subfile with the same name as the folder exists, a link will be created in the folder to navigate to that file, and the file will not be displayed in the child item.
  • Fixed issue with hyphenToSpace and underscoreToSpace options not being applied to directories
  • Add rootGroupLink option

1.5.1 (2023-05-26)

  • Add .mocharc.json, remove tsconfig.prod.json file in .npmignore

1.5.0 (2023-05-26)

  • Add useTitleFromFrontmatter option. See README.md.
  • useTitleFromFileHeading: Use only valid title values in titles that contain links

1.4.0 (2023-05-26)

  • Fix TypeScript lint error
  • Upgrade package dependencies

1.3.1 (2023-04-20)

  • Fix build issue

1.3.0 (2023-04-20)

  • Upgrade package dependencies
  • Cleanup codes and update documentation

1.2.0 (2023-02-07)

  • BREAKING CHANGES: The collapsible option has been removed by VitePress 1.0.0-alpha.44 breaking changes. See: https://vitepress.vuejs.org/config/theme-configs
    • If the collapsed option is not specified(null or undefined), group collapse/expand is not used and all menus are displayed at once. If false, the menu is created with all groups expanded. If true, the menu is created with all groups collapsed.
  • Upgrade package dependencies

1.1.5 (2023-01-12)

  • Remove CODE_OF_CONDUCT.md for npm release

1.1.4 (2023-01-12)

  • Upgrade package dependencies

1.1.3 (2022-12-08)

  • Upgrade package dependencies
  • Add includeEmptyGroup option
  • Do not include empty group by default

1.1.2 (2022-11-23)

  • Upgrade package dependencies
  • Fix README.md and codes indent

1.1.1 (2022-11-02)

  • Fix capitalizeFirst bug

1.1.0 (2022-11-02)

  • Add capitalizeFirst option
  • Fix null check for option

1.0.9 (2022-11-02)

  • Add sortByFileName option

1.0.8 (2022-11-02)

  • Add collapseDepth option
  • Fix correct import fs module
  • Upgrade package dependencies

1.0.7 (2022-10-31)

  • Fix execution order and cleanup codes
  • Add .editorconfig file and reformat codes (Development only)

1.0.6 (2022-10-31)

  • Add useTitleFromFileHeading option
  • Upgrade package dependencies

1.0.5 (2022-10-27)

  • Change require NodeJS version to 14
  • Add mocha test (Development only)

1.0.4 (2022-10-25)

  • First production release

0.1.0 ~ 1.0.3 (2022-10-25 / Alpha)

  • Alpha release (Not tested. Do not use production.)

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/guide/api.html b/zhHans/guide/api.html new file mode 100644 index 00000000..21f8c7d9 --- /dev/null +++ b/zhHans/guide/api.html @@ -0,0 +1,61 @@ + + + + + + API | VitePress Sidebar + + + + + + + + + + + + + + + + + +
Skip to content

API

本页介绍 VitePress 侧边栏的所有选项。

@ 快速搜索

解决路径问题分组
documentRootPathcollapsed
scanStartPathcollapseDepth
resolvePathrootGroupText
basePathrootGroupLink
rootGroupCollapsed
获取菜单标题获取菜单链接
useTitleFromFileHeadingconvertSameNameSubFileToGroupIndexPage
useTitleFromFrontmatterfolderLinkNotIncludesFileName
useFolderTitleFromIndexFileuseFolderLinkFromIndexFile
frontmatterTitleFieldName
包括/排除菜单标题样式
excludeFileshyphenToSpace
excludeFilesByFrontmatterFieldNameunderscoreToSpace
excludeFolderscapitalizeFirst
includeDotFilescapitalizeEachWords
includeEmptyFolderkeepMarkdownSyntaxFromTitle
includeRootIndexFileremovePrefixAfterOrdering
includeFolderIndexFileprefixSeparator
分类杂项
manualSortFileNameByPrioritydebugPrint
sortMenusByName
sortMenusByFileDatePrefix
sortMenusByFrontmatterOrder
frontmatterOrderDefaultValue
sortMenusByFrontmatterDate
sortMenusOrderByDescending
sortMenusOrderNumericallyFromTitle
sortMenusOrderNumericallyFromLink

documentRootPath

  • Type: string
  • Default: '/'

文档文件所在的顶级路径。默认值为 /

这是 .vitepress目录所在的路径,如果项目根目录中文档所在的文件夹是 /docs,则该选项的值应设为 docs/docs

text
/
+├─ package.json
+├─ src/
+├─ docs/        <--------------- `documentRootPath` ('/docs')
+│  ├─ .vitepress/        <------ VitePress 配置目录
+│  ├─ another-directory/
+│  ├─ hello.md
+│  └─ index.md
+└─ ...

scanStartPath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

用于扫描文档列表的根目录路径。在documentRootPath中设置的路径中的文件,在scanStartPath中设置的路径之外,不会被扫描。如果您指定了scanStartPath,建议您也设置documentRootPath,因为documentRootPath中设置的父路径应该出现在link中。

例如,如果根路径是/docs,要扫描的文件是/docs/sub-dir/scan-me,则设置如下:

  • documentRootPath: /docs,
  • scanStartPath: sub-dir/scan-me (请勿包含 documentRootPath 的路径。)

resolvePath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

输入路径,为每个路径显示不同的侧边栏。路径前必须包含/。没有此值的选项将设置为根路径(/)。

例如: /, /path/sub-path, /guide/...

basePath

  • Type: string|null
  • Default: null

此选项用于配置多个侧边栏。您可以在 多个侧边栏 页面上了解更多信息。

如果路径因VitePress的重写选项而改变,则可以使用此选项。它替换VitePress中的基本路径。如果此值不存在,则将使用来自resolvePath的值。

useTitleFromFileHeading

  • Type: boolean
  • Default: false

如果值为 true,则显示带有 .md 文件中 h1 标题内容的标题。如果文件中不存在 h1 标题,则显示 Unknown

默认菜单项按文件夹树顺序排序,因此如果您想按更改后的菜单名称重新排序,请将sortMenusByName选项设置为true

useTitleFromFrontmatter

  • Type: boolean
  • Default: false

如果值为true,则根据文件Frontmattertitle的值显示标题。如果无法解析该值,则如果useTitleFromFileHeading选项为true,则从h1标签中获取该值,如果失败,则从文件名中获取该值。

Frontmatter应位于文档顶部,并应如下所示(在 title: 值和标题之间需要留出空格)。

markdown
---
+title: Hello World
+---

frontmatterTitleFieldName

  • Type: string
  • Default: title

根据文件中指定的Frontmatter中的键名显示菜单标题。如果指定的值在Frontmatter中不存在,将使用默认的title作为后备。

markdown
---
+name: This is frontmatter title value.
+---

欲了解更多信息,请参阅以下文章: https://vitepress.dev/guide/frontmatter

默认菜单项是按文件夹树顺序排序的,因此如果想按更改后的菜单名称重新排序,请将 sortMenusByName 选项设置为 true

useFolderTitleFromIndexFile

  • Type: boolean
  • Default: false

如果该值为 true,则使用当前文件夹的 index.md 文件中的信息来获取菜单名称。如果不存在 index.md 文件,则使用文件夹名称。由于我们通常从 index.md 文件中获取 index 名称,因此建议同时使用 useTitleFromFileHeadinguseTitleFromFrontmatter 选项,从该文件的 Markdown 标题或 Frontmatter 中获取标题。

侧边栏菜单会隐藏 index.md 文件,但如果 includeFolderIndexFile 选项为 true,索引文件就会显示在菜单中。

useFolderLinkFromIndexFile

  • Type: boolean
  • Default: false

如果此值为 true,将指定一个指向文件夹的链接,以便您可以导航到当前文件夹中的 index.md 文件。如果 index.md 文件不存在,则不会创建链接。

侧边栏菜单会隐藏 index.md 文件,但如果 includeFolderIndexFile 选项为 true,则可在菜单中显示索引文件。

manualSortFileNameByPriority

  • Type: Array<string>
  • Default: []

按文件名(包括扩展名)数组的顺序排序。如果数组中没有与文件名匹配的值,排序优先级将被退回。这适用于文件和目录,同样的排列规则也适用于子目录。

sortMenusByName

  • Type: boolean
  • Default: false

按名称对菜单项中的项目进行排序。通常情况下,文件夹扫描是按名称升序排序的,因此,如果不应用此选项,则应用默认排序,但如果使用useTitleFromFileHeadinguseTitleFromFrontmatter选项,则可能需要按名称重新排序,因为菜单名称已更改。此选项强制按名称排序,即使菜单名称已更改也是如此。

sortMenusByFileDatePrefix

  • Type: boolean
  • Default: false

如果值为 true,则按菜单项名称中的日期前缀排序。日期格式必须是 YYYY-MM-DD 格式(例如 2024-01-01-menu-name, 2024-01-02.menu-name...)

要删除菜单文本中残留的日期前缀,可以使用 prefixSeparatorremovePrefixAfterOrdering 选项。

默认菜单项是按文件夹树顺序排序的,因此如果想按更改后的菜单名称重新排序,请将 sortMenusByName 选项设置为 true

sortMenusByFrontmatterOrder

  • Type: boolean
  • Default: false

按 frontmatter 的 order 属性对菜单项排序。对于每个文件夹,按 order 属性的值(数字)升序排序,如果 sortMenusOrderByDescending 选项为 true,则按降序排序。如果 order 属性的值不是数字或不存在,则 order 会被判定为 0

sortMenusByFrontmatterDate

  • Type: boolean
  • Default: false

根据前端的date属性对菜单项进行排序。它还会按日期升序(如果sortMenusOrderByDescendingtrue,则按日期降序)对date属性值进行排序。日期格式必须符合YYYY-MM-DD或JavaScript Date数据类型。

sortMenusOrderByDescending

  • Type: boolean
  • Default: false

如果此值为 true,则按降序排列菜单项中的项目。只有当 sortMenusByNamesortMenusByFrontmatterOrdertrue时,才会启用此选项。

sortMenusOrderNumericallyFromTitle

  • Type: boolean
  • Default: false

如果该值为true,则如果菜单名称以数字开头,则按数字而不是名称排序。例如,如果您有名为1-a10-a2-a的文件,则常规排序将按名称排序,即['1-a', '10-a', '2-a']。这会导致菜单以非预期的顺序显示,因为10-a优先于2-a

使用此选项,它们按以下顺序排序:['1-a', '2-a', '10-a']

如果您希望按降序排序,则应与sortMenusOrderByDescending选项一起使用。

  • Type: boolean
  • Default: false

如果此值为true,则如果菜单名称以数字开头,则按数字而不是名称排序。此选项与sortMenusOrderNumericallyFromTitle相同,但按链接而不是文件标题排序。因此,它不能与sortMenusOrderNumericallyFromTitle选项一起使用。

如果您希望按降序排序,则应与sortMenusOrderByDescending选项一起使用。

frontmatterOrderDefaultValue

  • Type: number
  • Default: 0

设置 frontmatter 的 order 属性未设置时的默认值。该选项仅在 sortMenusByFrontmatterOrdertrue 时启用。

collapsed

  • Type: boolean
  • Default: false

如果未指定collapsed选项(nullundefined),则不使用分组折叠/展开,所有菜单将一次性显示。如果为false,则创建菜单时所有分组都处于展开状态。如果为true,则创建菜单时所有分组都处于折叠状态。

(即使值为true,如果菜单位于折叠组中的文档中,也可能被展开。)

Collapsed Example

collapseDepth

  • Type: number
  • Default: 1

在指定的深度,菜单组会折叠。指定该选项后,组的折叠/展开将自动启用。顶层文件夹的深度为 1

hyphenToSpace

  • Type: boolean
  • Default: false

如果值为 true,文件名中的-符号将转换为空格并显示为标题。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

underscoreToSpace

  • Type: boolean
  • Default: false

如果值为 true,文件名中的_符号将转换为空格并显示为标题。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

capitalizeFirst

  • Type: boolean
  • Default: false

如果值为 true,菜单名称的第一个字母将强制为大写。当菜单名称通过 Markdown 标题或 frontmatter 导入时,该选项也会受到影响。

capitalizeEachWords

  • Type: boolean
  • Default: false

如果值为 true,则单词的所有首字母大写,并用空格分隔。通过 Markdown 标题或 frontmatter 导入菜单名称时,该选项也会受到影响。

excludeFiles

  • Type: Array<string>
  • Default: []

与文件名(包括扩展名)相对应的文件不会显示在列表中。

excludeFilesByFrontmatterFieldName

  • Type: string|null
  • Default: null

指定前缀字段名称为true的文档将从菜单中排除。

如果未指定选项或选项值未定义,则忽略该选项。

例如,如果选项值为exclude,则菜单中不会显示内容包含exclude: true的文档。

markdown
---
+title: This article is excluded.
+exclude: true
+---
+
+# Article
+
+Content

根据选项的值,您可以使用其他名称,如drafthide等,来代替exclude

excludeFolders

  • Type: Array<string>
  • Default: []

列表中不显示与文件夹名称相对应的文件夹,也不显示文件夹中的任何子项。

includeDotFiles

  • Type: boolean
  • Default: false

通常情况下,如果文件和文件夹名称前有句点(.),它们会被视为隐藏文件,不会在列表中显示。但是,如果此选项为true,则强制在列表中显示所有隐藏文件和文件夹。

includeEmptyFolder

  • Type: boolean
  • Default: false

如果值为true,则还会显示不存在md文件的目录。

includeRootIndexFile

  • Type: boolean
  • Default: false

如果值为true,则还要在侧边栏菜单中包含顶级路径index.md文件。使用includeFolderIndexFile选项还可以包含子项目的索引文件。(如果文件不存在,则忽略它。)

includeFolderIndexFile

  • Type: boolean
  • Default: false

如果值为true,则还要在侧边栏菜单中包含文件夹路径index.md文件。使用includeRootIndexFile选项还可以包含根项目的索引文件。(如果文件不存在,则忽略它。)

removePrefixAfterOrdering

  • Type: boolean
  • Default: false

从所有操作完成后显示的菜单项的每个菜单标题中删除特定的前缀。如果您想按文件名中的数字排序,而不使用前缀的排序,并且不希望该数字在菜单中显示,这是理想的选择。

例如,如果默认使用前缀分隔符(.),则以下菜单将重命名为

  • 文件名:1.hello -> 菜单名:hello
  • 文件名:1.1.hello -> 菜单名:1.hello
  • 文件名:1-1.hello -> 菜单名:hello

根据分隔符仅删除一次字母,因此子项(如1.1.)应使用1-1.。或者,您可以在前缀分隔符值上设置正则表达式来绕过它。

可与prefixSeparator选项一起使用。更多信息请参阅该选项的描述。

(注A:前缀仅影响标题,链接将使用文件链接的原始形式)。

(备注B:如果您使用useTitleFromFileHeadinguseTitleFromFrontmatter选项,则忽略此选项)。

prefixSeparator

  • Type: string|RegExp
  • Default: '.'

此选项只能与 removePrefixAfterOrdering 选项结合使用以删除前缀。

从提取的菜单文本中删除指定数量字符(至少一个)的第一部分。例如,如果菜单名称为 1. Text,并且您将 prefixSeparator 值设置为 . ,则结果将仅为 Text

您还可以使用正则表达式。与正则表达式匹配的值将被删除。例如,要删除 2024-01-01-hello 中字符串之前的日期,请将 prefixSeparator 值指定为 /[0-9]{4}-[0-9]{2}-[0-9]{2}-/g。结果为 hello

rootGroupText

  • Type: string
  • Default: 'Table of Contents'

rootGroup 指定整个菜单组,而与目录结构无关。这将使用一个菜单步骤,因此您在使用时应格外小心。如果您不需要 rootGroup 选项,可以将其禁用。如果指定此值,则指定顶级菜单的名称。

  • Type: string
  • Default: null

有关 rootGroup 的更多信息,请参阅 rootGroupText 选项说明。指定此值可指定指向 rootGroup 的链接。如果值为空,则不添加链接。

rootGroupCollapsed

  • Type: boolean
  • Default: null

有关 rootGroup 的更多信息,请参阅 rootGroupText 选项说明。rootGroupCollapsed选项设置是否展开根组的子项。如果指定的默认值为 nullundefined,则不显示展开/折叠按钮。如果该值为 true,子项将以折叠方式显示;如果为 false,子项将以展开方式显示。

此选项仅适用于顶层项目。有关一般项目的折叠性,请参阅 collapsed 选项。

convertSameNameSubFileToGroupIndexPage

  • Type: boolean
  • Default: false

如果此值为true,则当存在与文件夹同名的子文件时,将在文件夹中创建一个链接,用于导航至该文件,而该文件不会显示在子项中。

例如,如果您有一个文件夹,如下所示:

docs/
+├─ guide/
+│  ├─ api/
+│  │  └─ api.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   └─ index.md

api 文件夹中添加了一个链接,而 api 文件夹中的 api 页面不包含在菜单列表中。点击文件夹中的链接会显示 api/api.md中的文件。

folderLinkNotIncludesFileName

  • Type: boolean
  • Default: false

此选项仅在特殊情况下使用:当您有重写规则并且存在具有相同文件夹名称的子文件时,请将其与 convertSameNameSubFileToGroupIndexPage 选项并行使用。

如果此值为 true,则在建立文件夹链接时,忽略子项的存在,并仅将链接指定为文件夹路径。

例如,如果您有一个如下所示的文件夹:

docs/
+├─ guide/
+│  ├─ api/
+│  │  └─ api.md
+│  ├─ one.md
+│  └─ two.md
+└─ config/
+   └─ index.md

使用 convertSameNameSubFileToGroupIndexPage 选项,单击 guide/api 文件夹菜单将带您进入 guide/api/api,但如果您使用 folderLinkNotIncludesFileName 选项,则链接将为 guide/api/

keepMarkdownSyntaxFromTitle

  • Type: boolean
  • Default: false

如果此值为 true,则保留标题文本中包含的 Markdown 语法,而不删除它。通常会保留任何高亮或内联代码。无论是否使用此选项,超链接文本都会被移除。

debugPrint

  • Type: boolean
  • Default: false

如果该值为true,则会将执行后创建的对象打印到控制台日志中。如果您配置了多个侧边栏,即使只包含其中一个选项,它也会输出所有侧边栏的结果。

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/guide/getting-started.html b/zhHans/guide/getting-started.html new file mode 100644 index 00000000..18ca9aa7 --- /dev/null +++ b/zhHans/guide/getting-started.html @@ -0,0 +1,147 @@ + + + + + + 入门 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

入门

本页面将指导您安装和使用"VitePress Sidebar"模块。

安装

首先,在使用本模块之前,您可能需要预先配置 VitePress

我们建议使用 Node.js 18.x 或更高版本。VitePress Sidebar是用ESM编写的。要在 "CommonJS" 中使用它,请参见此处的说明

您需要使用 NPM 或任何其他 Node 模块包管理器安装该模块。该软件包应安装在 devDependencies 中,因为它仅在开发人员环境中使用。使用下面的命令:

shell
# via npm
+$ npm i -D vitepress-sidebar
+
+# via yarn
+$ yarn add -D vitepress-sidebar
+
+# via pnpm
+$ pnpm i -D vitepress-sidebar

如何使用

您可以使用 VitePress Sidebar 的 generateSidebar 方法自动生成侧边栏。

该方法会根据给定的根路径(documentRootPath)扫描文件夹,在 VitePress 构建之前找到标记文件,并返回根据文件夹树结构生成的菜单。

首先,用以下两种方法之一导入 vitepress-sidebar

1. 使用命名导入

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar(vitepressSidebarOptions)
+  }
+};

2. 使用默认导入

javascript
import VitePressSidebar from 'vitepress-sidebar';
+
+const vitepressSidebarOptions = {
+  /* Options... */
+};
+
+export default {
+  themeConfig: {
+    sidebar: VitePressSidebar.generateSidebar(vitepressSidebarOptions)
+  }
+};

使用.vitepress/config.js文件中themeConfig.sidebar属性中的generateSidebar方法,该文件是VitePress的配置文件。VitePress 的配置文件可能有不同的文件名或扩展名,这取决于您的项目设置。

要测试输出结果如何,请尝试在将 debugPrint 选项设置为 true的情况下构建 VitePress。你应该能在控制台中看到输出结果。

有关generateSidebar配置的更多信息,请参阅下面的 API 部分。

代码示例

javascript
import { generateSidebar } from 'vitepress-sidebar';
+
+export default {
+  themeConfig: {
+    sidebar: generateSidebar({
+      /*
+       * 有关详细说明,请参阅下面的链接:
+       * https://vitepress-sidebar.cdget.com/zhHans/guide/api
+       */
+      // documentRootPath: '/',
+      // scanStartPath: null,
+      // basePath: null,
+      // resolvePath: null,
+      // useTitleFromFileHeading: true,
+      // useTitleFromFrontmatter: true,
+      // frontmatterTitleFieldName: 'title',
+      // useFolderTitleFromIndexFile: false,
+      // useFolderLinkFromIndexFile: false,
+      // hyphenToSpace: true,
+      // underscoreToSpace: true,
+      // capitalizeFirst: false,
+      // capitalizeEachWords: false,
+      // collapsed: true,
+      // collapseDepth: 2,
+      // sortMenusByName: false,
+      // sortMenusByFrontmatterOrder: false,
+      // sortMenusByFrontmatterDate: false,
+      // sortMenusOrderByDescending: false,
+      // sortMenusOrderNumericallyFromTitle: false,
+      // sortMenusOrderNumericallyFromLink: false,
+      // frontmatterOrderDefaultValue: 0,
+      // manualSortFileNameByPriority: ['first.md', 'second', 'third.md'],
+      // removePrefixAfterOrdering: false,
+      // prefixSeparator: '.',
+      // excludeFiles: ['first.md', 'secret.md'],
+      // excludeFilesByFrontmatterFieldName: 'exclude',
+      // excludeFolders: ['secret-folder'],
+      // includeDotFiles: false,
+      // includeRootIndexFile: false,
+      // includeFolderIndexFile: false,
+      // includeEmptyFolder: false,
+      // rootGroupText: 'Contents',
+      // rootGroupLink: 'https://github.com/jooy2',
+      // rootGroupCollapsed: false,
+      // convertSameNameSubFileToGroupIndexPage: false,
+      // folderLinkNotIncludesFileName: false,
+      // keepMarkdownSyntaxFromTitle: false,
+      // debugPrint: false,
+    })
+  }
+};

输出示例

javascript
generateSidebar({
+  documentRootPath: 'example',
+  scanStartPath: 'javascript',
+  useTitleFromFileHeading: true,
+  hyphenToSpace: true,
+  excludeFolders: ['vitepress-how-to']
+});
+
+/*
+[
+  {
+    text: 'examples',
+    items: [
+      {
+        text: 'Examples',
+        link: '/javascript/examples/examples'
+      }
+    ]
+  },
+  {
+    text: 'functions',
+    items: [
+      {
+        text: 'prototypes',
+        items: [
+          {
+            text: 'Array',
+            items: [
+              {
+                text: 'Array.indexOf',
+                link: '/javascript/functions/prototypes/Array/Array.indexOf'
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    text: 'Getting Started',
+    link: '/javascript/getting_started'
+  }
+];
+*/

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/guide/index.html b/zhHans/guide/index.html new file mode 100644 index 00000000..2618b2be --- /dev/null +++ b/zhHans/guide/index.html @@ -0,0 +1,27 @@ + + + + + + 指南 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/index.html b/zhHans/index.html new file mode 100644 index 00000000..4715bbc2 --- /dev/null +++ b/zhHans/index.html @@ -0,0 +1,27 @@ + + + + + + VitePress Sidebar | 功能强大的自动侧边栏生成器 + + + + + + + + + + + + + + + + +
Skip to content

VitePress Sidebar

功能强大的自动侧边栏生成器

VitePress自动侧边栏插件,可自动创建一个简单的配置

Sidebar

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/introduction.html b/zhHans/introduction.html new file mode 100644 index 00000000..7073a197 --- /dev/null +++ b/zhHans/introduction.html @@ -0,0 +1,27 @@ + + + + + + 导言 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

导言

VitePress SidebarVitePress 的一个插件,可通过简单的设置自动配置和管理页面的侧边栏。

  • ⚡️ 针对最新版VitePress进行了优化
  • ⚡️ 易于使用,有很多选项可根据自己的喜好进行定制
  • ⚡️ 轻量级捆绑文件大小,零依赖
  • ⚡️ 支持 多个侧边栏
  • ⚡️ 支持Frontmatter
  • ⚡️ 支持TypeScript
  • ⚡️ 自定义分类、特殊字符转换、文件和文件夹过滤器等菜单!

实际用途

VitePress侧边栏用于各种项目环境,包括我自己的网络服务。

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/troubleshooting/err-require-esm.html b/zhHans/troubleshooting/err-require-esm.html new file mode 100644 index 00000000..6408f67f --- /dev/null +++ b/zhHans/troubleshooting/err-require-esm.html @@ -0,0 +1,36 @@ + + + + + + CommonJS: ERR_REQUIRE_ESM | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

CommonJS: ERR_REQUIRE_ESM

vitepress-sidebar是一个ESM模块。如果您的项目使用CJS,则需要将其转换为ESM模块。

如需了解ESM模块的更多信息,请参阅以下内容:https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c

为解决这些问题,有以下几种解决方案:

解决方案 A

如果您想在 CJS 项目中使用该模块,请将文件扩展名从.js 改为 .mjs,然后再试一次。您可以为特定文件定义模块脚本。

解决方案 B

package.json文件中,添加"type":"module"行。这可能需要将项目转换为 ESM 项目。

json5
{
+  name: 'docs',
+  type: 'module', // <-- 添加此内容
+  version: '1.0.0',
+  scripts: {
+    dev: 'vitepress dev src',
+    build: 'vitepress build src',
+    serve: 'vitepress serve src'
+  }
+}

Released under the MIT License

+ + + + \ No newline at end of file diff --git a/zhHans/troubleshooting/index.html b/zhHans/troubleshooting/index.html new file mode 100644 index 00000000..7c535719 --- /dev/null +++ b/zhHans/troubleshooting/index.html @@ -0,0 +1,27 @@ + + + + + + 故障排除 | VitePress Sidebar + + + + + + + + + + + + + + + + +
Skip to content

Released under the MIT License

+ + + + \ No newline at end of file