diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..c26b0d3 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,2 @@ +.vitepress/dist +.vitepress/cache diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 0000000..87d8438 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,53 @@ +import {defineConfig} from 'vitepress'; +import { createRequire } from 'node:module' + +const require = createRequire(import.meta.url) + +export default defineConfig({ + title: 'Viselect', + base: '/viselect/', + description: 'Viselect - A high performance and lightweight library to add a visual way of selecting elements, just like on your Desktop. Zero dependencies, super small.', + head: [ + ['link', {rel: 'icon', href: 'favicon.png'}] + ], + themeConfig: { + nav: [ + {text: 'Home', link: '/'}, + {text: 'FAQ', link: '/pages/faq'}, + {text: 'API Reference', link: 'pages/api-reference'}, + ], + sidebar: [ + { + text: 'Introduction', + items: [ + {text: 'Quickstart', link: 'pages/quickstart'}, + {text: 'API Reference', link: 'pages/api-reference'}, + {text: 'Custom Integration', link: 'pages/custom-integration'}, + ] + }, + { + text: 'Frameworks', + items: [ + {text: 'Vanilla', link: 'pages/frameworks/vanilla'}, + {text: 'React', link: 'pages/frameworks/react'}, + {text: 'Preact', link: 'pages/frameworks/preact'}, + {text: 'Vue', link: 'pages/frameworks/vue'} + ] + } + ], + socialLinks: [ + {icon: 'github', link: 'https://github.com/simonwep/viselect'} + ], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright Β© 2018-present Simon Reinisch' + } + }, + vite: { + resolve: { + alias: { + '@viselect/vanilla': require.resolve('../../packages/vanilla/dist/viselect.mjs') + } + } + } +}); diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..9b3b244 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,48 @@ +--- +layout: home + +hero: + name: "Viselect" + text: "Visual Selection Library" + tagline: "A modern, ultra-tiny, and highly optimized selection library" + image: + src: logo.png + alt: Viselect logo + actions: + - theme: brand + text: Quickstart + link: pages/quickstart + - theme: alt + text: API Reference + link: pages/api-reference + +features: + - icon: 🌟 + title: Modern Bundle + details: A cutting-edge bundle for modern web development, ensuring compatibility with the latest standards and practices. + - icon: πŸ”© + title: Ultra Tiny + details: Extremely lightweight, around 4kb in size, making it perfect for performance-critical applications. + - icon: πŸ‘Œ + title: Simple Usage + details: Easy to use with minimal setup required, allowing developers to integrate it quickly into their projects. + - icon: ⚑ + title: Highly Optimized + details: Performance-focused and highly efficient, designed to handle large datasets and complex operations smoothly. + - icon: πŸš€ + title: Zero Dependencies + details: No external dependencies required, reducing the risk of conflicts and simplifying the build process. + - icon: πŸ“± + title: Mobile / Touch Support + details: Fully compatible with mobile and touch devices, providing a seamless experience across all platforms. + - icon: πŸ–± + title: Scroll Support + details: Supports both vertical and horizontal scrolling, ensuring smooth navigation and interaction. + - icon: πŸ’ͺ + title: Proven Stability + details: Over 3 years of development and widely used in many applications, demonstrating its reliability and robustness. + - icon: πŸ–Ό + title: Framework Support + details: Compatible with major frameworks (work in progress), making it versatile and easy to integrate with various technologies. +--- + diff --git a/docs/pages/api-reference.md b/docs/pages/api-reference.md new file mode 100644 index 0000000..4dc888a --- /dev/null +++ b/docs/pages/api-reference.md @@ -0,0 +1,347 @@ +--- +outline: deep +--- + +# API Reference + +The `SelectionArea` is the main class of the library, it is responsible for handling the selection process. +It is passed to each event and can be used to interact with the selection process. + +### Static Properties + +The only static property is the version of the library. + +```typescript +version: string; +``` + +### Methods + +#### `constructor` + +Instantiates a new `SelectionArea`. + +```typescript +constructor(opt: PartialSelectionOptions): SelectionArea; +``` + +- `opt: PartialSelectionOptions` - The options for the selection area. + +#### `trigger` + +Manually triggers the start of a selection, can be used to start a selection without a user interaction. + +```typescript +trigger(evt: MouseEvent | TouchEvent, silent = true): void; +``` + +- `evt: MouseEvent | TouchEvent` - A MouseEvent or TouchEvent-like object. +- `silent: boolean` - If `beforestart` should be fired. + +#### `resolveSelectables` + +Updates the list of selectables, useful if new elements have been added during a selection. + +```typescript +resolveSelectables(): void; +``` + +#### `clearSelection` + +Clears the selection. + +```typescript +clearSelection(includeStored = true, quiet = false): void; +``` + +- `includeStored: boolean` - If the store should also get cleared. +- `quiet: boolean` - If move/stop events should be fired. + +#### `getSelection` + +Returns currently selected elements. + +```typescript +getSelection(): Element[]; +``` + +#### `getSelectionArea` + +Returns the selection area element. + +```typescript +getSelectionArea(): HTMLElement; +``` + +#### `getSelectables` + +Returns all selectables. + +```typescript +getSelectables(): Element[]; +``` + +#### `setAreaLocation` + +Sets the location of the selection area. + +```typescript +setAreaLocation(location: Partial): void; +``` + +- `location: Partial` - A partial AreaLocation object. + +#### `getAreaLocation` + +Returns the current location of the selection area. + +```typescript +getAreaLocation(): AreaLocation; +``` + +#### `cancel` + +Cancels the current selection process. + +```typescript +cancel(keepEvent = false): void; +``` + +- `keepEvent: boolean` - If a stop event should be fired. + +#### `destroy` + +Unbinds all events and removes the area-element. + +```typescript +destroy(): void; +``` + +#### `enable` + +Enables selecting elements, this is the default state. + +```typescript +enable(): void; +``` + +#### `disable` + +Disables selecting elements. + +```typescript +disable(): void; +``` + +#### `select` + +Manually selects elements and adds them to the store. + +```typescript +select(query: SelectAllSelectors, quiet = false): Element[]; +``` + +- `query: SelectAllSelectors` - CSS Query, can be an array of queries. +- `quiet: boolean` - If this should not trigger the move event. + +#### `deselect` + +Manually deselects elements and removes them from the store. + +```typescript +deselect(query: SelectAllSelectors, quiet = false): Element[]; +``` + +- `query: SelectAllSelectors` - CSS Query, can be an array of queries. +- `quiet: boolean` - If this should not trigger the move event. + +## Types + +### `DeepPartial` + +A type that makes all properties in `T` optional and allows for nested optional properties. + +```typescript +type DeepPartial = T extends unknown[] ? T : T extends HTMLElement ? T : { [P in keyof T]?: DeepPartial; }; +``` + +### `Quantify` + +A type that allows `T` to be an array or a single value. + +```typescript +type Quantify = T[] | T; +``` + +### `ScrollEvent` + +An interface that extends `MouseEvent` with additional properties. + +```typescript +interface ScrollEvent extends MouseEvent { + deltaY: number; + deltaX: number; +} +``` + +### `ChangedElements` + +An interface representing elements that have been added or removed. + +```typescript +interface ChangedElements { + added: Element[]; + removed: Element[]; +} +``` + +### `SelectionStore` + +An interface representing the selection store. + +```typescript +interface SelectionStore { + touched: Element[]; + stored: Element[]; + selected: Element[]; + changed: ChangedElements; +} +``` + +### `SelectionEvent` + +An interface representing a selection event. + +```typescript +interface SelectionEvent { + event: MouseEvent | TouchEvent | null; + store: SelectionStore; + selection: SelectionArea; +} +``` + +- `event` - The original event that triggered the selection, may be `null` if manually triggered. +- `store` - The current state of the selection store. +- `selection` - The selection area instance. + +### `SelectionEvents` + +An interface representing the selection events. + +```typescript +interface SelectionEvents { + beforestart: (e: SelectionEvent) => boolean | void; + beforedrag: (e: SelectionEvent) => boolean | void; + start: (e: SelectionEvent) => void; + move: (e: SelectionEvent) => void; + stop: (e: SelectionEvent) => void; +} +``` + +- `beforestart` - Fired before the selection starts, if `false` is returned the selection will be canceled. +- `beforedrag` - Fired before the selection area is moved, if `false` is returned the move will be canceled. +- `start` - Fired when the selection starts. +- `move` - Fired when the selection area is moved. +- `stop` - Fired when the selection stops. + +### `AreaLocation` + +An interface representing the location of the selection area. + +```typescript +interface AreaLocation { + x1: number; + y1: number; + x2: number; + y2: number; +} +``` + +### `Coordinates` + +An interface representing coordinates. + +```typescript +interface Coordinates { + x: number; + y: number; +} +``` + +### `TapMode` + +A type representing the tap mode. + +```typescript +type TapMode = 'touch' | 'native'; +``` + +- `touch` - The element was at the time of click touched "visually" (default). +- `native` - The element was the actual element of the click event. + +### `OverlapMode` + +A type representing the overlap mode, e.g. what should happen if you select an element that is already selected. + +```typescript +type OverlapMode = 'keep' | 'drop' | 'invert'; +``` + +- `keep` - Keep the element selected. +- `drop` - Deselect the element. +- `invert` - Deselect the element if it is selected, otherwise select it (default). + +### `SelectionOptions` + +An interface representing selection options, this is after defaults have been applied. +It consists of the following interfaces: + +```typescript +interface SingleTap { + allow: boolean; + intersect: TapMode; +} + +interface Features { + deselectOnBlur: boolean; + singleTap: SingleTap; + range: boolean; + touch: boolean; +} + +interface Scrolling { + speedDivider: number; + manualSpeed: number; + startScrollMargins: {x: number, y: number}; +} + +interface Behaviour { + intersect: Intersection; + startThreshold: number | Coordinates; + overlap: OverlapMode; + scrolling: Scrolling; + triggers: Trigger[]; +} + +interface SelectionOptions { + selectionAreaClass: string; + selectionContainerClass: string | undefined; + container: Quantify; + document: Document; + selectables: Quantify; + startAreas: Quantify; + boundaries: Quantify; + behaviour: Behaviour; + features: Features; +} +``` + +### `PartialSelectionOptions` + +Type of what can be passed to the `SelectionArea` constructor. + +```typescript +type PartialSelectionOptions = DeepPartial> & { + document?: Document; +}; +``` diff --git a/docs/pages/custom-integration.md b/docs/pages/custom-integration.md new file mode 100644 index 0000000..d63d4ed --- /dev/null +++ b/docs/pages/custom-integration.md @@ -0,0 +1,9 @@ +# Integrating Viselect into _anything_ + +As mentioned in the [quickstart](./quickstart.md), Viselect is a framework-agnostic library. +This means that you can use it with any framework or library you want. + +This page should help you to integrate Viselect into your project, no matter if you're using Vue, React, Preact, Angular, or any other framework. +Don't worry, there aren't many differences between the integrations, and after you're done you can enjoy all core features of Viselect! + +...coming soon! diff --git a/docs/pages/faq.md b/docs/pages/faq.md new file mode 100644 index 0000000..45216ac --- /dev/null +++ b/docs/pages/faq.md @@ -0,0 +1,15 @@ +--- +outline: deep +--- + +# Text is selected by default when dragging the mouse over text + +To not interfere with text-selection, selection-js won't prevent any default events anymore (as of `v2.0.3`). +This, however, can cause problems with the actual selection ("introduced" by [#99](https://github.com/Simonwep/selection/pull/99), reported in [#103](https://github.com/Simonwep/selection/issues/103)). +If you don't care about text-selection, add the following to the container where all your selectables are located: + +```css +.container { + user-select: none; +} +``` diff --git a/docs/pages/frameworks/preact.md b/docs/pages/frameworks/preact.md new file mode 100644 index 0000000..2311773 --- /dev/null +++ b/docs/pages/frameworks/preact.md @@ -0,0 +1,129 @@ +# Using Viselect with Preact + +::: tip +This is merely a convenience wrapper around the [core library](./vanilla.md). +The core API is fairly simple, if you want to have full control over it, you should [roll out your own wrapper](../custom-integration.md) in your app. +Don't worry, it's not that hard! +::: + +## Installation + +To use Viselect with Preact, install its Preact package with: + +::: code-group + +```sh [npm] +$ npm install @viselect/preact +``` + +```sh [pnpm] +$ pnpm install @viselect/preact +``` + +```sh [yarn] +$ yarn add @viselect/preact +``` + +::: + +## Usage + +You can use Viselect in your Preact project by importing the `SelectionArea` component from the `@viselect/preact` package. + +::: tip +All options are exposed as props +They're a one-to-one mapping of the original options describe [here](../api-reference.md#selectionoptions)! +::: + +::: code-group + +```tsx [App.tsx] +import {SelectionArea, SelectionEvent} from '@viselect/preact'; +import {FunctionalComponent} from 'preact'; +import {useState} from 'preact/hooks'; +import './styles.css'; + +const App: FunctionComponent = () => { + const [selected, setSelected] = useState>(() => new Set()); + + const extractIds = (els: Element[]): number[] => + els.map(v => v.getAttribute('data-key')) + .filter(Boolean) + .map(Number); + + const onStart = ({event, selection}: SelectionEvent) => { + if (!event?.ctrlKey && !event?.metaKey) { + selection.clearSelection(); + setSelected(() => new Set()); + } + }; + + const onMove = ({store: {changed: {added, removed}}}: SelectionEvent) => { + setSelected(prev => { + const next = new Set(prev); + extractIds(added).forEach(id => next.add(id)); + extractIds(removed).forEach(id => next.delete(id)); + return next; + }); + }; + + return ( + <> + + {new Array(42).fill(0).map((_, index) => ( +
+ ))} + + + ); +} +``` + +```css [styles.css] +.container { + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + border: 1px dashed #4f5276; + border-radius: 15px; + padding: 15px; + margin: 15px 0; + user-select: none; +} + +.container div { + height: 50px; + width: 50px; + margin: 3px; + background: rgba(66, 68, 90, 0.075); + border-radius: 10px; + cursor: pointer; +} + +div.selected { + background: linear-gradient(45deg, #78b2ff, #218ad9); +} + +.selection-area { + background: rgba(46, 115, 252, 0.11); + border: 1px solid rgba(98, 155, 255, 0.85); + border-radius: 0.15em; +} +``` + +::: + +## Hooks + +To access the `SelectionArea` instance, you can use the `useSelection` hook provided by the `@viselect/preact` package. +The context is provided by the `SelectionArea` component, so make sure to use it within the component tree where the `SelectionArea` is rendered. +It contains a [SelectionArea](../api-reference.md) instance. + +```tsx +import { useSelection } from '@viselect/preact'; +``` diff --git a/docs/pages/frameworks/react.md b/docs/pages/frameworks/react.md new file mode 100644 index 0000000..ec9a6cb --- /dev/null +++ b/docs/pages/frameworks/react.md @@ -0,0 +1,128 @@ +# Using Viselect with React + +::: tip +This is merely a convenience wrapper around the [core library](./vanilla.md). +The core API is fairly simple, if you want to have full control over it, you should [roll out your own wrapper](../custom-integration.md) in your app. +Don't worry, it's not that hard! +::: + +## Installation + +To use Viselect with React, install its React package with: + +::: code-group + +```sh [npm] +$ npm install @viselect/react +``` + +```sh [pnpm] +$ pnpm install @viselect/react +``` + +```sh [yarn] +$ yarn add @viselect/react +``` + +::: + +## Usage + +You can use Viselect in your React project by importing the `SelectionArea` component from the `@viselect/react` package. + +::: tip +All options are exposed as props +They're a one-to-one mapping of the original options describe [here](../api-reference.md#selectionoptions)! +::: + +::: code-group + +```tsx [App.tsx] +import {SelectionArea, SelectionEvent} from '@viselect/react'; +import React, {FunctionComponent, useState} from 'react'; +import './styles.css'; + +const App: FunctionComponent = () => { + const [selected, setSelected] = useState>(() => new Set()); + + const extractIds = (els: Element[]): number[] => + els.map(v => v.getAttribute('data-key')) + .filter(Boolean) + .map(Number); + + const onStart = ({ event, selection }: SelectionEvent) => { + if (!event?.ctrlKey && !event?.metaKey) { + selection.clearSelection(); + setSelected(() => new Set()); + } + }; + + const onMove = ({ store: { changed: { added, removed } } }: SelectionEvent) => { + setSelected(prev => { + const next = new Set(prev); + extractIds(added).forEach(id => next.add(id)); + extractIds(removed).forEach(id => next.delete(id)); + return next; + }); + }; + + return ( + <> + + {new Array(42).fill(0).map((_, index) => ( +
+ ))} + + + ); +} +``` + +```css [styles.css] +.container { + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + border: 1px dashed #4f5276; + border-radius: 15px; + padding: 15px; + margin: 15px 0; + user-select: none; +} + +.container div { + height: 50px; + width: 50px; + margin: 3px; + background: rgba(66, 68, 90, 0.075); + border-radius: 10px; + cursor: pointer; +} + +div.selected { + background: linear-gradient(45deg, #78b2ff, #218ad9); +} + +.selection-area { + background: rgba(46, 115, 252, 0.11); + border: 1px solid rgba(98, 155, 255, 0.85); + border-radius: 0.15em; +} +``` + +::: + +## Hooks + +To access the `SelectionArea` instance, you can use the `useSelection` hook provided by the `@viselect/react` package. +The context is provided by the `SelectionArea` component, so make sure to use it within the component tree where the `SelectionArea` is rendered. +It contains a [SelectionArea](../api-reference.md) instance. + +```tsx +import { useSelection } from '@viselect/react'; +``` diff --git a/docs/pages/frameworks/vanilla.md b/docs/pages/frameworks/vanilla.md new file mode 100644 index 0000000..99e8a25 --- /dev/null +++ b/docs/pages/frameworks/vanilla.md @@ -0,0 +1,106 @@ +# Using Viselect as-is + +## Installation + +To use Viselect without a framework, install it's vanilla package with: + +::: code-group + +```sh [npm] +$ npm add -D @viselect/vanilla +``` + +```sh [pnpm] +$ pnpm add -D @viselect/vanilla +``` + +```sh [yarn] +$ yarn add -D @viselect/vanilla +``` + +::: + +## Usage + +As per our [quickstart](/pages/quickstart.md), you can use Viselect in your project by importing the `SelectionArea` class from the `@viselect/vanilla` package. +For all the options available, check the [API reference](../api-reference.md#selectionoptions). + +::: tip +As already mentioned, it's recommended to start from here _even_ if you're using vue, react, preact or any other framework as the only difference is to take care of the instance creation and destruction. +::: + +::: code-group + +```ts [main.ts] +import { SelectionArea } from '@viselect/vanilla'; +import './styles.css'; + +// Generate some divs to select later +[ + ['.container.blue', 33], + ['.container.green', 33] +].forEach(([selector, items]) => { + const container = document.querySelector(selector); + + for (let i = 0; i < items; i++) { + container.appendChild(document.createElement('div')); + } +}); + +// Instantiate the selection area +const selection = new SelectionArea({ + selectables: ['.container > div'], // Specifies the elements that can be selected + boundaries: ['.container'], // Specifies the boundaries of each selection +}).on('start', ({ store, event }) => { + if (!event.ctrlKey && !event.metaKey) { + store.stored.forEach(el => el.classList.remove('selected')); + selection.clearSelection(); + } +}).on('move', ({ store: { changed: { added, removed } } }) => { + added.forEach(el => el.classList.add('selected')); + removed.forEach(el => el.classList.remove('selected')); +}); +``` + +```css [styles.css] +.container { + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + border: 1px dashed #4f5276; + border-radius: 15px; + padding: 15px; + margin: 15px 0; + user-select: none; +} + +.container div { + height: 50px; + width: 50px; + margin: 3px; + background: rgba(66, 68, 90, 0.075); + border-radius: 10px; + cursor: pointer; +} + +.container.green div.selected { + background: linear-gradient(45deg, #78b2ff, #218ad9); +} + +.container.blue div.selected { + background: linear-gradient(45deg, #9e91ef, #5c51b4); +} + +.selection-area { + background: rgba(46, 115, 252, 0.11); + border: 1px solid rgba(98, 155, 255, 0.85); + border-radius: 0.15em; +} +``` + +```html [index.html] +
+
+``` + +::: diff --git a/docs/pages/frameworks/vue.md b/docs/pages/frameworks/vue.md new file mode 100644 index 0000000..5b9c303 --- /dev/null +++ b/docs/pages/frameworks/vue.md @@ -0,0 +1,153 @@ +# Using Viselect with Vue + +::: tip +This is merely a convenience wrapper around the [core library](./vanilla.md). +The core API is fairly simple, if you want to have full control over it, you should [roll out your own wrapper](../custom-integration.md) in your app. +Don't worry, it's not that hard! +::: + +## Installation + +To use Viselect with Vue, install its Vue package with: + +::: code-group + +```sh [npm] +$ npm install @viselect/vue +``` + +```sh [pnpm] +$ pnpm install @viselect/vue +``` + +```sh [yarn] +$ yarn add @viselect/vue +``` + +::: + +## Usage + +You can use Viselect in your Vue project by importing the `SelectionArea` component from the `@viselect/vue` package. + +::: tip +All options are exposed as `options` prop. +They're a one-to-one mapping of the original options describe [here](../api-reference.md#selectionoptions)! +::: + +::: info +Events are handled using props because you can’t return a value in events synchronously! +::: + +```vue [App.vue] + + + + + +``` + +## Exposed API + +#### `selection` + +It's possible to get the current `SelectionArea`-instance via [template refs](https://vuejs.org/guide/essentials/template-refs.html). + +```vue + + + +``` diff --git a/docs/pages/quickstart.md b/docs/pages/quickstart.md new file mode 100644 index 0000000..7f42f2a --- /dev/null +++ b/docs/pages/quickstart.md @@ -0,0 +1,161 @@ +# Quickstart + +### How to use Viselect + +Viselect can be used with [Vue 3](./frameworks/vue.md), [preact](./frameworks/preact.md), [react](./frameworks/react.md), or [without](./frameworks/vanilla.md) any framework. +All its variants are available as separate packages under the `@viselect` namespace. + +::: tip +Even though there are packages for all frameworks, due to its complexity, it is often better to go with a [custom integration](./custom-integration.md) if you're using a framework. +Don't worry, you can always switch to using the vanilla package later on if needed! +::: + +For the following we'll use the vanilla package, an index.html file, a css file, and a js module to get started. + +::: code-group + +```js [main.mjs] +import SelectionArea from 'https://cdn.jsdelivr.net/npm/@viselect/vanilla/dist/viselect.mjs'; + +// Generate some divs to select later +[ + ['.container.blue', 33], + ['.container.green', 33] +].forEach(([selector, items]) => { + const container = document.querySelector(selector); + + for (let i = 0; i < items; i++) { + container.appendChild(document.createElement('div')); + } +}); + +// Instantiate the selection area +const selection = new SelectionArea({ + selectables: ['.container > div'], // Specifies the elements that can be selected + boundaries: ['.container'], // Specifies the boundaries of each selection + selectionAreaClass: 'selectionArea' // Specifies the class to be added to the selection area +}).on('start', ({ store, event }) => { + if (!event.ctrlKey && !event.metaKey) { + store.stored.forEach(el => el.classList.remove('selected')); + selection.clearSelection(); + } +}).on('move', ({ store: { changed: { added, removed } } }) => { + added.forEach(el => el.classList.add('selected')); + removed.forEach(el => el.classList.remove('selected')); +}); +``` + +```css [styles.css] +.container { + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + border: 2px dashed #4f5276; + border-radius: 15px; + padding: 15px; + margin: 15px 0; + user-select: none; +} + +.container div { + height: 50px; + width: 50px; + margin: 3px; + background: rgba(66, 68, 90, 0.075); + border-radius: 10px; + cursor: pointer; +} + +.container.green div.selected { + background: linear-gradient(45deg, #78b2ff, #218ad9); +} + +.container.blue div.selected { + background: linear-gradient(45deg, #9e91ef, #5c51b4); +} + +.selectionArea { + background: rgba(46, 115, 252, 0.11); + border: 1px solid rgba(98, 155, 255, 0.85); + border-radius: 0.15em; +} +``` + +```html [index.html] +
+
+``` + +::: + +Which will give you the following result: + +
+
+ + + + diff --git a/docs/public/favicon.png b/docs/public/favicon.png new file mode 100644 index 0000000..a28b702 Binary files /dev/null and b/docs/public/favicon.png differ diff --git a/docs/public/logo.png b/docs/public/logo.png new file mode 100644 index 0000000..23b3f33 Binary files /dev/null and b/docs/public/logo.png differ diff --git a/package.json b/package.json index 1a34aba..bc3e49c 100644 --- a/package.json +++ b/package.json @@ -12,10 +12,13 @@ "build": "pnpm run --recursive build", "lint": "eslint 'packages/*/{src,demo}/**/*.{ts,tsx,vue,js}' --cache", "lint:fix": "pnpm run lint --fix", - "test:ci": "pnpm run lint:fix && pnpm run build", + "test:ci": "pnpm run lint:fix && pnpm run build && pnpm docs:build", "release:major": "lerna version major", "release:minor": "lerna version minor", - "release:patch": "lerna version patch" + "release:patch": "lerna version patch", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" }, "devDependencies": { "@eslint/js": "9.17.0", @@ -42,6 +45,7 @@ "vite": "6.0.7", "vite-plugin-banner": "0.8.0", "vite-plugin-dts": "4.4.0", + "vitepress": "1.5.0", "vue": "3.5.13", "vue-tsc": "2.2.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2a6ece..41709b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,6 +80,9 @@ importers: vite-plugin-dts: specifier: 4.4.0 version: 4.4.0(@types/node@22.10.5)(rollup@4.29.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.5)(yaml@2.7.0)) + vitepress: + specifier: 1.5.0 + version: 1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.5)(@types/react@19.0.2)(axios@1.7.9)(postcss@8.4.49)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(search-insights@2.17.3)(typescript@5.7.2) vue: specifier: 3.5.13 version: 3.5.13(typescript@5.7.2) @@ -121,6 +124,78 @@ importers: packages: + '@algolia/autocomplete-core@1.17.7': + resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7': + resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.17.7': + resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.17.7': + resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/client-abtesting@5.19.0': + resolution: {integrity: sha512-dMHwy2+nBL0SnIsC1iHvkBao64h4z+roGelOz11cxrDBrAdASxLxmfVMop8gmodQ2yZSacX0Rzevtxa+9SqxCw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.19.0': + resolution: {integrity: sha512-CDW4RwnCHzU10upPJqS6N6YwDpDHno7w6/qXT9KPbPbt8szIIzCHrva4O9KIfx1OhdsHzfGSI5hMAiOOYl4DEQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.19.0': + resolution: {integrity: sha512-2ERRbICHXvtj5kfFpY5r8qu9pJII/NAHsdgUXnUitQFwPdPL7wXiupcvZJC7DSntOnE8AE0lM7oDsPhrJfj5nQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.19.0': + resolution: {integrity: sha512-xPOiGjo6I9mfjdJO7Y+p035aWePcbsItizIp+qVyfkfZiGgD+TbNxM12g7QhFAHIkx/mlYaocxPY/TmwPzTe+A==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.19.0': + resolution: {integrity: sha512-B9eoce/fk8NLboGje+pMr72pw+PV7c5Z01On477heTZ7jkxoZ4X92dobeGuEQop61cJ93Gaevd1of4mBr4hu2A==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.19.0': + resolution: {integrity: sha512-6fcP8d4S8XRDtVogrDvmSM6g5g6DndLc0pEm1GCKe9/ZkAzCmM3ZmW1wFYYPxdjMeifWy1vVEDMJK7sbE4W7MA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.19.0': + resolution: {integrity: sha512-Ctg3xXD/1VtcwmkulR5+cKGOMj4r0wC49Y/KZdGQcqpydKn+e86F6l3tb3utLJQVq4lpEJud6kdRykFgcNsp8Q==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.19.0': + resolution: {integrity: sha512-LO7w1MDV+ZLESwfPmXkp+KLeYeFrYEgtbCZG6buWjddhYraPQ9MuQWLhLLiaMlKxZ/sZvFTcZYuyI6Jx4WBhcg==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.19.0': + resolution: {integrity: sha512-Mg4uoS0aIKeTpu6iv6O0Hj81s8UHagi5TLm9k2mLIib4vmMtX7WgIAHAcFIaqIZp5D6s5EVy1BaDOoZ7buuJHA==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.19.0': + resolution: {integrity: sha512-PbgrMTbUPlmwfJsxjFhal4XqZO2kpBNRjemLVTkUiti4w/+kzcYO4Hg5zaBgVqPwvFDNQ8JS4SS3TBBem88u+g==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.19.0': + resolution: {integrity: sha512-GfnhnQBT23mW/VMNs7m1qyEyZzhZz093aY2x8p0era96MMyNv8+FxGek5pjVX0b57tmSCZPf4EqNCpkGcGsmbw==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.19.0': + resolution: {integrity: sha512-oyTt8ZJ4T4fYvW5avAnuEc6Laedcme9fAFryMD9ndUTIUe/P0kn3BuGcCLFjN3FDmdrETHSFkgPPf1hGy3sLCw==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.19.0': + resolution: {integrity: sha512-p6t8ue0XZNjcRiqNkb5QAM0qQRAKsCiebZ6n9JjWA+p8fWf8BvnhO55y2fO28g3GW0Imj7PrAuyBuxq8aDVQwQ==} + engines: {node: '>= 14.0.0'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -226,6 +301,29 @@ packages: resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} + '@docsearch/css@3.8.2': + resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} + + '@docsearch/js@3.8.2': + resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} + + '@docsearch/react@3.8.2': + resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + '@emnapi/core@1.3.1': resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} @@ -235,102 +333,204 @@ packages: '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} @@ -343,6 +543,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} @@ -355,30 +561,60 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} @@ -443,6 +679,12 @@ packages: resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} engines: {node: '>=6.9.0'} + '@iconify-json/simple-icons@1.2.20': + resolution: {integrity: sha512-WlQ95zrdxxizrFt2HtkfYjyWatLfE8Z7BKOkew9quG5S5AKYVxF1PkTtOs8LDWShce1DpvxKWQne4W5DQyEGZg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -844,6 +1086,30 @@ packages: '@rushstack/ts-command-line@4.23.2': resolution: {integrity: sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==} + '@shikijs/core@1.27.2': + resolution: {integrity: sha512-ns1dokDr0KE1lQ9mWd4rqaBkhSApk0qGCK1+lOqwnkQSkVZ08UGqXj1Ef8dAcTMZNFkN6PSNjkL5TYNX7pyPbQ==} + + '@shikijs/engine-javascript@1.27.2': + resolution: {integrity: sha512-0JB7U5vJc16NShBdxv9hSSJYSKX79+32O7F4oXIxJLdYfomyFvx4B982ackUI9ftO9T3WwagkiiD3nOxOOLiGA==} + + '@shikijs/engine-oniguruma@1.27.2': + resolution: {integrity: sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==} + + '@shikijs/langs@1.27.2': + resolution: {integrity: sha512-MSrknKL0DbeXvhtSigMLIzjPOOQfvK7fsbcRv2NUUB0EvuTTomY8/U+lAkczYrXY2+dygKOapJKk8ScFYbtoNw==} + + '@shikijs/themes@1.27.2': + resolution: {integrity: sha512-Yw/uV7EijjWavIIZLoWneTAohcbBqEKj6XMX1bfMqO3llqTKsyXukPp1evf8qPqzUHY7ibauqEaQchhfi857mg==} + + '@shikijs/transformers@1.27.2': + resolution: {integrity: sha512-BJFeXP9/zlYidJocv2ShkOvXI22fepS2oK/vItfCbCcuJ0783eWgEn6/mMrXmk+p+Twu49ntDVQe665uy6RPWw==} + + '@shikijs/types@1.27.2': + resolution: {integrity: sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==} + + '@shikijs/vscode-textmate@10.0.1': + resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + '@sigstore/bundle@2.3.2': resolution: {integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -900,9 +1166,24 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/minimatch@3.0.5': resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} @@ -923,6 +1204,12 @@ packages: '@types/react@19.0.2': resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + '@typescript-eslint/eslint-plugin@8.19.0': resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -970,6 +1257,9 @@ packages: resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.1': + resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + '@vitejs/plugin-react@4.3.4': resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} engines: {node: ^14.18.0 || >=16.0.0} @@ -1007,6 +1297,15 @@ packages: '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + '@vue/devtools-api@7.7.0': + resolution: {integrity: sha512-bHEv6kT85BHtyGgDhE07bAUMAy7zpv6nnR004nSTd0wWMrAOtcrYoXO5iyr20Hkf5jR8obQOfS3byW+I3l2CCA==} + + '@vue/devtools-kit@7.7.0': + resolution: {integrity: sha512-5cvZ+6SA88zKC8XiuxUfqpdTwVjJbvYnQZY5NReh7qlSGPvVDjjzyEtW+gdzLXNSd8tStgOjAdMCpvDQamUXtA==} + + '@vue/devtools-shared@7.7.0': + resolution: {integrity: sha512-jtlQY26R5thQxW9YQTpXbI0HoK0Wf9Rd4ekidOkRvSy7ChfK0kIU6vvcBtjj87/EcpeOSK49fZAicaFNJcoTcQ==} + '@vue/eslint-config-typescript@14.2.0': resolution: {integrity: sha512-JJ4wHuTJa2faQsBOUeWzuHOSFizVS7RWG2eH2noABk2LcT4wVcTOMZKM/lFobKBcgwADIPAKVRGFHVKooXImoA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1051,6 +1350,56 @@ packages: '@vue/shared@3.5.13': resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vueuse/core@11.3.0': + resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==} + + '@vueuse/integrations@11.3.0': + resolution: {integrity: sha512-5fzRl0apQWrDezmobchoiGTkGw238VWESxZHazfhP3RM7pDSiyXy18QbfYkILoYNTd23HPAfQTJpkUc5QbkwTw==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/metadata@11.3.0': + resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==} + + '@vueuse/shared@11.3.0': + resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==} + '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -1116,6 +1465,10 @@ packages: ajv@8.13.0: resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + algoliasearch@5.19.0: + resolution: {integrity: sha512-zrLtGhC63z3sVLDDKGW+SlCRN9eJHFTgdEmoAOpsVh6wgGL1GgTTDou7tpCBjevzgIvi3AIyDAQO3Xjbg5eqZg==} + engines: {node: '>= 14.0.0'} + alien-signals@0.2.2: resolution: {integrity: sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A==} @@ -1237,6 +1590,9 @@ packages: resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1299,6 +1655,9 @@ packages: caniuse-lite@1.0.30001690: resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@4.1.0: resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} engines: {node: '>=10'} @@ -1307,6 +1666,12 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -1380,6 +1745,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} @@ -1436,6 +1804,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -1539,10 +1911,17 @@ packages: deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + detect-indent@5.0.0: resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} engines: {node: '>=4'} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1598,6 +1977,9 @@ packages: electron-to-chromium@1.5.76: resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1664,6 +2046,11 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} @@ -1825,6 +2212,9 @@ packages: flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + focus-trap@7.6.4: + resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==} + follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -2026,10 +2416,19 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -2041,6 +2440,9 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -2272,6 +2674,10 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -2503,10 +2909,16 @@ packages: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} @@ -2518,6 +2930,21 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -2606,10 +3033,16 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minisearch@7.1.1: + resolution: {integrity: sha512-b3YZEYCEH4EdCAtYP7OlDyx7FdPwNzuNwLQ34SfJpM9dlbBZzeXndGavTrC+VCiRWomL21SWfMc6SCKO/U2ZNw==} + minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -2775,6 +3208,9 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + oniguruma-to-es@2.1.0: + resolution: {integrity: sha512-Iq/949c5IueVC5gQR7OYXs0uHsDIePcgZFlVRIVGfQcWwbKG+nsyWfthswdytShlRdkZADY+bWSi+BRyUL81gA==} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -2926,6 +3362,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3019,6 +3458,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} @@ -3098,6 +3540,15 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -3147,6 +3598,9 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@4.4.1: resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} engines: {node: '>=14'} @@ -3191,6 +3645,9 @@ packages: scheduler@0.25.0: resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -3236,6 +3693,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shiki@1.27.2: + resolution: {integrity: sha512-QtA1C41oEVixKog+V8I3ia7jjGls7oCZ8Yul8vdHrVBga5uPoyTtMvFF4lMMXIyAZo5A5QbXq91bot2vA6Q+eQ==} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -3295,6 +3755,9 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -3307,6 +3770,10 @@ packages: spdx-license-ids@3.0.20: resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} @@ -3364,6 +3831,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3397,6 +3867,10 @@ packages: engines: {node: '>=4'} hasBin: true + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + engines: {node: '>=16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -3409,6 +3883,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -3450,6 +3927,9 @@ packages: resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -3558,6 +4038,21 @@ packages: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} @@ -3596,6 +4091,12 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite-plugin-banner@0.8.0: resolution: {integrity: sha512-JpDWDYxtrsytuvUOJCgJcTkBb6XM8yPOidjRtB6F5SW1JSzDd/Y+PD/44wR6ovWKXhSUiyDRqPvx7mMf8+8ELg==} @@ -3609,6 +4110,37 @@ packages: vite: optional: true + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vite@6.0.7: resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -3649,9 +4181,32 @@ packages: yaml: optional: true + vitepress@1.5.0: + resolution: {integrity: sha512-q4Q/G2zjvynvizdB3/bupdYkCJe2umSAMv9Ju4d92E6/NXJ59z70xB0q5p/4lpRyAwflDsbwy1mLV9Q5+nlB+g==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue-eslint-parser@9.4.3: resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} engines: {node: ^14.17.0 || >=16.0.0} @@ -3793,8 +4348,116 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': + dependencies: + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@algolia/client-search': 5.19.0 + algoliasearch: 5.19.0 + + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)': + dependencies: + '@algolia/client-search': 5.19.0 + algoliasearch: 5.19.0 + + '@algolia/client-abtesting@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/client-analytics@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/client-common@5.19.0': {} + + '@algolia/client-insights@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/client-personalization@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/client-query-suggestions@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/client-search@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/ingestion@1.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/monitoring@1.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/recommend@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + + '@algolia/requester-browser-xhr@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + + '@algolia/requester-fetch@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + + '@algolia/requester-node-http@5.19.0': + dependencies: + '@algolia/client-common': 5.19.0 + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -3937,6 +4600,33 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@docsearch/css@3.8.2': {} + + '@docsearch/js@3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(search-insights@2.17.3)': + dependencies: + '@docsearch/react': 3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(search-insights@2.17.3) + preact: 10.25.4 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@docsearch/css': 3.8.2 + algoliasearch: 5.19.0 + optionalDependencies: + '@types/react': 19.0.2 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + '@emnapi/core@1.3.1': dependencies: '@emnapi/wasi-threads': 1.0.1 @@ -3950,78 +4640,147 @@ snapshots: dependencies: tslib: 2.8.1 + '@esbuild/aix-ppc64@0.21.5': + optional: true + '@esbuild/aix-ppc64@0.24.2': optional: true + '@esbuild/android-arm64@0.21.5': + optional: true + '@esbuild/android-arm64@0.24.2': optional: true + '@esbuild/android-arm@0.21.5': + optional: true + '@esbuild/android-arm@0.24.2': optional: true + '@esbuild/android-x64@0.21.5': + optional: true + '@esbuild/android-x64@0.24.2': optional: true + '@esbuild/darwin-arm64@0.21.5': + optional: true + '@esbuild/darwin-arm64@0.24.2': optional: true + '@esbuild/darwin-x64@0.21.5': + optional: true + '@esbuild/darwin-x64@0.24.2': optional: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true + '@esbuild/freebsd-arm64@0.24.2': optional: true + '@esbuild/freebsd-x64@0.21.5': + optional: true + '@esbuild/freebsd-x64@0.24.2': optional: true + '@esbuild/linux-arm64@0.21.5': + optional: true + '@esbuild/linux-arm64@0.24.2': optional: true + '@esbuild/linux-arm@0.21.5': + optional: true + '@esbuild/linux-arm@0.24.2': optional: true + '@esbuild/linux-ia32@0.21.5': + optional: true + '@esbuild/linux-ia32@0.24.2': optional: true + '@esbuild/linux-loong64@0.21.5': + optional: true + '@esbuild/linux-loong64@0.24.2': optional: true + '@esbuild/linux-mips64el@0.21.5': + optional: true + '@esbuild/linux-mips64el@0.24.2': optional: true + '@esbuild/linux-ppc64@0.21.5': + optional: true + '@esbuild/linux-ppc64@0.24.2': optional: true + '@esbuild/linux-riscv64@0.21.5': + optional: true + '@esbuild/linux-riscv64@0.24.2': optional: true + '@esbuild/linux-s390x@0.21.5': + optional: true + '@esbuild/linux-s390x@0.24.2': optional: true + '@esbuild/linux-x64@0.21.5': + optional: true + '@esbuild/linux-x64@0.24.2': optional: true '@esbuild/netbsd-arm64@0.24.2': optional: true + '@esbuild/netbsd-x64@0.21.5': + optional: true + '@esbuild/netbsd-x64@0.24.2': optional: true '@esbuild/openbsd-arm64@0.24.2': optional: true + '@esbuild/openbsd-x64@0.21.5': + optional: true + '@esbuild/openbsd-x64@0.24.2': optional: true + '@esbuild/sunos-x64@0.21.5': + optional: true + '@esbuild/sunos-x64@0.24.2': optional: true + '@esbuild/win32-arm64@0.21.5': + optional: true + '@esbuild/win32-arm64@0.24.2': optional: true + '@esbuild/win32-ia32@0.21.5': + optional: true + '@esbuild/win32-ia32@0.24.2': optional: true + '@esbuild/win32-x64@0.21.5': + optional: true + '@esbuild/win32-x64@0.24.2': optional: true @@ -4081,6 +4840,12 @@ snapshots: '@hutson/parse-repository-url@3.0.2': {} + '@iconify-json/simple-icons@1.2.20': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -4651,6 +5416,45 @@ snapshots: transitivePeerDependencies: - '@types/node' + '@shikijs/core@1.27.2': + dependencies: + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + + '@shikijs/engine-javascript@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 + oniguruma-to-es: 2.1.0 + + '@shikijs/engine-oniguruma@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 + + '@shikijs/langs@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + + '@shikijs/themes@1.27.2': + dependencies: + '@shikijs/types': 1.27.2 + + '@shikijs/transformers@1.27.2': + dependencies: + shiki: 1.27.2 + + '@shikijs/types@1.27.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.1': {} + '@sigstore/bundle@2.3.2': dependencies: '@sigstore/protobuf-specs': 0.3.2 @@ -4721,8 +5525,25 @@ snapshots: '@types/estree@1.0.6': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdurl@2.0.0': {} + '@types/minimatch@3.0.5': {} '@types/minimist@1.2.5': {} @@ -4741,6 +5562,10 @@ snapshots: dependencies: csstype: 3.1.3 + '@types/unist@3.0.3': {} + + '@types/web-bluetooth@0.0.20': {} + '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -4818,6 +5643,8 @@ snapshots: '@typescript-eslint/types': 8.19.0 eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.2.1': {} + '@vitejs/plugin-react@4.3.4(vite@6.0.7(@types/node@22.10.5)(yaml@2.7.0))': dependencies: '@babel/core': 7.26.0 @@ -4829,6 +5656,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@22.10.5))(vue@3.5.13(typescript@5.7.2))': + dependencies: + vite: 5.4.11(@types/node@22.10.5) + vue: 3.5.13(typescript@5.7.2) + '@vitejs/plugin-vue@5.2.1(vite@6.0.7(@types/node@22.10.5)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.2))': dependencies: vite: 6.0.7(@types/node@22.10.5)(yaml@2.7.0) @@ -4881,6 +5713,24 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 + '@vue/devtools-api@7.7.0': + dependencies: + '@vue/devtools-kit': 7.7.0 + + '@vue/devtools-kit@7.7.0': + dependencies: + '@vue/devtools-shared': 7.7.0 + birpc: 0.2.19 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + + '@vue/devtools-shared@7.7.0': + dependencies: + rfdc: 1.4.1 + '@vue/eslint-config-typescript@14.2.0(eslint-plugin-vue@9.32.0(eslint@9.17.0))(eslint@9.17.0)(typescript@5.7.2)': dependencies: eslint: 9.17.0 @@ -4943,6 +5793,37 @@ snapshots: '@vue/shared@3.5.13': {} + '@vueuse/core@11.3.0(vue@3.5.13(typescript@5.7.2))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 11.3.0 + '@vueuse/shared': 11.3.0(vue@3.5.13(typescript@5.7.2)) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/integrations@11.3.0(axios@1.7.9)(focus-trap@7.6.4)(vue@3.5.13(typescript@5.7.2))': + dependencies: + '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.7.2)) + '@vueuse/shared': 11.3.0(vue@3.5.13(typescript@5.7.2)) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) + optionalDependencies: + axios: 1.7.9 + focus-trap: 7.6.4 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@11.3.0': {} + + '@vueuse/shared@11.3.0(vue@3.5.13(typescript@5.7.2))': + dependencies: + vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@yarnpkg/lockfile@1.1.0': {} '@yarnpkg/parsers@3.0.2': @@ -5005,6 +5886,22 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 + algoliasearch@5.19.0: + dependencies: + '@algolia/client-abtesting': 5.19.0 + '@algolia/client-analytics': 5.19.0 + '@algolia/client-common': 5.19.0 + '@algolia/client-insights': 5.19.0 + '@algolia/client-personalization': 5.19.0 + '@algolia/client-query-suggestions': 5.19.0 + '@algolia/client-search': 5.19.0 + '@algolia/ingestion': 1.19.0 + '@algolia/monitoring': 1.19.0 + '@algolia/recommend': 5.19.0 + '@algolia/requester-browser-xhr': 5.19.0 + '@algolia/requester-fetch': 5.19.0 + '@algolia/requester-node-http': 5.19.0 + alien-signals@0.2.2: {} alien-signals@0.4.12: {} @@ -5133,6 +6030,8 @@ snapshots: read-cmd-shim: 4.0.0 write-file-atomic: 5.0.1 + birpc@0.2.19: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -5214,6 +6113,8 @@ snapshots: caniuse-lite@1.0.30001690: {} + ccount@2.0.1: {} + chalk@4.1.0: dependencies: ansi-styles: 4.3.0 @@ -5224,6 +6125,10 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + chardet@0.7.0: {} chownr@2.0.0: {} @@ -5283,6 +6188,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + common-ancestor-path@1.0.1: {} compare-func@2.0.0: @@ -5359,6 +6266,10 @@ snapshots: convert-source-map@2.0.0: {} + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + core-util-is@1.0.3: {} cosmiconfig@9.0.0(typescript@5.7.2): @@ -5451,8 +6362,14 @@ snapshots: deprecation@2.3.1: {} + dequal@2.0.3: {} + detect-indent@5.0.0: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + diff-sequences@29.6.3: {} dir-glob@3.0.1: @@ -5507,6 +6424,8 @@ snapshots: electron-to-chromium@1.5.76: {} + emoji-regex-xs@1.0.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -5634,6 +6553,32 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + esbuild@0.24.2: optionalDependencies: '@esbuild/aix-ppc64': 0.24.2 @@ -5868,6 +6813,10 @@ snapshots: flatted@3.3.2: {} + focus-trap@7.6.4: + dependencies: + tabbable: 6.2.0 + follow-redirects@1.15.9: {} for-each@0.3.3: @@ -6084,8 +7033,28 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-html@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + he@1.2.0: {} + hookable@5.5.3: {} + hosted-git-info@2.8.9: {} hosted-git-info@4.1.0: @@ -6096,6 +7065,8 @@ snapshots: dependencies: lru-cache: 10.4.3 + html-void-elements@3.0.0: {} + http-cache-semantics@4.1.1: {} http-proxy-agent@7.0.2: @@ -6334,6 +7305,8 @@ snapshots: call-bound: 1.0.3 get-intrinsic: 1.2.7 + is-what@4.1.16: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -6665,8 +7638,22 @@ snapshots: map-obj@4.3.0: {} + mark.js@8.11.1: {} + math-intrinsics@1.1.0: {} + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + meow@8.1.2: dependencies: '@types/minimist': 1.2.5 @@ -6685,6 +7672,23 @@ snapshots: merge2@1.4.1: {} + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.1: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -6770,11 +7774,15 @@ snapshots: minipass@7.1.2: {} + minisearch@7.1.1: {} + minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 + mitt@3.0.1: {} + mkdirp@1.0.4: {} mlly@1.7.3: @@ -7006,6 +8014,12 @@ snapshots: dependencies: mimic-fn: 2.1.0 + oniguruma-to-es@2.1.0: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -7183,6 +8197,8 @@ snapshots: pathe@1.1.2: {} + perfect-debounce@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -7257,6 +8273,8 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + property-information@6.5.0: {} + protocols@2.0.1: {} proxy-from-env@1.1.0: {} @@ -7347,6 +8365,17 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -7391,6 +8420,8 @@ snapshots: reusify@1.0.4: {} + rfdc@1.4.1: {} + rimraf@4.4.1: dependencies: glob: 9.3.5 @@ -7457,6 +8488,8 @@ snapshots: scheduler@0.25.0: {} + search-insights@2.17.3: {} + semver@5.7.2: {} semver@6.3.1: {} @@ -7501,6 +8534,17 @@ snapshots: shebang-regex@3.0.0: {} + shiki@1.27.2: + dependencies: + '@shikijs/core': 1.27.2 + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/langs': 1.27.2 + '@shikijs/themes': 1.27.2 + '@shikijs/types': 1.27.2 + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -7571,6 +8615,8 @@ snapshots: source-map@0.7.4: {} + space-separated-tokens@2.0.2: {} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -7585,6 +8631,8 @@ snapshots: spdx-license-ids@3.0.20: {} + speakingurl@14.0.1: {} + split2@3.2.2: dependencies: readable-stream: 3.6.2 @@ -7669,6 +8717,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -7695,6 +8748,10 @@ snapshots: minimist: 1.2.8 through: 2.3.8 + superjson@2.2.2: + dependencies: + copy-anything: 3.0.5 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -7705,6 +8762,8 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + tabbable@6.2.0: {} + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -7747,6 +8806,8 @@ snapshots: treeverse@3.0.0: {} + trim-lines@3.0.1: {} + trim-newlines@3.0.1: {} ts-api-utils@1.4.3(typescript@5.7.2): @@ -7856,6 +8917,29 @@ snapshots: dependencies: imurmurhash: 0.1.4 + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universal-user-agent@6.0.1: {} universalify@0.1.2: {} @@ -7885,6 +8969,16 @@ snapshots: validate-npm-package-name@5.0.1: {} + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + vite-plugin-banner@0.8.0: {} vite-plugin-dts@4.4.0(@types/node@22.10.5)(rollup@4.29.1)(typescript@5.7.2)(vite@6.0.7(@types/node@22.10.5)(yaml@2.7.0)): @@ -7906,6 +9000,15 @@ snapshots: - rollup - supports-color + vite@5.4.11(@types/node@22.10.5): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.29.1 + optionalDependencies: + '@types/node': 22.10.5 + fsevents: 2.3.3 + vite@6.0.7(@types/node@22.10.5)(yaml@2.7.0): dependencies: esbuild: 0.24.2 @@ -7916,8 +9019,62 @@ snapshots: fsevents: 2.3.3 yaml: 2.7.0 + vitepress@1.5.0(@algolia/client-search@5.19.0)(@types/node@22.10.5)(@types/react@19.0.2)(axios@1.7.9)(postcss@8.4.49)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(search-insights@2.17.3)(typescript@5.7.2): + dependencies: + '@docsearch/css': 3.8.2 + '@docsearch/js': 3.8.2(@algolia/client-search@5.19.0)(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.20 + '@shikijs/core': 1.27.2 + '@shikijs/transformers': 1.27.2 + '@shikijs/types': 1.27.2 + '@types/markdown-it': 14.1.2 + '@vitejs/plugin-vue': 5.2.1(vite@5.4.11(@types/node@22.10.5))(vue@3.5.13(typescript@5.7.2)) + '@vue/devtools-api': 7.7.0 + '@vue/shared': 3.5.13 + '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.7.2)) + '@vueuse/integrations': 11.3.0(axios@1.7.9)(focus-trap@7.6.4)(vue@3.5.13(typescript@5.7.2)) + focus-trap: 7.6.4 + mark.js: 8.11.1 + minisearch: 7.1.1 + shiki: 1.27.2 + vite: 5.4.11(@types/node@22.10.5) + vue: 3.5.13(typescript@5.7.2) + optionalDependencies: + postcss: 8.4.49 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - sass-embedded + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + vscode-uri@3.0.8: {} + vue-demi@0.14.10(vue@3.5.13(typescript@5.7.2)): + dependencies: + vue: 3.5.13(typescript@5.7.2) + vue-eslint-parser@9.4.3(eslint@9.17.0): dependencies: debug: 4.4.0 @@ -8099,3 +9256,5 @@ snapshots: yargs-parser: 21.1.1 yocto-queue@0.1.0: {} + + zwitch@2.0.4: {}