diff --git a/.clean-publish b/.clean-publish deleted file mode 100644 index b1c46691..00000000 --- a/.clean-publish +++ /dev/null @@ -1,6 +0,0 @@ -{ - "withoutPublish": true, - "tempDir": "package", - "fields": ["tsd"], - "files": ["website"] -} diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index c1311b4b..00000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,17 +0,0 @@ -engines: - eslint: - enabled: true - duplication: - enabled: true - config: - languages: - - javascript: -ratings: - paths: - - "**.js" -exclude_paths: -- "dist/" -- "test/**/*" -- "es/" -- "build/" -- "config/" diff --git a/.commitlintrc.json b/.commitlintrc.json deleted file mode 100644 index 23e26485..00000000 --- a/.commitlintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": ["@commitlint/config-conventional"], - "rules": { - "body-max-line-length": [0] - } -} diff --git a/.czrc b/.czrc deleted file mode 100644 index 90c38dbd..00000000 --- a/.czrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "path": "./node_modules/cz-conventional-changelog" -} diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 115381d3..00000000 --- a/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -# This file is for unifying the coding style for different editors and IDEs -# editorconfig.org -root = true - -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -indent_style = space -indent_size = 2 diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 934c8dad..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - root: true, - parserOptions: { - sourceType: 'module' - }, - // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style - extends: [ - 'standard', - 'plugin:prettier/recommended', - 'plugin:vue/recommended', - 'plugin:prettier-vue/recommended', - 'plugin:vue/vue3-essential', - '@vue/eslint-config-typescript' - ], - // required to lint *.vue files - plugins: ['prettier'], - // add your custom rules here - rules: { - // allow paren-less arrow functions - 'arrow-parens': 0, - // allow debugger during development - 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, - 'prettier/prettier': 'error', - quotes: [2, 'single', 'avoid-escape'] - }, - overrides: [ - { - files: ['sandboxes/**/*', 'test/**/*'], - rules: { - 'vue/no-reserved-component-names': 'off' - } - } - ], - ignorePatterns: ['dist/**/*', 'node_modules/**/*', 'rollup.config.js'] -} diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index 1f2742c2..00000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,10 +0,0 @@ -Thank you for contributing vue-chartjs! -========================================= - -Please follow this steps: - -1. Fork it ( https://github.com/apertureless/vue-chartjs/fork ) -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Commit your changes (`git commit -am 'Add some feature'`) -4. Push to the branch (`git push origin my-new-feature`) -5. Create a new Pull Request diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 6348d91a..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -github: apertureless -ko_fi: apertureless -custom: ["paypal.me/apertureless"] diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml deleted file mode 100644 index 612805f8..00000000 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: "🐛 Bug Report" -description: "If something isn't working as expected." -title: "[Bug]: " -labels: ["bug"] -body: - - type: markdown - attributes: - value: Thanks for taking the time to file a bug report! Please fill out this form as completely as possible. - - - type: markdown - attributes: - value: ⚠️ vue-chartjs is just the wrapper around Chart.js, so if you are experiencing an issue with charts rendering, please create a related issue in [Chart.js repository](https://github.com/chartjs/Chart.js/issues). - - - type: checkboxes - id: input1 - attributes: - label: Would you like to work on a fix? - options: - - label: Check this if you would like to implement a PR, we are more than happy to help you go through the process. - - - type: textarea - attributes: - label: Current and expected behavior - description: A clear and concise description of what the library is doing and what you would expect. - validations: - required: true - - - type: input - attributes: - label: Reproduction - description: | - Please provide issue reproduction. - You can give a link to a repository with the reproduction or make a fork of [this sandbox](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar) and reproduce the issue there. - validations: - required: true - - - type: input - attributes: - label: chart.js version - description: Which version of `chart.js` are you using? - placeholder: v0.0.0 - validations: - required: true - - - type: input - attributes: - label: vue-chartjs version - description: Which version of `vue-chartjs` are you using? - placeholder: v0.0.0 - validations: - required: true - - - type: textarea - attributes: - label: Possible solution - description: If you have suggestions on a fix for the bug. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 26520f2b..00000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,9 +0,0 @@ - -blank_issues_enabled: false -contact_links: - - name: 🤔 Have a Question? - url: https://stackoverflow.com/questions/tagged/vue-chartjs/ - about: Feel free to ask questions on Stack Overflow. - - name: 📊 Have a Problem With Chart.js? - url: https://github.com/chartjs/Chart.js/issues - about: vue-chartjs is just the wrapper around Chart.js, so if you are experiencing an issue with charts rendering, please create a related issue in Chart.js repository. diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml deleted file mode 100644 index 54c7b418..00000000 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: "🚀 Feature Request" -description: "I have a specific suggestion!" -labels: ["enhancement"] -body: - - type: markdown - attributes: - value: Thanks for taking the time to suggest a new feature! Please fill out this form as completely as possible. - - - type: markdown - attributes: - value: ⚠️ vue-chartjs is just the wrapper around Chart.js, so if you are experiencing an issue with charts rendering, please create a related issue in [Chart.js repository](https://github.com/chartjs/Chart.js/issues). - - - type: checkboxes - id: input1 - attributes: - label: Would you like to work on this feature? - options: - - label: Check this if you would like to implement a PR, we are more than happy to help you go through the process. - - - type: textarea - attributes: - label: What problem are you trying to solve? - description: | - A concise description of what the problem is. - placeholder: | - I have an issue when [...] - validations: - required: true - - - type: textarea - attributes: - label: Describe the solution you'd like - validations: - required: true - - - type: textarea - attributes: - label: Describe alternatives you've considered - - - type: textarea - attributes: - label: Documentation, Adoption, Migration Strategy - description: | - If you can, explain how users will be able to use this and how it might be documented. Maybe a mock-up? diff --git a/.github/renovate.json b/.github/renovate.json deleted file mode 100644 index 5fcce112..00000000 --- a/.github/renovate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": [ - "config:base", - ":preserveSemverRanges" - ] -} diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml deleted file mode 100644 index 543b20fc..00000000 --- a/.github/workflows/checks.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Checks -on: - pull_request: - branches: - - main -jobs: - typings: - runs-on: ubuntu-latest - name: typings - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 9 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: 'pnpm' - - name: Install dependencies - run: pnpm install - - name: Prebuild - run: pnpm build - - name: Check typings - if: success() - run: pnpm test:typings - storybook: - runs-on: ubuntu-latest - name: storybook - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 9 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: 'pnpm' - - name: Install dependencies - run: pnpm install - - name: Check storybook - run: pnpm build:storybook diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 18988bf3..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: CI -on: - push: - pull_request: -jobs: - test: - runs-on: ubuntu-latest - name: Running tests - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 9 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: 'pnpm' - - name: Install dependencies - run: pnpm install - - name: Run tests - run: pnpm test diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml deleted file mode 100644 index f25133e6..00000000 --- a/.github/workflows/commit.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Commit -on: - push: -jobs: - conventional-commit: - runs-on: ubuntu-latest - name: Checking commit name - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Run commitlint - uses: wagoid/commitlint-github-action@v5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 35988d05..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Release -on: - release: - types: [created] -jobs: - build: - runs-on: ubuntu-latest - name: Publish package - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 9 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: 'pnpm' - registry-url: 'https://registry.npmjs.org' - - name: Install dependencies - run: pnpm install - - name: Publish - run: pnpm publish --no-git-checks - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml deleted file mode 100644 index 8f4e06f6..00000000 --- a/.github/workflows/website.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Website -on: - push: - branches: - - main -jobs: - deploy: - runs-on: ubuntu-latest - name: deploy website - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 9 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: 'pnpm' - - name: Install dependencies - run: pnpm install - - name: Install website dependencies - run: pnpm install - working-directory: ./website - - name: Build website - run: pnpm build - working-directory: ./website - - name: Make CNAME file - run: | - cd ./website/src/.vitepress/dist - echo "vue-chartjs.org" > CNAME - - name: Prepare build - run: | - cd ./website/src/.vitepress/dist - git init - git add -A - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" - git commit -m 'deploy' - - name: Push build - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: gh-pages - force: true - directory: ./website/src/.vitepress/dist diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 9b6a6152..00000000 --- a/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -node_modules - -# builds -dist -package -storybook-static - -# misc -.DS_Store - -npm-debug.log* - -# testing -coverage diff --git a/.nano-staged.json b/.nano-staged.json deleted file mode 100644 index d556a8af..00000000 --- a/.nano-staged.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "**/*.{js,ts,vue}": ["prettier --write", "eslint"] -} diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 319e41e6..00000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -strict-peer-dependencies=false diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 2de5a6c0..00000000 --- a/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "singleQuote": true, - "jsxSingleQuote": true, - "semi": false, - "tabWidth": 2, - "bracketSpacing": true, - "arrowParens": "avoid", - "trailingComma": "none" -} diff --git a/.simple-git-hooks.json b/.simple-git-hooks.json deleted file mode 100644 index 06e40b96..00000000 --- a/.simple-git-hooks.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "commit-msg": "pnpm commitlint --edit \"$1\"", - "pre-commit": "pnpm nano-staged", - "pre-push": "pnpm test" -} diff --git a/.size-limit.json b/.size-limit.json deleted file mode 100644 index 549bf752..00000000 --- a/.size-limit.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "path": "dist/index.js", - "limit": "2.95 KB", - "webpack": false, - "running": false - }, - { - "path": "dist/index.js", - "limit": "1.5 KB", - "import": "{ Bar }" - } -] diff --git a/.storybook/main.js b/.storybook/main.js deleted file mode 100644 index e478dda3..00000000 --- a/.storybook/main.js +++ /dev/null @@ -1,25 +0,0 @@ -const path = require('path') -const { mergeConfig } = require('vite') - -module.exports = { - core: { - builder: '@storybook/builder-vite' - }, - viteFinal(config) { - return mergeConfig(config, { - resolve: { - dedupe: ['@storybook/client-api'], - alias: { - 'vue-chartjs': path.resolve(__dirname, '../src') - } - } - }) - }, - framework: '@storybook/vue3', - stories: ['../stories/*.stories.@(ts|js)'], - addons: [ - '@storybook/addon-docs', - '@storybook/addon-controls', - '@storybook/addon-actions' - ] -} diff --git a/.storybook/manager.js b/.storybook/manager.js deleted file mode 100644 index 7f903a97..00000000 --- a/.storybook/manager.js +++ /dev/null @@ -1,8 +0,0 @@ -import { addons } from '@storybook/addons' - -import { theme } from './theme.js' - -addons.setConfig({ - theme, - panelPosition: 'right' -}) diff --git a/.storybook/package.json b/.storybook/package.json deleted file mode 100644 index 5bbefffb..00000000 --- a/.storybook/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/.storybook/preview.js b/.storybook/preview.js deleted file mode 100644 index 52ce5df2..00000000 --- a/.storybook/preview.js +++ /dev/null @@ -1,5 +0,0 @@ -import { configureActions } from '@storybook/addon-actions' - -configureActions({ - depth: 5 -}) diff --git a/.storybook/theme.js b/.storybook/theme.js deleted file mode 100644 index 946a293f..00000000 --- a/.storybook/theme.js +++ /dev/null @@ -1,7 +0,0 @@ -import { create } from '@storybook/theming' - -export const theme = create({ - base: 'light', - brandTitle: 'vue-chartjs', - brandUrl: 'https://github.com/apertureless/vue-chartjs' -}) diff --git a/404.html b/404.html new file mode 100644 index 00000000..4bb363e0 --- /dev/null +++ b/404.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>404 | 📈 vue-chartjs</title> + <meta name="description" content="Not Found"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 1d8a0012..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,885 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. - -### [5.3.2](https://github.com/apertureless/vue-chartjs/compare/v5.3.1...v5.3.2) (2024-10-31) - -### [5.3.1](https://github.com/apertureless/vue-chartjs/compare/v5.3.0...v5.3.1) (2024-04-09) - -### Bug Fixes - -- **types:** bar chart data ([#1087](https://github.com/apertureless/vue-chartjs/issues/1087)) ([f5ffcab](https://github.com/apertureless/vue-chartjs/commit/f5ffcab7a99bbf0009153fd47e72e28d25dfe2c2)) - -## [5.3.0](https://github.com/apertureless/vue-chartjs/compare/v5.2.0...v5.3.0) (2023-12-14) - -### Features - -- **a11y:** support ARIA attributes, role and fallback content for canvas ([#1061](https://github.com/apertureless/vue-chartjs/issues/1061)) ([c1ee49d](https://github.com/apertureless/vue-chartjs/commit/c1ee49d6a8ad2fc0ae798b34944ea90059bb70f6)) - -### Bug Fixes - -- update to chart.js v4.4.1 ([#1064](https://github.com/apertureless/vue-chartjs/issues/1064)) ([34a7e6e](https://github.com/apertureless/vue-chartjs/commit/34a7e6e2a28d296229d862cf71ff3466b6148d79)) - -## [5.2.0](https://github.com/apertureless/vue-chartjs/compare/v5.1.0...v5.2.0) (2023-01-09) - -### Features - -- restore compatability with webpack 4 ([#996](https://github.com/apertureless/vue-chartjs/issues/996)) ([0ee705c](https://github.com/apertureless/vue-chartjs/commit/0ee705c7727434a0aee1c1801beb152e2339c15b)) - -### Bug Fixes - -- peer dependency drop Vue.js < 2.7 ([#947](https://github.com/apertureless/vue-chartjs/issues/947)) ([#982](https://github.com/apertureless/vue-chartjs/issues/982)) ([5808c6e](https://github.com/apertureless/vue-chartjs/commit/5808c6ec95f5f36ed30e3b5d5e1ca41e569aa8b8)) - -## [5.1.0](https://github.com/apertureless/vue-chartjs/compare/v5.0.1...v5.1.0) (2022-12-19) - -### Features - -- restore CommonJS bundle ([#980](https://github.com/apertureless/vue-chartjs/issues/980)) ([1eb1ba7](https://github.com/apertureless/vue-chartjs/commit/1eb1ba7468a8dbde0d606f48a089c023d5aa9fbb)) - -### [5.0.1](https://github.com/apertureless/vue-chartjs/compare/v5.0.0...v5.0.1) (2022-12-06) - -### Bug Fixes - -- fix compatability with Vue >=2.7 ([#967](https://github.com/apertureless/vue-chartjs/issues/967)) ([742bf62](https://github.com/apertureless/vue-chartjs/commit/742bf62f9a4fd15994d346ce076aa4081716c1a7)) - -## [5.0.0](https://github.com/apertureless/vue-chartjs/compare/v4.1.2...v5.0.0) (2022-12-05) - -### ⚠ BREAKING CHANGES - -- package now is ESM-only, no CommonJS support -- default export was removed, please use named exports -- chart events were removed -- div wrapper was removed, `chartData` prop was renamed to `data`, `chartOptions` - prop was renamed to `options`, `generateChart` was renamed to `createTypedChart` -- Vue.js < 2.7 is no longer supported. - -### Features - -- base Chart component ([#958](https://github.com/apertureless/vue-chartjs/issues/958)) ([f3ecfb0](https://github.com/apertureless/vue-chartjs/commit/f3ecfb04927d39b54d26d2ac729147141702b4a9)) -- drop Vue.js < 2.7 support ([#947](https://github.com/apertureless/vue-chartjs/issues/947)) ([d1fbacc](https://github.com/apertureless/vue-chartjs/commit/d1fbacc410ce1095a1c7f8c7d9c85b8b709dc8c7)) -- events utils ([#963](https://github.com/apertureless/vue-chartjs/issues/963)) ([752407e](https://github.com/apertureless/vue-chartjs/commit/752407eba19befcfb4923c492ad900b251658837)) -- fallthrough props to canvas ([#955](https://github.com/apertureless/vue-chartjs/issues/955)) ([6675cb0](https://github.com/apertureless/vue-chartjs/commit/6675cb031276579bca74fd3bc2e767b76fa6e068)) -- updateMode prop ([#962](https://github.com/apertureless/vue-chartjs/issues/962)) ([5bd9805](https://github.com/apertureless/vue-chartjs/commit/5bd9805ae9fbe2a26b0dd063d4084725d307426f)) -- upgrade Chart.js to v4 ([#960](https://github.com/apertureless/vue-chartjs/issues/960)) ([7fd4ae4](https://github.com/apertureless/vue-chartjs/commit/7fd4ae4e8c487759d675af5947d1b55fbd0b3391)) - -### Bug Fixes - -- **deps:** update dependency chart.js to v4 ([#954](https://github.com/apertureless/vue-chartjs/issues/954)) ([c3f8fc9](https://github.com/apertureless/vue-chartjs/commit/c3f8fc9effc36a39c8734177259fd0911c3426b6)) - -- remove default export ([#959](https://github.com/apertureless/vue-chartjs/issues/959)) ([5ab27bc](https://github.com/apertureless/vue-chartjs/commit/5ab27bc66335932476b9cdff6167659f12f2fee4)) - -### [4.1.2](https://github.com/apertureless/vue-chartjs/compare/v4.1.1...v4.1.2) (2022-09-27) - -### Bug Fixes - -- legacy multiple annotations ([#910](https://github.com/apertureless/vue-chartjs/issues/910)) ([2a20eb8](https://github.com/apertureless/vue-chartjs/commit/2a20eb8cdc1834e2ca4478c5b9a7be8c88d77737)) - -### [4.1.1](https://github.com/apertureless/vue-chartjs/compare/v4.1.0...v4.1.1) (2022-05-27) - -### Bug Fixes - -- add type comment on Chart Objects ([#825](https://github.com/apertureless/vue-chartjs/issues/825)) ([#860](https://github.com/apertureless/vue-chartjs/issues/860)) ([2311361](https://github.com/apertureless/vue-chartjs/commit/231136131d3cce81f362ccf1e58a0573308a5503)) - -## [4.1.0](https://github.com/apertureless/vue-chartjs/compare/v4.0.7...v4.1.0) (2022-05-10) - -### Features - -- add reactivity to options ([#840](https://github.com/apertureless/vue-chartjs/issues/840)) ([6f8fa51](https://github.com/apertureless/vue-chartjs/commit/6f8fa5173f4b027e23e1ae933b0a50714466c540)) -- **legacy-charts:** add typescript definitions for legacy charts ([#839](https://github.com/apertureless/vue-chartjs/issues/839)) ([d937f80](https://github.com/apertureless/vue-chartjs/commit/d937f80ee794958f2cde86d613f42330db7aceb7)), closes [#825](https://github.com/apertureless/vue-chartjs/issues/825) - -### [4.0.7](https://github.com/apertureless/vue-chartjs/compare/v4.0.6...v4.0.7) (2022-04-25) - -### Bug Fixes - -- **legacy-charts:** tune chartoptions type check ([#821](https://github.com/apertureless/vue-chartjs/issues/821)) ([4409b98](https://github.com/apertureless/vue-chartjs/commit/4409b982caed251846c5ddfaae15857d47167402)) - -### [4.0.6](https://github.com/apertureless/vue-chartjs/compare/v4.0.5...v4.0.6) (2022-04-21) - -### Bug Fixes - -- Fix typo in chartDestroy ([0907322](https://github.com/apertureless/vue-chartjs/commit/09073224b2a247facc725483831b176dc96c024b)) -- **legacycharts:** fix update for multiple reactive charts in one page ([#818](https://github.com/apertureless/vue-chartjs/issues/818)) ([45cb362](https://github.com/apertureless/vue-chartjs/commit/45cb36271f629a3df3d0a078ddae037da813c1aa)) - -### [4.0.5](https://github.com/apertureless/vue-chartjs/compare/v4.0.4...v4.0.5) (2022-04-08) - -### Bug Fixes - -- **deps:** update dependency chart.js to v3.7.1 ([9ada94b](https://github.com/apertureless/vue-chartjs/commit/9ada94b6cba425070b101699c143eaff49737553)) -- **legacy-charts:** fix render multiple charts at one page ([#803](https://github.com/apertureless/vue-chartjs/issues/803)) ([fe97040](https://github.com/apertureless/vue-chartjs/commit/fe97040aac4ec6d6c0e12457fb08e4de0c967bc1)), closes [#800](https://github.com/apertureless/vue-chartjs/issues/800) [#801](https://github.com/apertureless/vue-chartjs/issues/801) - -### [4.0.4](https://github.com/apertureless/vue-chartjs/compare/v4.0.3...v4.0.4) (2022-04-01) - -### Bug Fixes - -- change legacy chart instance type ([#789](https://github.com/apertureless/vue-chartjs/issues/789)) ([543774c](https://github.com/apertureless/vue-chartjs/commit/543774c4b0c68535824a4b337d6d12bfab6583bb)), closes [#782](https://github.com/apertureless/vue-chartjs/issues/782) - -### [4.0.3](https://github.com/apertureless/vue-chartjs/compare/v4.0.2...v4.0.3) (2022-03-29) - -### Bug Fixes - -- fix chart plugins type ([#786](https://github.com/apertureless/vue-chartjs/issues/786)) ([65762c8](https://github.com/apertureless/vue-chartjs/commit/65762c893175b1d24245020e2ff74d3ba633a6fa)), closes [#782](https://github.com/apertureless/vue-chartjs/issues/782) - -### [4.0.2](https://github.com/apertureless/vue-chartjs/compare/v4.0.1...v4.0.2) (2022-03-28) - -### Bug Fixes - -- **legacycharts:** add missed export for legacy charts generateChart function ([#784](https://github.com/apertureless/vue-chartjs/issues/784)) ([4b68ba1](https://github.com/apertureless/vue-chartjs/commit/4b68ba168974242e947755cd40e5d7ce09e00092)) - -### [4.0.1](https://github.com/apertureless/vue-chartjs/compare/v4.0.0...v4.0.1) (2022-03-25) - -### Bug Fixes - -- change images source in readme ([#779](https://github.com/apertureless/vue-chartjs/issues/779)) ([b77bd31](https://github.com/apertureless/vue-chartjs/commit/b77bd3128a549df0c052df07ad8854a3aaef0734)) - -## [4.0.0](https://github.com/apertureless/vue-chartjs/compare/v3.5.1...v4.0.0) (2022-03-25) - -### ⚠ BREAKING CHANGES - -- migration to vue3 - -- upgrade to Chart.js 3.0 - -### Features - -- chart.js 3.0 support ([#754](https://github.com/apertureless/vue-chartjs/issues/754)) ([baba8e3](https://github.com/apertureless/vue-chartjs/commit/baba8e3e6f4b2b7d9a8c7b8e51cc698af23b972f)) -- migration to vue3 ([#755](https://github.com/apertureless/vue-chartjs/issues/755)) ([1104335](https://github.com/apertureless/vue-chartjs/commit/11043352f2475bd97a90318d1c2a8c71b82acd71)) -- typescript support ([#757](https://github.com/apertureless/vue-chartjs/issues/757)) ([67e73a0](https://github.com/apertureless/vue-chartjs/commit/67e73a0f1659a07e8508d58631153eb909dc7f8c)) -- vue2 legacy support ([#771](https://github.com/apertureless/vue-chartjs/issues/771)) ([5c9a69c](https://github.com/apertureless/vue-chartjs/commit/5c9a69c8ea18909f3633d91b480302fbc86591f3)) - -### [3.5.1](https://github.com/apertureless/vue-chartjs/compare/v3.5.0...v3.5.1) (2020-08-22) - -### Bug Fixes - -- Fix typescript issue [#614](https://github.com/apertureless/vue-chartjs/issues/614) ([#621](https://github.com/apertureless/vue-chartjs/issues/621)) ([2901be4](https://github.com/apertureless/vue-chartjs/commit/2901be4a7599630e1f6fe75d25fa9f2c3bf94582)) - -## [3.5.0](https://github.com/apertureless/vue-chartjs/compare/v3.4.2...v3.5.0) (2019-11-01) - -### Bug Fixes - -- Fix type script definition for `addPlugin` method ([#564](https://github.com/apertureless/vue-chartjs/issues/564)) ([3065d70](https://github.com/apertureless/vue-chartjs/commit/3065d70)) -- Update chart.js peerDependency ([a140f5a](https://github.com/apertureless/vue-chartjs/commit/a140f5a)) - -### Features - -- **typescript:** Improve mixins type definitions ([2a6eb7b](https://github.com/apertureless/vue-chartjs/commit/2a6eb7b)) -- **typescript:** Improve mixins type definitions ([#514](https://github.com/apertureless/vue-chartjs/issues/514)) ([520faca](https://github.com/apertureless/vue-chartjs/commit/520faca)) -- Add @types/chart.js types in typescript definitions ([#536](https://github.com/apertureless/vue-chartjs/issues/536)) ([22fb8d1](https://github.com/apertureless/vue-chartjs/commit/22fb8d1)) -- enhance search on the documentation ([3542b34](https://github.com/apertureless/vue-chartjs/commit/3542b34)) - -## [3.4.2](https://github.com/apertureless/vue-chartjs/compare/v3.4.1...v3.4.2) (2019-03-18) - -### Bug Fixes - -- Change peerDependency version of chart.js to include older versions ([8c780d3](https://github.com/apertureless/vue-chartjs/commit/8c780d3)) - -## [3.4.1](https://github.com/apertureless/vue-chartjs/compare/v3.4.0...v3.4.1) (2019-03-18) - -### Bug Fixes - -- **reactive-mixins:** Add prop type and default value ([8762521](https://github.com/apertureless/vue-chartjs/commit/8762521)) -- Update peerDependencies ([5b19efc](https://github.com/apertureless/vue-chartjs/commit/5b19efc)), closes [#489](https://github.com/apertureless/vue-chartjs/issues/489) - -<a name="3.4.0"></a> - -# [3.4.0](https://github.com/apertureless/vue-chartjs/compare/v3.3.2...v3.4.0) (2018-08-04) - -### Features - -- **events:** Add events to reactiveMixins ([#389](https://github.com/apertureless/vue-chartjs/issues/389)) ([67e8e4d](https://github.com/apertureless/vue-chartjs/commit/67e8e4d)), closes [#382](https://github.com/apertureless/vue-chartjs/issues/382) -- **typescript:** Add basic typescript definitions ([184be5c](https://github.com/apertureless/vue-chartjs/commit/184be5c)), closes [#376](https://github.com/apertureless/vue-chartjs/issues/376) -- **ux:** Add a wrapper around generateLegend ([#390](https://github.com/apertureless/vue-chartjs/issues/390)) ([fc646d8](https://github.com/apertureless/vue-chartjs/commit/fc646d8)) -- **ux:** Add fake render method with error message ([23ff90d](https://github.com/apertureless/vue-chartjs/commit/23ff90d)), closes [#380](https://github.com/apertureless/vue-chartjs/issues/380) - -<a name="3.3.2"></a> - -## [3.3.2](https://github.com/apertureless/vue-chartjs/compare/v3.3.1...v3.3.2) (2018-06-18) - -### Bug Fixes - -- **babel:** fix decorator error with new version of babel ([2fe804b](https://github.com/apertureless/vue-chartjs/commit/2fe804b)) -- **core:** Delete old chart.js instance first ([#375](https://github.com/apertureless/vue-chartjs/issues/375)) ([89a7cac](https://github.com/apertureless/vue-chartjs/commit/89a7cac)) -- **mixins:** Add condition to check if chart instance is present. ([1fed8e7](https://github.com/apertureless/vue-chartjs/commit/1fed8e7)) - -### Features - -- **privacy:** Remove GA from docs page ([d2d944f](https://github.com/apertureless/vue-chartjs/commit/d2d944f)) - -<a name="3.3.1"></a> - -## [3.3.1](https://github.com/apertureless/vue-chartjs/compare/v3.3.0...v3.3.1) (2018-03-26) - -### Bug Fixes - -- **release:** Add exports to index ([8341f94](https://github.com/apertureless/vue-chartjs/commit/8341f94)) - -<a name="3.3.0"></a> - -# [3.3.0](https://github.com/apertureless/vue-chartjs/compare/v3.2.1...v3.3.0) (2018-03-23) - -### Bug Fixes - -- **readme:** Update paypal donate button ([bfda218](https://github.com/apertureless/vue-chartjs/commit/bfda218)) - -### Features - -- **charts:** Export generateChart to create custom charts ([50e5644](https://github.com/apertureless/vue-chartjs/commit/50e5644)) -- **docs:** Update docs with custom chart example ([3247a61](https://github.com/apertureless/vue-chartjs/commit/3247a61)) - -<a name="3.1.0"></a> - -# [3.1.0](https://github.com/apertureless/vue-chartjs/compare/v3.0.2...v3.1.0) (2018-01-12) - -### Bug Fixes - -- **mixins:** Check for chartjs instance before rendering chart ([39ff839](https://github.com/apertureless/vue-chartjs/commit/39ff839)), closes [#288](https://github.com/apertureless/vue-chartjs/issues/288) - -### Features - -- **charts:** Remove default styling ([ac5d4d8](https://github.com/apertureless/vue-chartjs/commit/ac5d4d8)) - -# Change Log - -## [v3.0.1](https://github.com/apertureless/vue-chartjs/tree/v3.0.1) (2017-11-06) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v3.0.0...v3.0.1) - -**Closed issues:** - -- \[Suggestion\]Loose package dependencies [\#245](https://github.com/apertureless/vue-chartjs/issues/245) -- reactiveData mixin [\#244](https://github.com/apertureless/vue-chartjs/issues/244) -- Customise individual Axis Labels [\#243](https://github.com/apertureless/vue-chartjs/issues/243) -- presets es2015 [\#242](https://github.com/apertureless/vue-chartjs/issues/242) -- Uncaught TypeError: Cannot read property 'transition' of null [\#241](https://github.com/apertureless/vue-chartjs/issues/241) -- Is it possible to create an callback on the onAnimationComplete option [\#240](https://github.com/apertureless/vue-chartjs/issues/240) -- When resizing window, chart returns to first loaded state [\#239](https://github.com/apertureless/vue-chartjs/issues/239) -- Reactively change chart properties [\#237](https://github.com/apertureless/vue-chartjs/issues/237) -- how to enforce the max value on y axis [\#236](https://github.com/apertureless/vue-chartjs/issues/236) -- Chart is not rendered when maintainAspectRatio is set to false and chart container is hidden [\#235](https://github.com/apertureless/vue-chartjs/issues/235) -- How to access Chart.defaults.global [\#234](https://github.com/apertureless/vue-chartjs/issues/234) -- Blank Chart - no data [\#233](https://github.com/apertureless/vue-chartjs/issues/233) -- Maxin with multiple chartData [\#231](https://github.com/apertureless/vue-chartjs/issues/231) -- How to destroy chart before re-rendering? [\#230](https://github.com/apertureless/vue-chartjs/issues/230) -- chnage gridlines color [\#228](https://github.com/apertureless/vue-chartjs/issues/228) -- Stacked bar chart? [\#226](https://github.com/apertureless/vue-chartjs/issues/226) -- Chart crashes when reentering page [\#223](https://github.com/apertureless/vue-chartjs/issues/223) -- 在图表上左右滑动会出现数据错乱的问题 [\#222](https://github.com/apertureless/vue-chartjs/issues/222) -- How do I set the scale of the Y axis? [\#220](https://github.com/apertureless/vue-chartjs/issues/220) -- Upgrading from 2.8.2 to 2.8.3 breaks charts [\#209](https://github.com/apertureless/vue-chartjs/issues/209) -- How to scale the radius property of each bubble in a vue-chartjs bubble chart [\#205](https://github.com/apertureless/vue-chartjs/issues/205) -- Last release is causing problems with Firefox [\#203](https://github.com/apertureless/vue-chartjs/issues/203) -- 🔥 Remove Vue.extend\(\) [\#201](https://github.com/apertureless/vue-chartjs/issues/201) -- Update to webpack@3 [\#134](https://github.com/apertureless/vue-chartjs/issues/134) - -**Merged pull requests:** - -- Feature/dependency and build fix [\#246](https://github.com/apertureless/vue-chartjs/pull/246) ([apertureless](https://github.com/apertureless)) -- Typo fix in EN docs [\#238](https://github.com/apertureless/vue-chartjs/pull/238) ([chakan](https://github.com/chakan)) -- Made some small edits to French README.MD [\#232](https://github.com/apertureless/vue-chartjs/pull/232) ([music-mind](https://github.com/music-mind)) -- update webpack to version 3 [\#227](https://github.com/apertureless/vue-chartjs/pull/227) ([kingkong64](https://github.com/kingkong64)) - -## [v3.0.0](https://github.com/apertureless/vue-chartjs/tree/v3.0.0) (2017-10-14) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.7...v3.0.0) - -**Closed issues:** - -- Create an image of the chart to download [\#219](https://github.com/apertureless/vue-chartjs/issues/219) -- How to achieve this effect? [\#218](https://github.com/apertureless/vue-chartjs/issues/218) -- Some Error [\#217](https://github.com/apertureless/vue-chartjs/issues/217) -- Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "chartData" [\#216](https://github.com/apertureless/vue-chartjs/issues/216) -- can't get legendCallback to fire at all [\#212](https://github.com/apertureless/vue-chartjs/issues/212) -- this demo is not support, is it because version older? [\#210](https://github.com/apertureless/vue-chartjs/issues/210) -- how to change value without reload?? [\#208](https://github.com/apertureless/vue-chartjs/issues/208) -- typescript definition? [\#207](https://github.com/apertureless/vue-chartjs/issues/207) -- 使用动态数据时报错 [\#204](https://github.com/apertureless/vue-chartjs/issues/204) -- Commit the final dist js files to github [\#202](https://github.com/apertureless/vue-chartjs/issues/202) -- \[Best Practices❓\] Usage of Private Data [\#182](https://github.com/apertureless/vue-chartjs/issues/182) -- 📝 Update docs & examples - SSR with nuxt [\#172](https://github.com/apertureless/vue-chartjs/issues/172) -- 📝 Update Docs - Section about extending [\#171](https://github.com/apertureless/vue-chartjs/issues/171) -- Register vue-chartjs as vue-plugin? [\#168](https://github.com/apertureless/vue-chartjs/issues/168) -- Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders [\#151](https://github.com/apertureless/vue-chartjs/issues/151) - -**Merged pull requests:** - -- Feature/v3 [\#225](https://github.com/apertureless/vue-chartjs/pull/225) ([apertureless](https://github.com/apertureless)) -- ✏️ Spelling in docs [\#215](https://github.com/apertureless/vue-chartjs/pull/215) ([cugu](https://github.com/cugu)) -- Fix inaccuracies in Russian translation [\#214](https://github.com/apertureless/vue-chartjs/pull/214) ([pushkyn](https://github.com/pushkyn)) -- Add id docs readme support [\#213](https://github.com/apertureless/vue-chartjs/pull/213) ([tesarwijaya](https://github.com/tesarwijaya)) -- French translation for README.md [\#211](https://github.com/apertureless/vue-chartjs/pull/211) ([julienc91](https://github.com/julienc91)) - -## [v2.8.7](https://github.com/apertureless/vue-chartjs/tree/v2.8.7) (2017-09-16) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.6...v2.8.7) - -**Closed issues:** - -- 真机和浏览器呈现的效果不一样的问题 [\#199](https://github.com/apertureless/vue-chartjs/issues/199) -- can not use npm install? [\#198](https://github.com/apertureless/vue-chartjs/issues/198) -- Reactive Props - Max Call Stack Exceeded Error [\#197](https://github.com/apertureless/vue-chartjs/issues/197) -- Unmet Peer Dependency [\#196](https://github.com/apertureless/vue-chartjs/issues/196) -- Is there a way to update options? [\#195](https://github.com/apertureless/vue-chartjs/issues/195) -- deepmerge [\#194](https://github.com/apertureless/vue-chartjs/issues/194) -- TypeError: Cannot convert undefined or null to object [\#193](https://github.com/apertureless/vue-chartjs/issues/193) - -## [v2.8.6](https://github.com/apertureless/vue-chartjs/tree/v2.8.6) (2017-09-12) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.5...v2.8.6) - -## [v2.8.5](https://github.com/apertureless/vue-chartjs/tree/v2.8.5) (2017-09-12) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.4...v2.8.5) - -**Closed issues:** - -- Chart error since the addition of deepmerge in build 2.8.4 [\#192](https://github.com/apertureless/vue-chartjs/issues/192) - -## [v2.8.4](https://github.com/apertureless/vue-chartjs/tree/v2.8.4) (2017-09-08) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.3...v2.8.4) - -**Closed issues:** - -- Regression in 2.8.3 [\#190](https://github.com/apertureless/vue-chartjs/issues/190) -- Why default Chart.js styles are overridden? [\#189](https://github.com/apertureless/vue-chartjs/issues/189) -- Legend or other options not working in reactiveProps [\#188](https://github.com/apertureless/vue-chartjs/issues/188) -- Changes to yAxisID property does not re-render chart [\#177](https://github.com/apertureless/vue-chartjs/issues/177) - -**Merged pull requests:** - -- Replace Object.assign with deepmerge [\#191](https://github.com/apertureless/vue-chartjs/pull/191) ([apertureless](https://github.com/apertureless)) - -## [v2.8.3](https://github.com/apertureless/vue-chartjs/tree/v2.8.3) (2017-09-06) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.2...v2.8.3) - -**Closed issues:** - -- Rounded corner for Bar chart [\#185](https://github.com/apertureless/vue-chartjs/issues/185) -- Access canvas object from parents [\#184](https://github.com/apertureless/vue-chartjs/issues/184) -- Issue with DonutChart in Safari [\#183](https://github.com/apertureless/vue-chartjs/issues/183) -- Responsive Width, Fixed Height [\#180](https://github.com/apertureless/vue-chartjs/issues/180) -- Entire Lodash Library Is Loaded!! 200kb chunk! [\#179](https://github.com/apertureless/vue-chartjs/issues/179) -- height changed unexpectedly after re-rendering [\#178](https://github.com/apertureless/vue-chartjs/issues/178) -- Default height no longer working in 2.8 [\#176](https://github.com/apertureless/vue-chartjs/issues/176) -- how to get click on point in bar chart? [\#175](https://github.com/apertureless/vue-chartjs/issues/175) -- clean install of from npm cannot be used in gulp / browserify [\#174](https://github.com/apertureless/vue-chartjs/issues/174) -- tooltip callbacks possible? [\#173](https://github.com/apertureless/vue-chartjs/issues/173) -- Computed object won't populate chart [\#170](https://github.com/apertureless/vue-chartjs/issues/170) -- Error in nextTick: "RangeError: Maximum call stack size exceeded" [\#169](https://github.com/apertureless/vue-chartjs/issues/169) -- Standalone chartjs build \(don't include moment.js\) [\#124](https://github.com/apertureless/vue-chartjs/issues/124) - -**Merged pull requests:** - -- 🔥 Remove default styles object as it causes problems [\#187](https://github.com/apertureless/vue-chartjs/pull/187) ([apertureless](https://github.com/apertureless)) -- remvove lodash merge [\#186](https://github.com/apertureless/vue-chartjs/pull/186) ([apertureless](https://github.com/apertureless)) - -## [v2.8.2](https://github.com/apertureless/vue-chartjs/tree/v2.8.2) (2017-08-12) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.1...v2.8.2) - -**Closed issues:** - -- UNMET PEER DEPENDENCY [\#167](https://github.com/apertureless/vue-chartjs/issues/167) -- Base Charts' height: 200% [\#164](https://github.com/apertureless/vue-chartjs/issues/164) - -**Merged pull requests:** - -- Add support for xLabels and yLabels [\#166](https://github.com/apertureless/vue-chartjs/pull/166) ([dsbert](https://github.com/dsbert)) -- Update README.md [\#165](https://github.com/apertureless/vue-chartjs/pull/165) ([mikeybeck](https://github.com/mikeybeck)) - -## [v2.8.1](https://github.com/apertureless/vue-chartjs/tree/v2.8.1) (2017-08-05) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.8.0...v2.8.1) - -**Merged pull requests:** - -- Add Russian documentation [\#163](https://github.com/apertureless/vue-chartjs/pull/163) ([dood-](https://github.com/dood-)) - -## [v2.8.0](https://github.com/apertureless/vue-chartjs/tree/v2.8.0) (2017-08-04) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v1.2.0...v2.8.0) - -**Closed issues:** - -- Update README CDN link [\#161](https://github.com/apertureless/vue-chartjs/issues/161) -- Options being ignored [\#160](https://github.com/apertureless/vue-chartjs/issues/160) -- Fails to dynamically change height. [\#158](https://github.com/apertureless/vue-chartjs/issues/158) -- Chart doesn't load in bootstrap tab [\#157](https://github.com/apertureless/vue-chartjs/issues/157) -- Add scatter chart to vue-chatjs@legacy [\#155](https://github.com/apertureless/vue-chartjs/issues/155) -- \[Error\] Get error when $destroy is started. [\#149](https://github.com/apertureless/vue-chartjs/issues/149) - -**Merged pull requests:** - -- Feature/dynamic styles [\#162](https://github.com/apertureless/vue-chartjs/pull/162) ([apertureless](https://github.com/apertureless)) -- Add Chinese simplified docs support. [\#159](https://github.com/apertureless/vue-chartjs/pull/159) ([Mooooooon](https://github.com/Mooooooon)) - -## [v1.2.0](https://github.com/apertureless/vue-chartjs/tree/v1.2.0) (2017-07-25) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.7.2...v1.2.0) - -**Closed issues:** - -- this.$refs doesn't seem to have expected canvas property [\#156](https://github.com/apertureless/vue-chartjs/issues/156) - -**Merged pull requests:** - -- Before destroy fix [\#152](https://github.com/apertureless/vue-chartjs/pull/152) ([DenisLapi](https://github.com/DenisLapi)) - -## [v2.7.2](https://github.com/apertureless/vue-chartjs/tree/v2.7.2) (2017-07-22) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.7.1...v2.7.2) - -**Closed issues:** - -- Accessibility - Add unique titles to frames [\#150](https://github.com/apertureless/vue-chartjs/issues/150) -- update\(\) not refreshing chart [\#148](https://github.com/apertureless/vue-chartjs/issues/148) -- Custome label y axis [\#147](https://github.com/apertureless/vue-chartjs/issues/147) -- Access specific points on the canvas and labels for styling [\#146](https://github.com/apertureless/vue-chartjs/issues/146) -- legendCallback\(\) doesn't render a custom legend [\#144](https://github.com/apertureless/vue-chartjs/issues/144) -- where can i get the demo sources code? thanks [\#143](https://github.com/apertureless/vue-chartjs/issues/143) -- Props not works as expected, updating of value doesn't work [\#138](https://github.com/apertureless/vue-chartjs/issues/138) - -**Merged pull requests:** - -- ⬆️ Update dependency vue to 2.4.2 [\#154](https://github.com/apertureless/vue-chartjs/pull/154) ([apertureless](https://github.com/apertureless)) -- Remove useless labels [\#153](https://github.com/apertureless/vue-chartjs/pull/153) ([clarkdo](https://github.com/clarkdo)) -- :pencil2: Remove generateLegend\(\) from initialization codes [\#145](https://github.com/apertureless/vue-chartjs/pull/145) ([k-rumi](https://github.com/k-rumi)) - -## [v2.7.1](https://github.com/apertureless/vue-chartjs/tree/v2.7.1) (2017-07-05) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.7.0...v2.7.1) - -**Closed issues:** - -- Default backgroundColor needed [\#142](https://github.com/apertureless/vue-chartjs/issues/142) - -**Merged pull requests:** - -- Fix links to images in translated documents [\#141](https://github.com/apertureless/vue-chartjs/pull/141) ([k-rumi](https://github.com/k-rumi)) - -## [v2.7.0](https://github.com/apertureless/vue-chartjs/tree/v2.7.0) (2017-07-04) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.6.5...v2.7.0) - -**Closed issues:** - -- Reactive Data Tutorial [\#132](https://github.com/apertureless/vue-chartjs/issues/132) -- Using inline plugins [\#130](https://github.com/apertureless/vue-chartjs/issues/130) -- Scatter Chart [\#129](https://github.com/apertureless/vue-chartjs/issues/129) -- Generating Chart after clicking submit button [\#128](https://github.com/apertureless/vue-chartjs/issues/128) -- Ticks not working with reactive props [\#127](https://github.com/apertureless/vue-chartjs/issues/127) -- Error in callback for watcher "chartData": "TypeError: Cannot read property 'data' of undefined" [\#126](https://github.com/apertureless/vue-chartjs/issues/126) -- Passing the data from vue to chartjs [\#125](https://github.com/apertureless/vue-chartjs/issues/125) -- Combination of Bar and Line Chart [\#123](https://github.com/apertureless/vue-chartjs/issues/123) -- Reactive data example not working [\#122](https://github.com/apertureless/vue-chartjs/issues/122) -- vue-chartjs height was 0 when i set v-show [\#120](https://github.com/apertureless/vue-chartjs/issues/120) -- Bar chart, barPercentage in X axis [\#119](https://github.com/apertureless/vue-chartjs/issues/119) -- update event not firing on data change [\#118](https://github.com/apertureless/vue-chartjs/issues/118) - -**Merged pull requests:** - -- ✅ Update tests for addPlugin method [\#140](https://github.com/apertureless/vue-chartjs/pull/140) ([apertureless](https://github.com/apertureless)) -- Fix beforeDestory when renderChart was not called [\#139](https://github.com/apertureless/vue-chartjs/pull/139) ([ZhangYiJiang](https://github.com/ZhangYiJiang)) -- Add support for inline plugins [\#137](https://github.com/apertureless/vue-chartjs/pull/137) ([kurbar](https://github.com/kurbar)) -- Feature/scatter chart [\#136](https://github.com/apertureless/vue-chartjs/pull/136) ([apertureless](https://github.com/apertureless)) -- 🐛 Fix \#122 reactive mixin [\#135](https://github.com/apertureless/vue-chartjs/pull/135) ([apertureless](https://github.com/apertureless)) -- 📝 Add resources & tutorials to docs [\#133](https://github.com/apertureless/vue-chartjs/pull/133) ([apertureless](https://github.com/apertureless)) -- fix a typo in an example [\#131](https://github.com/apertureless/vue-chartjs/pull/131) ([JobV](https://github.com/JobV)) -- Update README [\#121](https://github.com/apertureless/vue-chartjs/pull/121) ([stoykostanchev](https://github.com/stoykostanchev)) - -## [v2.6.5](https://github.com/apertureless/vue-chartjs/tree/v2.6.5) (2017-06-10) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.6.4...v2.6.5) - -## [v2.6.4](https://github.com/apertureless/vue-chartjs/tree/v2.6.4) (2017-06-04) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.6.3...v2.6.4) - -**Closed issues:** - -- Transition leave-active-class not working [\#117](https://github.com/apertureless/vue-chartjs/issues/117) -- chartOptions reactivity [\#116](https://github.com/apertureless/vue-chartjs/issues/116) -- Cannot switch off legend [\#114](https://github.com/apertureless/vue-chartjs/issues/114) -- run error on my mac pro [\#113](https://github.com/apertureless/vue-chartjs/issues/113) -- Update install instructions in docs [\#112](https://github.com/apertureless/vue-chartjs/issues/112) -- Typo in docs [\#111](https://github.com/apertureless/vue-chartjs/issues/111) -- Charts are given a fixed width, even when they are set to be responsive [\#108](https://github.com/apertureless/vue-chartjs/issues/108) -- Use Reactive Data with \<script\> version of vue-chartjs [\#107](https://github.com/apertureless/vue-chartjs/issues/107) - -**Merged pull requests:** - -- Fix typo in docs [\#115](https://github.com/apertureless/vue-chartjs/pull/115) ([euledge](https://github.com/euledge)) -- :memo: Add pt-br readme support [\#110](https://github.com/apertureless/vue-chartjs/pull/110) ([kimuraz](https://github.com/kimuraz)) -- Fix reactive mixins animation re-rendering issue. [\#109](https://github.com/apertureless/vue-chartjs/pull/109) ([MuseofMoose](https://github.com/MuseofMoose)) - -## [v2.6.3](https://github.com/apertureless/vue-chartjs/tree/v2.6.3) (2017-05-14) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.6.2...v2.6.3) - -**Closed issues:** - -- Reactivity of Options [\#106](https://github.com/apertureless/vue-chartjs/issues/106) -- Do not use built-in or reserved HTML elements as component id: MenuItem [\#104](https://github.com/apertureless/vue-chartjs/issues/104) -- Is it possible to use with axios? [\#103](https://github.com/apertureless/vue-chartjs/issues/103) -- How to change momentjs locale for time scale? [\#101](https://github.com/apertureless/vue-chartjs/issues/101) -- It seems that the reactiveProp couldn't let the chart update itself [\#99](https://github.com/apertureless/vue-chartjs/issues/99) -- vue-chartjs not working with lodash-webpack-plugin installed [\#97](https://github.com/apertureless/vue-chartjs/issues/97) -- multi lines with same options [\#95](https://github.com/apertureless/vue-chartjs/issues/95) -- Zoom And Pan Options in Vue Charts [\#94](https://github.com/apertureless/vue-chartjs/issues/94) - -**Merged pull requests:** - -- Update README.md [\#105](https://github.com/apertureless/vue-chartjs/pull/105) ([guilherfp](https://github.com/guilherfp)) -- translated README.md into Japanese [\#102](https://github.com/apertureless/vue-chartjs/pull/102) ([euledge](https://github.com/euledge)) -- add CDNJS version badge in README.md [\#100](https://github.com/apertureless/vue-chartjs/pull/100) ([extend1994](https://github.com/extend1994)) - -## [v2.6.2](https://github.com/apertureless/vue-chartjs/tree/v2.6.2) (2017-04-29) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.6.1...v2.6.2) - -**Merged pull requests:** - -- ⬆️ Update dev dependencies [\#96](https://github.com/apertureless/vue-chartjs/pull/96) ([apertureless](https://github.com/apertureless)) - -## [v2.6.1](https://github.com/apertureless/vue-chartjs/tree/v2.6.1) (2017-04-21) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.6.0...v2.6.1) - -**Closed issues:** - -- Not understanding options [\#93](https://github.com/apertureless/vue-chartjs/issues/93) -- A Gotcha on component creation. [\#92](https://github.com/apertureless/vue-chartjs/issues/92) -- Error when building: 'This dependency was not found: chartjs' [\#91](https://github.com/apertureless/vue-chartjs/issues/91) -- Chart does not render inside conditional [\#90](https://github.com/apertureless/vue-chartjs/issues/90) -- Unable to add to material-vue layout [\#87](https://github.com/apertureless/vue-chartjs/issues/87) - -## [v2.6.0](https://github.com/apertureless/vue-chartjs/tree/v2.6.0) (2017-04-09) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.6.0-rc1...v2.6.0) - -**Closed issues:** - -- how to export to image or pdf [\#89](https://github.com/apertureless/vue-chartjs/issues/89) -- 🙏🏻 Testing 2.6.0-rc1 [\#88](https://github.com/apertureless/vue-chartjs/issues/88) -- Adding annotation plugin functionality [\#86](https://github.com/apertureless/vue-chartjs/issues/86) - -## [v2.6.0-rc1](https://github.com/apertureless/vue-chartjs/tree/v2.6.0-rc1) (2017-04-05) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.5.6...v2.6.0-rc1) - -**Closed issues:** - -- Overwrite prop [\#85](https://github.com/apertureless/vue-chartjs/issues/85) - -**Merged pull requests:** - -- Update release build to not include externals. [\#84](https://github.com/apertureless/vue-chartjs/pull/84) ([gcoguiec](https://github.com/gcoguiec)) - -## [v2.5.6](https://github.com/apertureless/vue-chartjs/tree/v2.5.6) (2017-03-29) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.5.5...v2.5.6) - -**Closed issues:** - -- Can not render two lines at the same time [\#83](https://github.com/apertureless/vue-chartjs/issues/83) -- Suggestion: Chart not re-rendering on window resize [\#82](https://github.com/apertureless/vue-chartjs/issues/82) -- How can you change legend label colour? [\#81](https://github.com/apertureless/vue-chartjs/issues/81) -- Doughnut with text in the middle [\#80](https://github.com/apertureless/vue-chartjs/issues/80) -- Set chart width without affecting labels [\#79](https://github.com/apertureless/vue-chartjs/issues/79) -- Loading data from server and displaying [\#78](https://github.com/apertureless/vue-chartjs/issues/78) -- Why separate .js files in the examples? [\#77](https://github.com/apertureless/vue-chartjs/issues/77) -- An in-range update of vue is breaking the build 🚨 [\#76](https://github.com/apertureless/vue-chartjs/issues/76) -- An in-range update of vue-template-compiler is breaking the build 🚨 [\#75](https://github.com/apertureless/vue-chartjs/issues/75) -- Uncaught TypeError: Cannot read property 'chartId' of undefined [\#74](https://github.com/apertureless/vue-chartjs/issues/74) -- TypeError: child.\_updateFromParent is not a function [\#72](https://github.com/apertureless/vue-chartjs/issues/72) -- Styling componement's surrounding \<div\> [\#70](https://github.com/apertureless/vue-chartjs/issues/70) - -## [v2.5.5](https://github.com/apertureless/vue-chartjs/tree/v2.5.5) (2017-03-24) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.5.4...v2.5.5) - -**Closed issues:** - -- Access chartjs methods [\#71](https://github.com/apertureless/vue-chartjs/issues/71) -- Pass Reactive data into Scatterplot [\#69](https://github.com/apertureless/vue-chartjs/issues/69) - -**Merged pull requests:** - -- Removed -s flag from yarn command in docs [\#73](https://github.com/apertureless/vue-chartjs/pull/73) ([mika76](https://github.com/mika76)) - -## [v2.5.4](https://github.com/apertureless/vue-chartjs/tree/v2.5.4) (2017-03-19) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.5.3...v2.5.4) - -**Closed issues:** - -- An in-range update of eslint-config-standard is breaking the build 🚨 [\#68](https://github.com/apertureless/vue-chartjs/issues/68) -- Using data from vuex to populate a line graph [\#67](https://github.com/apertureless/vue-chartjs/issues/67) -- How to use without babel/webpack? [\#66](https://github.com/apertureless/vue-chartjs/issues/66) -- The vue-chartjs/src entry point is still creating a new vue instance. [\#55](https://github.com/apertureless/vue-chartjs/issues/55) - -**Merged pull requests:** - -- Update dependencies to enable Greenkeeper 🌴 [\#65](https://github.com/apertureless/vue-chartjs/pull/65) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) - -## [v2.5.3](https://github.com/apertureless/vue-chartjs/tree/v2.5.3) (2017-03-17) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.5.2...v2.5.3) - -**Closed issues:** - -- Cannot modify styling using options [\#60](https://github.com/apertureless/vue-chartjs/issues/60) - -## [v2.5.2](https://github.com/apertureless/vue-chartjs/tree/v2.5.2) (2017-03-14) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.5.1...v2.5.2) - -**Closed issues:** - -- TypeError: child.\_updateFromParent is not a function [\#62](https://github.com/apertureless/vue-chartjs/issues/62) -- child.\_updateFromParent is not a function [\#59](https://github.com/apertureless/vue-chartjs/issues/59) -- dependency was not found [\#58](https://github.com/apertureless/vue-chartjs/issues/58) - -**Merged pull requests:** - -- Develop [\#63](https://github.com/apertureless/vue-chartjs/pull/63) ([apertureless](https://github.com/apertureless)) -- Fix typo for legacy tag [\#61](https://github.com/apertureless/vue-chartjs/pull/61) ([kylestev](https://github.com/kylestev)) - -## [v2.5.1](https://github.com/apertureless/vue-chartjs/tree/v2.5.1) (2017-03-11) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.5.0...v2.5.1) - -**Closed issues:** - -- Lines are looking weird. [\#57](https://github.com/apertureless/vue-chartjs/issues/57) -- Working with objects [\#48](https://github.com/apertureless/vue-chartjs/issues/48) -- Mixins don't seem to trigger a refresh of the chart [\#44](https://github.com/apertureless/vue-chartjs/issues/44) - -## [v2.5.0](https://github.com/apertureless/vue-chartjs/tree/v2.5.0) (2017-03-08) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.4.1...v2.5.0) - -**Closed issues:** - -- UglifyJs is not happy with versions after 2.3.8 [\#54](https://github.com/apertureless/vue-chartjs/issues/54) -- Why "main" in Package.json is "src/index.js" and not "dist/vue-chartjs.js" [\#53](https://github.com/apertureless/vue-chartjs/issues/53) -- Adding static data and dynamic data at the same time. [\#52](https://github.com/apertureless/vue-chartjs/issues/52) - -**Merged pull requests:** - -- separate HorizontalBar component added [\#56](https://github.com/apertureless/vue-chartjs/pull/56) ([imbashamba](https://github.com/imbashamba)) - -## [v2.4.1](https://github.com/apertureless/vue-chartjs/tree/v2.4.1) (2017-03-04) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.4.0...v2.4.1) - -## [v2.4.0](https://github.com/apertureless/vue-chartjs/tree/v2.4.0) (2017-03-03) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.9...v2.4.0) - -**Merged pull requests:** - -- Added browserify support [\#51](https://github.com/apertureless/vue-chartjs/pull/51) ([craigh411](https://github.com/craigh411)) - -## [v2.3.9](https://github.com/apertureless/vue-chartjs/tree/v2.3.9) (2017-03-01) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.8...v2.3.9) - -**Closed issues:** - -- Add src folder to package.json "files" and make main "src/index.js" [\#49](https://github.com/apertureless/vue-chartjs/issues/49) -- Unable to refresh [\#41](https://github.com/apertureless/vue-chartjs/issues/41) - -**Merged pull requests:** - -- 🐛 Fix \#49 [\#50](https://github.com/apertureless/vue-chartjs/pull/50) ([apertureless](https://github.com/apertureless)) - -## [v2.3.8](https://github.com/apertureless/vue-chartjs/tree/v2.3.8) (2017-03-01) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.6...v2.3.8) - -**Closed issues:** - -- Colors of dynamically added bars in bar graph are the default color instead of specified color [\#42](https://github.com/apertureless/vue-chartjs/issues/42) - -**Merged pull requests:** - -- Feature/documentation [\#47](https://github.com/apertureless/vue-chartjs/pull/47) ([apertureless](https://github.com/apertureless)) -- ⬆️ Update dependencies [\#46](https://github.com/apertureless/vue-chartjs/pull/46) ([apertureless](https://github.com/apertureless)) -- 📝 Update github issue template [\#45](https://github.com/apertureless/vue-chartjs/pull/45) ([apertureless](https://github.com/apertureless)) - -## [v2.3.6](https://github.com/apertureless/vue-chartjs/tree/v2.3.6) (2017-02-22) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.5...v2.3.6) - -**Closed issues:** - -- Please update1.1.3 chartjs to 2.5.0 [\#40](https://github.com/apertureless/vue-chartjs/issues/40) -- Vue-chartjs components creating a second Vue runtime [\#39](https://github.com/apertureless/vue-chartjs/issues/39) -- Since last update bar chart will no longer stack [\#38](https://github.com/apertureless/vue-chartjs/issues/38) -- barchart 如何横向显示条形图 [\#37](https://github.com/apertureless/vue-chartjs/issues/37) -- Animation with reactivity [\#34](https://github.com/apertureless/vue-chartjs/issues/34) - -**Merged pull requests:** - -- 🐛 Fix reactiveMixins issue \#42 [\#43](https://github.com/apertureless/vue-chartjs/pull/43) ([apertureless](https://github.com/apertureless)) - -## [v2.3.5](https://github.com/apertureless/vue-chartjs/tree/v2.3.5) (2017-02-14) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.4...v2.3.5) - -**Closed issues:** - -- Destory chart instance in reactiveMixins on render [\#35](https://github.com/apertureless/vue-chartjs/issues/35) -- Rerendering doughtnut chart not working [\#33](https://github.com/apertureless/vue-chartjs/issues/33) - -**Merged pull requests:** - -- 🔨 Change reactiveMixins to fix \#35 [\#36](https://github.com/apertureless/vue-chartjs/pull/36) ([apertureless](https://github.com/apertureless)) - -## [v2.3.4](https://github.com/apertureless/vue-chartjs/tree/v2.3.4) (2017-02-11) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.3...v2.3.4) - -**Closed issues:** - -- Update Chart.js docs to include link to vue-chartjs [\#32](https://github.com/apertureless/vue-chartjs/issues/32) -- Compatibility with Vue 2.1.10 [\#30](https://github.com/apertureless/vue-chartjs/issues/30) - -## [v2.3.3](https://github.com/apertureless/vue-chartjs/tree/v2.3.3) (2017-01-19) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.2...v2.3.3) - -**Closed issues:** - -- How to create mixed chart types [\#29](https://github.com/apertureless/vue-chartjs/issues/29) -- hello a q about reactivity [\#28](https://github.com/apertureless/vue-chartjs/issues/28) -- chart do not render after build [\#26](https://github.com/apertureless/vue-chartjs/issues/26) - -**Merged pull requests:** - -- 🐛 Fix \#30 type error [\#31](https://github.com/apertureless/vue-chartjs/pull/31) ([apertureless](https://github.com/apertureless)) - -## [v2.3.2](https://github.com/apertureless/vue-chartjs/tree/v2.3.2) (2016-12-23) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.1...v2.3.2) - -**Closed issues:** - -- Content Security Policy [\#22](https://github.com/apertureless/vue-chartjs/issues/22) - -**Merged pull requests:** - -- ✨ Add minimal release webpack config [\#27](https://github.com/apertureless/vue-chartjs/pull/27) ([apertureless](https://github.com/apertureless)) -- 📝 Update README [\#25](https://github.com/apertureless/vue-chartjs/pull/25) ([apertureless](https://github.com/apertureless)) - -## [v2.3.1](https://github.com/apertureless/vue-chartjs/tree/v2.3.1) (2016-12-20) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.3.0...v2.3.1) - -**Closed issues:** - -- Error in rendering [\#21](https://github.com/apertureless/vue-chartjs/issues/21) -- Issues after using gulp-- production [\#19](https://github.com/apertureless/vue-chartjs/issues/19) - -**Merged pull requests:** - -- ✅ Add tests for chart instance destroying [\#24](https://github.com/apertureless/vue-chartjs/pull/24) ([apertureless](https://github.com/apertureless)) -- Feature/runtimebuild \#22 [\#23](https://github.com/apertureless/vue-chartjs/pull/23) ([apertureless](https://github.com/apertureless)) - -## [v2.3.0](https://github.com/apertureless/vue-chartjs/tree/v2.3.0) (2016-12-17) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.2.1...v2.3.0) - -**Closed issues:** - -- Uncaught TypeError: \_c is not a function [\#20](https://github.com/apertureless/vue-chartjs/issues/20) - -## [v2.2.1](https://github.com/apertureless/vue-chartjs/tree/v2.2.1) (2016-12-07) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.2.0...v2.2.1) - -**Closed issues:** - -- Chart height definition inside the component [\#18](https://github.com/apertureless/vue-chartjs/issues/18) -- Uncaught TypeError: Cannot read property 'draw' of null [\#15](https://github.com/apertureless/vue-chartjs/issues/15) - -**Merged pull requests:** - -- Update README.md [\#16](https://github.com/apertureless/vue-chartjs/pull/16) ([Ag47](https://github.com/Ag47)) - -## [v2.2.0](https://github.com/apertureless/vue-chartjs/tree/v2.2.0) (2016-10-24) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v2.1.1...v2.2.0) - -**Closed issues:** - -- The page is blank? [\#13](https://github.com/apertureless/vue-chartjs/issues/13) -- question:syntax with vue-loader [\#12](https://github.com/apertureless/vue-chartjs/issues/12) -- Rerender when data has changed [\#10](https://github.com/apertureless/vue-chartjs/issues/10) - -**Merged pull requests:** - -- add horizontal bar parameter [\#14](https://github.com/apertureless/vue-chartjs/pull/14) ([wahaha2012](https://github.com/wahaha2012)) -- WIP Feature/reactive chart data \#11 [\#11](https://github.com/apertureless/vue-chartjs/pull/11) ([apertureless](https://github.com/apertureless)) - -## [v2.1.1](https://github.com/apertureless/vue-chartjs/tree/v2.1.1) (2016-10-02) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v.2.1.0...v2.1.1) - -## [v.2.1.0](https://github.com/apertureless/vue-chartjs/tree/v.2.1.0) (2016-09-23) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/v1.1.3...v.2.1.0) - -## [v1.1.3](https://github.com/apertureless/vue-chartjs/tree/v1.1.3) (2016-09-08) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/1.1.2...v1.1.3) - -**Closed issues:** - -- Passing chart size \(width / height\) as prop doesnt resize the chart [\#8](https://github.com/apertureless/vue-chartjs/issues/8) -- Add test [\#1](https://github.com/apertureless/vue-chartjs/issues/1) - -**Merged pull requests:** - -- Added bubble chart type [\#9](https://github.com/apertureless/vue-chartjs/pull/9) ([jcalonso](https://github.com/jcalonso)) - -## [1.1.2](https://github.com/apertureless/vue-chartjs/tree/1.1.2) (2016-09-07) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/1.1.1...1.1.2) - -**Closed issues:** - -- Change name of the render method to ensure compatiblity with Vue 2.0 [\#4](https://github.com/apertureless/vue-chartjs/issues/4) - -## [1.1.1](https://github.com/apertureless/vue-chartjs/tree/1.1.1) (2016-08-23) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/1.1.0...1.1.1) - -## [1.1.0](https://github.com/apertureless/vue-chartjs/tree/1.1.0) (2016-08-21) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/1.0.3...1.1.0) - -**Closed issues:** - -- Use Vue.util.mergeOptions to merge default options with user's options [\#5](https://github.com/apertureless/vue-chartjs/issues/5) - -**Merged pull requests:** - -- Feature/merge options \#5 [\#6](https://github.com/apertureless/vue-chartjs/pull/6) ([apertureless](https://github.com/apertureless)) - -## [1.0.3](https://github.com/apertureless/vue-chartjs/tree/1.0.3) (2016-08-20) - -[Full Changelog](https://github.com/apertureless/vue-chartjs/compare/1.0.2...1.0.3) - -**Closed issues:** - -- Publish on NPM [\#2](https://github.com/apertureless/vue-chartjs/issues/2) - -**Merged pull requests:** - -- Properly destroy chartjs objects [\#3](https://github.com/apertureless/vue-chartjs/pull/3) ([LinusBorg](https://github.com/LinusBorg)) - -## [1.0.2](https://github.com/apertureless/vue-chartjs/tree/1.0.2) (2016-07-27) - -\* _This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)_ diff --git a/website/src/CNAME b/CNAME similarity index 100% rename from website/src/CNAME rename to CNAME diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index c5393d14..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,13 +0,0 @@ -# Contributor Code of Conduct - -As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. - -We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion. - -Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http:contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/) diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 87a933ac..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Jakub Juszczak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 37515ff5..00000000 --- a/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# vue-chartjs - -<img align="right" width="150" height="150" alt="vue-chartjs logo" src="https://raw.githubusercontent.com/apertureless/vue-chartjs/main/assets/vue-chartjs.png"> - -**vue-chartjs** is a wrapper for [Chart.js](https://github.com/chartjs/Chart.js) in Vue. You can easily create reuseable chart components. - -Supports Chart.js v4. - -[](https://badge.fury.io/js/vue-chartjs) -[](https://codecov.io/gh/apertureless/vue-chartjs) -[](https://github.com/apertureless/vue-chartjs/actions) -[](http://packagequality.com/#?package=vue-chartjs) -[](https://www.npmjs.com/package/vue-chartjs) -[](https://gitter.im/vue-chartjs/Lobby) -[](https://github.com/apertureless/vue-chartjs/blob/master/LICENSE.txt) -[](https://cdnjs.com/libraries/vue-chartjs) -[](https://snyk.io/test/github/apertureless/vue-chartjs) -[](https://www.paypal.me/apertureless/50eur) -[](https://ko-fi.com/C0C1WP7C) - -<br /> -<a href="#quickstart">QuickStart</a> -<span> • </span> -<a href="#docs">Docs</a> -<span> • </span> -<a href="https://stackoverflow.com/questions/tagged/vue-chartjs">Stack Overflow</a> -<br /> -<hr /> - -## Quickstart - -Install this library with peer dependencies: - -```bash -pnpm add vue-chartjs chart.js -# or -yarn add vue-chartjs chart.js -# or -npm i vue-chartjs chart.js -``` - -Then, import and use individual components: - -```vue -<template> - <Bar :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - Title, - Tooltip, - Legend, - BarElement, - CategoryScale, - LinearScale -} from 'chart.js' -import { Bar } from 'vue-chartjs' - -ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend) - -export default { - name: 'App', - components: { - Bar - }, - data() { - return { - data: { - labels: ['January', 'February', 'March'], - datasets: [{ data: [40, 20, 12] }] - }, - options: { - responsive: true - } - } - } -} -</script> -``` - -<hr /> - -Need an API to fetch data? Consider [Cube](https://cube.dev/?ref=eco-vue-chartjs), an open-source API for data apps. - -<br /> - -[](https://cube.dev/?ref=eco-vue-chartjs) - -## Docs - -- [Reactivity](https://vue-chartjs.org/guide/#updating-charts) -- [Access to Chart instance](https://vue-chartjs.org/guide/#access-to-chart-instance) -- [Accessibility](https://vue-chartjs.org/guide/#accessibility) -- [Migration from v4 to v5](https://vue-chartjs.org/migration-guides/#migration-from-v4-to-v5/) -- [Migration from vue-chart-3](https://vue-chartjs.org/migration-guides/#migration-from-vue-chart-3/) -- [API](https://vue-chartjs.org/api/) -- [Examples](https://vue-chartjs.org/examples/) - -## Build Setup - -``` bash -# install dependencies -pnpm install - -# build for production with minification -pnpm build - -# run unit tests -pnpm test:unit - -# run all tests -pnpm test -``` - -## Contributing - -1. Fork it ( https://github.com/apertureless/vue-chartjs/fork ) -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Commit your changes (`git commit -am 'Add some feature'`) -4. Push to the branch (`git push origin my-new-feature`) -5. Create a new Pull Request - -## License - -This software is distributed under [MIT license](LICENSE.txt). - -<a href="https://www.buymeacoffee.com/xcqjaytbl" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/purple_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a> diff --git a/api/index.html b/api/index.html new file mode 100644 index 00000000..d6d828e2 --- /dev/null +++ b/api/index.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Coding Reference | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/api_index.md.OxqrgQ8I.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/api/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/api/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _api_" data-v-c6c1d99a><div><h1 id="coding-reference" tabindex="-1">Coding Reference <a class="header-anchor" href="#coding-reference" aria-label="Permalink to "Coding Reference""></a></h1><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props""></a></h2><p>Some basic props are defined in the components provided by <code>vue-chartjs</code>.</p><table tabindex="0"><thead><tr><th>Prop</th><th>Description</th></tr></thead><tbody><tr><td>data</td><td>Data object that is passed into the Chart.js chart</td></tr><tr><td>options</td><td>Options object that is passed into the Chart.js chart</td></tr><tr><td>datasetIdKey</td><td>Key name to identify the dataset</td></tr><tr><td>plugins</td><td>Plugins array that is passed into the Chart.js chart</td></tr><tr><td>updateMode</td><td>Mode string to indicate the transition configuration to be used.</td></tr><tr><td>ariaLabel</td><td>An <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label" target="_blank" rel="noreferrer">ARIA label</a> that describes the chart to make it accessible.</td></tr><tr><td>ariaDescribedby</td><td>A reference to the <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby" target="_blank" rel="noreferrer">describing element</a>. E. g. a table representation of the data.</td></tr></tbody></table><p>The rest of the props will fall through to the canvas element.</p><h2 id="global-methods" tabindex="-1">Global Methods <a class="header-anchor" href="#global-methods" aria-label="Permalink to "Global Methods""></a></h2><p>Global Methods need to be imported.</p><h3 id="createtypedchart" tabindex="-1">createTypedChart <a class="header-anchor" href="#createtypedchart" aria-label="Permalink to "createTypedChart""></a></h3><ul><li><strong>Type:</strong> <code>Function</code></li><li><strong>Arguments</strong>:<code>chart-type</code>, <code>chart-controller</code></li><li><strong>Usage:</strong></li></ul><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineController)</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/api/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/assets/api_index.md.OxqrgQ8I.js b/assets/api_index.md.OxqrgQ8I.js new file mode 100644 index 00000000..6b671149 --- /dev/null +++ b/assets/api_index.md.OxqrgQ8I.js @@ -0,0 +1,4 @@ +import{_ as e,c as a,a2 as s,o as i}from"./chunks/framework.CdbxnhrM.js";const k=JSON.parse('{"title":"Coding Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md","lastUpdated":1730382198000}'),r={name:"api/index.md"};function n(d,t,o,l,h,p){return i(),a("div",null,t[0]||(t[0]=[s(`<h1 id="coding-reference" tabindex="-1">Coding Reference <a class="header-anchor" href="#coding-reference" aria-label="Permalink to "Coding Reference""></a></h1><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props""></a></h2><p>Some basic props are defined in the components provided by <code>vue-chartjs</code>.</p><table tabindex="0"><thead><tr><th>Prop</th><th>Description</th></tr></thead><tbody><tr><td>data</td><td>Data object that is passed into the Chart.js chart</td></tr><tr><td>options</td><td>Options object that is passed into the Chart.js chart</td></tr><tr><td>datasetIdKey</td><td>Key name to identify the dataset</td></tr><tr><td>plugins</td><td>Plugins array that is passed into the Chart.js chart</td></tr><tr><td>updateMode</td><td>Mode string to indicate the transition configuration to be used.</td></tr><tr><td>ariaLabel</td><td>An <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label" target="_blank" rel="noreferrer">ARIA label</a> that describes the chart to make it accessible.</td></tr><tr><td>ariaDescribedby</td><td>A reference to the <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby" target="_blank" rel="noreferrer">describing element</a>. E. g. a table representation of the data.</td></tr></tbody></table><p>The rest of the props will fall through to the canvas element.</p><h2 id="global-methods" tabindex="-1">Global Methods <a class="header-anchor" href="#global-methods" aria-label="Permalink to "Global Methods""></a></h2><p>Global Methods need to be imported.</p><h3 id="createtypedchart" tabindex="-1">createTypedChart <a class="header-anchor" href="#createtypedchart" aria-label="Permalink to "createTypedChart""></a></h3><ul><li><strong>Type:</strong> <code>Function</code></li><li><strong>Arguments</strong>:<code>chart-type</code>, <code>chart-controller</code></li><li><strong>Usage:</strong></li></ul><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineController)</span></span></code></pre></div>`,10)]))}const b=e(r,[["render",n]]);export{k as __pageData,b as default}; diff --git a/assets/api_index.md.OxqrgQ8I.lean.js b/assets/api_index.md.OxqrgQ8I.lean.js new file mode 100644 index 00000000..6b671149 --- /dev/null +++ b/assets/api_index.md.OxqrgQ8I.lean.js @@ -0,0 +1,4 @@ +import{_ as e,c as a,a2 as s,o as i}from"./chunks/framework.CdbxnhrM.js";const k=JSON.parse('{"title":"Coding Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md","lastUpdated":1730382198000}'),r={name:"api/index.md"};function n(d,t,o,l,h,p){return i(),a("div",null,t[0]||(t[0]=[s(`<h1 id="coding-reference" tabindex="-1">Coding Reference <a class="header-anchor" href="#coding-reference" aria-label="Permalink to "Coding Reference""></a></h1><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props""></a></h2><p>Some basic props are defined in the components provided by <code>vue-chartjs</code>.</p><table tabindex="0"><thead><tr><th>Prop</th><th>Description</th></tr></thead><tbody><tr><td>data</td><td>Data object that is passed into the Chart.js chart</td></tr><tr><td>options</td><td>Options object that is passed into the Chart.js chart</td></tr><tr><td>datasetIdKey</td><td>Key name to identify the dataset</td></tr><tr><td>plugins</td><td>Plugins array that is passed into the Chart.js chart</td></tr><tr><td>updateMode</td><td>Mode string to indicate the transition configuration to be used.</td></tr><tr><td>ariaLabel</td><td>An <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label" target="_blank" rel="noreferrer">ARIA label</a> that describes the chart to make it accessible.</td></tr><tr><td>ariaDescribedby</td><td>A reference to the <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby" target="_blank" rel="noreferrer">describing element</a>. E. g. a table representation of the data.</td></tr></tbody></table><p>The rest of the props will fall through to the canvas element.</p><h2 id="global-methods" tabindex="-1">Global Methods <a class="header-anchor" href="#global-methods" aria-label="Permalink to "Global Methods""></a></h2><p>Global Methods need to be imported.</p><h3 id="createtypedchart" tabindex="-1">createTypedChart <a class="header-anchor" href="#createtypedchart" aria-label="Permalink to "createTypedChart""></a></h3><ul><li><strong>Type:</strong> <code>Function</code></li><li><strong>Arguments</strong>:<code>chart-type</code>, <code>chart-controller</code></li><li><strong>Usage:</strong></li></ul><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineController)</span></span></code></pre></div>`,10)]))}const b=e(r,[["render",n]]);export{k as __pageData,b as default}; diff --git a/assets/app.GBN-9bPq.js b/assets/app.GBN-9bPq.js new file mode 100644 index 00000000..0839b2af --- /dev/null +++ b/assets/app.GBN-9bPq.js @@ -0,0 +1 @@ +import{t as i}from"./chunks/theme.BMGZMIu3.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.CdbxnhrM.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/bar.png b/assets/bar.png deleted file mode 100755 index d93d7bb7..00000000 Binary files a/assets/bar.png and /dev/null differ diff --git a/assets/bubble.png b/assets/bubble.png deleted file mode 100755 index f82f7488..00000000 Binary files a/assets/bubble.png and /dev/null differ diff --git a/assets/chunks/VPAlgoliaSearchBox.CvcnQzIk.js b/assets/chunks/VPAlgoliaSearchBox.CvcnQzIk.js new file mode 100644 index 00000000..f05e2b12 --- /dev/null +++ b/assets/chunks/VPAlgoliaSearchBox.CvcnQzIk.js @@ -0,0 +1,14 @@ +import{d as Zr,ah as Qr,J as Gr,v as Yr,q as Xr,P as eo,o as to,c as no}from"./framework.CdbxnhrM.js";import{u as ro}from"./theme.BMGZMIu3.js";/*! @docsearch/js 3.6.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function on(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function N(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?on(Object(n),!0).forEach(function(r){oo(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):on(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function D(t){return D=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},D(t)}function oo(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Mt(){return Mt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},Mt.apply(this,arguments)}function Ie(t,e){return function(n){if(Array.isArray(n))return n}(t)||function(n,r){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var i,u,s=[],l=!0,f=!1;try{for(o=o.call(n);!(l=(i=o.next()).done)&&(s.push(i.value),!r||s.length!==r);l=!0);}catch(a){f=!0,u=a}finally{try{l||o.return==null||o.return()}finally{if(f)throw u}}return s}}(t,e)||ur(t,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function _t(t){return function(e){if(Array.isArray(e))return Ht(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||ur(t)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function ur(t,e){if(t){if(typeof t=="string")return Ht(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set"?Array.from(t):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ht(t,e):void 0}}function Ht(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var j,He,lr,an,sr,Et={},Zt=[],io=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function oe(t,e){for(var n in e)t[n]=e[n];return t}function fr(t){var e=t.parentNode;e&&e.removeChild(t)}function ee(t,e,n){var r,o,i,u=arguments,s={};for(i in e)i=="key"?r=e[i]:i=="ref"?o=e[i]:s[i]=e[i];if(arguments.length>3)for(n=[n],i=3;i<arguments.length;i++)n.push(u[i]);if(n!=null&&(s.children=n),typeof t=="function"&&t.defaultProps!=null)for(i in t.defaultProps)s[i]===void 0&&(s[i]=t.defaultProps[i]);return Ue(t,s,r,o,null)}function Ue(t,e,n,r,o){var i={type:t,props:e,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:o??++j.__v};return j.vnode!=null&&j.vnode(i),i}function pe(t){return t.children}function te(t,e){this.props=t,this.context=e}function nt(t,e){if(e==null)return t.__?nt(t.__,t.__.__k.indexOf(t)+1):null;for(var n;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null)return n.__e;return typeof t.type=="function"?nt(t):null}function mr(t){var e,n;if((t=t.__)!=null&&t.__c!=null){for(t.__e=t.__c.base=null,e=0;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null){t.__e=t.__c.base=n.__e;break}return mr(t)}}function Ut(t){(!t.__d&&(t.__d=!0)&&He.push(t)&&!jt.__r++||an!==j.debounceRendering)&&((an=j.debounceRendering)||lr)(jt)}function jt(){for(var t;jt.__r=He.length;)t=He.sort(function(e,n){return e.__v.__b-n.__v.__b}),He=[],t.some(function(e){var n,r,o,i,u,s;e.__d&&(u=(i=(n=e).__v).__e,(s=n.__P)&&(r=[],(o=oe({},i)).__v=i.__v+1,Qt(s,i,o,n.__n,s.ownerSVGElement!==void 0,i.__h!=null?[u]:null,r,u??nt(i),i.__h),hr(r,i),i.__e!=u&&mr(i)))})}function pr(t,e,n,r,o,i,u,s,l,f){var a,v,p,m,h,d,y,g=r&&r.__k||Zt,_=g.length;for(n.__k=[],a=0;a<e.length;a++)if((m=n.__k[a]=(m=e[a])==null||typeof m=="boolean"?null:typeof m=="string"||typeof m=="number"?Ue(null,m,null,null,m):Array.isArray(m)?Ue(pe,{children:m},null,null,null):m.__b>0?Ue(m.type,m.props,m.key,null,m.__v):m)!=null){if(m.__=n,m.__b=n.__b+1,(p=g[a])===null||p&&m.key==p.key&&m.type===p.type)g[a]=void 0;else for(v=0;v<_;v++){if((p=g[v])&&m.key==p.key&&m.type===p.type){g[v]=void 0;break}p=null}Qt(t,m,p=p||Et,o,i,u,s,l,f),h=m.__e,(v=m.ref)&&p.ref!=v&&(y||(y=[]),p.ref&&y.push(p.ref,null,m),y.push(v,m.__c||h,m)),h!=null?(d==null&&(d=h),typeof m.type=="function"&&m.__k!=null&&m.__k===p.__k?m.__d=l=vr(m,l,t):l=dr(t,m,p,g,h,l),f||n.type!=="option"?typeof n.type=="function"&&(n.__d=l):t.value=""):l&&p.__e==l&&l.parentNode!=t&&(l=nt(p))}for(n.__e=d,a=_;a--;)g[a]!=null&&(typeof n.type=="function"&&g[a].__e!=null&&g[a].__e==n.__d&&(n.__d=nt(r,a+1)),gr(g[a],g[a]));if(y)for(a=0;a<y.length;a++)yr(y[a],y[++a],y[++a])}function vr(t,e,n){var r,o;for(r=0;r<t.__k.length;r++)(o=t.__k[r])&&(o.__=t,e=typeof o.type=="function"?vr(o,e,n):dr(n,o,o,t.__k,o.__e,e));return e}function ie(t,e){return e=e||[],t==null||typeof t=="boolean"||(Array.isArray(t)?t.some(function(n){ie(n,e)}):e.push(t)),e}function dr(t,e,n,r,o,i){var u,s,l;if(e.__d!==void 0)u=e.__d,e.__d=void 0;else if(n==null||o!=i||o.parentNode==null)e:if(i==null||i.parentNode!==t)t.appendChild(o),u=null;else{for(s=i,l=0;(s=s.nextSibling)&&l<r.length;l+=2)if(s==o)break e;t.insertBefore(o,i),u=i}return u!==void 0?u:o.nextSibling}function cn(t,e,n){e[0]==="-"?t.setProperty(e,n):t[e]=n==null?"":typeof n!="number"||io.test(e)?n:n+"px"}function lt(t,e,n,r,o){var i;e:if(e==="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof r=="string"&&(t.style.cssText=r=""),r)for(e in r)n&&e in n||cn(t.style,e,"");if(n)for(e in n)r&&n[e]===r[e]||cn(t.style,e,n[e])}else if(e[0]==="o"&&e[1]==="n")i=e!==(e=e.replace(/Capture$/,"")),e=e.toLowerCase()in t?e.toLowerCase().slice(2):e.slice(2),t.l||(t.l={}),t.l[e+i]=n,n?r||t.addEventListener(e,i?ln:un,i):t.removeEventListener(e,i?ln:un,i);else if(e!=="dangerouslySetInnerHTML"){if(o)e=e.replace(/xlink[H:h]/,"h").replace(/sName$/,"s");else if(e!=="href"&&e!=="list"&&e!=="form"&&e!=="download"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n!=null&&(n!==!1||e[0]==="a"&&e[1]==="r")?t.setAttribute(e,n):t.removeAttribute(e))}}function un(t){this.l[t.type+!1](j.event?j.event(t):t)}function ln(t){this.l[t.type+!0](j.event?j.event(t):t)}function Qt(t,e,n,r,o,i,u,s,l){var f,a,v,p,m,h,d,y,g,_,b,S=e.type;if(e.constructor!==void 0)return null;n.__h!=null&&(l=n.__h,s=e.__e=n.__e,e.__h=null,i=[s]),(f=j.__b)&&f(e);try{e:if(typeof S=="function"){if(y=e.props,g=(f=S.contextType)&&r[f.__c],_=f?g?g.props.value:f.__:r,n.__c?d=(a=e.__c=n.__c).__=a.__E:("prototype"in S&&S.prototype.render?e.__c=a=new S(y,_):(e.__c=a=new te(y,_),a.constructor=S,a.render=co),g&&g.sub(a),a.props=y,a.state||(a.state={}),a.context=_,a.__n=r,v=a.__d=!0,a.__h=[]),a.__s==null&&(a.__s=a.state),S.getDerivedStateFromProps!=null&&(a.__s==a.state&&(a.__s=oe({},a.__s)),oe(a.__s,S.getDerivedStateFromProps(y,a.__s))),p=a.props,m=a.state,v)S.getDerivedStateFromProps==null&&a.componentWillMount!=null&&a.componentWillMount(),a.componentDidMount!=null&&a.__h.push(a.componentDidMount);else{if(S.getDerivedStateFromProps==null&&y!==p&&a.componentWillReceiveProps!=null&&a.componentWillReceiveProps(y,_),!a.__e&&a.shouldComponentUpdate!=null&&a.shouldComponentUpdate(y,a.__s,_)===!1||e.__v===n.__v){a.props=y,a.state=a.__s,e.__v!==n.__v&&(a.__d=!1),a.__v=e,e.__e=n.__e,e.__k=n.__k,a.__h.length&&u.push(a);break e}a.componentWillUpdate!=null&&a.componentWillUpdate(y,a.__s,_),a.componentDidUpdate!=null&&a.__h.push(function(){a.componentDidUpdate(p,m,h)})}a.context=_,a.props=y,a.state=a.__s,(f=j.__r)&&f(e),a.__d=!1,a.__v=e,a.__P=t,f=a.render(a.props,a.state,a.context),a.state=a.__s,a.getChildContext!=null&&(r=oe(oe({},r),a.getChildContext())),v||a.getSnapshotBeforeUpdate==null||(h=a.getSnapshotBeforeUpdate(p,m)),b=f!=null&&f.type===pe&&f.key==null?f.props.children:f,pr(t,Array.isArray(b)?b:[b],e,n,r,o,i,u,s,l),a.base=e.__e,e.__h=null,a.__h.length&&u.push(a),d&&(a.__E=a.__=null),a.__e=!1}else i==null&&e.__v===n.__v?(e.__k=n.__k,e.__e=n.__e):e.__e=ao(n.__e,e,n,r,o,i,u,l);(f=j.diffed)&&f(e)}catch(O){e.__v=null,(l||i!=null)&&(e.__e=s,e.__h=!!l,i[i.indexOf(s)]=null),j.__e(O,e,n)}}function hr(t,e){j.__c&&j.__c(e,t),t.some(function(n){try{t=n.__h,n.__h=[],t.some(function(r){r.call(n)})}catch(r){j.__e(r,n.__v)}})}function ao(t,e,n,r,o,i,u,s){var l,f,a,v,p=n.props,m=e.props,h=e.type,d=0;if(h==="svg"&&(o=!0),i!=null){for(;d<i.length;d++)if((l=i[d])&&(l===t||(h?l.localName==h:l.nodeType==3))){t=l,i[d]=null;break}}if(t==null){if(h===null)return document.createTextNode(m);t=o?document.createElementNS("http://www.w3.org/2000/svg",h):document.createElement(h,m.is&&m),i=null,s=!1}if(h===null)p===m||s&&t.data===m||(t.data=m);else{if(i=i&&Zt.slice.call(t.childNodes),f=(p=n.props||Et).dangerouslySetInnerHTML,a=m.dangerouslySetInnerHTML,!s){if(i!=null)for(p={},v=0;v<t.attributes.length;v++)p[t.attributes[v].name]=t.attributes[v].value;(a||f)&&(a&&(f&&a.__html==f.__html||a.__html===t.innerHTML)||(t.innerHTML=a&&a.__html||""))}if(function(y,g,_,b,S){var O;for(O in _)O==="children"||O==="key"||O in g||lt(y,O,null,_[O],b);for(O in g)S&&typeof g[O]!="function"||O==="children"||O==="key"||O==="value"||O==="checked"||_[O]===g[O]||lt(y,O,g[O],_[O],b)}(t,m,p,o,s),a)e.__k=[];else if(d=e.props.children,pr(t,Array.isArray(d)?d:[d],e,n,r,o&&h!=="foreignObject",i,u,t.firstChild,s),i!=null)for(d=i.length;d--;)i[d]!=null&&fr(i[d]);s||("value"in m&&(d=m.value)!==void 0&&(d!==t.value||h==="progress"&&!d)&<(t,"value",d,p.value,!1),"checked"in m&&(d=m.checked)!==void 0&&d!==t.checked&<(t,"checked",d,p.checked,!1))}return t}function yr(t,e,n){try{typeof t=="function"?t(e):t.current=e}catch(r){j.__e(r,n)}}function gr(t,e,n){var r,o,i;if(j.unmount&&j.unmount(t),(r=t.ref)&&(r.current&&r.current!==t.__e||yr(r,null,e)),n||typeof t.type=="function"||(n=(o=t.__e)!=null),t.__e=t.__d=void 0,(r=t.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(u){j.__e(u,e)}r.base=r.__P=null}if(r=t.__k)for(i=0;i<r.length;i++)r[i]&&gr(r[i],e,n);o!=null&&fr(o)}function co(t,e,n){return this.constructor(t,n)}function rt(t,e,n){var r,o,i;j.__&&j.__(t,e),o=(r=typeof n=="function")?null:n&&n.__k||e.__k,i=[],Qt(e,t=(!r&&n||e).__k=ee(pe,null,[t]),o||Et,Et,e.ownerSVGElement!==void 0,!r&&n?[n]:o?null:e.firstChild?Zt.slice.call(e.childNodes):null,i,!r&&n?n:o?o.__e:e.firstChild,r),hr(i,t)}function _r(t,e){rt(t,e,_r)}function uo(t,e,n){var r,o,i,u=arguments,s=oe({},t.props);for(i in e)i=="key"?r=e[i]:i=="ref"?o=e[i]:s[i]=e[i];if(arguments.length>3)for(n=[n],i=3;i<arguments.length;i++)n.push(u[i]);return n!=null&&(s.children=n),Ue(t.type,s,r||t.key,o||t.ref,null)}j={__e:function(t,e){for(var n,r,o;e=e.__;)if((n=e.__c)&&!n.__)try{if((r=n.constructor)&&r.getDerivedStateFromError!=null&&(n.setState(r.getDerivedStateFromError(t)),o=n.__d),n.componentDidCatch!=null&&(n.componentDidCatch(t),o=n.__d),o)return n.__E=n}catch(i){t=i}throw t},__v:0},te.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=oe({},this.state),typeof t=="function"&&(t=t(oe({},n),this.props)),t&&oe(n,t),t!=null&&this.__v&&(e&&this.__h.push(e),Ut(this))},te.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),Ut(this))},te.prototype.render=pe,He=[],lr=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,jt.__r=0,sr=0;var xe,K,sn,Ce=0,Ft=[],fn=j.__b,mn=j.__r,pn=j.diffed,vn=j.__c,dn=j.unmount;function it(t,e){j.__h&&j.__h(K,t,Ce||e),Ce=0;var n=K.__H||(K.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function Gt(t){return Ce=1,br(Sr,t)}function br(t,e,n){var r=it(xe++,2);return r.t=t,r.__c||(r.__=[n?n(e):Sr(void 0,e),function(o){var i=r.t(r.__[0],o);r.__[0]!==i&&(r.__=[i,r.__[1]],r.__c.setState({}))}],r.__c=K),r.__}function Yt(t,e){var n=it(xe++,3);!j.__s&&Xt(n.__H,e)&&(n.__=t,n.__H=e,K.__H.__h.push(n))}function hn(t,e){var n=it(xe++,4);!j.__s&&Xt(n.__H,e)&&(n.__=t,n.__H=e,K.__h.push(n))}function Ct(t,e){var n=it(xe++,7);return Xt(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function lo(){Ft.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(bt),t.__H.__h.forEach(Bt),t.__H.__h=[]}catch(e){t.__H.__h=[],j.__e(e,t.__v)}}),Ft=[]}j.__b=function(t){K=null,fn&&fn(t)},j.__r=function(t){mn&&mn(t),xe=0;var e=(K=t.__c).__H;e&&(e.__h.forEach(bt),e.__h.forEach(Bt),e.__h=[])},j.diffed=function(t){pn&&pn(t);var e=t.__c;e&&e.__H&&e.__H.__h.length&&(Ft.push(e)!==1&&sn===j.requestAnimationFrame||((sn=j.requestAnimationFrame)||function(n){var r,o=function(){clearTimeout(i),yn&&cancelAnimationFrame(r),setTimeout(n)},i=setTimeout(o,100);yn&&(r=requestAnimationFrame(o))})(lo)),K=void 0},j.__c=function(t,e){e.some(function(n){try{n.__h.forEach(bt),n.__h=n.__h.filter(function(r){return!r.__||Bt(r)})}catch(r){e.some(function(o){o.__h&&(o.__h=[])}),e=[],j.__e(r,n.__v)}}),vn&&vn(t,e)},j.unmount=function(t){dn&&dn(t);var e=t.__c;if(e&&e.__H)try{e.__H.__.forEach(bt)}catch(n){j.__e(n,e.__v)}};var yn=typeof requestAnimationFrame=="function";function bt(t){var e=K;typeof t.__c=="function"&&t.__c(),K=e}function Bt(t){var e=K;t.__c=t.__(),K=e}function Xt(t,e){return!t||t.length!==e.length||e.some(function(n,r){return n!==t[r]})}function Sr(t,e){return typeof e=="function"?e(t):e}function Or(t,e){for(var n in e)t[n]=e[n];return t}function Vt(t,e){for(var n in t)if(n!=="__source"&&!(n in e))return!0;for(var r in e)if(r!=="__source"&&t[r]!==e[r])return!0;return!1}function Kt(t){this.props=t}(Kt.prototype=new te).isPureReactComponent=!0,Kt.prototype.shouldComponentUpdate=function(t,e){return Vt(this.props,t)||Vt(this.state,e)};var gn=j.__b;j.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),gn&&gn(t)};var so=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,_n=function(t,e){return t==null?null:ie(ie(t).map(e))},fo={map:_n,forEach:_n,count:function(t){return t?ie(t).length:0},only:function(t){var e=ie(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:ie},mo=j.__e;function St(){this.__u=0,this.t=null,this.__b=null}function wr(t){var e=t.__.__c;return e&&e.__e&&e.__e(t)}function Le(){this.u=null,this.o=null}j.__e=function(t,e,n){if(t.then){for(var r,o=e;o=o.__;)if((r=o.__c)&&r.__c)return e.__e==null&&(e.__e=n.__e,e.__k=n.__k),r.__c(t,e)}mo(t,e,n)},(St.prototype=new te).__c=function(t,e){var n=e.__c,r=this;r.t==null&&(r.t=[]),r.t.push(n);var o=wr(r.__v),i=!1,u=function(){i||(i=!0,n.componentWillUnmount=n.__c,o?o(s):s())};n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){u(),n.__c&&n.__c()};var s=function(){if(!--r.__u){if(r.state.__e){var f=r.state.__e;r.__v.__k[0]=function v(p,m,h){return p&&(p.__v=null,p.__k=p.__k&&p.__k.map(function(d){return v(d,m,h)}),p.__c&&p.__c.__P===m&&(p.__e&&h.insertBefore(p.__e,p.__d),p.__c.__e=!0,p.__c.__P=h)),p}(f,f.__c.__P,f.__c.__O)}var a;for(r.setState({__e:r.__b=null});a=r.t.pop();)a.forceUpdate()}},l=e.__h===!0;r.__u++||l||r.setState({__e:r.__b=r.__v.__k[0]}),t.then(u,u)},St.prototype.componentWillUnmount=function(){this.t=[]},St.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function i(u,s,l){return u&&(u.__c&&u.__c.__H&&(u.__c.__H.__.forEach(function(f){typeof f.__c=="function"&&f.__c()}),u.__c.__H=null),(u=Or({},u)).__c!=null&&(u.__c.__P===l&&(u.__c.__P=s),u.__c=null),u.__k=u.__k&&u.__k.map(function(f){return i(f,s,l)})),u}(this.__b,n,r.__O=r.__P)}this.__b=null}var o=e.__e&&ee(pe,null,t.fallback);return o&&(o.__h=null),[ee(pe,null,e.__e?null:t.children),o]};var bn=function(t,e,n){if(++n[1]===n[0]&&t.o.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.o.size))for(n=t.u;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;t.u=n=n[2]}};function po(t){return this.getChildContext=function(){return t.context},t.children}function vo(t){var e=this,n=t.i;e.componentWillUnmount=function(){rt(null,e.l),e.l=null,e.i=null},e.i&&e.i!==n&&e.componentWillUnmount(),t.__v?(e.l||(e.i=n,e.l={nodeType:1,parentNode:n,childNodes:[],appendChild:function(r){this.childNodes.push(r),e.i.appendChild(r)},insertBefore:function(r,o){this.childNodes.push(r),e.i.appendChild(r)},removeChild:function(r){this.childNodes.splice(this.childNodes.indexOf(r)>>>1,1),e.i.removeChild(r)}}),rt(ee(po,{context:e.context},t.__v),e.l)):e.l&&e.componentWillUnmount()}function Er(t,e){return ee(vo,{__v:t,i:e})}(Le.prototype=new te).__e=function(t){var e=this,n=wr(e.__v),r=e.o.get(t);return r[0]++,function(o){var i=function(){e.props.revealOrder?(r.push(o),bn(e,t,r)):o()};n?n(i):i()}},Le.prototype.render=function(t){this.u=null,this.o=new Map;var e=ie(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var n=e.length;n--;)this.o.set(e[n],this.u=[1,0,this.u]);return t.children},Le.prototype.componentDidUpdate=Le.prototype.componentDidMount=function(){var t=this;this.o.forEach(function(e,n){bn(t,n,e)})};var jr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,ho=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,yo=function(t){return(typeof Symbol<"u"&&D(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(t)};function Pr(t,e,n){return e.__k==null&&(e.textContent=""),rt(t,e),typeof n=="function"&&n(),t?t.__c:null}te.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(te.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Sn=j.event;function go(){}function _o(){return this.cancelBubble}function bo(){return this.defaultPrevented}j.event=function(t){return Sn&&(t=Sn(t)),t.persist=go,t.isPropagationStopped=_o,t.isDefaultPrevented=bo,t.nativeEvent=t};var Ir,On={configurable:!0,get:function(){return this.class}},wn=j.vnode;j.vnode=function(t){var e=t.type,n=t.props,r=n;if(typeof e=="string"){for(var o in r={},n){var i=n[o];o==="value"&&"defaultValue"in n&&i==null||(o==="defaultValue"&&"value"in n&&n.value==null?o="value":o==="download"&&i===!0?i="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+e)&&!yo(n.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():ho.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():i===null&&(i=void 0),r[o]=i)}e=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=ie(n.children).forEach(function(u){u.props.selected=r.value.indexOf(u.props.value)!=-1})),e=="select"&&r.defaultValue!=null&&(r.value=ie(n.children).forEach(function(u){u.props.selected=r.multiple?r.defaultValue.indexOf(u.props.value)!=-1:r.defaultValue==u.props.value})),t.props=r}e&&n.class!=n.className&&(On.enumerable="className"in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",On)),t.$$typeof=jr,wn&&wn(t)};var En=j.__r;j.__r=function(t){En&&En(t),Ir=t.__c};var So={ReactCurrentDispatcher:{current:{readContext:function(t){return Ir.__n[t.__c].props.value}}}};function jn(t){return!!t&&t.$$typeof===jr}(typeof performance>"u"?"undefined":D(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);var c={useState:Gt,useReducer:br,useEffect:Yt,useLayoutEffect:hn,useRef:function(t){return Ce=5,Ct(function(){return{current:t}},[])},useImperativeHandle:function(t,e,n){Ce=6,hn(function(){typeof t=="function"?t(e()):t&&(t.current=e())},n==null?n:n.concat(t))},useMemo:Ct,useCallback:function(t,e){return Ce=8,Ct(function(){return t},e)},useContext:function(t){var e=K.context[t.__c],n=it(xe++,9);return n.__c=t,e?(n.__==null&&(n.__=!0,e.sub(K)),e.props.value):t.__},useDebugValue:function(t,e){j.useDebugValue&&j.useDebugValue(e?e(t):t)},version:"16.8.0",Children:fo,render:Pr,hydrate:function(t,e,n){return _r(t,e),typeof n=="function"&&n(),t?t.__c:null},unmountComponentAtNode:function(t){return!!t.__k&&(rt(null,t),!0)},createPortal:Er,createElement:ee,createContext:function(t,e){var n={__c:e="__cC"+sr++,__:t,Consumer:function(r,o){return r.children(o)},Provider:function(r){var o,i;return this.getChildContext||(o=[],(i={})[e]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(u){this.props.value!==u.value&&o.some(Ut)},this.sub=function(u){o.push(u);var s=u.componentWillUnmount;u.componentWillUnmount=function(){o.splice(o.indexOf(u),1),s&&s.call(u)}}),r.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(t){return ee.bind(null,t)},cloneElement:function(t){return jn(t)?uo.apply(null,arguments):t},createRef:function(){return{current:null}},Fragment:pe,isValidElement:jn,findDOMNode:function(t){return t&&(t.base||t.nodeType===1&&t)||null},Component:te,PureComponent:Kt,memo:function(t,e){function n(o){var i=this.props.ref,u=i==o.ref;return!u&&i&&(i.call?i(null):i.current=null),e?!e(this.props,o)||!u:Vt(this.props,o)}function r(o){return this.shouldComponentUpdate=n,ee(t,o)}return r.displayName="Memo("+(t.displayName||t.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r},forwardRef:function(t){function e(n,r){var o=Or({},n);return delete o.ref,t(o,(r=n.ref||r)&&(D(r)!="object"||"current"in r)?r:null)}return e.$$typeof=so,e.render=e,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e},unstable_batchedUpdates:function(t,e){return t(e)},StrictMode:pe,Suspense:St,SuspenseList:Le,lazy:function(t){var e,n,r;function o(i){if(e||(e=t()).then(function(u){n=u.default||u},function(u){r=u}),r)throw r;if(!n)throw e;return ee(n,i)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:So},Oo=["facetName","facetQuery"];function Pn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function Fe(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Pn(Object(n),!0).forEach(function(r){wo(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Pn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function wo(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function B(){return B=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},B.apply(this,arguments)}function ve(t,e){if(t==null)return{};var n,r,o=function(u,s){if(u==null)return{};var l,f,a={},v=Object.keys(u);for(f=0;f<v.length;f++)l=v[f],s.indexOf(l)>=0||(a[l]=u[l]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function be(t,e){return function(n){if(Array.isArray(n))return n}(t)||function(n,r){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var i,u,s=[],l=!0,f=!1;try{for(o=o.call(n);!(l=(i=o.next()).done)&&(s.push(i.value),!r||s.length!==r);l=!0);}catch(a){f=!0,u=a}finally{try{l||o.return==null||o.return()}finally{if(f)throw u}}return s}}(t,e)||Dr(t,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Dr(t,e){if(t){if(typeof t=="string")return Wt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set"?Array.from(t):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Wt(t,e):void 0}}function Wt(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function Eo(){return c.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},c.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function kr(){return c.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},c.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var jo=["translations"],Po=c.forwardRef(function(t,e){var n=t.translations,r=n===void 0?{}:n,o=ve(t,jo),i=r.buttonText,u=i===void 0?"Search":i,s=r.buttonAriaLabel,l=s===void 0?"Search":s,f=be(Gt(null),2),a=f[0],v=f[1];return Yt(function(){typeof navigator<"u"&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?v("⌘"):v("Ctrl"))},[]),c.createElement("button",B({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},o,{ref:e}),c.createElement("span",{className:"DocSearch-Button-Container"},c.createElement(kr,null),c.createElement("span",{className:"DocSearch-Button-Placeholder"},u)),c.createElement("span",{className:"DocSearch-Button-Keys"},a!==null&&c.createElement(c.Fragment,null,c.createElement(In,{reactsToKey:a==="Ctrl"?"Ctrl":"Meta"},a==="Ctrl"?c.createElement(Eo,null):a),c.createElement(In,{reactsToKey:"k"},"K"))))});function In(t){var e=t.reactsToKey,n=t.children,r=be(Gt(!1),2),o=r[0],i=r[1];return Yt(function(){if(e)return window.addEventListener("keydown",u),window.addEventListener("keyup",s),function(){window.removeEventListener("keydown",u),window.removeEventListener("keyup",s)};function u(l){l.key===e&&i(!0)}function s(l){l.key!==e&&l.key!=="Meta"||i(!1)}},[e]),c.createElement("kbd",{className:o?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},n)}function Cr(t,e){var n=void 0;return function(){for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];n&&clearTimeout(n),n=setTimeout(function(){return t.apply(void 0,o)},e)}}function ot(t){return t.reduce(function(e,n){return e.concat(n)},[])}var Io=0;function zt(t){return t.collections.length===0?0:t.collections.reduce(function(e,n){return e+n.items.length},0)}function Dn(t){return t!==Object(t)}function Ar(t,e){if(t===e)return!0;if(Dn(t)||Dn(e)||typeof t=="function"||typeof e=="function")return t===e;if(Object.keys(t).length!==Object.keys(e).length)return!1;for(var n=0,r=Object.keys(t);n<r.length;n++){var o=r[n];if(!(o in e)||!Ar(t[o],e[o]))return!1}return!0}var Ot=function(){},Do=[{segment:"autocomplete-core",version:"1.9.3"}];function kn(t){var e=t.item,n=t.items;return{index:e.__autocomplete_indexName,items:[e],positions:[1+n.findIndex(function(r){return r.objectID===e.objectID})],queryID:e.__autocomplete_queryID,algoliaSource:["autocomplete"]}}function Cn(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var ko=["items"],Co=["items"];function Be(t){return Be=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Be(t)}function st(t){return function(e){if(Array.isArray(e))return At(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||function(e,n){if(e){if(typeof e=="string")return At(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?At(e,n):void 0}}(t)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function At(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function xr(t,e){if(t==null)return{};var n,r,o=function(u,s){if(u==null)return{};var l,f,a={},v=Object.keys(u);for(f=0;f<v.length;f++)l=v[f],s.indexOf(l)>=0||(a[l]=u[l]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function An(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function Ae(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?An(Object(n),!0).forEach(function(r){Ao(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):An(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ao(t,e,n){return(e=function(r){var o=function(i,u){if(Be(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Be(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Be(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function xo(t){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:20,n=[],r=0;r<t.objectIDs.length;r+=e)n.push(Ae(Ae({},t),{},{objectIDs:t.objectIDs.slice(r,r+e)}));return n}function ft(t){return t.map(function(e){var n=e.items,r=xr(e,ko);return Ae(Ae({},r),{},{objectIDs:(n==null?void 0:n.map(function(o){return o.objectID}))||r.objectIDs})})}function No(t){var e=t.items.reduce(function(n,r){var o;return n[r.__autocomplete_indexName]=((o=n[r.__autocomplete_indexName])!==null&&o!==void 0?o:[]).concat(r),n},{});return Object.keys(e).map(function(n){return{index:n,items:e[n],algoliaSource:["autocomplete"]}})}function xt(t){return t.objectID&&t.__autocomplete_indexName&&t.__autocomplete_queryID}function Ve(t){return Ve=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Ve(t)}function Oe(t){return function(e){if(Array.isArray(e))return Nt(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||function(e,n){if(e){if(typeof e=="string")return Nt(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Nt(e,n):void 0}}(t)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Nt(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function xn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function me(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?xn(Object(n),!0).forEach(function(r){To(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):xn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function To(t,e,n){return(e=function(r){var o=function(i,u){if(Ve(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Ve(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Ve(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var Ro="https://cdn.jsdelivr.net/npm/search-insights@".concat("2.6.0","/dist/search-insights.min.js"),qo=Cr(function(t){var e=t.onItemsChange,n=t.items,r=t.insights,o=t.state;e({insights:r,insightsEvents:No({items:n}).map(function(i){return me({eventName:"Items Viewed"},i)}),state:o})},400);function Lo(t){var e=function(a){return me({onItemsChange:function(v){var p=v.insights,m=v.insightsEvents;p.viewedObjectIDs.apply(p,Oe(m.map(function(h){return me(me({},h),{},{algoliaSource:[].concat(Oe(h.algoliaSource||[]),["autocomplete-internal"])})})))},onSelect:function(v){var p=v.insights,m=v.insightsEvents;p.clickedObjectIDsAfterSearch.apply(p,Oe(m.map(function(h){return me(me({},h),{},{algoliaSource:[].concat(Oe(h.algoliaSource||[]),["autocomplete-internal"])})})))},onActive:Ot},a)}(t),n=e.insightsClient,r=e.onItemsChange,o=e.onSelect,i=e.onActive,u=n;n||typeof window<"u"&&function(a){var v=window,p=v.AlgoliaAnalyticsObject||"aa";typeof p=="string"&&(u=v[p]),u||(v.AlgoliaAnalyticsObject=p,v[p]||(v[p]=function(){v[p].queue||(v[p].queue=[]);for(var m=arguments.length,h=new Array(m),d=0;d<m;d++)h[d]=arguments[d];v[p].queue.push(h)}),v[p].version="2.6.0",u=v[p],function(m){var h="[Autocomplete]: Could not load search-insights.js. Please load it manually following https://alg.li/insights-autocomplete";try{var d=m.document.createElement("script");d.async=!0,d.src=Ro,d.onerror=function(){console.error(h)},document.body.appendChild(d)}catch{console.error(h)}}(v))}();var s=function(a){var v,p,m,h=(v=function(y,g){return function(_){if(Array.isArray(_))return _}(y)||function(_,b){var S=_==null?null:typeof Symbol<"u"&&_[Symbol.iterator]||_["@@iterator"];if(S!=null){var O,E,k,P,I=[],w=!0,T=!1;try{for(k=(S=S.call(_)).next;!(w=(O=k.call(S)).done)&&(I.push(O.value),I.length!==2);w=!0);}catch(M){T=!0,E=M}finally{try{if(!w&&S.return!=null&&(P=S.return(),Object(P)!==P))return}finally{if(T)throw E}}return I}}(y)||function(_,b){if(_){if(typeof _=="string")return Cn(_,2);var S=Object.prototype.toString.call(_).slice(8,-1);return S==="Object"&&_.constructor&&(S=_.constructor.name),S==="Map"||S==="Set"?Array.from(_):S==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(S)?Cn(_,2):void 0}}(y)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}((a.version||"").split(".").map(Number)),p=v[0],m=v[1],p>=3||p===2&&m>=4||p===1&&m>=10);function d(y,g,_){if(h&&_!==void 0){var b=_[0].__autocomplete_algoliaCredentials,S={"X-Algolia-Application-Id":b.appId,"X-Algolia-API-Key":b.apiKey};a.apply(void 0,[y].concat(st(g),[{headers:S}]))}else a.apply(void 0,[y].concat(st(g)))}return{init:function(y,g){a("init",{appId:y,apiKey:g})},setUserToken:function(y){a("setUserToken",y)},clickedObjectIDsAfterSearch:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&d("clickedObjectIDsAfterSearch",ft(g),g[0].items)},clickedObjectIDs:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&d("clickedObjectIDs",ft(g),g[0].items)},clickedFilters:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&a.apply(void 0,["clickedFilters"].concat(g))},convertedObjectIDsAfterSearch:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&d("convertedObjectIDsAfterSearch",ft(g),g[0].items)},convertedObjectIDs:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&d("convertedObjectIDs",ft(g),g[0].items)},convertedFilters:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&a.apply(void 0,["convertedFilters"].concat(g))},viewedObjectIDs:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&g.reduce(function(b,S){var O=S.items,E=xr(S,Co);return[].concat(st(b),st(xo(Ae(Ae({},E),{},{objectIDs:(O==null?void 0:O.map(function(k){return k.objectID}))||E.objectIDs})).map(function(k){return{items:O,payload:k}})))},[]).forEach(function(b){var S=b.items;return d("viewedObjectIDs",[b.payload],S)})},viewedFilters:function(){for(var y=arguments.length,g=new Array(y),_=0;_<y;_++)g[_]=arguments[_];g.length>0&&a.apply(void 0,["viewedFilters"].concat(g))}}}(u),l={current:[]},f=Cr(function(a){var v=a.state;if(v.isOpen){var p=v.collections.reduce(function(m,h){return[].concat(Oe(m),Oe(h.items))},[]).filter(xt);Ar(l.current.map(function(m){return m.objectID}),p.map(function(m){return m.objectID}))||(l.current=p,p.length>0&&qo({onItemsChange:r,items:p,insights:s,state:v}))}},0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(a){var v=a.setContext,p=a.onSelect,m=a.onActive;u("addAlgoliaAgent","insights-plugin"),v({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:s}}),p(function(h){var d=h.item,y=h.state,g=h.event;xt(d)&&o({state:y,event:g,insights:s,item:d,insightsEvents:[me({eventName:"Item Selected"},kn({item:d,items:l.current}))]})}),m(function(h){var d=h.item,y=h.state,g=h.event;xt(d)&&i({state:y,event:g,insights:s,item:d,insightsEvents:[me({eventName:"Item Active"},kn({item:d,items:l.current}))]})})},onStateChange:function(a){var v=a.state;f({state:v})},__autocomplete_pluginOptions:t}}function wt(t,e){var n=e;return{then:function(r,o){return wt(t.then(mt(r,n,t),mt(o,n,t)),n)},catch:function(r){return wt(t.catch(mt(r,n,t)),n)},finally:function(r){return r&&n.onCancelList.push(r),wt(t.finally(mt(r&&function(){return n.onCancelList=[],r()},n,t)),n)},cancel:function(){n.isCanceled=!0;var r=n.onCancelList;n.onCancelList=[],r.forEach(function(o){o()})},isCanceled:function(){return n.isCanceled===!0}}}function Nn(t){return wt(t,{isCanceled:!1,onCancelList:[]})}function mt(t,e,n){return t?function(r){return e.isCanceled?r:t(r)}:n}function Tn(t,e,n,r){if(!n)return null;if(t<0&&(e===null||r!==null&&e===0))return n+t;var o=(e===null?-1:e)+t;return o<=-1||o>=n?r===null?null:0:o}function Rn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function qn(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Rn(Object(n),!0).forEach(function(r){Mo(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Rn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Mo(t,e,n){return(e=function(r){var o=function(i,u){if(Ke(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Ke(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Ke(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Ke(t){return Ke=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Ke(t)}function De(t){var e=function(o){var i=o.collections.map(function(u){return u.items.length}).reduce(function(u,s,l){var f=(u[l-1]||0)+s;return u.push(f),u},[]).reduce(function(u,s){return s<=o.activeItemId?u+1:u},0);return o.collections[i]}(t);if(!e)return null;var n=e.items[function(o){for(var i=o.state,u=o.collection,s=!1,l=0,f=0;s===!1;){var a=i.collections[l];if(a===u){s=!0;break}f+=a.items.length,l++}return i.activeItemId-f}({state:t,collection:e})],r=e.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:t}),itemUrl:r.getItemUrl({item:n,state:t}),source:r}}var Ho=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function We(t){return We=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},We(t)}function Ln(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function Uo(t,e,n){return(e=function(r){var o=function(i,u){if(We(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(We(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return We(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ze(t){return ze=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},ze(t)}function Mn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function pt(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Mn(Object(n),!0).forEach(function(r){Fo(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Mn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Fo(t,e,n){return(e=function(r){var o=function(i,u){if(ze(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(ze(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return ze(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Je(t){return Je=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Je(t)}function Tt(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function Hn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function we(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Hn(Object(n),!0).forEach(function(r){Bo(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Hn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Bo(t,e,n){return(e=function(r){var o=function(i,u){if(Je(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Je(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Je(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function $e(t){return $e=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},$e(t)}function Un(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function vt(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Un(Object(n),!0).forEach(function(r){Nr(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Un(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Nr(t,e,n){return(e=function(r){var o=function(i,u){if($e(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if($e(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return $e(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Ze(t){return Ze=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Ze(t)}function Fn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function Ee(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Fn(Object(n),!0).forEach(function(r){Vo(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Fn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Vo(t,e,n){return(e=function(r){var o=function(i,u){if(Ze(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Ze(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Ze(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Tr(t){return function(e){if(Array.isArray(e))return Rt(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||function(e,n){if(e){if(typeof e=="string")return Rt(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Rt(e,n):void 0}}(t)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Rt(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function dt(t){return!!t.execute}function Ko(t){var e=t.reduce(function(n,r){if(!dt(r))return n.push(r),n;var o=r.searchClient,i=r.execute,u=r.requesterId,s=r.requests,l=n.find(function(v){return dt(r)&&dt(v)&&v.searchClient===o&&!!u&&v.requesterId===u});if(l){var f;(f=l.items).push.apply(f,Tr(s))}else{var a={execute:i,requesterId:u,items:s,searchClient:o};n.push(a)}return n},[]).map(function(n){if(!dt(n))return Promise.resolve(n);var r=n,o=r.execute,i=r.items;return o({searchClient:r.searchClient,requests:i})});return Promise.all(e).then(function(n){return ot(n)})}function Qe(t){return Qe=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Qe(t)}var Wo=["event","nextState","props","query","refresh","store"];function Bn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function Re(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Bn(Object(n),!0).forEach(function(r){zo(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Bn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function zo(t,e,n){return(e=function(r){var o=function(i,u){if(Qe(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Qe(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Qe(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var Vn,qt,ht,qe=null,Kn=(Vn=-1,qt=-1,ht=void 0,function(t){var e=++Vn;return Promise.resolve(t).then(function(n){return ht&&e<qt?ht:(qt=e,ht=n,n)})});function je(t){var e=t.event,n=t.nextState,r=n===void 0?{}:n,o=t.props,i=t.query,u=t.refresh,s=t.store,l=function(_,b){if(_==null)return{};var S,O,E=function(P,I){if(P==null)return{};var w,T,M={},C=Object.keys(P);for(T=0;T<C.length;T++)w=C[T],I.indexOf(w)>=0||(M[w]=P[w]);return M}(_,b);if(Object.getOwnPropertySymbols){var k=Object.getOwnPropertySymbols(_);for(O=0;O<k.length;O++)S=k[O],b.indexOf(S)>=0||Object.prototype.propertyIsEnumerable.call(_,S)&&(E[S]=_[S])}return E}(t,Wo);qe&&o.environment.clearTimeout(qe);var f=l.setCollections,a=l.setIsOpen,v=l.setQuery,p=l.setActiveItemId,m=l.setStatus;if(v(i),p(o.defaultActiveItemId),!i&&o.openOnFocus===!1){var h,d=s.getState().collections.map(function(_){return Re(Re({},_),{},{items:[]})});m("idle"),f(d),a((h=r.isOpen)!==null&&h!==void 0?h:o.shouldPanelOpen({state:s.getState()}));var y=Nn(Kn(d).then(function(){return Promise.resolve()}));return s.pendingRequests.add(y)}m("loading"),qe=o.environment.setTimeout(function(){m("stalled")},o.stallThreshold);var g=Nn(Kn(o.getSources(Re({query:i,refresh:u,state:s.getState()},l)).then(function(_){return Promise.all(_.map(function(b){return Promise.resolve(b.getItems(Re({query:i,refresh:u,state:s.getState()},l))).then(function(S){return function(O,E,k){if(I=O,!!(I!=null&&I.execute)){var P=O.requesterId==="algolia"?Object.assign.apply(Object,[{}].concat(Tr(Object.keys(k.context).map(function(w){var T;return(T=k.context[w])===null||T===void 0?void 0:T.__algoliaSearchParameters})))):{};return Ee(Ee({},O),{},{requests:O.queries.map(function(w){return{query:O.requesterId==="algolia"?Ee(Ee({},w),{},{params:Ee(Ee({},P),w.params)}):w,sourceId:E,transformResponse:O.transformResponse}})})}var I;return{items:O,sourceId:E}}(S,b.sourceId,s.getState())})})).then(Ko).then(function(b){return function(S,O,E){return O.map(function(k){var P,I=S.filter(function(C){return C.sourceId===k.sourceId}),w=I.map(function(C){return C.items}),T=I[0].transformResponse,M=T?T({results:P=w,hits:P.map(function(C){return C.hits}).filter(Boolean),facetHits:P.map(function(C){var z;return(z=C.facetHits)===null||z===void 0?void 0:z.map(function(ae){return{label:ae.value,count:ae.count,_highlightResult:{label:{value:ae.highlighted}}}})}).filter(Boolean)}):w;return k.onResolve({source:k,results:w,items:M,state:E.getState()}),M.every(Boolean),'The `getItems` function from source "'.concat(k.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),`. + +Did you forget to return items? + +See: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems`),{source:k,items:M}})}(b,_,s)}).then(function(b){return function(S){var O=S.props,E=S.state,k=S.collections.reduce(function(I,w){return vt(vt({},I),{},Nr({},w.source.sourceId,vt(vt({},w.source),{},{getItems:function(){return ot(w.items)}})))},{}),P=O.plugins.reduce(function(I,w){return w.reshape?w.reshape(I):I},{sourcesBySourceId:k,state:E}).sourcesBySourceId;return ot(O.reshape({sourcesBySourceId:P,sources:Object.values(P),state:E})).filter(Boolean).map(function(I){return{source:I,items:I.getItems()}})}({collections:b,props:o,state:s.getState()})})}))).then(function(_){var b;m("idle"),f(_);var S=o.shouldPanelOpen({state:s.getState()});a((b=r.isOpen)!==null&&b!==void 0?b:o.openOnFocus&&!i&&S||S);var O=De(s.getState());if(s.getState().activeItemId!==null&&O){var E=O.item,k=O.itemInputValue,P=O.itemUrl,I=O.source;I.onActive(Re({event:e,item:E,itemInputValue:k,itemUrl:P,refresh:u,source:I,state:s.getState()},l))}}).finally(function(){m("idle"),qe&&o.environment.clearTimeout(qe)});return s.pendingRequests.add(g)}function Ge(t){return Ge=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Ge(t)}var Jo=["event","props","refresh","store"];function Wn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function ye(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Wn(Object(n),!0).forEach(function(r){$o(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Wn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function $o(t,e,n){return(e=function(r){var o=function(i,u){if(Ge(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Ge(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Ge(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Ye(t){return Ye=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Ye(t)}var Zo=["props","refresh","store"],Qo=["inputElement","formElement","panelElement"],Go=["inputElement"],Yo=["inputElement","maxLength"],Xo=["sourceIndex"],ei=["sourceIndex"],ti=["item","source","sourceIndex"];function zn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function F(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?zn(Object(n),!0).forEach(function(r){ni(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):zn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ni(t,e,n){return(e=function(r){var o=function(i,u){if(Ye(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Ye(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Ye(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ge(t,e){if(t==null)return{};var n,r,o=function(u,s){if(u==null)return{};var l,f,a={},v=Object.keys(u);for(f=0;f<v.length;f++)l=v[f],s.indexOf(l)>=0||(a[l]=u[l]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function Xe(t){return Xe=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},Xe(t)}function Jn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function ri(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Jn(Object(n),!0).forEach(function(r){Rr(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Jn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Rr(t,e,n){return(e=function(r){var o=function(i,u){if(Xe(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(Xe(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return Xe(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function oi(t){var e,n,r,o,i=t.plugins,u=t.options,s=(e=(((n=u.__autocomplete_metadata)===null||n===void 0?void 0:n.userAgents)||[])[0])===null||e===void 0?void 0:e.segment,l=s?Rr({},s,Object.keys(((r=u.__autocomplete_metadata)===null||r===void 0?void 0:r.options)||{})):{};return{plugins:i.map(function(f){return{name:f.name,options:Object.keys(f.__autocomplete_pluginOptions||[])}}),options:ri({"autocomplete-core":Object.keys(u)},l),ua:Do.concat(((o=u.__autocomplete_metadata)===null||o===void 0?void 0:o.userAgents)||[])}}function $n(t){var e,n=t.state;return n.isOpen===!1||n.activeItemId===null?null:((e=De(n))===null||e===void 0?void 0:e.itemInputValue)||null}function et(t){return et=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},et(t)}function Zn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function x(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Zn(Object(n),!0).forEach(function(r){ii(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Zn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ii(t,e,n){return(e=function(r){var o=function(i,u){if(et(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(et(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return et(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var ai=function(t,e){switch(e.type){case"setActiveItemId":case"mousemove":return x(x({},t),{},{activeItemId:e.payload});case"setQuery":return x(x({},t),{},{query:e.payload,completion:null});case"setCollections":return x(x({},t),{},{collections:e.payload});case"setIsOpen":return x(x({},t),{},{isOpen:e.payload});case"setStatus":return x(x({},t),{},{status:e.payload});case"setContext":return x(x({},t),{},{context:x(x({},t.context),e.payload)});case"ArrowDown":var n=x(x({},t),{},{activeItemId:e.payload.hasOwnProperty("nextActiveItemId")?e.payload.nextActiveItemId:Tn(1,t.activeItemId,zt(t),e.props.defaultActiveItemId)});return x(x({},n),{},{completion:$n({state:n})});case"ArrowUp":var r=x(x({},t),{},{activeItemId:Tn(-1,t.activeItemId,zt(t),e.props.defaultActiveItemId)});return x(x({},r),{},{completion:$n({state:r})});case"Escape":return t.isOpen?x(x({},t),{},{activeItemId:null,isOpen:!1,completion:null}):x(x({},t),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return x(x({},t),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return x(x({},t),{},{activeItemId:e.props.openOnFocus===!0?e.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return x(x({},t),{},{activeItemId:e.props.defaultActiveItemId,isOpen:(e.props.openOnFocus||!!t.query)&&e.props.shouldPanelOpen({state:t})});case"blur":return e.props.debug?t:x(x({},t),{},{isOpen:!1,activeItemId:null});case"mouseleave":return x(x({},t),{},{activeItemId:e.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(e.type)," is not supported."),t}};function tt(t){return tt=typeof Symbol=="function"&&D(Symbol.iterator)=="symbol"?function(e){return D(e)}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":D(e)},tt(t)}function Qn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function _e(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Qn(Object(n),!0).forEach(function(r){ci(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Qn(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ci(t,e,n){return(e=function(r){var o=function(i,u){if(tt(i)!=="object"||i===null)return i;var s=i[Symbol.toPrimitive];if(s!==void 0){var l=s.call(i,"string");if(tt(l)!=="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(i)}(r);return tt(o)==="symbol"?o:String(o)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ui(t){var e=[],n=function(l,f){var a,v=typeof window<"u"?window:{},p=l.plugins||[];return we(we({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,insights:!1,environment:v,shouldPanelOpen:function(m){return zt(m.state)>0},reshape:function(m){return m.sources}},l),{},{id:(a=l.id)!==null&&a!==void 0?a:"autocomplete-".concat(Io++),plugins:p,initialState:we({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},l.initialState),onStateChange:function(m){var h;(h=l.onStateChange)===null||h===void 0||h.call(l,m),p.forEach(function(d){var y;return(y=d.onStateChange)===null||y===void 0?void 0:y.call(d,m)})},onSubmit:function(m){var h;(h=l.onSubmit)===null||h===void 0||h.call(l,m),p.forEach(function(d){var y;return(y=d.onSubmit)===null||y===void 0?void 0:y.call(d,m)})},onReset:function(m){var h;(h=l.onReset)===null||h===void 0||h.call(l,m),p.forEach(function(d){var y;return(y=d.onReset)===null||y===void 0?void 0:y.call(d,m)})},getSources:function(m){return Promise.all([].concat(function(h){return function(d){if(Array.isArray(d))return Tt(d)}(h)||function(d){if(typeof Symbol<"u"&&d[Symbol.iterator]!=null||d["@@iterator"]!=null)return Array.from(d)}(h)||function(d,y){if(d){if(typeof d=="string")return Tt(d,y);var g=Object.prototype.toString.call(d).slice(8,-1);return g==="Object"&&d.constructor&&(g=d.constructor.name),g==="Map"||g==="Set"?Array.from(d):g==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g)?Tt(d,y):void 0}}(h)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}(p.map(function(h){return h.getSources})),[l.getSources]).filter(Boolean).map(function(h){return function(d,y){var g=[];return Promise.resolve(d(y)).then(function(_){return Promise.all(_.filter(function(b){return!!b}).map(function(b){if(b.sourceId,g.includes(b.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(b.sourceId)," is not unique."));g.push(b.sourceId);var S={getItemInputValue:function(E){return E.state.query},getItemUrl:function(){},onSelect:function(E){(0,E.setIsOpen)(!1)},onActive:Ot,onResolve:Ot};Object.keys(S).forEach(function(E){S[E].__default=!0});var O=qn(qn({},S),b);return Promise.resolve(O)}))})}(h,m)})).then(function(h){return ot(h)}).then(function(h){return h.map(function(d){return we(we({},d),{},{onSelect:function(y){d.onSelect(y),f.forEach(function(g){var _;return(_=g.onSelect)===null||_===void 0?void 0:_.call(g,y)})},onActive:function(y){d.onActive(y),f.forEach(function(g){var _;return(_=g.onActive)===null||_===void 0?void 0:_.call(g,y)})},onResolve:function(y){d.onResolve(y),f.forEach(function(g){var _;return(_=g.onResolve)===null||_===void 0?void 0:_.call(g,y)})}})})})},navigator:we({navigate:function(m){var h=m.itemUrl;v.location.assign(h)},navigateNewTab:function(m){var h=m.itemUrl,d=v.open(h,"_blank","noopener");d==null||d.focus()},navigateNewWindow:function(m){var h=m.itemUrl;v.open(h,"_blank","noopener")}},l.navigator)})}(t,e),r=function(l,f,a){var v,p=f.initialState;return{getState:function(){return p},dispatch:function(m,h){var d=function(y){for(var g=1;g<arguments.length;g++){var _=arguments[g]!=null?arguments[g]:{};g%2?Ln(Object(_),!0).forEach(function(b){Uo(y,b,_[b])}):Object.getOwnPropertyDescriptors?Object.defineProperties(y,Object.getOwnPropertyDescriptors(_)):Ln(Object(_)).forEach(function(b){Object.defineProperty(y,b,Object.getOwnPropertyDescriptor(_,b))})}return y}({},p);p=l(p,{type:m,props:f,payload:h}),a({state:p,prevState:d})},pendingRequests:(v=[],{add:function(m){return v.push(m),m.finally(function(){v=v.filter(function(h){return h!==m})})},cancelAll:function(){v.forEach(function(m){return m.cancel()})},isEmpty:function(){return v.length===0}})}}(ai,n,function(l){var f=l.prevState,a=l.state;n.onStateChange(_e({prevState:f,state:a,refresh:u,navigator:n.navigator},o))}),o=function(l){var f=l.store;return{setActiveItemId:function(a){f.dispatch("setActiveItemId",a)},setQuery:function(a){f.dispatch("setQuery",a)},setCollections:function(a){var v=0,p=a.map(function(m){return pt(pt({},m),{},{items:ot(m.items).map(function(h){return pt(pt({},h),{},{__autocomplete_id:v++})})})});f.dispatch("setCollections",p)},setIsOpen:function(a){f.dispatch("setIsOpen",a)},setStatus:function(a){f.dispatch("setStatus",a)},setContext:function(a){f.dispatch("setContext",a)}}}({store:r}),i=function(l){var f=l.props,a=l.refresh,v=l.store,p=ge(l,Zo),m=function(h,d){return d!==void 0?"".concat(h,"-").concat(d):h};return{getEnvironmentProps:function(h){var d=h.inputElement,y=h.formElement,g=h.panelElement;function _(b){!v.getState().isOpen&&v.pendingRequests.isEmpty()||b.target===d||[y,g].some(function(S){return(O=S)===(E=b.target)||O.contains(E);var O,E})===!1&&(v.dispatch("blur",null),f.debug||v.pendingRequests.cancelAll())}return F({onTouchStart:_,onMouseDown:_,onTouchMove:function(b){v.getState().isOpen!==!1&&d===f.environment.document.activeElement&&b.target!==d&&d.blur()}},ge(h,Qo))},getRootProps:function(h){return F({role:"combobox","aria-expanded":v.getState().isOpen,"aria-haspopup":"listbox","aria-owns":v.getState().isOpen?"".concat(f.id,"-list"):void 0,"aria-labelledby":"".concat(f.id,"-label")},h)},getFormProps:function(h){return h.inputElement,F({action:"",noValidate:!0,role:"search",onSubmit:function(d){var y;d.preventDefault(),f.onSubmit(F({event:d,refresh:a,state:v.getState()},p)),v.dispatch("submit",null),(y=h.inputElement)===null||y===void 0||y.blur()},onReset:function(d){var y;d.preventDefault(),f.onReset(F({event:d,refresh:a,state:v.getState()},p)),v.dispatch("reset",null),(y=h.inputElement)===null||y===void 0||y.focus()}},ge(h,Go))},getLabelProps:function(h){var d=h||{},y=d.sourceIndex,g=ge(d,Xo);return F({htmlFor:"".concat(m(f.id,y),"-input"),id:"".concat(m(f.id,y),"-label")},g)},getInputProps:function(h){var d;function y(P){(f.openOnFocus||v.getState().query)&&je(F({event:P,props:f,query:v.getState().completion||v.getState().query,refresh:a,store:v},p)),v.dispatch("focus",null)}var g=h||{},_=(g.inputElement,g.maxLength),b=_===void 0?512:_,S=ge(g,Yo),O=De(v.getState()),E=function(P){return!!(P&&P.match(Ho))}(((d=f.environment.navigator)===null||d===void 0?void 0:d.userAgent)||""),k=O!=null&&O.itemUrl&&!E?"go":"search";return F({"aria-autocomplete":"both","aria-activedescendant":v.getState().isOpen&&v.getState().activeItemId!==null?"".concat(f.id,"-item-").concat(v.getState().activeItemId):void 0,"aria-controls":v.getState().isOpen?"".concat(f.id,"-list"):void 0,"aria-labelledby":"".concat(f.id,"-label"),value:v.getState().completion||v.getState().query,id:"".concat(f.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:k,spellCheck:"false",autoFocus:f.autoFocus,placeholder:f.placeholder,maxLength:b,type:"search",onChange:function(P){je(F({event:P,props:f,query:P.currentTarget.value.slice(0,b),refresh:a,store:v},p))},onKeyDown:function(P){(function(I){var w=I.event,T=I.props,M=I.refresh,C=I.store,z=function(L,ne){if(L==null)return{};var $,V,ce=function(Se,ue){if(Se==null)return{};var G,Y,ct={},le=Object.keys(Se);for(Y=0;Y<le.length;Y++)G=le[Y],ue.indexOf(G)>=0||(ct[G]=Se[G]);return ct}(L,ne);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(L);for(V=0;V<Q.length;V++)$=Q[V],ne.indexOf($)>=0||Object.prototype.propertyIsEnumerable.call(L,$)&&(ce[$]=L[$])}return ce}(I,Jo);if(w.key==="ArrowUp"||w.key==="ArrowDown"){var ae=function(){var L=T.environment.document.getElementById("".concat(T.id,"-item-").concat(C.getState().activeItemId));L&&(L.scrollIntoViewIfNeeded?L.scrollIntoViewIfNeeded(!1):L.scrollIntoView(!1))},at=function(){var L=De(C.getState());if(C.getState().activeItemId!==null&&L){var ne=L.item,$=L.itemInputValue,V=L.itemUrl,ce=L.source;ce.onActive(ye({event:w,item:ne,itemInputValue:$,itemUrl:V,refresh:M,source:ce,state:C.getState()},z))}};w.preventDefault(),C.getState().isOpen===!1&&(T.openOnFocus||C.getState().query)?je(ye({event:w,props:T,query:C.getState().query,refresh:M,store:C},z)).then(function(){C.dispatch(w.key,{nextActiveItemId:T.defaultActiveItemId}),at(),setTimeout(ae,0)}):(C.dispatch(w.key,{}),at(),ae())}else if(w.key==="Escape")w.preventDefault(),C.dispatch(w.key,null),C.pendingRequests.cancelAll();else if(w.key==="Tab")C.dispatch("blur",null),C.pendingRequests.cancelAll();else if(w.key==="Enter"){if(C.getState().activeItemId===null||C.getState().collections.every(function(L){return L.items.length===0}))return void(T.debug||C.pendingRequests.cancelAll());w.preventDefault();var de=De(C.getState()),H=de.item,he=de.itemInputValue,J=de.itemUrl,Z=de.source;if(w.metaKey||w.ctrlKey)J!==void 0&&(Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z)),T.navigator.navigateNewTab({itemUrl:J,item:H,state:C.getState()}));else if(w.shiftKey)J!==void 0&&(Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z)),T.navigator.navigateNewWindow({itemUrl:J,item:H,state:C.getState()}));else if(!w.altKey){if(J!==void 0)return Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z)),void T.navigator.navigate({itemUrl:J,item:H,state:C.getState()});je(ye({event:w,nextState:{isOpen:!1},props:T,query:he,refresh:M,store:C},z)).then(function(){Z.onSelect(ye({event:w,item:H,itemInputValue:he,itemUrl:J,refresh:M,source:Z,state:C.getState()},z))})}}})(F({event:P,props:f,refresh:a,store:v},p))},onFocus:y,onBlur:Ot,onClick:function(P){h.inputElement!==f.environment.document.activeElement||v.getState().isOpen||y(P)}},S)},getPanelProps:function(h){return F({onMouseDown:function(d){d.preventDefault()},onMouseLeave:function(){v.dispatch("mouseleave",null)}},h)},getListProps:function(h){var d=h||{},y=d.sourceIndex,g=ge(d,ei);return F({role:"listbox","aria-labelledby":"".concat(m(f.id,y),"-label"),id:"".concat(m(f.id,y),"-list")},g)},getItemProps:function(h){var d=h.item,y=h.source,g=h.sourceIndex,_=ge(h,ti);return F({id:"".concat(m(f.id,g),"-item-").concat(d.__autocomplete_id),role:"option","aria-selected":v.getState().activeItemId===d.__autocomplete_id,onMouseMove:function(b){if(d.__autocomplete_id!==v.getState().activeItemId){v.dispatch("mousemove",d.__autocomplete_id);var S=De(v.getState());if(v.getState().activeItemId!==null&&S){var O=S.item,E=S.itemInputValue,k=S.itemUrl,P=S.source;P.onActive(F({event:b,item:O,itemInputValue:E,itemUrl:k,refresh:a,source:P,state:v.getState()},p))}}},onMouseDown:function(b){b.preventDefault()},onClick:function(b){var S=y.getItemInputValue({item:d,state:v.getState()}),O=y.getItemUrl({item:d,state:v.getState()});(O?Promise.resolve():je(F({event:b,nextState:{isOpen:!1},props:f,query:S,refresh:a,store:v},p))).then(function(){y.onSelect(F({event:b,item:d,itemInputValue:S,itemUrl:O,refresh:a,source:y,state:v.getState()},p))})}},_)}}}(_e({props:n,refresh:u,store:r,navigator:n.navigator},o));function u(){return je(_e({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,navigator:n.navigator,query:r.getState().query,refresh:u,store:r},o))}if(t.insights&&!n.plugins.some(function(l){return l.name==="aa.algoliaInsightsPlugin"})){var s=typeof t.insights=="boolean"?{}:t.insights;n.plugins.push(Lo(s))}return n.plugins.forEach(function(l){var f;return(f=l.subscribe)===null||f===void 0?void 0:f.call(l,_e(_e({},o),{},{navigator:n.navigator,refresh:u,onSelect:function(a){e.push({onSelect:a})},onActive:function(a){e.push({onActive:a})},onResolve:function(a){e.push({onResolve:a})}}))}),function(l){var f,a,v=l.metadata,p=l.environment;if(!((f=p.navigator)===null||f===void 0||(a=f.userAgent)===null||a===void 0)&&a.includes("Algolia Crawler")){var m=p.document.createElement("meta"),h=p.document.querySelector("head");m.name="algolia:metadata",setTimeout(function(){m.content=JSON.stringify(v),h.appendChild(m)},0)}}({metadata:oi({plugins:n.plugins,options:t}),environment:n.environment}),_e(_e({refresh:u,navigator:n.navigator},i),o)}function li(t){var e=t.translations,n=(e===void 0?{}:e).searchByText,r=n===void 0?"Search by":n;return c.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},c.createElement("span",{className:"DocSearch-Label"},r),c.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},c.createElement("defs",null,c.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),c.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),c.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),c.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),c.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),c.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),c.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),c.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),c.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),c.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function yt(t){return c.createElement("svg",{width:"15",height:"15","aria-label":t.ariaLabel,role:"img"},c.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},t.children))}function si(t){var e=t.translations,n=e===void 0?{}:e,r=n.selectText,o=r===void 0?"to select":r,i=n.selectKeyAriaLabel,u=i===void 0?"Enter key":i,s=n.navigateText,l=s===void 0?"to navigate":s,f=n.navigateUpKeyAriaLabel,a=f===void 0?"Arrow up":f,v=n.navigateDownKeyAriaLabel,p=v===void 0?"Arrow down":v,m=n.closeText,h=m===void 0?"to close":m,d=n.closeKeyAriaLabel,y=d===void 0?"Escape key":d,g=n.searchByText,_=g===void 0?"Search by":g;return c.createElement(c.Fragment,null,c.createElement("div",{className:"DocSearch-Logo"},c.createElement(li,{translations:{searchByText:_}})),c.createElement("ul",{className:"DocSearch-Commands"},c.createElement("li",null,c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:u},c.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),c.createElement("span",{className:"DocSearch-Label"},o)),c.createElement("li",null,c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:p},c.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:a},c.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),c.createElement("span",{className:"DocSearch-Label"},l)),c.createElement("li",null,c.createElement("kbd",{className:"DocSearch-Commands-Key"},c.createElement(yt,{ariaLabel:y},c.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),c.createElement("span",{className:"DocSearch-Label"},h))))}function fi(t){var e=t.hit,n=t.children;return c.createElement("a",{href:e.url},n)}function mi(){return c.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},c.createElement("g",{fill:"none",fillRule:"evenodd"},c.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},c.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),c.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},c.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}function pi(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),c.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function Jt(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function vi(){return c.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),c.createElement("path",{d:"M8 17l-6-6 6-6"})))}var di=function(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function hi(t){switch(t.type){case"lvl1":return c.createElement(di,null);case"content":return c.createElement(gi,null);default:return c.createElement(yi,null)}}function yi(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function gi(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Gn(){return c.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},c.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function _i(){return c.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function bi(){return c.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},c.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}function Si(t){var e=t.translations,n=e===void 0?{}:e,r=n.titleText,o=r===void 0?"Unable to fetch results":r,i=n.helpText,u=i===void 0?"You might want to check your network connection.":i;return c.createElement("div",{className:"DocSearch-ErrorScreen"},c.createElement("div",{className:"DocSearch-Screen-Icon"},c.createElement(_i,null)),c.createElement("p",{className:"DocSearch-Title"},o),c.createElement("p",{className:"DocSearch-Help"},u))}var Oi=["translations"];function wi(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,Oi),o=n.noResultsText,i=o===void 0?"No results for":o,u=n.suggestedQueryText,s=u===void 0?"Try searching for":u,l=n.reportMissingResultsText,f=l===void 0?"Believe this query should return results?":l,a=n.reportMissingResultsLinkText,v=a===void 0?"Let us know.":a,p=r.state.context.searchSuggestions;return c.createElement("div",{className:"DocSearch-NoResults"},c.createElement("div",{className:"DocSearch-Screen-Icon"},c.createElement(bi,null)),c.createElement("p",{className:"DocSearch-Title"},i,' "',c.createElement("strong",null,r.state.query),'"'),p&&p.length>0&&c.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},c.createElement("p",{className:"DocSearch-Help"},s,":"),c.createElement("ul",null,p.slice(0,3).reduce(function(m,h){return[].concat(function(d){return function(y){if(Array.isArray(y))return Wt(y)}(d)||function(y){if(typeof Symbol<"u"&&y[Symbol.iterator]!=null||y["@@iterator"]!=null)return Array.from(y)}(d)||Dr(d)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}(m),[c.createElement("li",{key:h},c.createElement("button",{className:"DocSearch-Prefill",key:h,type:"button",onClick:function(){r.setQuery(h.toLowerCase()+" "),r.refresh(),r.inputRef.current.focus()}},h))])},[]))),r.getMissingResultsUrl&&c.createElement("p",{className:"DocSearch-Help"},"".concat(f," "),c.createElement("a",{href:r.getMissingResultsUrl({query:r.state.query}),target:"_blank",rel:"noopener noreferrer"},v)))}var Ei=["hit","attribute","tagName"];function Yn(t,e){return e.split(".").reduce(function(n,r){return n!=null&&n[r]?n[r]:null},t)}function Pe(t){var e=t.hit,n=t.attribute,r=t.tagName;return ee(r===void 0?"span":r,Fe(Fe({},ve(t,Ei)),{},{dangerouslySetInnerHTML:{__html:Yn(e,"_snippetResult.".concat(n,".value"))||Yn(e,n)}}))}function $t(t){return t.collection&&t.collection.items.length!==0?c.createElement("section",{className:"DocSearch-Hits"},c.createElement("div",{className:"DocSearch-Hit-source"},t.title),c.createElement("ul",t.getListProps(),t.collection.items.map(function(e,n){return c.createElement(ji,B({key:[t.title,e.objectID].join(":"),item:e,index:n},t))}))):null}function ji(t){var e=t.item,n=t.index,r=t.renderIcon,o=t.renderAction,i=t.getItemProps,u=t.onItemClick,s=t.collection,l=t.hitComponent,f=be(c.useState(!1),2),a=f[0],v=f[1],p=be(c.useState(!1),2),m=p[0],h=p[1],d=c.useRef(null),y=l;return c.createElement("li",B({className:["DocSearch-Hit",e.__docsearch_parent&&"DocSearch-Hit--Child",a&&"DocSearch-Hit--deleting",m&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){d.current&&d.current()}},i({item:e,source:s.source,onClick:function(g){u(e,g)}})),c.createElement(y,{hit:e},c.createElement("div",{className:"DocSearch-Hit-Container"},r({item:e,index:n}),e.hierarchy[e.type]&&e.type==="lvl1"&&c.createElement("div",{className:"DocSearch-Hit-content-wrapper"},c.createElement(Pe,{className:"DocSearch-Hit-title",hit:e,attribute:"hierarchy.lvl1"}),e.content&&c.createElement(Pe,{className:"DocSearch-Hit-path",hit:e,attribute:"content"})),e.hierarchy[e.type]&&(e.type==="lvl2"||e.type==="lvl3"||e.type==="lvl4"||e.type==="lvl5"||e.type==="lvl6")&&c.createElement("div",{className:"DocSearch-Hit-content-wrapper"},c.createElement(Pe,{className:"DocSearch-Hit-title",hit:e,attribute:"hierarchy.".concat(e.type)}),c.createElement(Pe,{className:"DocSearch-Hit-path",hit:e,attribute:"hierarchy.lvl1"})),e.type==="content"&&c.createElement("div",{className:"DocSearch-Hit-content-wrapper"},c.createElement(Pe,{className:"DocSearch-Hit-title",hit:e,attribute:"content"}),c.createElement(Pe,{className:"DocSearch-Hit-path",hit:e,attribute:"hierarchy.lvl1"})),o({item:e,runDeleteTransition:function(g){v(!0),d.current=g},runFavoriteTransition:function(g){h(!0),d.current=g}}))))}function Xn(t,e,n){return t.reduce(function(r,o){var i=e(o);return r.hasOwnProperty(i)||(r[i]=[]),r[i].length<(n||5)&&r[i].push(o),r},{})}function er(t){return t}function gt(t){return t.button===1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}function Pi(){}var qr=/(<mark>|<\/mark>)/g,Ii=RegExp(qr.source);function Lr(t){var e,n,r=t;if(!r.__docsearch_parent&&!t._highlightResult)return t.hierarchy.lvl0;var o=r.__docsearch_parent?(e=r.__docsearch_parent)===null||e===void 0||(e=e._highlightResult)===null||e===void 0||(e=e.hierarchy)===null||e===void 0?void 0:e.lvl0:(n=t._highlightResult)===null||n===void 0||(n=n.hierarchy)===null||n===void 0?void 0:n.lvl0;return o?o.value&&Ii.test(o.value)?o.value.replace(qr,""):o.value:t.hierarchy.lvl0}function Di(t){return c.createElement("div",{className:"DocSearch-Dropdown-Container"},t.state.collections.map(function(e){if(e.items.length===0)return null;var n=Lr(e.items[0]);return c.createElement($t,B({},t,{key:e.source.sourceId,title:n,collection:e,renderIcon:function(r){var o,i=r.item,u=r.index;return c.createElement(c.Fragment,null,i.__docsearch_parent&&c.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},c.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},i.__docsearch_parent!==((o=e.items[u+1])===null||o===void 0?void 0:o.__docsearch_parent)?c.createElement("path",{d:"M8 6v21M20 27H8.3"}):c.createElement("path",{d:"M8 6v42M20 27H8.3"}))),c.createElement("div",{className:"DocSearch-Hit-icon"},c.createElement(hi,{type:i.type})))},renderAction:function(){return c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement(vi,null))}}))}),t.resultsFooterComponent&&c.createElement("section",{className:"DocSearch-HitsFooter"},c.createElement(t.resultsFooterComponent,{state:t.state})))}var ki=["translations"];function Ci(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,ki),o=n.recentSearchesTitle,i=o===void 0?"Recent":o,u=n.noRecentSearchesText,s=u===void 0?"No recent searches":u,l=n.saveRecentSearchButtonTitle,f=l===void 0?"Save this search":l,a=n.removeRecentSearchButtonTitle,v=a===void 0?"Remove this search from history":a,p=n.favoriteSearchesTitle,m=p===void 0?"Favorite":p,h=n.removeFavoriteSearchButtonTitle,d=h===void 0?"Remove this search from favorites":h;return r.state.status==="idle"&&r.hasCollections===!1?r.disableUserPersonalization?null:c.createElement("div",{className:"DocSearch-StartScreen"},c.createElement("p",{className:"DocSearch-Help"},s)):r.hasCollections===!1?null:c.createElement("div",{className:"DocSearch-Dropdown-Container"},c.createElement($t,B({},r,{title:i,collection:r.state.collections[0],renderIcon:function(){return c.createElement("div",{className:"DocSearch-Hit-icon"},c.createElement(pi,null))},renderAction:function(y){var g=y.item,_=y.runFavoriteTransition,b=y.runDeleteTransition;return c.createElement(c.Fragment,null,c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(S){S.preventDefault(),S.stopPropagation(),_(function(){r.favoriteSearches.add(g),r.recentSearches.remove(g),r.refresh()})}},c.createElement(Gn,null))),c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement("button",{className:"DocSearch-Hit-action-button",title:v,type:"submit",onClick:function(S){S.preventDefault(),S.stopPropagation(),b(function(){r.recentSearches.remove(g),r.refresh()})}},c.createElement(Jt,null))))}})),c.createElement($t,B({},r,{title:m,collection:r.state.collections[1],renderIcon:function(){return c.createElement("div",{className:"DocSearch-Hit-icon"},c.createElement(Gn,null))},renderAction:function(y){var g=y.item,_=y.runDeleteTransition;return c.createElement("div",{className:"DocSearch-Hit-action"},c.createElement("button",{className:"DocSearch-Hit-action-button",title:d,type:"submit",onClick:function(b){b.preventDefault(),b.stopPropagation(),_(function(){r.favoriteSearches.remove(g),r.refresh()})}},c.createElement(Jt,null)))}})))}var Ai=["translations"],xi=c.memo(function(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,Ai);if(r.state.status==="error")return c.createElement(Si,{translations:n==null?void 0:n.errorScreen});var o=r.state.collections.some(function(i){return i.items.length>0});return r.state.query?o===!1?c.createElement(wi,B({},r,{translations:n==null?void 0:n.noResultsScreen})):c.createElement(Di,r):c.createElement(Ci,B({},r,{hasCollections:o,translations:n==null?void 0:n.startScreen}))},function(t,e){return e.state.status==="loading"||e.state.status==="stalled"}),Ni=["translations"];function Ti(t){var e=t.translations,n=e===void 0?{}:e,r=ve(t,Ni),o=n.resetButtonTitle,i=o===void 0?"Clear the query":o,u=n.resetButtonAriaLabel,s=u===void 0?"Clear the query":u,l=n.cancelButtonText,f=l===void 0?"Cancel":l,a=n.cancelButtonAriaLabel,v=a===void 0?"Cancel":a,p=n.searchInputLabel,m=p===void 0?"Search":p,h=r.getFormProps({inputElement:r.inputRef.current}).onReset;return c.useEffect(function(){r.autoFocus&&r.inputRef.current&&r.inputRef.current.focus()},[r.autoFocus,r.inputRef]),c.useEffect(function(){r.isFromSelection&&r.inputRef.current&&r.inputRef.current.select()},[r.isFromSelection,r.inputRef]),c.createElement(c.Fragment,null,c.createElement("form",{className:"DocSearch-Form",onSubmit:function(d){d.preventDefault()},onReset:h},c.createElement("label",B({className:"DocSearch-MagnifierLabel"},r.getLabelProps()),c.createElement(kr,null),c.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},m)),c.createElement("div",{className:"DocSearch-LoadingIndicator"},c.createElement(mi,null)),c.createElement("input",B({className:"DocSearch-Input",ref:r.inputRef},r.getInputProps({inputElement:r.inputRef.current,autoFocus:r.autoFocus,maxLength:64}))),c.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":s,hidden:!r.state.query},c.createElement(Jt,null))),c.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":v,onClick:r.onClose},f))}var Ri=["_highlightResult","_snippetResult"];function tr(t){var e=t.key,n=t.limit,r=n===void 0?5:n,o=function(u){return function(){var s="__TEST_KEY__";try{return localStorage.setItem(s,""),localStorage.removeItem(s),!0}catch{return!1}}()===!1?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(s){return window.localStorage.setItem(u,JSON.stringify(s))},getItem:function(){var s=window.localStorage.getItem(u);return s?JSON.parse(s):[]}}}(e),i=o.getItem().slice(0,r);return{add:function(u){var s=u,l=(s._highlightResult,s._snippetResult,ve(s,Ri)),f=i.findIndex(function(a){return a.objectID===l.objectID});f>-1&&i.splice(f,1),i.unshift(l),i=i.slice(0,r),o.setItem(i)},remove:function(u){i=i.filter(function(s){return s.objectID!==u.objectID}),o.setItem(i)},getAll:function(){return i}}}function qi(t){var e,n="algoliasearch-client-js-".concat(t.key),r=function(){return e===void 0&&(e=t.localStorage||window.localStorage),e},o=function(){return JSON.parse(r().getItem(n)||"{}")},i=function(u){r().setItem(n,JSON.stringify(u))};return{get:function(u,s){var l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){(function(){var a=t.timeToLive?1e3*t.timeToLive:null,v=o(),p=Object.fromEntries(Object.entries(v).filter(function(h){return Ie(h,2)[1].timestamp!==void 0}));if(i(p),a){var m=Object.fromEntries(Object.entries(p).filter(function(h){var d=Ie(h,2)[1],y=new Date().getTime();return!(d.timestamp+a<y)}));i(m)}})();var f=JSON.stringify(u);return o()[f]}).then(function(f){return Promise.all([f?f.value:s(),f!==void 0])}).then(function(f){var a=Ie(f,2),v=a[0],p=a[1];return Promise.all([v,p||l.miss(v)])}).then(function(f){return Ie(f,1)[0]})},set:function(u,s){return Promise.resolve().then(function(){var l=o();return l[JSON.stringify(u)]={timestamp:new Date().getTime(),value:s},r().setItem(n,JSON.stringify(l)),s})},delete:function(u){return Promise.resolve().then(function(){var s=o();delete s[JSON.stringify(u)],r().setItem(n,JSON.stringify(s))})},clear:function(){return Promise.resolve().then(function(){r().removeItem(n)})}}}function Me(t){var e=_t(t.caches),n=e.shift();return n===void 0?{get:function(r,o){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return o().then(function(u){return Promise.all([u,i.miss(u)])}).then(function(u){return Ie(u,1)[0]})},set:function(r,o){return Promise.resolve(o)},delete:function(r){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(r,o){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(r,o,i).catch(function(){return Me({caches:e}).get(r,o,i)})},set:function(r,o){return n.set(r,o).catch(function(){return Me({caches:e}).set(r,o)})},delete:function(r){return n.delete(r).catch(function(){return Me({caches:e}).delete(r)})},clear:function(){return n.clear().catch(function(){return Me({caches:e}).clear()})}}}function Lt(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},e={};return{get:function(n,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},i=JSON.stringify(n);if(i in e)return Promise.resolve(t.serializable?JSON.parse(e[i]):e[i]);var u=r(),s=o&&o.miss||function(){return Promise.resolve()};return u.then(function(l){return s(l)}).then(function(){return u})},set:function(n,r){return e[JSON.stringify(n)]=t.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(n){return delete e[JSON.stringify(n)],Promise.resolve()},clear:function(){return e={},Promise.resolve()}}}function Li(t){for(var e=t.length-1;e>0;e--){var n=Math.floor(Math.random()*(e+1)),r=t[e];t[e]=t[n],t[n]=r}return t}function Mr(t,e){return e&&Object.keys(e).forEach(function(n){t[n]=e[n](t)}),t}function Pt(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var o=0;return t.replace(/%s/g,function(){return encodeURIComponent(n[o++])})}function nr(t,e){var n=t||{},r=n.data||{};return Object.keys(n).forEach(function(o){["timeout","headers","queryParameters","data","cacheable"].indexOf(o)===-1&&(r[o]=n[o])}),{data:Object.entries(r).length>0?r:void 0,timeout:n.timeout||e,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}var ke={Read:1,Write:2,Any:3};function rr(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;return N(N({},t),{},{status:e,lastUpdate:Date.now()})}function Hr(t){return typeof t=="string"?{protocol:"https",url:t,accept:ke.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||ke.Any}}var It="POST";function or(t,e,n,r){var o=[],i=function(p,m){if(p.method!=="GET"&&(p.data!==void 0||m.data!==void 0)){var h=Array.isArray(p.data)?p.data:N(N({},p.data),m.data);return JSON.stringify(h)}}(n,r),u=function(p,m){var h=N(N({},p.headers),m.headers),d={};return Object.keys(h).forEach(function(y){var g=h[y];d[y.toLowerCase()]=g}),d}(t,r),s=n.method,l=n.method!=="GET"?{}:N(N({},n.data),r.data),f=N(N(N({"x-algolia-agent":t.userAgent.value},t.queryParameters),l),r.queryParameters),a=0,v=function p(m,h){var d=m.pop();if(d===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:ir(o)};var y={data:i,headers:u,method:s,url:Hi(d,n.path,f),connectTimeout:h(a,t.timeouts.connect),responseTimeout:h(a,r.timeout)},g=function(b){var S={request:y,response:b,host:d,triesLeft:m.length};return o.push(S),S},_={onSuccess:function(b){return function(S){try{return JSON.parse(S.content)}catch(O){throw function(E,k){return{name:"DeserializationError",message:E,response:k}}(O.message,S)}}(b)},onRetry:function(b){var S=g(b);return b.isTimedOut&&a++,Promise.all([t.logger.info("Retryable failure",Fr(S)),t.hostsCache.set(d,rr(d,b.isTimedOut?3:2))]).then(function(){return p(m,h)})},onFail:function(b){throw g(b),function(S,O){var E=S.content,k=S.status,P=E;try{P=JSON.parse(E).message}catch{}return function(I,w,T){return{name:"ApiError",message:I,status:w,transporterStackTrace:T}}(P,k,O)}(b,ir(o))}};return t.requester.send(y).then(function(b){return function(S,O){return function(E){var k=E.status;return E.isTimedOut||function(P){var I=P.isTimedOut,w=P.status;return!I&&~~w==0}(E)||~~(k/100)!=2&&~~(k/100)!=4}(S)?O.onRetry(S):~~(S.status/100)==2?O.onSuccess(S):O.onFail(S)}(b,_)})};return function(p,m){return Promise.all(m.map(function(h){return p.get(h,function(){return Promise.resolve(rr(h))})})).then(function(h){var d=h.filter(function(_){return function(b){return b.status===1||Date.now()-b.lastUpdate>12e4}(_)}),y=h.filter(function(_){return function(b){return b.status===3&&Date.now()-b.lastUpdate<=12e4}(_)}),g=[].concat(_t(d),_t(y));return{getTimeout:function(_,b){return(y.length===0&&_===0?1:y.length+3+_)*b},statelessHosts:g.length>0?g.map(function(_){return Hr(_)}):m}})}(t.hostsCache,e).then(function(p){return v(_t(p.statelessHosts).reverse(),p.getTimeout)})}function Mi(t){var e={value:"Algolia for JavaScript (".concat(t,")"),add:function(n){var r="; ".concat(n.segment).concat(n.version!==void 0?" (".concat(n.version,")"):"");return e.value.indexOf(r)===-1&&(e.value="".concat(e.value).concat(r)),e}};return e}function Hi(t,e,n){var r=Ur(n),o="".concat(t.protocol,"://").concat(t.url,"/").concat(e.charAt(0)==="/"?e.substr(1):e);return r.length&&(o+="?".concat(r)),o}function Ur(t){return Object.keys(t).map(function(e){return Pt("%s=%s",e,(n=t[e],Object.prototype.toString.call(n)==="[object Object]"||Object.prototype.toString.call(n)==="[object Array]"?JSON.stringify(t[e]):t[e]));var n}).join("&")}function ir(t){return t.map(function(e){return Fr(e)})}function Fr(t){var e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return N(N({},t),{},{request:N(N({},t.request),{},{headers:N(N({},t.request.headers),e)})})}var Ui=function(t){return function(e,n){return e.method==="GET"?t.transporter.read(e,n):t.transporter.write(e,n)}},Br=function(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Mr({transporter:t.transporter,appId:t.appId,indexName:e},n.methods)}},ar=function(t){return function(e,n){var r=e.map(function(o){return N(N({},o),{},{params:Ur(o.params||{})})});return t.transporter.read({method:It,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)}},cr=function(t){return function(e,n){return Promise.all(e.map(function(r){var o=r.params,i=o.facetName,u=o.facetQuery,s=function(l,f){if(l==null)return{};var a,v,p=function(h,d){if(h==null)return{};var y,g,_={},b=Object.keys(h);for(g=0;g<b.length;g++)y=b[g],d.indexOf(y)>=0||(_[y]=h[y]);return _}(l,f);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(l);for(v=0;v<m.length;v++)a=m[v],f.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(l,a)&&(p[a]=l[a])}return p}(o,Oo);return Br(t)(r.indexName,{methods:{searchForFacetValues:Vr}}).searchForFacetValues(i,u,N(N({},n),s))}))}},Fi=function(t){return function(e,n,r){return t.transporter.read({method:It,path:Pt("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:n},cacheable:!0},r)}},Bi=function(t){return function(e,n){return t.transporter.read({method:It,path:Pt("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},n)}},Vr=function(t){return function(e,n,r){return t.transporter.read({method:It,path:Pt("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:n},cacheable:!0},r)}};function Kr(t,e,n){var r={appId:t,apiKey:e,timeouts:{connect:1,read:2,write:30},requester:{send:function(o){return new Promise(function(i){var u=new XMLHttpRequest;u.open(o.method,o.url,!0),Object.keys(o.headers).forEach(function(a){return u.setRequestHeader(a,o.headers[a])});var s,l=function(a,v){return setTimeout(function(){u.abort(),i({status:0,content:v,isTimedOut:!0})},1e3*a)},f=l(o.connectTimeout,"Connection timeout");u.onreadystatechange=function(){u.readyState>u.OPENED&&s===void 0&&(clearTimeout(f),s=l(o.responseTimeout,"Socket timeout"))},u.onerror=function(){u.status===0&&(clearTimeout(f),clearTimeout(s),i({content:u.responseText||"Network request failed",status:u.status,isTimedOut:!1}))},u.onload=function(){clearTimeout(f),clearTimeout(s),i({content:u.responseText,status:u.status,isTimedOut:!1})},u.send(o.data)})}},logger:{debug:function(o,i){return Promise.resolve()},info:function(o,i){return Promise.resolve()},error:function(o,i){return console.error(o,i),Promise.resolve()}},responsesCache:Lt(),requestsCache:Lt({serializable:!1}),hostsCache:Me({caches:[qi({key:"4.19.1-".concat(t)}),Lt()]}),userAgent:Mi("4.19.1").add({segment:"Browser",version:"lite"}),authMode:0};return function(o){var i=o.appId,u=function(f,a,v){var p={"x-algolia-api-key":v,"x-algolia-application-id":a};return{headers:function(){return f===1?p:{}},queryParameters:function(){return f===0?p:{}}}}(o.authMode!==void 0?o.authMode:1,i,o.apiKey),s=function(f){var a=f.hostsCache,v=f.logger,p=f.requester,m=f.requestsCache,h=f.responsesCache,d=f.timeouts,y=f.userAgent,g=f.hosts,_=f.queryParameters,b={hostsCache:a,logger:v,requester:p,requestsCache:m,responsesCache:h,timeouts:d,userAgent:y,headers:f.headers,queryParameters:_,hosts:g.map(function(S){return Hr(S)}),read:function(S,O){var E=nr(O,b.timeouts.read),k=function(){return or(b,b.hosts.filter(function(I){return(I.accept&ke.Read)!=0}),S,E)};if((E.cacheable!==void 0?E.cacheable:S.cacheable)!==!0)return k();var P={request:S,mappedRequestOptions:E,transporter:{queryParameters:b.queryParameters,headers:b.headers}};return b.responsesCache.get(P,function(){return b.requestsCache.get(P,function(){return b.requestsCache.set(P,k()).then(function(I){return Promise.all([b.requestsCache.delete(P),I])},function(I){return Promise.all([b.requestsCache.delete(P),Promise.reject(I)])}).then(function(I){var w=Ie(I,2);return w[0],w[1]})})},{miss:function(I){return b.responsesCache.set(P,I)}})},write:function(S,O){return or(b,b.hosts.filter(function(E){return(E.accept&ke.Write)!=0}),S,nr(O,b.timeouts.write))}};return b}(N(N({hosts:[{url:"".concat(i,"-dsn.algolia.net"),accept:ke.Read},{url:"".concat(i,".algolia.net"),accept:ke.Write}].concat(Li([{url:"".concat(i,"-1.algolianet.com")},{url:"".concat(i,"-2.algolianet.com")},{url:"".concat(i,"-3.algolianet.com")}]))},o),{},{headers:N(N({},u.headers()),{},{"content-type":"application/x-www-form-urlencoded"},o.headers),queryParameters:N(N({},u.queryParameters()),o.queryParameters)})),l={transporter:s,appId:i,addAlgoliaAgent:function(f,a){s.userAgent.add({segment:f,version:a})},clearCache:function(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(function(){})}};return Mr(l,o.methods)}(N(N(N({},r),n),{},{methods:{search:ar,searchForFacetValues:cr,multipleQueries:ar,multipleSearchForFacetValues:cr,customRequest:Ui,initIndex:function(o){return function(i){return Br(o)(i,{methods:{search:Bi,searchForFacetValues:Vr,findAnswers:Fi}})}}}}))}Kr.version="4.19.1";var Vi=["footer","searchBox"];function Ki(t){var e=t.appId,n=t.apiKey,r=t.indexName,o=t.placeholder,i=o===void 0?"Search docs":o,u=t.searchParameters,s=t.maxResultsPerGroup,l=t.onClose,f=l===void 0?Pi:l,a=t.transformItems,v=a===void 0?er:a,p=t.hitComponent,m=p===void 0?fi:p,h=t.resultsFooterComponent,d=h===void 0?function(){return null}:h,y=t.navigator,g=t.initialScrollY,_=g===void 0?0:g,b=t.transformSearchClient,S=b===void 0?er:b,O=t.disableUserPersonalization,E=O!==void 0&&O,k=t.initialQuery,P=k===void 0?"":k,I=t.translations,w=I===void 0?{}:I,T=t.getMissingResultsUrl,M=t.insights,C=M!==void 0&&M,z=w.footer,ae=w.searchBox,at=ve(w,Vi),de=be(c.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),H=de[0],he=de[1],J=c.useRef(null),Z=c.useRef(null),L=c.useRef(null),ne=c.useRef(null),$=c.useRef(null),V=c.useRef(10),ce=c.useRef(typeof window<"u"?window.getSelection().toString().slice(0,64):"").current,Q=c.useRef(P||ce).current,Se=function(A,R,U){return c.useMemo(function(){var W=Kr(A,R);return W.addAlgoliaAgent("docsearch","3.6.2"),/docsearch.js \(.*\)/.test(W.transporter.userAgent.value)===!1&&W.addAlgoliaAgent("docsearch-react","3.6.2"),U(W)},[A,R,U])}(e,n,S),ue=c.useRef(tr({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(r),limit:10})).current,G=c.useRef(tr({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(r),limit:ue.getAll().length===0?7:4})).current,Y=c.useCallback(function(A){if(!E){var R=A.type==="content"?A.__docsearch_parent:A;R&&ue.getAll().findIndex(function(U){return U.objectID===R.objectID})===-1&&G.add(R)}},[ue,G,E]),ct=c.useCallback(function(A){if(H.context.algoliaInsightsPlugin&&A.__autocomplete_id){var R=A,U={eventName:"Item Selected",index:R.__autocomplete_indexName,items:[R],positions:[A.__autocomplete_id],queryID:R.__autocomplete_queryID};H.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(U)}},[H.context.algoliaInsightsPlugin]),le=c.useMemo(function(){return ui({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:Q,context:{searchSuggestions:[]}},insights:C,navigator:y,onStateChange:function(A){he(A.state)},getSources:function(A){var R=A.query,U=A.state,W=A.setContext,se=A.setStatus;if(!R)return E?[]:[{sourceId:"recentSearches",onSelect:function(q){var X=q.item,Ne=q.event;Y(X),gt(Ne)||f()},getItemUrl:function(q){return q.item.url},getItems:function(){return G.getAll()}},{sourceId:"favoriteSearches",onSelect:function(q){var X=q.item,Ne=q.event;Y(X),gt(Ne)||f()},getItemUrl:function(q){return q.item.url},getItems:function(){return ue.getAll()}}];var fe=!!C;return Se.search([{query:R,indexName:r,params:Fe({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(V.current),"hierarchy.lvl2:".concat(V.current),"hierarchy.lvl3:".concat(V.current),"hierarchy.lvl4:".concat(V.current),"hierarchy.lvl5:".concat(V.current),"hierarchy.lvl6:".concat(V.current),"content:".concat(V.current)],snippetEllipsisText:"…",highlightPreTag:"<mark>",highlightPostTag:"</mark>",hitsPerPage:20,clickAnalytics:fe},u)}]).catch(function(q){throw q.name==="RetryError"&&se("error"),q}).then(function(q){var X=q.results[0],Ne=X.hits,Jr=X.nbHits,Dt=Xn(Ne,function(kt){return Lr(kt)},s);U.context.searchSuggestions.length<Object.keys(Dt).length&&W({searchSuggestions:Object.keys(Dt)}),W({nbHits:Jr});var tn={};return fe&&(tn={__autocomplete_indexName:r,__autocomplete_queryID:X.queryID,__autocomplete_algoliaCredentials:{appId:e,apiKey:n}}),Object.values(Dt).map(function(kt,$r){return{sourceId:"hits".concat($r),onSelect:function(re){var Te=re.item,ut=re.event;Y(Te),gt(ut)||f()},getItemUrl:function(re){return re.item.url},getItems:function(){return Object.values(Xn(kt,function(re){return re.hierarchy.lvl1},s)).map(v).map(function(re){return re.map(function(Te){var ut=null,nn=re.find(function(rn){return rn.type==="lvl1"&&rn.hierarchy.lvl1===Te.hierarchy.lvl1});return Te.type!=="lvl1"&&nn&&(ut=nn),Fe(Fe({},Te),{},{__docsearch_parent:ut},tn)})}).flat()}}})})}})},[r,u,s,Se,f,G,ue,Y,Q,i,y,v,E,C,e,n]),Wr=le.getEnvironmentProps,zr=le.getRootProps,en=le.refresh;return function(A){var R=A.getEnvironmentProps,U=A.panelElement,W=A.formElement,se=A.inputElement;c.useEffect(function(){if(U&&W&&se){var fe=R({panelElement:U,formElement:W,inputElement:se}),q=fe.onTouchStart,X=fe.onTouchMove;return window.addEventListener("touchstart",q),window.addEventListener("touchmove",X),function(){window.removeEventListener("touchstart",q),window.removeEventListener("touchmove",X)}}},[R,U,W,se])}({getEnvironmentProps:Wr,panelElement:ne.current,formElement:L.current,inputElement:$.current}),function(A){var R=A.container;c.useEffect(function(){if(R){var U=R.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),W=U[0],se=U[U.length-1];return R.addEventListener("keydown",fe),function(){R.removeEventListener("keydown",fe)}}function fe(q){q.key==="Tab"&&(q.shiftKey?document.activeElement===W&&(q.preventDefault(),se.focus()):document.activeElement===se&&(q.preventDefault(),W.focus()))}},[R])}({container:J.current}),c.useEffect(function(){return document.body.classList.add("DocSearch--active"),function(){var A,R;document.body.classList.remove("DocSearch--active"),(A=(R=window).scrollTo)===null||A===void 0||A.call(R,0,_)}},[]),c.useEffect(function(){window.matchMedia("(max-width: 768px)").matches&&(V.current=5)},[]),c.useEffect(function(){ne.current&&(ne.current.scrollTop=0)},[H.query]),c.useEffect(function(){Q.length>0&&(en(),$.current&&$.current.focus())},[Q,en]),c.useEffect(function(){function A(){if(Z.current){var R=.01*window.innerHeight;Z.current.style.setProperty("--docsearch-vh","".concat(R,"px"))}}return A(),window.addEventListener("resize",A),function(){window.removeEventListener("resize",A)}},[]),c.createElement("div",B({ref:J},zr({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container",H.status==="stalled"&&"DocSearch-Container--Stalled",H.status==="error"&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(A){A.target===A.currentTarget&&f()}}),c.createElement("div",{className:"DocSearch-Modal",ref:Z},c.createElement("header",{className:"DocSearch-SearchBar",ref:L},c.createElement(Ti,B({},le,{state:H,autoFocus:Q.length===0,inputRef:$,isFromSelection:!!Q&&Q===ce,translations:ae,onClose:f}))),c.createElement("div",{className:"DocSearch-Dropdown",ref:ne},c.createElement(xi,B({},le,{indexName:r,state:H,hitComponent:m,resultsFooterComponent:d,disableUserPersonalization:E,recentSearches:G,favoriteSearches:ue,inputRef:$,translations:at,getMissingResultsUrl:T,onItemClick:function(A,R){ct(A),Y(A),gt(R)||f()}}))),c.createElement("footer",{className:"DocSearch-Footer"},c.createElement(si,{translations:z}))))}function Wi(t){var e,n,r=c.useRef(null),o=be(c.useState(!1),2),i=o[0],u=o[1],s=be(c.useState((t==null?void 0:t.initialQuery)||void 0),2),l=s[0],f=s[1],a=c.useCallback(function(){u(!0)},[u]),v=c.useCallback(function(){u(!1)},[u]);return function(p){var m=p.isOpen,h=p.onOpen,d=p.onClose,y=p.onInput,g=p.searchButtonRef;c.useEffect(function(){function _(b){var S;(b.keyCode===27&&m||((S=b.key)===null||S===void 0?void 0:S.toLowerCase())==="k"&&(b.metaKey||b.ctrlKey)||!function(O){var E=O.target,k=E.tagName;return E.isContentEditable||k==="INPUT"||k==="SELECT"||k==="TEXTAREA"}(b)&&b.key==="/"&&!m)&&(b.preventDefault(),m?d():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||h()),g&&g.current===document.activeElement&&y&&/[a-zA-Z0-9]/.test(String.fromCharCode(b.keyCode))&&y(b)}return window.addEventListener("keydown",_),function(){window.removeEventListener("keydown",_)}},[m,h,d,y,g])}({isOpen:i,onOpen:a,onClose:v,onInput:c.useCallback(function(p){u(!0),f(p.key)},[u,f]),searchButtonRef:r}),c.createElement(c.Fragment,null,c.createElement(Po,{ref:r,translations:t==null||(e=t.translations)===null||e===void 0?void 0:e.button,onClick:a}),i&&Er(c.createElement(Ki,B({},t,{initialScrollY:window.scrollY,initialQuery:l,translations:t==null||(n=t.translations)===null||n===void 0?void 0:n.modal,onClose:v})),document.body))}function zi(t){Pr(c.createElement(Wi,Mt({},t,{transformSearchClient:function(e){return e.addAlgoliaAgent("docsearch.js","3.6.2"),t.transformSearchClient?t.transformSearchClient(e):e}})),function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:window;return typeof e=="string"?n.document.querySelector(e):e}(t.container,t.environment))}const Ji={id:"docsearch"},Qi=Zr({__name:"VPAlgoliaSearchBox",props:{algolia:{}},setup(t){const e=t,n=Qr(),r=Gr(),{site:o,localeIndex:i,lang:u}=ro();Yr(s),Xr(i,s);async function s(){var m,h;await eo();const a={...e.algolia,...(m=e.algolia.locales)==null?void 0:m[i.value]},v=((h=a.searchParameters)==null?void 0:h.facetFilters)??[],p=[...(Array.isArray(v)?v:[v]).filter(d=>!d.startsWith("lang:")),`lang:${u.value}`];l({...a,searchParameters:{...a.searchParameters,facetFilters:p}})}function l(a){const v=Object.assign({},a,{container:"#docsearch",navigator:{navigate({itemUrl:p}){const{pathname:m}=new URL(window.location.origin+p);r.path===m?window.location.assign(window.location.origin+p):n.go(p)}},transformItems(p){return p.map(m=>Object.assign({},m,{url:f(m.url)}))},hitComponent({hit:p,children:m}){return{__v:null,type:"a",ref:void 0,constructor:void 0,key:void 0,props:{href:p.url,children:m}}}});zi(v)}function f(a){const{pathname:v,hash:p}=new URL(a,location.origin);return v.replace(/\.html$/,o.value.cleanUrls?"":".html")+p}return(a,v)=>(to(),no("div",Ji))}});export{Qi as default}; diff --git a/assets/chunks/framework.CdbxnhrM.js b/assets/chunks/framework.CdbxnhrM.js new file mode 100644 index 00000000..bb447cb9 --- /dev/null +++ b/assets/chunks/framework.CdbxnhrM.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Cs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const te={},xt=[],Ue=()=>{},So=()=>!1,Xt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ts=e=>e.startsWith("onUpdate:"),ce=Object.assign,As=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},xo=Object.prototype.hasOwnProperty,z=(e,t)=>xo.call(e,t),W=Array.isArray,Et=e=>Tn(e)==="[object Map]",Ur=e=>Tn(e)==="[object Set]",G=e=>typeof e=="function",re=e=>typeof e=="string",qe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",kr=e=>(ne(e)||G(e))&&G(e.then)&&G(e.catch),Br=Object.prototype.toString,Tn=e=>Br.call(e),Eo=e=>Tn(e).slice(8,-1),Wr=e=>Tn(e)==="[object Object]",Rs=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Cs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),An=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Co=/-(\w)/g,Ie=An(e=>e.replace(Co,(t,n)=>n?n.toUpperCase():"")),To=/\B([A-Z])/g,st=An(e=>e.replace(To,"-$1").toLowerCase()),Rn=An(e=>e.charAt(0).toUpperCase()+e.slice(1)),hn=An(e=>e?`on${Rn(e)}`:""),et=(e,t)=>!Object.is(e,t),Bn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Kr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Ao=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ro=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let zs;const On=()=>zs||(zs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Os(e){if(W(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=re(s)?Io(s):Os(s);if(r)for(const i in r)t[i]=r[i]}return t}else if(re(e)||ne(e))return e}const Oo=/;(?![^(]*\))/g,Po=/:([^]+)/,Mo=/\/\*[^]*?\*\//g;function Io(e){const t={};return e.replace(Mo,"").split(Oo).forEach(n=>{if(n){const s=n.split(Po);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ps(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n<e.length;n++){const s=Ps(e[n]);s&&(t+=s+" ")}else if(ne(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Lo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",No=Cs(Lo);function qr(e){return!!e||e===""}const Gr=e=>!!(e&&e.__v_isRef===!0),Fo=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===Br||!G(e.toString))?Gr(e)?Fo(e.value):JSON.stringify(e,Yr,2):String(e),Yr=(e,t)=>Gr(t)?Yr(e,t.value):Et(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Wn(s,i)+" =>"]=r,n),{})}:Ur(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Wn(n))}:qe(t)?Wn(t):ne(t)&&!W(t)&&!Wr(t)?String(t):t,Wn=(e,t="")=>{var n;return qe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let be;class Ho{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.scopes)for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0,this._active=!1}}}function Xr(){return be}function $o(e,t=!1){be&&be.cleanups.push(e)}let ee;const Kn=new WeakSet;class Jr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,be&&be.active&&be.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Kn.has(this)&&(Kn.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Qr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Qs(this),Zr(this);const t=ee,n=Ne;ee=this,Ne=!0;try{return this.fn()}finally{ei(this),ee=t,Ne=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ls(t);this.deps=this.depsTail=void 0,Qs(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Kn.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){us(this)&&this.run()}get dirty(){return us(this)}}let zr=0,$t,Dt;function Qr(e,t=!1){if(e.flags|=8,t){e.next=Dt,Dt=e;return}e.next=$t,$t=e}function Ms(){zr++}function Is(){if(--zr>0)return;if(Dt){let t=Dt;for(Dt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;$t;){let t=$t;for($t=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Zr(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,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ls(s),Do(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function us(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ti(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ti(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===kt))return;e.globalVersion=kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!us(e)){e.flags&=-3;return}const n=ee,s=Ne;ee=e,Ne=!0;try{Zr(e);const r=e.fn(e._value);(t.version===0||et(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ee=n,Ne=s,ei(e),e.flags&=-3}}function Ls(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ls(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Do(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const ni=[];function rt(){ni.push(Ne),Ne=!1}function it(){const e=ni.pop();Ne=e===void 0?!0:e}function Qs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ee;ee=void 0;try{t()}finally{ee=n}}}let kt=0;class jo{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Pn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!ee||!Ne||ee===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ee)n=this.activeLink=new jo(ee,this),ee.deps?(n.prevDep=ee.depsTail,ee.depsTail.nextDep=n,ee.depsTail=n):ee.deps=ee.depsTail=n,si(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ee.depsTail,n.nextDep=void 0,ee.depsTail.nextDep=n,ee.depsTail=n,ee.deps===n&&(ee.deps=s)}return n}trigger(t){this.version++,kt++,this.notify(t)}notify(t){Ms();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Is()}}}function si(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)si(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const vn=new WeakMap,dt=Symbol(""),ds=Symbol(""),Bt=Symbol("");function ge(e,t,n){if(Ne&&ee){let s=vn.get(e);s||vn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Pn),r.map=s,r.key=n),r.track()}}function We(e,t,n,s,r,i){const o=vn.get(e);if(!o){kt++;return}const l=c=>{c&&c.trigger()};if(Ms(),t==="clear")o.forEach(l);else{const c=W(e),u=c&&Rs(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===Bt||!qe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),u&&l(o.get(Bt)),t){case"add":c?u&&l(o.get("length")):(l(o.get(dt)),Et(e)&&l(o.get(ds)));break;case"delete":c||(l(o.get(dt)),Et(e)&&l(o.get(ds)));break;case"set":Et(e)&&l(o.get(dt));break}}Is()}function Vo(e,t){const n=vn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(ge(t,"iterate",Bt),Me(e)?t:t.map(me))}function Mn(e){return ge(e=J(e),"iterate",Bt),e}const Uo={__proto__:null,[Symbol.iterator](){return qn(this,Symbol.iterator,me)},concat(...e){return _t(this).concat(...e.map(t=>W(t)?_t(t):t))},entries(){return qn(this,"entries",e=>(e[1]=me(e[1]),e))},every(e,t){return ke(this,"every",e,t,void 0,arguments)},filter(e,t){return ke(this,"filter",e,t,n=>n.map(me),arguments)},find(e,t){return ke(this,"find",e,t,me,arguments)},findIndex(e,t){return ke(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ke(this,"findLast",e,t,me,arguments)},findLastIndex(e,t){return ke(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ke(this,"forEach",e,t,void 0,arguments)},includes(...e){return Gn(this,"includes",e)},indexOf(...e){return Gn(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return Gn(this,"lastIndexOf",e)},map(e,t){return ke(this,"map",e,t,void 0,arguments)},pop(){return Nt(this,"pop")},push(...e){return Nt(this,"push",e)},reduce(e,...t){return Zs(this,"reduce",e,t)},reduceRight(e,...t){return Zs(this,"reduceRight",e,t)},shift(){return Nt(this,"shift")},some(e,t){return ke(this,"some",e,t,void 0,arguments)},splice(...e){return Nt(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 Nt(this,"unshift",e)},values(){return qn(this,"values",me)}};function qn(e,t,n){const s=Mn(e),r=s[t]();return s!==e&&!Me(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const ko=Array.prototype;function ke(e,t,n,s,r,i){const o=Mn(e),l=o!==e&&!Me(e),c=o[t];if(c!==ko[t]){const h=c.apply(e,i);return l?me(h):h}let u=n;o!==e&&(l?u=function(h,y){return n.call(this,me(h),y,e)}:n.length>2&&(u=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,u,s);return l&&r?r(a):a}function Zs(e,t,n,s){const r=Mn(e);let i=n;return r!==e&&(Me(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,me(l),c,e)}),r[t](i,...s)}function Gn(e,t,n){const s=J(e);ge(s,"iterate",Bt);const r=s[t](...n);return(r===-1||r===!1)&&Hs(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Nt(e,t,n=[]){rt(),Ms();const s=J(e)[t].apply(e,n);return Is(),it(),s}const Bo=Cs("__proto__,__v_isRef,__isVue"),ri=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(qe));function Wo(e){qe(e)||(e=String(e));const t=J(this);return ge(t,"has",e),t.hasOwnProperty(e)}class ii{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?el:ai:i?ci:li).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=Uo[n]))return c;if(n==="hasOwnProperty")return Wo}const l=Reflect.get(t,n,ue(t)?t:s);return(qe(n)?ri.has(n):Bo(n))||(r||ge(t,"get",n),i)?l:ue(l)?o&&Rs(n)?l:l.value:ne(l)?r?Ln(l):In(l):l}}class oi extends ii{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Me(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&ue(i)&&!ue(s))return c?!1:(i.value=s,!0)}const o=W(t)&&Rs(n)?Number(n)<t.length:z(t,n),l=Reflect.set(t,n,s,ue(t)?t:r);return t===J(r)&&(o?et(s,i)&&We(t,"set",n,s):We(t,"add",n,s)),l}deleteProperty(t,n){const s=z(t,n);t[n];const r=Reflect.deleteProperty(t,n);return r&&s&&We(t,"delete",n,void 0),r}has(t,n){const s=Reflect.has(t,n);return(!qe(n)||!ri.has(n))&&ge(t,"has",n),s}ownKeys(t){return ge(t,"iterate",W(t)?"length":dt),Reflect.ownKeys(t)}}class Ko extends ii{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const qo=new oi,Go=new Ko,Yo=new oi(!0);const hs=e=>e,nn=e=>Reflect.getPrototypeOf(e);function Xo(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Et(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),a=n?hs:t?ps:me;return!t&&ge(i,"iterate",c?ds:dt),{next(){const{value:h,done:y}=u.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function sn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Jo(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(et(r,l)&&ge(o,"get",r),ge(o,"get",l));const{has:c}=nn(o),u=t?hs:e?ps:me;if(c.call(o,r))return u(i.get(r));if(c.call(o,l))return u(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ge(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(et(r,l)&&ge(o,"has",r),ge(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),u=t?hs:e?ps:me;return!e&&ge(c,"iterate",dt),l.forEach((a,h)=>r.call(i,u(a),u(h),o))}};return ce(n,e?{add:sn("add"),set:sn("set"),delete:sn("delete"),clear:sn("clear")}:{add(r){!t&&!Me(r)&&!yt(r)&&(r=J(r));const i=J(this);return nn(i).has.call(i,r)||(i.add(r),We(i,"add",r,r)),this},set(r,i){!t&&!Me(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=nn(o);let u=l.call(o,r);u||(r=J(r),u=l.call(o,r));const a=c.call(o,r);return o.set(r,i),u?et(i,a)&&We(o,"set",r,i):We(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=nn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const u=i.delete(r);return c&&We(i,"delete",r,void 0),u},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&We(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Xo(r,e,t)}),n}function Ns(e,t){const n=Jo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const zo={get:Ns(!1,!1)},Qo={get:Ns(!1,!0)},Zo={get:Ns(!0,!1)};const li=new WeakMap,ci=new WeakMap,ai=new WeakMap,el=new WeakMap;function tl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function nl(e){return e.__v_skip||!Object.isExtensible(e)?0:tl(Eo(e))}function In(e){return yt(e)?e:Fs(e,!1,qo,zo,li)}function sl(e){return Fs(e,!1,Yo,Qo,ci)}function Ln(e){return Fs(e,!0,Go,Zo,ai)}function Fs(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=nl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Me(e){return!!(e&&e.__v_isShallow)}function Hs(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function pn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&Kr(e,"__v_skip",!0),e}const me=e=>ne(e)?In(e):e,ps=e=>ne(e)?Ln(e):e;function ue(e){return e?e.__v_isRef===!0:!1}function le(e){return ui(e,!1)}function fi(e){return ui(e,!0)}function ui(e,t){return ue(e)?e:new rl(e,t)}class rl{constructor(t,n){this.dep=new Pn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Me(t)||yt(t);t=s?t:J(t),et(t,n)&&(this._rawValue=t,this._value=s?t:me(t),this.dep.trigger())}}function di(e){return ue(e)?e.value:e}const il={get:(e,t,n)=>t==="__v_raw"?e:di(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ue(r)&&!ue(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function hi(e){return ht(e)?e:new Proxy(e,il)}class ol{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Pn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function ll(e){return new ol(e)}class cl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Vo(J(this._object),this._key)}}class al{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 fl(e,t,n){return ue(e)?e:G(e)?new al(e):ne(e)&&arguments.length>1?ul(e,t,n):le(e)}function ul(e,t,n){const s=e[t];return ue(s)?s:new cl(e,t,n)}class dl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Pn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ee!==this)return Qr(this,!0),!0}get value(){const t=this.dep.track();return ti(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function hl(e,t,n=!1){let s,r;return G(e)?s=e:(s=e.get,r=e.set),new dl(s,r,n)}const rn={},_n=new WeakMap;let ft;function pl(e,t=!1,n=ft){if(n){let s=_n.get(n);s||_n.set(n,s=[]),s.push(e)}}function gl(e,t,n=te){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,u=g=>r?g:Me(g)||r===!1||r===0?Ze(g,1):Ze(g);let a,h,y,v,A=!1,S=!1;if(ue(e)?(h=()=>e.value,A=Me(e)):ht(e)?(h=()=>u(e),A=!0):W(e)?(S=!0,A=e.some(g=>ht(g)||Me(g)),h=()=>e.map(g=>{if(ue(g))return g.value;if(ht(g))return u(g);if(G(g))return c?c(g,2):g()})):G(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[v]):e(v)}finally{ft=g}}:h=Ue,t&&r){const g=h,P=r===!0?1/0:r;h=()=>Ze(g(),P)}const B=Xr(),N=()=>{a.stop(),B&&As(B.effects,a)};if(i&&t){const g=t;t=(...P)=>{g(...P),N()}}let D=S?new Array(e.length).fill(rn):rn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const P=a.run();if(r||A||(S?P.some((V,U)=>et(V,D[U])):et(P,D))){y&&y();const V=ft;ft=a;try{const U=[P,D===rn?void 0:S&&D[0]===rn?[]:D,v];c?c(t,3,U):t(...U),D=P}finally{ft=V}}}else a.run()};return l&&l(p),a=new Jr(h),a.scheduler=o?()=>o(p,!1):p,v=g=>pl(g,!1,a),y=a.onStop=()=>{const g=_n.get(a);if(g){if(c)c(g,4);else for(const P of g)P();_n.delete(a)}},t?s?p(!0):D=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 Ze(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ue(e))Ze(e.value,t,n);else if(W(e))for(let s=0;s<e.length;s++)Ze(e[s],t,n);else if(Ur(e)||Et(e))e.forEach(s=>{Ze(s,t,n)});else if(Wr(e)){for(const s in e)Ze(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ze(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Jt(e,t,n,s){try{return s?e(...s):e()}catch(r){zt(r,t,n)}}function He(e,t,n,s){if(G(e)){const r=Jt(e,t,n,s);return r&&kr(r)&&r.catch(i=>{zt(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i<e.length;i++)r.push(He(e[i],t,n,s));return r}}function zt(e,t,n,s=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||te;if(t){let l=t.parent;const c=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const a=l.ec;if(a){for(let h=0;h<a.length;h++)if(a[h](e,c,u)===!1)return}l=l.parent}if(i){rt(),Jt(i,null,10,[e,c,u]),it();return}}ml(e,n,r,s,o)}function ml(e,t,n,s=!0,r=!1){if(r)throw e;console.error(e)}const we=[];let je=-1;const Tt=[];let Je=null,wt=0;const pi=Promise.resolve();let bn=null;function Nn(e){const t=bn||pi;return e?t.then(this?e.bind(this):e):t}function yl(e){let t=je+1,n=we.length;for(;t<n;){const s=t+n>>>1,r=we[s],i=Wt(r);i<e||i===e&&r.flags&2?t=s+1:n=s}return t}function $s(e){if(!(e.flags&1)){const t=Wt(e),n=we[we.length-1];!n||!(e.flags&2)&&t>=Wt(n)?we.push(e):we.splice(yl(t),0,e),e.flags|=1,gi()}}function gi(){bn||(bn=pi.then(mi))}function vl(e){W(e)?Tt.push(...e):Je&&e.id===-1?Je.splice(wt+1,0,e):e.flags&1||(Tt.push(e),e.flags|=1),gi()}function er(e,t,n=je+1){for(;n<we.length;n++){const s=we[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;we.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function wn(e){if(Tt.length){const t=[...new Set(Tt)].sort((n,s)=>Wt(n)-Wt(s));if(Tt.length=0,Je){Je.push(...t);return}for(Je=t,wt=0;wt<Je.length;wt++){const n=Je[wt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}Je=null,wt=0}}const Wt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function mi(e){try{for(je=0;je<we.length;je++){const t=we[je];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Jt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;je<we.length;je++){const t=we[je];t&&(t.flags&=-2)}je=-1,we.length=0,wn(),bn=null,(we.length||Tt.length)&&mi()}}let ve=null,yi=null;function Sn(e){const t=ve;return ve=e,yi=e&&e.type.__scopeId||null,t}function _l(e,t=ve,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&dr(-1);const i=Sn(t);let o;try{o=e(...r)}finally{Sn(i),s._d&&dr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Ve(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const l=r[o];i&&(l.oldValue=i[o].value);let c=l.dir[s];c&&(rt(),He(c,n,8,[e.el,l,e,t]),it())}}const bl=Symbol("_vte"),vi=e=>e.__isTeleport,ze=Symbol("_leaveCb"),on=Symbol("_enterCb");function wl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Mt(()=>{e.isMounted=!0}),Ci(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],_i={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},bi=e=>{const t=e.subTree;return t.component?bi(t.component):t},Sl={name:"BaseTransition",props:_i,setup(e,{slots:t}){const n=jn(),s=wl();return()=>{const r=t.default&&xi(t.default(),!0);if(!r||!r.length)return;const i=wi(r),o=J(e),{mode:l}=o;if(s.isLeaving)return Yn(i);const c=tr(i);if(!c)return Yn(i);let u=gs(c,o,s,n,y=>u=y);c.type!==ye&&Kt(c,u);const a=n.subTree,h=a&&tr(a);if(h&&h.type!==ye&&!ut(c,h)&&bi(n).type!==ye){const y=gs(h,o,s,n);if(Kt(h,y),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,y.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete y.afterLeave},Yn(i);l==="in-out"&&c.type!==ye&&(y.delayLeave=(v,A,S)=>{const B=Si(s,h);B[String(h.key)]=h,v[ze]=()=>{A(),v[ze]=void 0,delete u.delayedLeave},u.delayedLeave=S})}return i}}};function wi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const xl=Sl;function Si(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function gs(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:v,onAfterLeave:A,onLeaveCancelled:S,onBeforeAppear:B,onAppear:N,onAfterAppear:D,onAppearCancelled:p}=t,g=String(e.key),P=Si(n,e),V=(I,b)=>{I&&He(I,s,9,b)},U=(I,b)=>{const L=b[1];V(I,b),W(I)?I.every(x=>x.length<=1)&&L():I.length<=1&&L()},q={mode:o,persisted:l,beforeEnter(I){let b=c;if(!n.isMounted)if(i)b=B||c;else return;I[ze]&&I[ze](!0);const L=P[g];L&&ut(e,L)&&L.el[ze]&&L.el[ze](),V(b,[I])},enter(I){let b=u,L=a,x=h;if(!n.isMounted)if(i)b=N||u,L=D||a,x=p||h;else return;let k=!1;const se=I[on]=ae=>{k||(k=!0,ae?V(x,[I]):V(L,[I]),q.delayedLeave&&q.delayedLeave(),I[on]=void 0)};b?U(b,[I,se]):se()},leave(I,b){const L=String(e.key);if(I[on]&&I[on](!0),n.isUnmounting)return b();V(y,[I]);let x=!1;const k=I[ze]=se=>{x||(x=!0,b(),se?V(S,[I]):V(A,[I]),I[ze]=void 0,P[L]===e&&delete P[L])};P[L]=e,v?U(v,[I,k]):k()},clone(I){const b=gs(I,t,n,s,r);return r&&r(b),b}};return q}function Yn(e){if(Qt(e))return e=nt(e),e.children=null,e}function tr(e){if(!Qt(e))return vi(e.type)&&e.children?wi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&G(n.default))return n.default()}}function Kt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Kt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function xi(e,t=!1,n){let s=[],r=0;for(let i=0;i<e.length;i++){let o=e[i];const l=n==null?o.key:String(n)+String(o.key!=null?o.key:i);o.type===Se?(o.patchFlag&128&&r++,s=s.concat(xi(o.children,t,l))):(t||o.type!==ye)&&s.push(l!=null?nt(o,{key:l}):o)}if(r>1)for(let i=0;i<s.length;i++)s[i].patchFlag=-2;return s}/*! #__NO_SIDE_EFFECTS__ */function Ds(e,t){return G(e)?ce({name:e.name},t,{setup:e}):e}function js(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function xn(e,t,n,s,r=!1){if(W(e)){e.forEach((A,S)=>xn(A,t&&(W(t)?t[S]:t),n,s,r));return}if(pt(s)&&!r)return;const i=s.shapeFlag&4?Bs(s.component):s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,a=l.refs===te?l.refs={}:l.refs,h=l.setupState,y=J(h),v=h===te?()=>!1:A=>z(y,A);if(u!=null&&u!==c&&(re(u)?(a[u]=null,v(u)&&(h[u]=null)):ue(u)&&(u.value=null)),G(c))Jt(c,l,12,[o,a]);else{const A=re(c),S=ue(c);if(A||S){const B=()=>{if(e.f){const N=A?v(c)?h[c]:a[c]:c.value;r?W(N)&&As(N,i):W(N)?N.includes(i)||N.push(i):A?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else A?(a[c]=o,v(c)&&(h[c]=o)):S&&(c.value=o,e.k&&(a[e.k]=o))};o?(B.id=-1,Te(B,n)):B()}}}let nr=!1;const bt=()=>{nr||(console.error("Hydration completed but contains mismatches."),nr=!0)},El=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Cl=e=>e.namespaceURI.includes("MathML"),ln=e=>{if(e.nodeType===1){if(El(e))return"svg";if(Cl(e))return"mathml"}},St=e=>e.nodeType===8;function Tl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),wn(),g._vnode=p;return}h(g.firstChild,p,null,null,null),wn(),g._vnode=p},h=(p,g,P,V,U,q=!1)=>{q=q||!!g.dynamicChildren;const I=St(p)&&p.data==="[",b=()=>S(p,g,P,V,U,I),{type:L,ref:x,shapeFlag:k,patchFlag:se}=g;let ae=p.nodeType;g.el=p,se===-2&&(q=!1,g.dynamicChildren=null);let $=null;switch(L){case gt:ae!==3?g.children===""?(c(g.el=r(""),o(p),p),$=p):$=b():(p.data!==g.children&&(bt(),p.data=g.children),$=i(p));break;case ye:D(p)?($=i(p),N(g.el=p.content.firstChild,p,P)):ae!==8||I?$=b():$=i(p);break;case Vt:if(I&&(p=i(p),ae=p.nodeType),ae===1||ae===3){$=p;const Y=!g.children.length;for(let H=0;H<g.staticCount;H++)Y&&(g.children+=$.nodeType===1?$.outerHTML:$.data),H===g.staticCount-1&&(g.anchor=$),$=i($);return I?i($):$}else b();break;case Se:I?$=A(p,g,P,V,U,q):$=b();break;default:if(k&1)(ae!==1||g.type.toLowerCase()!==p.tagName.toLowerCase())&&!D(p)?$=b():$=y(p,g,P,V,U,q);else if(k&6){g.slotScopeIds=U;const Y=o(p);if(I?$=B(p):St(p)&&p.data==="teleport start"?$=B(p,p.data,"teleport end"):$=i(p),t(g,Y,null,P,V,ln(Y),q),pt(g)){let H;I?(H=oe(Se),H.anchor=$?$.previousSibling:Y.lastChild):H=p.nodeType===3?Qi(""):oe("div"),H.el=p,g.component.subTree=H}}else k&64?ae!==8?$=b():$=g.type.hydrate(p,g,P,V,U,q,e,v):k&128&&($=g.type.hydrate(p,g,P,V,ln(o(p)),U,q,e,h))}return x!=null&&xn(x,null,V,g),$},y=(p,g,P,V,U,q)=>{q=q||!!g.dynamicChildren;const{type:I,props:b,patchFlag:L,shapeFlag:x,dirs:k,transition:se}=g,ae=I==="input"||I==="option";if(ae||L!==-1){k&&Ve(g,null,P,"created");let $=!1;if(D(p)){$=Ui(null,se)&&P&&P.vnode.props&&P.vnode.props.appear;const H=p.content.firstChild;$&&se.beforeEnter(H),N(H,p,P),g.el=p=H}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let H=v(p.firstChild,g,p,P,V,U,q);for(;H;){cn(p,1)||bt();const de=H;H=H.nextSibling,l(de)}}else if(x&8){let H=g.children;H[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(H=H.slice(1)),p.textContent!==H&&(cn(p,0)||bt(),p.textContent=g.children)}if(b){if(ae||!q||L&48){const H=p.tagName.includes("-");for(const de in b)(ae&&(de.endsWith("value")||de==="indeterminate")||Xt(de)&&!Ct(de)||de[0]==="."||H)&&s(p,de,null,b[de],void 0,P)}else if(b.onClick)s(p,"onClick",null,b.onClick,void 0,P);else if(L&4&&ht(b.style))for(const H in b.style)b.style[H]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,P,g),k&&Ve(g,null,P,"beforeMount"),((Y=b&&b.onVnodeMounted)||k||$)&&Yi(()=>{Y&&Oe(Y,P,g),$&&se.enter(p),k&&Ve(g,null,P,"mounted")},V)}return p.nextSibling},v=(p,g,P,V,U,q,I)=>{I=I||!!g.dynamicChildren;const b=g.children,L=b.length;for(let x=0;x<L;x++){const k=I?b[x]:b[x]=Pe(b[x]),se=k.type===gt;p?(se&&!I&&x+1<L&&Pe(b[x+1]).type===gt&&(c(r(p.data.slice(k.children.length)),P,i(p)),p.data=k.children),p=h(p,k,V,U,q,I)):se&&!k.children?c(k.el=r(""),P):(cn(P,1)||bt(),n(null,k,P,null,V,U,ln(P),q))}return p},A=(p,g,P,V,U,q)=>{const{slotScopeIds:I}=g;I&&(U=U?U.concat(I):I);const b=o(p),L=v(i(p),g,b,P,V,U,q);return L&&St(L)&&L.data==="]"?i(g.anchor=L):(bt(),c(g.anchor=u("]"),b,L),L)},S=(p,g,P,V,U,q)=>{if(cn(p.parentElement,1)||bt(),g.el=null,q){const L=B(p);for(;;){const x=i(p);if(x&&x!==L)l(x);else break}}const I=i(p),b=o(p);return l(p),n(null,g,b,I,P,V,ln(b),U),I},B=(p,g="[",P="]")=>{let V=0;for(;p;)if(p=i(p),p&&St(p)&&(p.data===g&&V++,p.data===P)){if(V===0)return i(p);V--}return p},N=(p,g,P)=>{const V=g.parentNode;V&&V.replaceChild(p,g);let U=P;for(;U;)U.vnode.el===g&&(U.vnode.el=U.subTree.el=p),U=U.parent},D=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const sr="data-allow-mismatch",Al={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function cn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(sr);)e=e.parentElement;const n=e&&e.getAttribute(sr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Al[t])}}On().requestIdleCallback;On().cancelIdleCallback;function Rl(e,t){if(St(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(St(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function tf(e){G(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let u=null,a,h=0;const y=()=>(h++,u=null,v()),v=()=>{let A;return u||(A=u=t().catch(S=>{if(S=S instanceof Error?S:new Error(String(S)),c)return new Promise((B,N)=>{c(S,()=>B(y()),()=>N(S),h+1)});throw S}).then(S=>A!==u&&u?u:(S&&(S.__esModule||S[Symbol.toStringTag]==="Module")&&(S=S.default),a=S,S)))};return Ds({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(A,S,B){const N=i?()=>{const D=i(B,p=>Rl(A,p));D&&(S.bum||(S.bum=[])).push(D)}:B;a?N():v().then(()=>!S.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const A=fe;if(js(A),a)return()=>Xn(a,A);const S=p=>{u=null,zt(p,A,13,!s)};if(l&&A.suspense||Ot)return v().then(p=>()=>Xn(p,A)).catch(p=>(S(p),()=>s?oe(s,{error:p}):null));const B=le(!1),N=le(),D=le(!!r);return r&&setTimeout(()=>{D.value=!1},r),o!=null&&setTimeout(()=>{if(!B.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);S(p),N.value=p}},o),v().then(()=>{B.value=!0,A.parent&&Qt(A.parent.vnode)&&A.parent.update()}).catch(p=>{S(p),N.value=p}),()=>{if(B.value&&a)return Xn(a,A);if(N.value&&s)return oe(s,{error:N.value});if(n&&!D.value)return oe(n)}}})}function Xn(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=oe(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const Qt=e=>e.type.__isKeepAlive;function Ol(e,t){Ei(e,"a",t)}function Pl(e,t){Ei(e,"da",t)}function Ei(e,t,n=fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Fn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Qt(r.parent.vnode)&&Ml(s,t,n,r),r=r.parent}}function Ml(e,t,n,s){const r=Fn(t,e,s,!0);Hn(()=>{As(s[t],r)},n)}function Fn(e,t,n=fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=Zt(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Ge=e=>(t,n=fe)=>{(!Ot||e==="sp")&&Fn(e,(...s)=>t(...s),n)},Il=Ge("bm"),Mt=Ge("m"),Ll=Ge("bu"),Nl=Ge("u"),Ci=Ge("bum"),Hn=Ge("um"),Fl=Ge("sp"),Hl=Ge("rtg"),$l=Ge("rtc");function Dl(e,t=fe){Fn("ec",e,t)}const Ti="components";function nf(e,t){return Ri(Ti,e,!0,t)||e}const Ai=Symbol.for("v-ndc");function sf(e){return re(e)?Ri(Ti,e,!1)||e:e||Ai}function Ri(e,t,n=!0,s=!1){const r=ve||fe;if(r){const i=r.type;{const l=xc(i,!1);if(l&&(l===t||l===Ie(t)||l===Rn(Ie(t))))return i}const o=rr(r[e]||i[e],t)||rr(r.appContext[e],t);return!o&&s?i:o}}function rr(e,t){return e&&(e[t]||e[Ie(t)]||e[Rn(Ie(t))])}function rf(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Me(e),e=Mn(e)),r=new Array(e.length);for(let u=0,a=e.length;u<a;u++)r[u]=t(c?me(e[u]):e[u],u,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,i)}else if(ne(e))if(e[Symbol.iterator])r=Array.from(e,(l,c)=>t(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,u=l.length;c<u;c++){const a=l[c];r[c]=t(e[a],a,c,i)}}else r=[];return r}function of(e,t,n={},s,r){if(ve.ce||ve.parent&&pt(ve.parent)&&ve.parent.ce)return t!=="default"&&(n.name=t),bs(),ws(Se,null,[oe("slot",n,s&&s())],64);let i=e[t];i&&i._c&&(i._d=!1),bs();const o=i&&Oi(i(n)),l=n.key||o&&o.key,c=ws(Se,{key:(l&&!qe(l)?l:`_${t}`)+(!o&&s?"_fb":"")},o||(s?s():[]),o&&e._===1?64:-2);return!r&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),i&&i._c&&(i._d=!0),c}function Oi(e){return e.some(t=>Gt(t)?!(t.type===ye||t.type===Se&&!Oi(t.children)):!0)?e:null}function lf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:hn(s)]=e[s];return n}const ms=e=>e?Zi(e)?Bs(e):ms(e.parent):null,jt=ce(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=>ms(e.parent),$root:e=>ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Vs(e),$forceUpdate:e=>e.f||(e.f=()=>{$s(e.update)}),$nextTick:e=>e.n||(e.n=Nn.bind(e.proxy)),$watch:e=>oc.bind(e)}),Jn=(e,t)=>e!==te&&!e.__isScriptSetup&&z(e,t),jl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Jn(s,t))return o[t]=1,s[t];if(r!==te&&z(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&z(u,t))return o[t]=3,i[t];if(n!==te&&z(n,t))return o[t]=4,n[t];ys&&(o[t]=0)}}const a=jt[t];let h,y;if(a)return t==="$attrs"&&ge(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Jn(r,t)?(r[t]=n,!0):s!==te&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&z(e,o)||Jn(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(jt,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function cf(){return Vl().slots}function Vl(){const e=jn();return e.setupContext||(e.setupContext=to(e))}function ir(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ys=!0;function Ul(e){const t=Vs(e),n=e.proxy,s=e.ctx;ys=!1,t.beforeCreate&&or(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:a,beforeMount:h,mounted:y,beforeUpdate:v,updated:A,activated:S,deactivated:B,beforeDestroy:N,beforeUnmount:D,destroyed:p,unmounted:g,render:P,renderTracked:V,renderTriggered:U,errorCaptured:q,serverPrefetch:I,expose:b,inheritAttrs:L,components:x,directives:k,filters:se}=t;if(u&&kl(u,s,null),o)for(const Y in o){const H=o[Y];G(H)&&(s[Y]=H.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=In(Y))}if(ys=!0,i)for(const Y in i){const H=i[Y],de=G(H)?H.bind(n,n):G(H.get)?H.get.bind(n,n):Ue,en=!G(H)&&G(H.set)?H.set.bind(n):Ue,ot=ie({get:de,set:en});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:$e=>ot.value=$e})}if(l)for(const Y in l)Pi(l[Y],s,n,Y);if(c){const Y=G(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(H=>{Yl(H,Y[H])})}a&&or(a,e,"c");function $(Y,H){W(H)?H.forEach(de=>Y(de.bind(n))):H&&Y(H.bind(n))}if($(Il,h),$(Mt,y),$(Ll,v),$(Nl,A),$(Ol,S),$(Pl,B),$(Dl,q),$($l,V),$(Hl,U),$(Ci,D),$(Hn,g),$(Fl,I),W(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(H=>{Object.defineProperty(Y,H,{get:()=>n[H],set:de=>n[H]=de})})}else e.exposed||(e.exposed={});P&&e.render===Ue&&(e.render=P),L!=null&&(e.inheritAttrs=L),x&&(e.components=x),k&&(e.directives=k),I&&js(e)}function kl(e,t,n=Ue){W(e)&&(e=vs(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Rt(r.from||s,r.default,!0):i=Rt(r.from||s):i=Rt(r),ue(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function or(e,t,n){He(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Pi(e,t,n,s){let r=s.includes(".")?Ki(n,s):()=>n[s];if(re(e)){const i=t[e];G(i)&&Fe(r,i)}else if(G(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>Pi(i,t,n,s));else{const i=G(e.handler)?e.handler.bind(n):t[e.handler];G(i)&&Fe(r,i,e)}}function Vs(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>En(c,u,o,!0)),En(c,t,o)),ne(t)&&i.set(t,c),c}function En(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&En(e,i,n,!0),r&&r.forEach(o=>En(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Bl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Bl={data:lr,props:cr,emits:cr,methods:Ht,computed:Ht,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:Ht,directives:Ht,watch:Kl,provide:lr,inject:Wl};function lr(e,t){return t?e?function(){return ce(G(e)?e.call(this,this):e,G(t)?t.call(this,this):t)}:t:e}function Wl(e,t){return Ht(vs(e),vs(t))}function vs(e){if(W(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function _e(e,t){return e?[...new Set([].concat(e,t))]:t}function Ht(e,t){return e?ce(Object.create(null),e,t):t}function cr(e,t){return e?W(e)&&W(t)?[...new Set([...e,...t])]:ce(Object.create(null),ir(e),ir(t??{})):t}function Kl(e,t){if(!e)return t;if(!t)return e;const n=ce(Object.create(null),e);for(const s in t)n[s]=_e(e[s],t[s]);return n}function Mi(){return{app:null,config:{isNativeTag:So,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ql=0;function Gl(e,t){return function(s,r=null){G(s)||(s=ce({},s)),r!=null&&!ne(r)&&(r=null);const i=Mi(),o=new WeakSet,l=[];let c=!1;const u=i.app={_uid:ql++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:Cc,get config(){return i.config},set config(a){},use(a,...h){return o.has(a)||(a&&G(a.install)?(o.add(a),a.install(u,...h)):G(a)&&(o.add(a),a(u,...h))),u},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),u},component(a,h){return h?(i.components[a]=h,u):i.components[a]},directive(a,h){return h?(i.directives[a]=h,u):i.directives[a]},mount(a,h,y){if(!c){const v=u._ceVNode||oe(s,r);return v.appContext=i,y===!0?y="svg":y===!1&&(y=void 0),h&&t?t(v,a):e(v,a,y),c=!0,u._container=a,a.__vue_app__=u,Bs(v.component)}},onUnmount(a){l.push(a)},unmount(){c&&(He(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(a,h){return i.provides[a]=h,u},runWithContext(a){const h=At;At=u;try{return a()}finally{At=h}}};return u}}let At=null;function Yl(e,t){if(fe){let n=fe.provides;const s=fe.parent&&fe.parent.provides;s===n&&(n=fe.provides=Object.create(s)),n[e]=t}}function Rt(e,t,n=!1){const s=fe||ve;if(s||At){const r=At?At._context.provides:s?s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&G(t)?t.call(s&&s.proxy):t}}const Ii={},Li=()=>Object.create(Ii),Ni=e=>Object.getPrototypeOf(e)===Ii;function Xl(e,t,n,s=!1){const r={},i=Li();e.propsDefaults=Object.create(null),Fi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:sl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Jl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h<a.length;h++){let y=a[h];if(Dn(e.emitsOptions,y))continue;const v=t[y];if(c)if(z(i,y))v!==i[y]&&(i[y]=v,u=!0);else{const A=Ie(y);r[A]=_s(c,l,A,v,e,!1)}else v!==i[y]&&(i[y]=v,u=!0)}}}else{Fi(e,t,r,i)&&(u=!0);let a;for(const h in l)(!t||!z(t,h)&&((a=st(h))===h||!z(t,a)))&&(c?n&&(n[h]!==void 0||n[a]!==void 0)&&(r[h]=_s(c,l,h,void 0,e,!0)):delete r[h]);if(i!==l)for(const h in i)(!t||!z(t,h))&&(delete i[h],u=!0)}u&&We(e.attrs,"set","")}function Fi(e,t,n,s){const[r,i]=e.propsOptions;let o=!1,l;if(t)for(let c in t){if(Ct(c))continue;const u=t[c];let a;r&&z(r,a=Ie(c))?!i||!i.includes(a)?n[a]=u:(l||(l={}))[a]=u:Dn(e.emitsOptions,c)||(!(c in s)||u!==s[c])&&(s[c]=u,o=!0)}if(i){const c=J(n),u=l||te;for(let a=0;a<i.length;a++){const h=i[a];n[h]=_s(r,c,h,u[h],e,!z(u,h))}}return o}function _s(e,t,n,s,r,i){const o=e[n];if(o!=null){const l=z(o,"default");if(l&&s===void 0){const c=o.default;if(o.type!==Function&&!o.skipFactory&&G(c)){const{propsDefaults:u}=r;if(n in u)s=u[n];else{const a=Zt(r);s=u[n]=c.call(null,t),a()}}else s=c;r.ce&&r.ce._setProp(n,s)}o[0]&&(i&&!l?s=!1:o[1]&&(s===""||s===st(n))&&(s=!0))}return s}const zl=new WeakMap;function Hi(e,t,n=!1){const s=n?zl:t.propsCache,r=s.get(e);if(r)return r;const i=e.props,o={},l=[];let c=!1;if(!G(e)){const a=h=>{c=!0;const[y,v]=Hi(h,t,!0);ce(o,y),v&&l.push(...v)};!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)&&s.set(e,xt),xt;if(W(i))for(let a=0;a<i.length;a++){const h=Ie(i[a]);ar(h)&&(o[h]=te)}else if(i)for(const a in i){const h=Ie(a);if(ar(h)){const y=i[a],v=o[h]=W(y)||G(y)?{type:y}:ce({},y),A=v.type;let S=!1,B=!0;if(W(A))for(let N=0;N<A.length;++N){const D=A[N],p=G(D)&&D.name;if(p==="Boolean"){S=!0;break}else p==="String"&&(B=!1)}else S=G(A)&&A.name==="Boolean";v[0]=S,v[1]=B,(S||z(v,"default"))&&l.push(h)}}const u=[o,l];return ne(e)&&s.set(e,u),u}function ar(e){return e[0]!=="$"&&!Ct(e)}const $i=e=>e[0]==="_"||e==="$stable",Us=e=>W(e)?e.map(Pe):[Pe(e)],Ql=(e,t,n)=>{if(t._n)return t;const s=_l((...r)=>Us(t(...r)),n);return s._c=!1,s},Di=(e,t,n)=>{const s=e._ctx;for(const r in e){if($i(r))continue;const i=e[r];if(G(i))t[r]=Ql(r,i,s);else if(i!=null){const o=Us(i);t[r]=()=>o}}},ji=(e,t)=>{const n=Us(t);e.slots.default=()=>n},Vi=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Zl=(e,t,n)=>{const s=e.slots=Li();if(e.vnode.shapeFlag&32){const r=t._;r?(Vi(s,t,n),n&&Kr(s,"_",r,!0)):Di(t,s)}else t&&ji(e,t)},ec=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Vi(r,t,n):(i=!t.$stable,Di(t,r)),o=t}else t&&(ji(e,t),o={default:1});if(i)for(const l in r)!$i(l)&&o[l]==null&&delete r[l]},Te=Yi;function tc(e){return nc(e,Tl)}function nc(e,t){const n=On();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:a,parentNode:h,nextSibling:y,setScopeId:v=Ue,insertStaticContent:A}=e,S=(f,d,m,E=null,_=null,w=null,O=void 0,R=null,T=!!d.dynamicChildren)=>{if(f===d)return;f&&!ut(f,d)&&(E=tn(f),$e(f,_,w,!0),f=null),d.patchFlag===-2&&(T=!1,d.dynamicChildren=null);const{type:C,ref:j,shapeFlag:M}=d;switch(C){case gt:B(f,d,m,E);break;case ye:N(f,d,m,E);break;case Vt:f==null&&D(d,m,E,O);break;case Se:x(f,d,m,E,_,w,O,R,T);break;default:M&1?P(f,d,m,E,_,w,O,R,T):M&6?k(f,d,m,E,_,w,O,R,T):(M&64||M&128)&&C.process(f,d,m,E,_,w,O,R,T,vt)}j!=null&&_&&xn(j,f&&f.ref,w,d||f,!d)},B=(f,d,m,E)=>{if(f==null)s(d.el=l(d.children),m,E);else{const _=d.el=f.el;d.children!==f.children&&u(_,d.children)}},N=(f,d,m,E)=>{f==null?s(d.el=c(d.children||""),m,E):d.el=f.el},D=(f,d,m,E)=>{[f.el,f.anchor]=A(f.children,d,m,E,f.el,f.anchor)},p=({el:f,anchor:d},m,E)=>{let _;for(;f&&f!==d;)_=y(f),s(f,m,E),f=_;s(d,m,E)},g=({el:f,anchor:d})=>{let m;for(;f&&f!==d;)m=y(f),r(f),f=m;r(d)},P=(f,d,m,E,_,w,O,R,T)=>{d.type==="svg"?O="svg":d.type==="math"&&(O="mathml"),f==null?V(d,m,E,_,w,O,R,T):I(f,d,_,w,O,R,T)},V=(f,d,m,E,_,w,O,R)=>{let T,C;const{props:j,shapeFlag:M,transition:F,dirs:K}=f;if(T=f.el=o(f.type,w,j&&j.is,j),M&8?a(T,f.children):M&16&&q(f.children,T,null,E,_,zn(f,w),O,R),K&&Ve(f,null,E,"created"),U(T,f,f.scopeId,O,E),j){for(const Z in j)Z!=="value"&&!Ct(Z)&&i(T,Z,null,j[Z],w,E);"value"in j&&i(T,"value",null,j.value,w),(C=j.onVnodeBeforeMount)&&Oe(C,E,f)}K&&Ve(f,null,E,"beforeMount");const X=Ui(_,F);X&&F.beforeEnter(T),s(T,d,m),((C=j&&j.onVnodeMounted)||X||K)&&Te(()=>{C&&Oe(C,E,f),X&&F.enter(T),K&&Ve(f,null,E,"mounted")},_)},U=(f,d,m,E,_)=>{if(m&&v(f,m),E)for(let w=0;w<E.length;w++)v(f,E[w]);if(_){let w=_.subTree;if(d===w||Gi(w.type)&&(w.ssContent===d||w.ssFallback===d)){const O=_.vnode;U(f,O,O.scopeId,O.slotScopeIds,_.parent)}}},q=(f,d,m,E,_,w,O,R,T=0)=>{for(let C=T;C<f.length;C++){const j=f[C]=R?Qe(f[C]):Pe(f[C]);S(null,j,d,m,E,_,w,O,R)}},I=(f,d,m,E,_,w,O)=>{const R=d.el=f.el;let{patchFlag:T,dynamicChildren:C,dirs:j}=d;T|=f.patchFlag&16;const M=f.props||te,F=d.props||te;let K;if(m&<(m,!1),(K=F.onVnodeBeforeUpdate)&&Oe(K,m,d,f),j&&Ve(d,f,m,"beforeUpdate"),m&<(m,!0),(M.innerHTML&&F.innerHTML==null||M.textContent&&F.textContent==null)&&a(R,""),C?b(f.dynamicChildren,C,R,m,E,zn(d,_),w):O||H(f,d,R,null,m,E,zn(d,_),w,!1),T>0){if(T&16)L(R,M,F,m,_);else if(T&2&&M.class!==F.class&&i(R,"class",null,F.class,_),T&4&&i(R,"style",M.style,F.style,_),T&8){const X=d.dynamicProps;for(let Z=0;Z<X.length;Z++){const Q=X[Z],xe=M[Q],he=F[Q];(he!==xe||Q==="value")&&i(R,Q,xe,he,_,m)}}T&1&&f.children!==d.children&&a(R,d.children)}else!O&&C==null&&L(R,M,F,m,_);((K=F.onVnodeUpdated)||j)&&Te(()=>{K&&Oe(K,m,d,f),j&&Ve(d,f,m,"updated")},E)},b=(f,d,m,E,_,w,O)=>{for(let R=0;R<d.length;R++){const T=f[R],C=d[R],j=T.el&&(T.type===Se||!ut(T,C)||T.shapeFlag&70)?h(T.el):m;S(T,C,j,null,E,_,w,O,!0)}},L=(f,d,m,E,_)=>{if(d!==m){if(d!==te)for(const w in d)!Ct(w)&&!(w in m)&&i(f,w,d[w],null,_,E);for(const w in m){if(Ct(w))continue;const O=m[w],R=d[w];O!==R&&w!=="value"&&i(f,w,R,O,_,E)}"value"in m&&i(f,"value",d.value,m.value,_)}},x=(f,d,m,E,_,w,O,R,T)=>{const C=d.el=f?f.el:l(""),j=d.anchor=f?f.anchor:l("");let{patchFlag:M,dynamicChildren:F,slotScopeIds:K}=d;K&&(R=R?R.concat(K):K),f==null?(s(C,m,E),s(j,m,E),q(d.children||[],m,j,_,w,O,R,T)):M>0&&M&64&&F&&f.dynamicChildren?(b(f.dynamicChildren,F,m,_,w,O,R),(d.key!=null||_&&d===_.subTree)&&ki(f,d,!0)):H(f,d,m,j,_,w,O,R,T)},k=(f,d,m,E,_,w,O,R,T)=>{d.slotScopeIds=R,f==null?d.shapeFlag&512?_.ctx.activate(d,m,E,O,T):se(d,m,E,_,w,O,T):ae(f,d,T)},se=(f,d,m,E,_,w,O)=>{const R=f.component=_c(f,E,_);if(Qt(f)&&(R.ctx.renderer=vt),bc(R,!1,O),R.asyncDep){if(_&&_.registerDep(R,$,O),!f.el){const T=R.subTree=oe(ye);N(null,T,d,m)}}else $(R,f,d,m,_,w,O)},ae=(f,d,m)=>{const E=d.component=f.component;if(uc(f,d,m))if(E.asyncDep&&!E.asyncResolved){Y(E,d,m);return}else E.next=d,E.update();else d.el=f.el,E.vnode=d},$=(f,d,m,E,_,w,O)=>{const R=()=>{if(f.isMounted){let{next:M,bu:F,u:K,parent:X,vnode:Z}=f;{const Ee=Bi(f);if(Ee){M&&(M.el=Z.el,Y(f,M,O)),Ee.asyncDep.then(()=>{f.isUnmounted||R()});return}}let Q=M,xe;lt(f,!1),M?(M.el=Z.el,Y(f,M,O)):M=Z,F&&Bn(F),(xe=M.props&&M.props.onVnodeBeforeUpdate)&&Oe(xe,X,M,Z),lt(f,!0);const he=Qn(f),Le=f.subTree;f.subTree=he,S(Le,he,h(Le.el),tn(Le),f,_,w),M.el=he.el,Q===null&&dc(f,he.el),K&&Te(K,_),(xe=M.props&&M.props.onVnodeUpdated)&&Te(()=>Oe(xe,X,M,Z),_)}else{let M;const{el:F,props:K}=d,{bm:X,m:Z,parent:Q,root:xe,type:he}=f,Le=pt(d);if(lt(f,!1),X&&Bn(X),!Le&&(M=K&&K.onVnodeBeforeMount)&&Oe(M,Q,d),lt(f,!0),F&&kn){const Ee=()=>{f.subTree=Qn(f),kn(F,f.subTree,f,_,null)};Le&&he.__asyncHydrate?he.__asyncHydrate(F,f,Ee):Ee()}else{xe.ce&&xe.ce._injectChildStyle(he);const Ee=f.subTree=Qn(f);S(null,Ee,m,E,f,_,w),d.el=Ee.el}if(Z&&Te(Z,_),!Le&&(M=K&&K.onVnodeMounted)){const Ee=d;Te(()=>Oe(M,Q,Ee),_)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&f.a&&Te(f.a,_),f.isMounted=!0,d=m=E=null}};f.scope.on();const T=f.effect=new Jr(R);f.scope.off();const C=f.update=T.run.bind(T),j=f.job=T.runIfDirty.bind(T);j.i=f,j.id=f.uid,T.scheduler=()=>$s(j),lt(f,!0),C()},Y=(f,d,m)=>{d.component=f;const E=f.vnode.props;f.vnode=d,f.next=null,Jl(f,d.props,E,m),ec(f,d.children,m),rt(),er(f),it()},H=(f,d,m,E,_,w,O,R,T=!1)=>{const C=f&&f.children,j=f?f.shapeFlag:0,M=d.children,{patchFlag:F,shapeFlag:K}=d;if(F>0){if(F&128){en(C,M,m,E,_,w,O,R,T);return}else if(F&256){de(C,M,m,E,_,w,O,R,T);return}}K&8?(j&16&&It(C,_,w),M!==C&&a(m,M)):j&16?K&16?en(C,M,m,E,_,w,O,R,T):It(C,_,w,!0):(j&8&&a(m,""),K&16&&q(M,m,E,_,w,O,R,T))},de=(f,d,m,E,_,w,O,R,T)=>{f=f||xt,d=d||xt;const C=f.length,j=d.length,M=Math.min(C,j);let F;for(F=0;F<M;F++){const K=d[F]=T?Qe(d[F]):Pe(d[F]);S(f[F],K,m,null,_,w,O,R,T)}C>j?It(f,_,w,!0,!1,M):q(d,m,E,_,w,O,R,T,M)},en=(f,d,m,E,_,w,O,R,T)=>{let C=0;const j=d.length;let M=f.length-1,F=j-1;for(;C<=M&&C<=F;){const K=f[C],X=d[C]=T?Qe(d[C]):Pe(d[C]);if(ut(K,X))S(K,X,m,null,_,w,O,R,T);else break;C++}for(;C<=M&&C<=F;){const K=f[M],X=d[F]=T?Qe(d[F]):Pe(d[F]);if(ut(K,X))S(K,X,m,null,_,w,O,R,T);else break;M--,F--}if(C>M){if(C<=F){const K=F+1,X=K<j?d[K].el:E;for(;C<=F;)S(null,d[C]=T?Qe(d[C]):Pe(d[C]),m,X,_,w,O,R,T),C++}}else if(C>F)for(;C<=M;)$e(f[C],_,w,!0),C++;else{const K=C,X=C,Z=new Map;for(C=X;C<=F;C++){const Ce=d[C]=T?Qe(d[C]):Pe(d[C]);Ce.key!=null&&Z.set(Ce.key,C)}let Q,xe=0;const he=F-X+1;let Le=!1,Ee=0;const Lt=new Array(he);for(C=0;C<he;C++)Lt[C]=0;for(C=K;C<=M;C++){const Ce=f[C];if(xe>=he){$e(Ce,_,w,!0);continue}let De;if(Ce.key!=null)De=Z.get(Ce.key);else for(Q=X;Q<=F;Q++)if(Lt[Q-X]===0&&ut(Ce,d[Q])){De=Q;break}De===void 0?$e(Ce,_,w,!0):(Lt[De-X]=C+1,De>=Ee?Ee=De:Le=!0,S(Ce,d[De],m,null,_,w,O,R,T),xe++)}const Xs=Le?sc(Lt):xt;for(Q=Xs.length-1,C=he-1;C>=0;C--){const Ce=X+C,De=d[Ce],Js=Ce+1<j?d[Ce+1].el:E;Lt[C]===0?S(null,De,m,Js,_,w,O,R,T):Le&&(Q<0||C!==Xs[Q]?ot(De,m,Js,2):Q--)}}},ot=(f,d,m,E,_=null)=>{const{el:w,type:O,transition:R,children:T,shapeFlag:C}=f;if(C&6){ot(f.component.subTree,d,m,E);return}if(C&128){f.suspense.move(d,m,E);return}if(C&64){O.move(f,d,m,vt);return}if(O===Se){s(w,d,m);for(let M=0;M<T.length;M++)ot(T[M],d,m,E);s(f.anchor,d,m);return}if(O===Vt){p(f,d,m);return}if(E!==2&&C&1&&R)if(E===0)R.beforeEnter(w),s(w,d,m),Te(()=>R.enter(w),_);else{const{leave:M,delayLeave:F,afterLeave:K}=R,X=()=>s(w,d,m),Z=()=>{M(w,()=>{X(),K&&K()})};F?F(w,X,Z):Z()}else s(w,d,m)},$e=(f,d,m,E=!1,_=!1)=>{const{type:w,props:O,ref:R,children:T,dynamicChildren:C,shapeFlag:j,patchFlag:M,dirs:F,cacheIndex:K}=f;if(M===-2&&(_=!1),R!=null&&xn(R,null,m,f,!0),K!=null&&(d.renderCache[K]=void 0),j&256){d.ctx.deactivate(f);return}const X=j&1&&F,Z=!pt(f);let Q;if(Z&&(Q=O&&O.onVnodeBeforeUnmount)&&Oe(Q,d,f),j&6)wo(f.component,m,E);else{if(j&128){f.suspense.unmount(m,E);return}X&&Ve(f,null,d,"beforeUnmount"),j&64?f.type.remove(f,d,m,vt,E):C&&!C.hasOnce&&(w!==Se||M>0&&M&64)?It(C,d,m,!1,!0):(w===Se&&M&384||!_&&j&16)&&It(T,d,m),E&&Gs(f)}(Z&&(Q=O&&O.onVnodeUnmounted)||X)&&Te(()=>{Q&&Oe(Q,d,f),X&&Ve(f,null,d,"unmounted")},m)},Gs=f=>{const{type:d,el:m,anchor:E,transition:_}=f;if(d===Se){bo(m,E);return}if(d===Vt){g(f);return}const w=()=>{r(m),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(f.shapeFlag&1&&_&&!_.persisted){const{leave:O,delayLeave:R}=_,T=()=>O(m,w);R?R(f.el,w,T):T()}else w()},bo=(f,d)=>{let m;for(;f!==d;)m=y(f),r(f),f=m;r(d)},wo=(f,d,m)=>{const{bum:E,scope:_,job:w,subTree:O,um:R,m:T,a:C}=f;fr(T),fr(C),E&&Bn(E),_.stop(),w&&(w.flags|=8,$e(O,f,d,m)),R&&Te(R,d),Te(()=>{f.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(f,d,m,E=!1,_=!1,w=0)=>{for(let O=w;O<f.length;O++)$e(f[O],d,m,E,_)},tn=f=>{if(f.shapeFlag&6)return tn(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const d=y(f.anchor||f.el),m=d&&d[bl];return m?y(m):d};let Vn=!1;const Ys=(f,d,m)=>{f==null?d._vnode&&$e(d._vnode,null,null,!0):S(d._vnode||null,f,d,null,null,null,m),d._vnode=f,Vn||(Vn=!0,er(),wn(),Vn=!1)},vt={p:S,um:$e,m:ot,r:Gs,mt:se,mc:q,pc:H,pbc:b,n:tn,o:e};let Un,kn;return t&&([Un,kn]=t(vt)),{render:Ys,hydrate:Un,createApp:Gl(Ys,Un)}}function zn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ui(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ki(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i<s.length;i++){const o=s[i];let l=r[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[i]=Qe(r[i]),l.el=o.el),!n&&l.patchFlag!==-2&&ki(o,l)),l.type===gt&&(l.el=o.el)}}function sc(e){const t=e.slice(),n=[0];let s,r,i,o,l;const c=e.length;for(s=0;s<c;s++){const u=e[s];if(u!==0){if(r=n[n.length-1],e[r]<u){t[s]=r,n.push(s);continue}for(i=0,o=n.length-1;i<o;)l=i+o>>1,e[n[l]]<u?i=l+1:o=l;u<e[n[i]]&&(i>0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Bi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bi(t)}function fr(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const rc=Symbol.for("v-scx"),ic=()=>Rt(rc);function Wi(e,t){return $n(e,null,t)}function af(e,t){return $n(e,null,{flush:"post"})}function Fe(e,t,n){return $n(e,t,n)}function $n(e,t,n=te){const{immediate:s,deep:r,flush:i,once:o}=n,l=ce({},n),c=t&&s||!t&&i!=="post";let u;if(Ot){if(i==="sync"){const v=ic();u=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=Ue,v.resume=Ue,v.pause=Ue,v}}const a=fe;l.call=(v,A,S)=>He(v,a,A,S);let h=!1;i==="post"?l.scheduler=v=>{Te(v,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(v,A)=>{A?v():$s(v)}),l.augmentJob=v=>{t&&(v.flags|=4),h&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const y=gl(e,t,l);return Ot&&(u?u.push(y):c&&y()),y}function oc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?Ki(s,e):()=>s[e]:e.bind(s,s);let i;G(t)?i=t:(i=t.handler,n=t);const o=Zt(this),l=$n(r,i.bind(s),n);return o(),l}function Ki(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}const lc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ie(t)}Modifiers`]||e[`${st(t)}Modifiers`];function cc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||te;let r=n;const i=t.startsWith("update:"),o=i&&lc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(Ao)));let l,c=s[l=hn(t)]||s[l=hn(Ie(t))];!c&&i&&(c=s[l=hn(st(t))]),c&&He(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(u,e,6,r)}}function qi(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!G(e)){const c=u=>{const a=qi(u,t,!0);a&&(l=!0,ce(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)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):ce(o,i),ne(e)&&s.set(e,o),o)}function Dn(e,t){return!e||!Xt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function Qn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:a,props:h,data:y,setupState:v,ctx:A,inheritAttrs:S}=e,B=Sn(e);let N,D;try{if(n.shapeFlag&4){const g=r||s,P=g;N=Pe(u.call(P,g,a,h,v,y,A)),D=l}else{const g=t;N=Pe(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),D=t.props?l:ac(l)}}catch(g){Ut.length=0,zt(g,e,1),N=oe(ye)}let p=N;if(D&&S!==!1){const g=Object.keys(D),{shapeFlag:P}=p;g.length&&P&7&&(i&&g.some(Ts)&&(D=fc(D,i)),p=nt(p,D,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Kt(p,n.transition),N=p,Sn(B),N}const ac=e=>{let t;for(const n in e)(n==="class"||n==="style"||Xt(n))&&((t||(t={}))[n]=e[n]);return t},fc=(e,t)=>{const n={};for(const s in e)(!Ts(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function uc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ur(s,o,u):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;h<a.length;h++){const y=a[h];if(o[y]!==s[y]&&!Dn(u,y))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:s===o?!1:s?o?ur(s,o,u):!0:!!o;return!1}function ur(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const i=s[r];if(t[i]!==e[i]&&!Dn(n,i))return!0}return!1}function dc({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const Gi=e=>e.__isSuspense;function Yi(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):vl(e)}const Se=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Vt=Symbol.for("v-stc"),Ut=[];let Ae=null;function bs(e=!1){Ut.push(Ae=e?null:[])}function hc(){Ut.pop(),Ae=Ut[Ut.length-1]||null}let qt=1;function dr(e){qt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function Xi(e){return e.dynamicChildren=qt>0?Ae||xt:null,hc(),qt>0&&Ae&&Ae.push(e),e}function ff(e,t,n,s,r,i){return Xi(zi(e,t,n,s,r,i,!0))}function ws(e,t,n,s,r){return Xi(oe(e,t,n,s,r,!0))}function Gt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const Ji=({key:e})=>e??null,gn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ue(e)||G(e)?{i:ve,r:e,k:t,f:!!n}:e:null);function zi(e,t=null,n=null,s=0,r=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ji(t),ref:t&&gn(t),scopeId:yi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ve};return l?(ks(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),qt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const oe=pc;function pc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Ai)&&(e=ye),Gt(e)){const l=nt(e,t,!0);return n&&ks(l,n),qt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Ec(e)&&(e=e.__vccOpts),t){t=gc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Ps(l)),ne(c)&&(Hs(c)&&!W(c)&&(c=ce({},c)),t.style=Os(c))}const o=re(e)?1:Gi(e)?128:vi(e)?64:ne(e)?4:G(e)?2:0;return zi(e,t,n,s,r,o,i,!0)}function gc(e){return e?Hs(e)||Ni(e)?ce({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?mc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Ji(u),ref:t&&t.ref?n&&i?W(i)?i.concat(gn(t)):[i,gn(t)]:gn(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&&s&&Kt(a,c.clone(a)),a}function Qi(e=" ",t=0){return oe(gt,null,e,t)}function uf(e,t){const n=oe(Vt,null,e);return n.staticCount=t,n}function df(e="",t=!1){return t?(bs(),ws(ye,null,e)):oe(ye,null,e)}function Pe(e){return e==null||typeof e=="boolean"?oe(ye):W(e)?oe(Se,null,e.slice()):Gt(e)?Qe(e):oe(gt,null,String(e))}function Qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function ks(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ks(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ni(t)?t._ctx=ve:r===3&&ve&&(ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else G(t)?(t={default:t,_ctx:ve},n=32):(t=String(t),s&64?(n=16,t=[Qi(t)]):n=8);e.children=t,e.shapeFlag|=n}function mc(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=Ps([t.class,s.class]));else if(r==="style")t.style=Os([t.style,s.style]);else if(Xt(r)){const i=t[r],o=s[r];o&&i!==o&&!(W(i)&&i.includes(o))&&(t[r]=i?[].concat(i,o):o)}else r!==""&&(t[r]=s[r])}return t}function Oe(e,t,n,s=null){He(e,t,7,[n,s])}const yc=Mi();let vc=0;function _c(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||yc,i={uid:vc++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Ho(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Hi(s,r),emitsOptions:qi(s,r),emit:null,emitted:null,propsDefaults:te,inheritAttrs:s.inheritAttrs,ctx:te,data:te,props:te,attrs:te,slots:te,refs:te,setupState:te,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=cc.bind(null,i),e.ce&&e.ce(i),i}let fe=null;const jn=()=>fe||ve;let Cn,Ss;{const e=On(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Cn=t("__VUE_INSTANCE_SETTERS__",n=>fe=n),Ss=t("__VUE_SSR_SETTERS__",n=>Ot=n)}const Zt=e=>{const t=fe;return Cn(e),e.scope.on(),()=>{e.scope.off(),Cn(t)}},hr=()=>{fe&&fe.scope.off(),Cn(null)};function Zi(e){return e.vnode.shapeFlag&4}let Ot=!1;function bc(e,t=!1,n=!1){t&&Ss(t);const{props:s,children:r}=e.vnode,i=Zi(e);Xl(e,s,i,t),Zl(e,r,n);const o=i?wc(e,t):void 0;return t&&Ss(!1),o}function wc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,jl);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?to(e):null,i=Zt(e),o=Jt(s,e,0,[e.props,r]),l=kr(o);if(it(),i(),(l||e.sp)&&!pt(e)&&js(e),l){if(o.then(hr,hr),t)return o.then(c=>{pr(e,c,t)}).catch(c=>{zt(c,e,0)});e.asyncDep=o}else pr(e,o,t)}else eo(e,t)}function pr(e,t,n){G(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=hi(t)),eo(e,n)}let gr;function eo(e,t,n){const s=e.type;if(!e.render){if(!t&&gr&&!s.render){const r=s.template||Vs(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=ce(ce({isCustomElement:i,delimiters:l},o),c);s.render=gr(r,u)}}e.render=s.render||Ue}{const r=Zt(e);rt();try{Ul(e)}finally{it(),r()}}}const Sc={get(e,t){return ge(e,"get",""),e[t]}};function to(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Sc),slots:e.slots,emit:e.emit,expose:t}}function Bs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(hi(pn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in jt)return jt[n](e)},has(t,n){return n in t||n in jt}})):e.proxy}function xc(e,t=!0){return G(e)?e.displayName||e.name:e.name||t&&e.__name}function Ec(e){return G(e)&&"__vccOpts"in e}const ie=(e,t)=>hl(e,t,Ot);function xs(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?Gt(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Gt(n)&&(n=[n]),oe(e,t,n))}const Cc="3.5.12";/** +* @vue/runtime-dom v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Es;const mr=typeof window<"u"&&window.trustedTypes;if(mr)try{Es=mr.createPolicy("vue",{createHTML:e=>e})}catch{}const no=Es?e=>Es.createHTML(e):e=>e,Tc="http://www.w3.org/2000/svg",Ac="http://www.w3.org/1998/Math/MathML",Be=typeof document<"u"?document:null,yr=Be&&Be.createElement("template"),Rc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Be.createElementNS(Tc,e):t==="mathml"?Be.createElementNS(Ac,e):n?Be.createElement(e,{is:n}):Be.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Be.createTextNode(e),createComment:e=>Be.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Be.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{yr.innerHTML=no(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=yr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ye="transition",Ft="animation",Yt=Symbol("_vtc"),so={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},Oc=ce({},_i,so),Pc=e=>(e.displayName="Transition",e.props=Oc,e),hf=Pc((e,{slots:t})=>xs(xl,Mc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},vr=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Mc(e){const t={};for(const x in e)x in so||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,A=Ic(r),S=A&&A[0],B=A&&A[1],{onBeforeEnter:N,onEnter:D,onEnterCancelled:p,onLeave:g,onLeaveCancelled:P,onBeforeAppear:V=N,onAppear:U=D,onAppearCancelled:q=p}=t,I=(x,k,se)=>{at(x,k?a:l),at(x,k?u:o),se&&se()},b=(x,k)=>{x._isLeaving=!1,at(x,h),at(x,v),at(x,y),k&&k()},L=x=>(k,se)=>{const ae=x?U:D,$=()=>I(k,x,se);ct(ae,[k,$]),_r(()=>{at(k,x?c:i),Xe(k,x?a:l),vr(ae)||br(k,s,S,$)})};return ce(t,{onBeforeEnter(x){ct(N,[x]),Xe(x,i),Xe(x,o)},onBeforeAppear(x){ct(V,[x]),Xe(x,c),Xe(x,u)},onEnter:L(!1),onAppear:L(!0),onLeave(x,k){x._isLeaving=!0;const se=()=>b(x,k);Xe(x,h),Xe(x,y),Fc(),_r(()=>{x._isLeaving&&(at(x,h),Xe(x,v),vr(g)||br(x,s,B,se))}),ct(g,[x,se])},onEnterCancelled(x){I(x,!1),ct(p,[x])},onAppearCancelled(x){I(x,!0),ct(q,[x])},onLeaveCancelled(x){b(x),ct(P,[x])}})}function Ic(e){if(e==null)return null;if(ne(e))return[Zn(e.enter),Zn(e.leave)];{const t=Zn(e);return[t,t]}}function Zn(e){return Ro(e)}function Xe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Yt]||(e[Yt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Yt];n&&(n.delete(t),n.size||(e[Yt]=void 0))}function _r(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Lc=0;function br(e,t,n,s){const r=e._endId=++Lc,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=Nc(e,t);if(!o)return s();const u=o+"end";let a=0;const h=()=>{e.removeEventListener(u,y),i()},y=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a<c&&h()},l+1),e.addEventListener(u,y)}function Nc(e,t){const n=window.getComputedStyle(e),s=A=>(n[A]||"").split(", "),r=s(`${Ye}Delay`),i=s(`${Ye}Duration`),o=wr(r,i),l=s(`${Ft}Delay`),c=s(`${Ft}Duration`),u=wr(l,c);let a=null,h=0,y=0;t===Ye?o>0&&(a=Ye,h=o,y=i.length):t===Ft?u>0&&(a=Ft,h=u,y=c.length):(h=Math.max(o,u),a=h>0?o>u?Ye:Ft:null,y=a?a===Ye?i.length:c.length:0);const v=a===Ye&&/\b(transform|all)(,|$)/.test(s(`${Ye}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:v}}function wr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>Sr(n)+Sr(e[s])))}function Sr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Fc(){return document.body.offsetHeight}function Hc(e,t,n){const s=e[Yt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const xr=Symbol("_vod"),$c=Symbol("_vsh"),Dc=Symbol(""),jc=/(^|;)\s*display\s*:/;function Vc(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&mn(s,l,"")}else for(const o in t)n[o]==null&&mn(s,o,"");for(const o in n)o==="display"&&(i=!0),mn(s,o,n[o])}else if(r){if(t!==n){const o=s[Dc];o&&(n+=";"+o),s.cssText=n,i=jc.test(n)}}else t&&e.removeAttribute("style");xr in e&&(e[xr]=i?s.display:"",e[$c]&&(s.display="none"))}const Er=/\s*!important$/;function mn(e,t,n){if(W(n))n.forEach(s=>mn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Uc(e,t);Er.test(n)?e.setProperty(st(s),n.replace(Er,""),"important"):e[s]=n}}const Cr=["Webkit","Moz","ms"],es={};function Uc(e,t){const n=es[t];if(n)return n;let s=Ie(t);if(s!=="filter"&&s in e)return es[t]=s;s=Rn(s);for(let r=0;r<Cr.length;r++){const i=Cr[r]+s;if(i in e)return es[t]=i}return t}const Tr="http://www.w3.org/1999/xlink";function Ar(e,t,n,s,r,i=No(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Tr,t.slice(6,t.length)):e.setAttributeNS(Tr,t,n):n==null||i&&!qr(n)?e.removeAttribute(t):e.setAttribute(t,i?"":qe(n)?String(n):n)}function Rr(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?no(n):n);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const l=i==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?e.type==="checkbox"?"on":"":String(n);(l!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let o=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=qr(n):n==null&&l==="string"?(n="",o=!0):l==="number"&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(r||t)}function kc(e,t,n,s){e.addEventListener(t,n,s)}function Bc(e,t,n,s){e.removeEventListener(t,n,s)}const Or=Symbol("_vei");function Wc(e,t,n,s,r=null){const i=e[Or]||(e[Or]={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Kc(t);if(s){const u=i[t]=Yc(s,r);kc(e,l,u,c)}else o&&(Bc(e,l,o,c),i[t]=void 0)}}const Pr=/(?:Once|Passive|Capture)$/;function Kc(e){let t;if(Pr.test(e)){t={};let s;for(;s=e.match(Pr);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):st(e.slice(2)),t]}let ts=0;const qc=Promise.resolve(),Gc=()=>ts||(qc.then(()=>ts=0),ts=Date.now());function Yc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(Xc(s,n.value),t,5,[s])};return n.value=e,n.attached=Gc(),n}function Xc(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Mr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Jc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Hc(e,s,o):t==="style"?Vc(e,n,s):Xt(t)?Ts(t)||Wc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):zc(e,t,s,o))?(Rr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ar(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Rr(e,Ie(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ar(e,t,s,o))};function zc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Mr(t)&&G(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Mr(t)&&re(n)?!1:t in e}const Qc=["ctrl","shift","alt","meta"],Zc={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)=>Qc.some(n=>e[`${n}Key`]&&!t.includes(n))},pf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o<t.length;o++){const l=Zc[t[o]];if(l&&l(r,t))return}return e(r,...i)})},ea={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},gf=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ea[o]===i))return e(r)})},ta=ce({patchProp:Jc},Rc);let ns,Ir=!1;function na(){return ns=Ir?ns:tc(ta),Ir=!0,ns}const mf=(...e)=>{const t=na().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=ra(s);if(r)return n(r,!0,sa(r))},t};function sa(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ra(e){return re(e)?document.querySelector(e):e}const yf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},ia=window.__VP_SITE_DATA__;function Ws(e){return Xr()?($o(e),!0):!1}function tt(e){return typeof e=="function"?e():di(e)}const ro=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const oa=Object.prototype.toString,la=e=>oa.call(e)==="[object Object]",io=()=>{},Lr=ca();function ca(){var e,t;return ro&&((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 aa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const oo=e=>e();function fa(e=oo){const t=le(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Ln(t),pause:n,resume:s,eventFilter:r}}function ua(e){return jn()}function lo(...e){if(e.length!==1)return fl(...e);const t=e[0];return typeof t=="function"?Ln(ll(()=>({get:t,set:io}))):le(t)}function da(e,t,n={}){const{eventFilter:s=oo,...r}=n;return Fe(e,aa(s,t),r)}function ha(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=fa(s);return{stop:da(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Ks(e,t=!0,n){ua()?Mt(e,n):t?e():Nn(e)}const Ke=ro?window:void 0;function co(e){var t;const n=tt(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=Ke):[t,n,s,r]=e,!t)return io;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,v)=>(a.addEventListener(h,y,v),()=>a.removeEventListener(h,y,v)),c=Fe(()=>[co(t),tt(r)],([a,h])=>{if(o(),!a)return;const y=la(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(A=>l(a,v,A,y))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return Ws(u),u}function pa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function vf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=Ke,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=pa(t);return Pt(r,i,a=>{a.repeat&&tt(l)||c(a)&&n(a)},o)}function ga(){const e=le(!1),t=jn();return t&&Mt(()=>{e.value=!0},t),e}function ma(e){const t=ga();return ie(()=>(t.value,!!e()))}function ao(e,t={}){const{window:n=Ke}=t,s=ma(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=le(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Wi(()=>{s.value&&(l(),r=n.matchMedia(tt(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Ws(()=>{c(),l(),r=void 0}),i}const an=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},fn="__vueuse_ssr_handlers__",ya=va();function va(){return fn in an||(an[fn]=an[fn]||{}),an[fn]}function fo(e,t){return ya[e]||t}function qs(e){return ao("(prefers-color-scheme: dark)",e)}function _a(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 ba={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()}},Nr="vueuse-storage";function wa(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:a,window:h=Ke,eventFilter:y,onError:v=b=>{console.error(b)},initOnMounted:A}=s,S=(a?fi:le)(typeof t=="function"?t():t);if(!n)try{n=fo("getDefaultStorage",()=>{var b;return(b=Ke)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return S;const B=tt(t),N=_a(B),D=(r=s.serializer)!=null?r:ba[N],{pause:p,resume:g}=ha(S,()=>V(S.value),{flush:i,deep:o,eventFilter:y});h&&l&&Ks(()=>{n instanceof Storage?Pt(h,"storage",q):Pt(h,Nr,I),A&&q()}),A||q();function P(b,L){if(h){const x={key:e,oldValue:b,newValue:L,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Nr,{detail:x}))}}function V(b){try{const L=n.getItem(e);if(b==null)P(L,null),n.removeItem(e);else{const x=D.write(b);L!==x&&(n.setItem(e,x),P(L,x))}}catch(L){v(L)}}function U(b){const L=b?b.newValue:n.getItem(e);if(L==null)return c&&B!=null&&n.setItem(e,D.write(B)),B;if(!b&&u){const x=D.read(L);return typeof u=="function"?u(x,B):N==="object"&&!Array.isArray(x)?{...B,...x}:x}else return typeof L!="string"?L:D.read(L)}function q(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){S.value=B;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==D.write(S.value)&&(S.value=U(b))}catch(L){v(L)}finally{b?Nn(g):g()}}}}function I(b){q(b.detail)}return S}const Sa="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function xa(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=Ke,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=qs({window:r}),v=ie(()=>y.value?"dark":"light"),A=c||(o==null?lo(s):wa(o,s,i,{window:r,listenToStorageChanges:l})),S=ie(()=>A.value==="auto"?v.value:A.value),B=fo("updateHTMLAttrs",(g,P,V)=>{const U=typeof g=="string"?r==null?void 0:r.document.querySelector(g):co(g);if(!U)return;const q=new Set,I=new Set;let b=null;if(P==="class"){const x=V.split(/\s/g);Object.values(h).flatMap(k=>(k||"").split(/\s/g)).filter(Boolean).forEach(k=>{x.includes(k)?q.add(k):I.add(k)})}else b={key:P,value:V};if(q.size===0&&I.size===0&&b===null)return;let L;a&&(L=r.document.createElement("style"),L.appendChild(document.createTextNode(Sa)),r.document.head.appendChild(L));for(const x of q)U.classList.add(x);for(const x of I)U.classList.remove(x);b&&U.setAttribute(b.key,b.value),a&&(r.getComputedStyle(L).opacity,document.head.removeChild(L))});function N(g){var P;B(t,n,(P=h[g])!=null?P:g)}function D(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(S,D,{flush:"post",immediate:!0}),Ks(()=>D(S.value));const p=ie({get(){return u?A.value:S.value},set(g){A.value=g}});try{return Object.assign(p,{store:A,system:v,state:S})}catch{return p}}function Ea(e={}){const{valueDark:t="dark",valueLight:n="",window:s=Ke}=e,r=xa({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:qs({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function ss(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function uo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const n=e.parentNode;return!n||n.tagName==="BODY"?!1:uo(n)}}function Ca(e){const t=e||window.event,n=t.target;return uo(n)?!1:t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)}const rs=new WeakMap;function _f(e,t=!1){const n=le(t);let s=null,r="";Fe(lo(e),l=>{const c=ss(tt(l));if(c){const u=c;if(rs.get(u)||rs.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(r=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=ss(tt(e));!l||n.value||(Lr&&(s=Pt(l,"touchmove",c=>{Ca(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ss(tt(e));!l||!n.value||(Lr&&(s==null||s()),l.style.overflow=r,rs.delete(l),n.value=!1)};return Ws(o),ie({get(){return n.value},set(l){l?i():o()}})}function bf(e={}){const{window:t=Ke,behavior:n="auto"}=e;if(!t)return{x:le(0),y:le(0)};const s=le(t.scrollX),r=le(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function wf(e={}){const{window:t=Ke,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=le(n),c=le(s),u=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(u(),Ks(u),Pt("resize",u,{passive:!0}),r){const a=ao("(orientation: portrait)");Fe(a,()=>u())}return{width:l,height:c}}const is={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var os={};const ho=/^(?:[a-z]+:|\/\/)/i,Ta="vitepress-theme-appearance",Aa=/#.*$/,Ra=/[?#].*$/,Oa=/(?:(^|\/)index)?\.(?:md|html)$/,pe=typeof document<"u",po={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Pa(e,t,n=!1){if(t===void 0)return!1;if(e=Fr(`/${e}`),n)return new RegExp(t).test(e);if(Fr(t)!==e)return!1;const s=t.match(Aa);return s?(pe?location.hash:"")===s[0]:!0}function Fr(e){return decodeURI(e).replace(Ra,"").replace(Oa,"$1")}function Ma(e){return ho.test(e)}function Ia(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ma(n)&&Pa(t,`/${n}/`,!0))||"root"}function La(e,t){var s,r,i,o,l,c,u;const n=Ia(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:mo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function go(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Na(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Na(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Fa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function mo(e,t){return[...e.filter(n=>!Fa(t,n)),...t]}const Ha=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,$a=/^[a-z]:/i;function Hr(e){const t=$a.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Ha,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ls=new Set;function Da(e){if(ls.size===0){const n=typeof process=="object"&&(os==null?void 0:os.VITE_EXTRA_EXTENSIONS)||(is==null?void 0:is.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ls.add(s))}const t=e.split(".").pop();return t==null||!ls.has(t.toLowerCase())}const ja=Symbol(),mt=fi(ia);function Sf(e){const t=ie(()=>La(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?le(!0):n==="force-auto"?qs():n?Ea({storageKey:Ta,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):le(!1),r=le(pe?location.hash:"");return pe&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=pe?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>go(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function Va(){const e=Rt(ja);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ua(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function $r(e){return ho.test(e)||!e.startsWith("/")?e:Ua(mt.value.base,e)}function ka(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),pe){const n="/";t=Hr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Hr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let yn=[];function xf(e){yn.push(e),Hn(()=>{yn=yn.filter(t=>t!==e)})}function Ba(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Dr(e,n);else if(Array.isArray(e))for(const s of e){const r=Dr(s,n);if(r){t=r;break}}return t}function Dr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Wa=Symbol(),yo="http://a.com",Ka=()=>({path:"/",component:null,data:po});function Ef(e,t){const n=In(Ka()),s={route:n,go:r};async function r(l=pe?location.href:"/"){var c,u;l=cs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(pe&&l!==cs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let i=null;async function o(l,c=0,u=!1){var y,v;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,yo),h=i=a.pathname;try{let A=await e(h);if(!A)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:S,__pageData:B}=A;if(!S)throw new Error(`Invalid route component: ${S}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=pe?h:$r(h),n.component=pn(S),n.data=pn(B),pe&&Nn(()=>{let N=mt.value.base+B.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let D=null;try{D=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(D){jr(D,a.hash);return}}window.scrollTo(0,c)})}}catch(A){if(!/fetch|Page not found/.test(A.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(A),!u)try{const S=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await S.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=pe?h:$r(h),n.component=t?pn(t):null;const S=pe?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...po,relativePath:S}}}}return pe&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:a,origin:h,pathname:y,hash:v,search:A}=new URL(u,c.baseURI),S=new URL(location.href);h===S.origin&&Da(y)&&(l.preventDefault(),y===S.pathname&&A===S.search?(v!==S.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:S.href,newURL:a}))),v?jr(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(cs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function qa(){const e=Rt(Wa);if(!e)throw new Error("useRouter() is called without provider.");return e}function vo(){return qa().route}function jr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Ba()+i;requestAnimationFrame(r)}}function cs(e){const t=new URL(e,yo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const un=()=>yn.forEach(e=>e()),Cf=Ds({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=vo(),{frontmatter:n,site:s}=Va();return Fe(n,un,{deep:!0,flush:"post"}),()=>xs(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?xs(t.component,{onVnodeMounted:un,onVnodeUpdated:un,onVnodeUnmounted:un}):"404 Page Not Found"])}}),Ga="modulepreload",Ya=function(e){return"/"+e},Vr={},Tf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=Ya(c),c in Vr)return;Vr[c]=!0;const u=c.endsWith(".css"),a=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=u?"stylesheet":Ga,u||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),u)return new Promise((y,v)=>{h.addEventListener("load",y),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},Af=Ds({setup(e,{slots:t}){const n=le(!1);return Mt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Rf(){pe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Of(){if(pe){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),Xa(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 Xa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Pf(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=as(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(as);s.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 s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Wi(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=go(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):as(["meta",{name:"description",content:a}]),r(mo(o.head,za(c)))})}function as([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function Ja(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function za(e){return e.filter(t=>!Ja(t))}const fs=new Set,_o=()=>document.createElement("link"),Qa=e=>{const t=_o();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Za=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let dn;const ef=pe&&(dn=_o())&&dn.relList&&dn.relList.supports&&dn.relList.supports("prefetch")?Qa:Za;function Mf(){if(!pe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!fs.has(c)){fs.add(c);const u=ka(c);u&&ef(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):fs.add(l))})})};Mt(s);const r=vo();Fe(()=>r.path,s),Hn(()=>{n&&n.disconnect()})}export{Ci as $,Ba as A,nf as B,rf as C,fi as D,xf as E,Se as F,oe as G,sf as H,ho as I,vo as J,mc as K,Rt as L,wf as M,Os as N,vf as O,Nn as P,bf as Q,pe as R,Ln as S,hf as T,tf as U,Tf as V,_f as W,Yl as X,gf as Y,lf as Z,yf as _,Qi as a,pf as a0,cf as a1,uf as a2,Pf as a3,Wa as a4,Sf as a5,ja as a6,Cf as a7,Af as a8,mt as a9,mf as aa,Ef as ab,ka as ac,Mf as ad,Of as ae,Rf as af,xs as ag,qa as ah,ws as b,ff as c,Ds as d,df as e,Da as f,$r as g,ie as h,Ma as i,zi as j,di as k,Pa as l,ao as m,Ps as n,bs as o,le as p,Fe as q,of as r,Wi as s,Fo as t,Va as u,Mt as v,_l as w,Hn as x,af as y,Nl as z}; diff --git a/assets/chunks/theme.BMGZMIu3.js b/assets/chunks/theme.BMGZMIu3.js new file mode 100644 index 00000000..19f27da8 --- /dev/null +++ b/assets/chunks/theme.BMGZMIu3.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPAlgoliaSearchBox.CvcnQzIk.js","assets/chunks/framework.CdbxnhrM.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as I,a as j,t as M,b as k,w as p,e as h,T as ue,_ as b,u as Ae,i as Ce,f as He,g as de,h as g,j as d,k as r,l as z,m as re,p as w,q as D,s as Y,v as K,x as Q,y as ve,z as Be,A as Ee,B as q,F as C,C as H,D as ge,E as Z,G as _,H as E,I as $e,J as x,K as U,L as ee,M as Fe,N as ye,O as De,P as Oe,Q as Pe,R as te,S as Ge,U as Ue,V as je,W as Le,X as Ve,Y as ze,Z as Ke,$ as qe,a0 as We,a1 as Re}from"./framework.CdbxnhrM.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",{},()=>[j(M(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:p(()=>[e.show?(a(),u("div",Xe)):h("",!0)]),_:1}))}}),Qe=b(Ye,[["__scopeId","data-v-c9fbc3c9"]]),V=Ae;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 pe(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=g(()=>{var v,$;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:(($=e.value.locales[t.value])==null?void 0:$.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:g(()=>Object.entries(e.value.locales).flatMap(([v,$])=>l.value.label===$.label?[]:{text:$.label,link:xe($.link||(v==="root"?"/":`/${v}/`),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,v,$;return a(),u("div",et,[d("p",tt,M(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),d("h1",nt,M(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=d("div",{class:"divider"},null,-1)),d("blockquote",ot,M(((f=r(e).notFound)==null?void 0:f.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",st,[d("a",{class:"link",href:r(de)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},M((($=r(e).notFound)==null?void 0:$.linkText)??"Take me home"),9,at)])])}}}),it=b(rt,[["__scopeId","data-v-d8c9a0ed"]]);function Se(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 O(){const{frontmatter:s,page:e,theme:t}=V(),o=re("(min-width: 960px)"),n=w(!1),i=g(()=>{const A=t.value.sidebar,N=e.value.relativePath;return A?Se(A,N):[]}),l=w(i.value);D(i,(A,N)=>{JSON.stringify(A)!==JSON.stringify(N)&&(l.value=i.value)});const f=g(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),v=g(()=>$?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),$=g(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),S=g(()=>f.value&&o.value),y=g(()=>f.value?lt(l.value):[]);function P(){n.value=!0}function T(){n.value=!1}function L(){n.value?T():P()}return{isOpen:n,sidebar:l,sidebarGroups:y,hasSidebar:f,hasAside:$,leftAside:v,isSidebarEnabled:S,open:P,close:T,toggle:L}}function ut(s,e){let t;Y(()=>{t=s.value?document.activeElement:void 0}),K(()=>{window.addEventListener("keyup",o)}),Q(()=>{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=w(!1),n=g(()=>s.value.collapsed!=null),i=g(()=>!!s.value.link),l=w(!1),f=()=>{l.value=z(e.value.relativePath,s.value.link)};D([e,s,t],f),K(f);const v=g(()=>l.value?!0:s.value.items?le(e.value.relativePath,s.value.items):!1),$=g(()=>!!(s.value.items&&s.value.items.length));Y(()=>{o.value=!!(n.value&&s.value.collapsed)}),ve(()=>{(l.value||v.value)&&(o.value=!1)});function S(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:$,toggle:S}}function vt(){const{hasSidebar:s}=O(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:g(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ce=[];function Te(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function fe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title: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;return _t(s,o,n)}function ht(s,e){const{isAsideEnabled:t}=vt(),o=Ze(i,100);let n=null;K(()=>{requestAnimationFrame(i),window.addEventListener("scroll",o)}),Be(()=>{l(location.hash)}),Q(()=>{window.removeEventListener("scroll",o)});function i(){if(!t.value)return;const f=window.scrollY,v=window.innerHeight,$=document.body.offsetHeight,S=Math.abs(f+v-$)<1,y=ce.map(({element:T,link:L})=>({link:L,top:mt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,L)=>T.top-L.top);if(!y.length){l(null);return}if(f<1){l(null);return}if(S){l(y[y.length-1].link);return}let P=null;for(const{link:T,top:L}of y){if(L>f+Ee()+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 v=n;v?(v.classList.add("active"),e.value.style.top=v.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}function _t(s,e,t){ce.length=0;const o=[],n=[];return s.forEach(i=>{const l={...i,children:[]};let f=n[n.length-1];for(;f&&f.level>=l.level;)n.pop(),f=n[n.length-1];if(l.element.classList.contains("ignore-header")||f&&"shouldIgnore"in f){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level<e||(ce.push({element:l.element,link:l.link}),f?f.children.push(l):o.push(l),n.push(l))}),o}const kt=["href","title"],bt=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(C,null,H(t.headers,({children:i,link:l,title:f})=>(a(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:e,title:f},M(f),9,kt),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ne=b(bt,[["__scopeId","data-v-85f41b19"]]),gt={class:"content"},$t={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},yt=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),o=ge([]);Z(()=>{o.value=fe(e.value.outline??t.value.outline)});const n=w(),i=w();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},[d("div",gt,[d("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),d("div",$t,M(r(Te)(r(t))),1),_(Ne,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),Pt=b(yt,[["__scopeId","data-v-cc231367"]]),Lt={class:"VPDocAsideCarbonAds"},Vt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",Lt,[_(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),St={class:"VPDocAside"},Tt=m({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,o)=>(a(),u("div",St,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),_(Pt),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=d("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)]))}}),Nt=b(Tt,[["__scopeId","data-v-646020bd"]]);function wt(){const{theme:s,page:e}=V();return g(()=>{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 It(){const{page:s,theme:e,frontmatter:t}=V();return g(()=>{var $,S,y,P,T,L,A,N;const o=Se(e.value.sidebar,s.value.relativePath),n=ct(o),i=Mt(n,B=>B.link.replace(/[?#].*$/,"")),l=i.findIndex(B=>z(s.value.relativePath,B.link)),f=(($=e.value.docFooter)==null?void 0:$.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((S=e.value.docFooter)==null?void 0:S.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)??((y=i[l-1])==null?void 0:y.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:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((L=i[l+1])==null?void 0:L.docFooterText)??((A=i[l+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[l+1])==null?void 0:N.link)}}})}function Mt(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=g(()=>e.tag??(e.href?"a":"span")),o=g(()=>e.href&&$e.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(pe)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:p(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),At={class:"VPLastUpdated"},Ct=["datetime"],Ht=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=V(),n=g(()=>new Date(t.value.lastUpdated)),i=g(()=>n.value.toISOString()),l=w("");return K(()=>{Y(()=>{var f,v,$;l.value=new Intl.DateTimeFormat((v=(f=e.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&v.forceLocale?o.value:void 0,(($=e.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(f,v)=>{var $;return a(),u("p",At,[j(M((($=r(e).lastUpdated)==null?void 0:$.text)||r(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:i.value},M(l.value),9,Ct)])}}}),Bt=b(Ht,[["__scopeId","data-v-d37dd316"]]),Et={key:0,class:"VPDocFooter"},Ft={key:0,class:"edit-info"},Dt={key:0,class:"edit-link"},Ot={key:1,class:"last-updated"},Gt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ut={class:"pager"},jt=["innerHTML"],zt=["innerHTML"],Kt={class:"pager"},qt=["innerHTML"],Wt=["innerHTML"],Rt=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=V(),n=wt(),i=It(),l=g(()=>e.value.editLink&&o.value.editLink!==!1),f=g(()=>t.value.lastUpdated),v=g(()=>l.value||f.value||i.value.prev||i.value.next);return($,S)=>{var y,P,T,L;return v.value?(a(),u("footer",Et,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||f.value?(a(),u("div",Ft,[l.value?(a(),u("div",Dt,[_(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:p(()=>[S[0]||(S[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+M(r(n).text),1)]),_:1},8,["href"])])):h("",!0),f.value?(a(),u("div",Ot,[_(Bt)])):h("",!0)])):h("",!0),(y=r(i).prev)!=null&&y.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",Gt,[S[1]||(S[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Ut,[(T=r(i).prev)!=null&&T.link?(a(),k(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:p(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=r(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,jt),d("span",{class:"title",innerHTML:r(i).prev.text},null,8,zt)]}),_:1},8,["href"])):h("",!0)]),d("div",Kt,[(L=r(i).next)!=null&&L.link?(a(),k(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:p(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=r(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,qt),d("span",{class:"title",innerHTML:r(i).next.text},null,8,Wt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Jt=b(Rt,[["__scopeId","data-v-be2aa953"]]),Xt={class:"container"},Yt={class:"aside-container"},Qt={class:"aside-content"},Zt={class:"content"},xt={class:"content-container"},en={class:"main"},tn=m({__name:"VPDoc",setup(s){const{theme:e}=V(),t=x(),{hasSidebar:o,hasAside:n,leftAside:i}=O(),l=g(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,v)=>{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),d("div",Xt,[r(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":r(i)}])},[v[0]||(v[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Yt,[d("div",Qt,[_(Nt,null,{"aside-top":p(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),d("div",Zt,[d("div",xt,[c(f.$slots,"doc-before",{},void 0,!0),d("main",en,[_($,{class:I(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(Jt,null,{"doc-footer-before":p(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(f.$slots,"doc-after",{},void 0,!0)])])]),c(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),nn=b(tn,[["__scopeId","data-v-c6c1d99a"]]),on=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=g(()=>e.href&&$e.test(e.href)),o=g(()=>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(pe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:p(()=>[j(M(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),sn=b(on,[["__scopeId","data-v-5817f143"]]),an=["src","alt"],rn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=q("VPImage",!0);return e.image?(a(),u(C,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",U({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,an)):(a(),u(C,{key:1},[_(o,U({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(o,U({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),X=b(rn,[["__scopeId","data-v-8af65e37"]]),ln={class:"container"},cn={class:"main"},un={key:0,class:"name"},dn=["innerHTML"],vn=["innerHTML"],pn=["innerHTML"],fn={key:0,class:"actions"},hn={key:0,class:"image"},mn={class:"image-container"},_n=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ee("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||r(e)}])},[d("div",ln,[d("div",cn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",un,[d("span",{innerHTML:t.name,class:"clip"},null,8,dn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,vn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,pn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",fn,[(a(!0),u(C,null,H(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[_(sn,{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",hn,[d("div",mn,[o[0]||(o[0]=d("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))}}),kn=b(_n,[["__scopeId","data-v-f4b4dff7"]]),bn=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).hero?(a(),k(kn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),gn={class:"box"},$n={key:0,class:"icon"},yn=["innerHTML"],Pn=["innerHTML"],Ln=["innerHTML"],Vn={key:4,class:"link-text"},Sn={class:"link-text-value"},Tn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),k(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:p(()=>[d("article",gn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",$n,[_(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,yn)):h("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Pn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Ln)):h("",!0),e.linkText?(a(),u("div",Vn,[d("p",Sn,[j(M(e.linkText)+" ",1),t[0]||(t[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Nn=b(Tn,[["__scopeId","data-v-ddc412bb"]]),wn={key:0,class:"VPFeatures"},In={class:"container"},Mn={class:"items"},An=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=g(()=>{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",wn,[d("div",In,[d("div",Mn,[(a(!0),u(C,null,H(o.features,i=>(a(),u("div",{key:i.title,class:I(["item",[t.value]])},[_(Nn,{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)}}),Cn=b(An,[["__scopeId","data-v-901d64aa"]]),Hn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,o)=>r(e).features?(a(),k(Cn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Bn=m({__name:"VPHomeContent",setup(s){const{width:e}=Fe({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:ye(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),En=b(Bn,[["__scopeId","data-v-30d82f28"]]),Fn={class:"VPHome"},Dn=m({__name:"VPHome",setup(s){const{frontmatter:e}=V();return(t,o)=>{const n=q("Content");return a(),u("div",Fn,[c(t.$slots,"home-hero-before",{},void 0,!0),_(bn,null,{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),_(Hn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(En,{key:0},{default:p(()=>[_(n)]),_:1})):(a(),k(n,{key:1}))])}}}),On=b(Dn,[["__scopeId","data-v-cc8ba45b"]]),Gn={},Un={class:"VPPage"};function jn(s,e){const t=q("Content");return a(),u("div",Un,[c(s.$slots,"page-top"),_(t),c(s.$slots,"page-bottom")])}const zn=b(Gn,[["render",jn]]),Kn=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:o}=O();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(zn,{key:1},{"page-top":p(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(On,{key:2},{"home-hero-before":p(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(E(r(t).layout),{key:3})):(a(),k(nn,{key:4},{"doc-top":p(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),qn=b(Kn,[["__scopeId","data-v-0fe28542"]]),Wn={class:"container"},Rn=["innerHTML"],Jn=["innerHTML"],Xn=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=O();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":r(o)}])},[d("div",Wn,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Rn)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Jn)):h("",!0)])],2)):h("",!0)}}),Yn=b(Xn,[["__scopeId","data-v-969adff1"]]);function Qn(){const{theme:s,frontmatter:e}=V(),t=ge([]),o=g(()=>t.value.length>0);return Z(()=>{t.value=fe(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const Zn={class:"menu-text"},xn={class:"header"},eo={class:"outline"},to=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),o=w(!1),n=w(0),i=w(),l=w();function f(y){var P;(P=i.value)!=null&&P.contains(y.target)||(o.value=!1)}D(o,y=>{if(y){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),De("Escape",()=>{o.value=!1}),Z(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function $(y){y.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Oe(()=>{o.value=!1}))}function S(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:ye({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[y.headers.length>0?(a(),u("button",{key:0,onClick:v,class:I({open:o.value})},[d("span",Zn,M(r(Te)(r(t))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:S},M(r(t).returnToTopLabel||"Return to top"),1)),_(ue,{name:"flyout"},{default:p(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",xn,[d("a",{class:"top-link",href:"#",onClick:S},M(r(t).returnToTopLabel||"Return to top"),1)]),d("div",eo,[_(Ne,{headers:y.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),no=b(to,[["__scopeId","data-v-21e70e53"]]),oo={class:"container"},so=["aria-expanded"],ao={class:"menu-text"},ro=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:o}=O(),{headers:n}=Qn(),{y:i}=Pe(),l=w(0);K(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Z(()=>{n.value=fe(t.value.outline??e.value.outline)});const f=g(()=>n.value.length===0),v=g(()=>f.value&&!o.value),$=g(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:f.value,fixed:v.value}));return(S,y)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:I($.value)},[d("div",oo,[r(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":S.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=P=>S.$emit("open-menu"))},[y[1]||(y[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",ao,M(r(e).sidebarMenuLabel||"Menu"),1)],8,so)):h("",!0),_(no,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),io=b(ro,[["__scopeId","data-v-76c0c9b9"]]);function lo(){const s=w(!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=x();return D(()=>i.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const co={},uo={class:"VPSwitch",type:"button",role:"switch"},vo={class:"check"},po={key:0,class:"icon"};function fo(s,e){return a(),u("button",uo,[d("span",vo,[s.$slots.default?(a(),u("span",po,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const ho=b(co,[["render",fo],["__scopeId","data-v-bdee5f6f"]]),mo=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=V(),o=ee("toggle-appearance",()=>{e.value=!e.value}),n=w("");return ve(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),k(ho,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(o)},{default:p(()=>l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),he=b(mo,[["__scopeId","data-v-8bbecb59"]]),_o={key:0,class:"VPNavBarAppearance"},ko=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",_o,[_(he)])):h("",!0)}}),bo=b(ko,[["__scopeId","data-v-e142ede8"]]),me=w();let we=!1,ae=0;function go(s){const e=w(!1);if(te){!we&&$o(),ae++;const t=D(me,o=>{var n,i,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(i=s.onFocus)==null||i.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});Q(()=>{t(),ae--,ae||yo()})}return Ge(e)}function $o(){document.addEventListener("focusin",Ie),we=!0,me.value=document.activeElement}function yo(){document.removeEventListener("focusin",Ie)}function Ie(){me.value=document.activeElement}const Po={class:"VPMenuLink"},Lo=["innerHTML"],Vo=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,o)=>(a(),u("div",Po,[_(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,"no-icon":t.item.noIcon},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,Lo)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=b(Vo,[["__scopeId","data-v-853d4873"]]),So={class:"VPMenuGroup"},To={key:0,class:"title"},No=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",So,[e.text?(a(),u("p",To,M(e.text),1)):h("",!0),(a(!0),u(C,null,H(e.items,o=>(a(),u(C,null,["link"in o?(a(),k(ne,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),wo=b(No,[["__scopeId","data-v-69b2cd49"]]),Io={class:"VPMenu"},Mo={key:0,class:"items"},Ao=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",Io,[e.items?(a(),u("div",Mo,[(a(!0),u(C,null,H(e.items,o=>(a(),u(C,{key:JSON.stringify(o)},["link"in o?(a(),k(ne,{key:0,item:o},null,8,["item"])):"component"in o?(a(),k(E(o.component),U({key:1,ref_for:!0},o.props),null,16)):(a(),k(wo,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Co=b(Ao,[["__scopeId","data-v-7d4ca9a7"]]),Ho=["aria-expanded","aria-label"],Bo={key:0,class:"text"},Eo=["innerHTML"],Fo={key:1,class:"vpi-more-horizontal icon"},Do={class:"menu"},Oo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=w(!1),t=w();go({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)},[d("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,Eo)):h("",!0),i[3]||(i[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Fo))],8,Ho),d("div",Do,[_(Co,{items:n.items},{default:p(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=b(Oo,[["__scopeId","data-v-4704c17a"]]),Go=["href","aria-label","innerHTML"],Uo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=g(()=>typeof e.icon=="object"?e.icon.svg:`<span class="vpi-social-${e.icon}" />`);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,Go))}}),jo=b(Uo,[["__scopeId","data-v-77ae8116"]]),zo={class:"VPSocialLinks"},Ko=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",zo,[(a(!0),u(C,null,H(e.links,({link:o,icon:n,ariaLabel:i})=>(a(),k(jo,{key:o,icon:n,link:o,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ke=b(Ko,[["__scopeId","data-v-146cd071"]]),qo={key:0,class:"group translations"},Wo={class:"trans-title"},Ro={key:1,class:"group"},Jo={class:"item appearance"},Xo={class:"label"},Yo={class:"appearance-action"},Qo={key:2,class:"group"},Zo={class:"item social-links"},xo=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:o,currentLang:n}=R({correspondingLink:!0}),i=g(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,f)=>i.value?(a(),k(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[r(o).length&&r(n).label?(a(),u("div",qo,[d("p",Wo,M(r(n).label),1),(a(!0),u(C,null,H(r(o),v=>(a(),k(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Ro,[d("div",Jo,[d("p",Xo,M(r(t).darkModeSwitchLabel||"Appearance"),1),d("div",Yo,[_(he)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Qo,[d("div",Zo,[_(ke,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),es=b(xo,[["__scopeId","data-v-a191e894"]]),ts=["aria-expanded"],ns=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]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)]),10,ts))}}),os=b(ns,[["__scopeId","data-v-a7d339bd"]]),ss=["innerHTML"],as=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,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,ss)]),_:1},8,["class","href","target","rel","no-icon"]))}}),rs=b(as,[["__scopeId","data-v-780e4a1c"]]),is=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=g(()=>o(e.item));return(i,l)=>(a(),k(_e,{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"]))}}),ls={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},cs=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",ls,[o[0]||(o[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(C,null,H(r(e).nav,n=>(a(),u(C,{key:JSON.stringify(n)},["link"in n?(a(),k(rs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),U({key:1,ref_for:!0},n.props),null,16)):(a(),k(is,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),us=b(cs,[["__scopeId","data-v-0655dfd0"]]);function ds(s){const{localeIndex:e,theme:t}=V();function o(n){var L,A,N;const i=n.split("."),l=(L=t.value.search)==null?void 0:L.options,f=l&&typeof l=="object",v=f&&((N=(A=l.locales)==null?void 0:A[e.value])==null?void 0:N.translations)||null,$=f&&l.translations||null;let S=v,y=$,P=s;const T=i.pop();for(const B of i){let G=null;const W=P==null?void 0:P[B];W&&(G=P=W);const oe=y==null?void 0:y[B];oe&&(G=y=oe);const se=S==null?void 0:S[B];se&&(G=S=se),W||(P=G),oe||(y=G),se||(S=G)}return(S==null?void 0:S[T])??(y==null?void 0:y[T])??(P==null?void 0:P[T])??""}return o}const vs=["aria-label"],ps={class:"DocSearch-Button-Container"},fs={class:"DocSearch-Button-Placeholder"},be=m({__name:"VPNavBarSearchButton",setup(s){const t=ds({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[d("span",ps,[n[0]||(n[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",fs,M(r(t)("button.buttonText")),1)]),n[1]||(n[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,vs))}}),hs={class:"VPNavBarSearch"},ms={id:"local-search"},_s={key:1,id:"docsearch"},ks=m({__name:"VPNavBarSearch",setup(s){const e=()=>null,t=Ue(()=>je(()=>import("./VPAlgoliaSearchBox.CvcnQzIk.js"),__vite__mapDeps([0,1]))),{theme:o}=V(),n=w(!1),i=w(!1),l=()=>{const P="VPAlgoliaPreconnect";(window.requestIdleCallback||setTimeout)(()=>{var A;const L=document.createElement("link");L.id=P,L.rel="preconnect",L.href=`https://${(((A=o.value.search)==null?void 0:A.options)??o.value.algolia).appId}-dsn.algolia.net`,L.crossOrigin="",document.head.appendChild(L)})};K(()=>{l();const P=L=>{(L.key.toLowerCase()==="k"&&(L.metaKey||L.ctrlKey)||!$(L)&&L.key==="/")&&(L.preventDefault(),f(),T())},T=()=>{window.removeEventListener("keydown",P)};window.addEventListener("keydown",P),Q(T)});function f(){n.value||(n.value=!0,setTimeout(v,16))}function v(){const P=new Event("keydown");P.key="k",P.metaKey=!0,window.dispatchEvent(P),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function $(P){const T=P.target,L=T.tagName;return T.isContentEditable||L==="INPUT"||L==="SELECT"||L==="TEXTAREA"}const S=w(!1),y="algolia";return(P,T)=>{var L;return a(),u("div",hs,[r(y)==="local"?(a(),u(C,{key:0},[S.value?(a(),k(r(e),{key:0,onClose:T[0]||(T[0]=A=>S.value=!1)})):h("",!0),d("div",ms,[_(be,{onClick:T[1]||(T[1]=A=>S.value=!0)})])],64)):r(y)==="algolia"?(a(),u(C,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((L=r(o).search)==null?void 0:L.options)??r(o).algolia,onVnodeBeforeMount:T[2]||(T[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",_s,[_(be,{onClick:f})]))],64)):h("",!0)])}}}),bs=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),k(ke,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),gs=b(bs,[["__scopeId","data-v-16444370"]]),$s=["href","rel","target"],ys=["innerHTML"],Ps={key:2},Ls=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:o}=O(),{currentLang:n}=R(),i=g(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=g(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),f=g(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,$)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":r(o)}])},[d("a",{class:"title",href:i.value??r(pe)(r(n).link),rel:l.value,target:f.value},[c(v.$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",{key:1,innerHTML:r(t).siteTitle},null,8,ys)):r(t).siteTitle===void 0?(a(),u("span",Ps,M(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,$s)],2))}}),Vs=b(Ls,[["__scopeId","data-v-27d5dab5"]]),Ss={class:"items"},Ts={class:"title"},Ns=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(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:p(()=>[d("div",Ss,[d("p",Ts,M(r(o).label),1),(a(!0),u(C,null,H(r(t),l=>(a(),k(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),ws=b(Ns,[["__scopeId","data-v-cfaf8272"]]),Is={class:"wrapper"},Ms={class:"container"},As={class:"title"},Cs={class:"content"},Hs={class:"content-body"},Bs=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Pe(),{hasSidebar:o}=O(),{frontmatter:n}=V(),i=w({});return ve(()=>{i.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,f)=>(a(),u("div",{class:I(["VPNavBar",i.value])},[d("div",Is,[d("div",Ms,[d("div",As,[_(Vs,null,{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Cs,[d("div",Hs,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),_(ks,{class:"search"}),_(us,{class:"menu"}),_(ws,{class:"translations"}),_(bo,{class:"appearance"}),_(gs,{class:"social-links"}),_(es,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),_(os,{class:"hamburger",active:l.isScreenOpen,onClick:f[0]||(f[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Es=b(Bs,[["__scopeId","data-v-f0f60ea4"]]),Fs={key:0,class:"VPNavScreenAppearance"},Ds={class:"text"},Os=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",Fs,[d("p",Ds,M(r(t).darkModeSwitchLabel||"Appearance"),1),_(he)])):h("",!0)}}),Gs=b(Os,[["__scopeId","data-v-2251cbd3"]]),Us=["innerHTML"],js=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ee("close-screen");return(t,o)=>(a(),k(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,Us)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),zs=b(js,[["__scopeId","data-v-d8dab840"]]),Ks=["innerHTML"],qs=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ee("close-screen");return(t,o)=>(a(),k(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,Ks)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Me=b(qs,[["__scopeId","data-v-61d91e32"]]),Ws={class:"VPNavScreenMenuGroupSection"},Rs={key:0,class:"title"},Js=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Ws,[e.text?(a(),u("p",Rs,M(e.text),1)):h("",!0),(a(!0),u(C,null,H(e.items,o=>(a(),k(Me,{key:o.text,item:o},null,8,["item"]))),128))]))}}),Xs=b(Js,[["__scopeId","data-v-6529da28"]]),Ys=["aria-controls","aria-expanded"],Qs=["innerHTML"],Zs=["id"],xs={key:0,class:"item"},ea={key:1,class:"item"},ta={key:2,class:"group"},na=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=w(!1),o=g(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[d("span",{class:"button-text",innerHTML:i.text},null,8,Qs),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,Ys),d("div",{id:o.value,class:"items"},[(a(!0),u(C,null,H(i.items,f=>(a(),u(C,{key:JSON.stringify(f)},["link"in f?(a(),u("div",xs,[_(Me,{item:f},null,8,["item"])])):"component"in f?(a(),u("div",ea,[(a(),k(E(f.component),U({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(a(),u("div",ta,[_(Xs,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,Zs)],2))}}),oa=b(na,[["__scopeId","data-v-f3d0198e"]]),sa={key:0,class:"VPNavScreenMenu"},aa=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,o)=>r(e).nav?(a(),u("nav",sa,[(a(!0),u(C,null,H(r(e).nav,n=>(a(),u(C,{key:JSON.stringify(n)},["link"in n?(a(),k(zs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),U({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(oa,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ra=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,o)=>r(e).socialLinks?(a(),k(ke,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ia={class:"list"},la=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=R({correspondingLink:!0}),o=w(!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}])},[d("button",{class:"title",onClick:n},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+M(r(t).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",ia,[(a(!0),u(C,null,H(r(e),f=>(a(),u("li",{key:f.link,class:"item"},[_(F,{class:"link",href:f.link},{default:p(()=>[j(M(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ca=b(la,[["__scopeId","data-v-336efab7"]]),ua={class:"container"},da=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=w(null),t=Le(te?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:p(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",ua,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),_(aa,{class:"menu"}),_(ca,{class:"translations"}),_(Gs,{class:"appearance"}),_(ra,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),va=b(da,[["__scopeId","data-v-943e4a5e"]]),pa={key:0,class:"VPNav"},fa=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=lo(),{frontmatter:n}=V(),i=g(()=>n.value.navbar!==!1);return Ve("close-screen",t),Y(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,f)=>i.value?(a(),u("header",pa,[_(Es,{"is-screen-open":r(e),onToggleScreen:r(o)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(va,{open:r(e)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),ha=b(fa,[["__scopeId","data-v-4ee8bff2"]]),ma=["role","tabindex"],_a={key:1,class:"items"},ka=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:f,toggle:v}=dt(g(()=>e.item)),$=g(()=>f.value?"section":"div"),S=g(()=>n.value?"a":"div"),y=g(()=>f.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=g(()=>n.value?void 0:"button"),T=g(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function L(N){"key"in N&&N.key!=="Enter"||!e.item.link&&v()}function A(){e.item.link&&v()}return(N,B)=>{const G=q("VPSidebarItem",!0);return a(),k(E($.value),{class:I(["VPSidebarItem",T.value])},{default:p(()=>[N.item.text?(a(),u("div",U({key:0,class:"item",role:P.value},Ke(N.item.items?{click:L,keydown:L}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=d("div",{class:"indicator"},null,-1)),N.item.link?(a(),k(F,{key:0,tag:S.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:p(()=>[(a(),k(E(y.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(E(y.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:ze(A,["enter"]),tabindex:"0"},B[0]||(B[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,ma)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",_a,[N.depth<5?(a(!0),u(C,{key:0},H(N.item.items,W=>(a(),k(G,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),ba=b(ka,[["__scopeId","data-v-d4309205"]]),ga=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=w(!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(C,null,H(o.items,i=>(a(),u("div",{key:i.text,class:I(["group",{"no-transition":e.value}])},[_(ba,{item:i,depth:0},null,8,["item"])],2))),128))}}),$a=b(ga,[["__scopeId","data-v-29097003"]]),ya={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Pa=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=O(),o=s,n=w(null),i=Le(te?document.body:null);D([o,n],()=>{var f;o.open?(i.value=!0,(f=n.value)==null||f.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=w(0);return D(e,()=>{l.value+=1},{deep:!0}),(f,v)=>r(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:f.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=We(()=>{},["stop"]))},[v[2]||(v[2]=d("div",{class:"curtain"},null,-1)),d("nav",ya,[v[1]||(v[1]=d("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)}}),La=b(Pa,[["__scopeId","data-v-4a238344"]]),Va=m({__name:"VPSkipLink",setup(s){const e=x(),t=w();D(()=>e.path,()=>t.value.focus());function o({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(C,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),Sa=b(Va,[["__scopeId","data-v-0d927997"]]),Ta=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=O(),n=x();D(()=>n.path,o),ut(e,o);const{frontmatter:i}=V(),l=Re(),f=g(()=>!!l["home-hero-image"]);return Ve("hero-image-slot-exists",f),(v,$)=>{const S=q("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),_(Sa),_(Qe,{class:"backdrop",show:r(e),onClick:r(o)},null,8,["show","onClick"]),_(ha,null,{"nav-bar-title-before":p(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(io,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),_(La,{open:r(e)},{"sidebar-nav-before":p(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(qn,null,{"page-top":p(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(Yn),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(S,{key:1}))}}}),Na=b(Ta,[["__scopeId","data-v-267e9c9a"]]),Ia={Layout:Na,enhanceApp:({app:s})=>{s.component("Badge",Je)}};export{Ia as t,V as u}; diff --git a/assets/de_api_index.md.D17-Qxfi.js b/assets/de_api_index.md.D17-Qxfi.js new file mode 100644 index 00000000..a049b375 --- /dev/null +++ b/assets/de_api_index.md.D17-Qxfi.js @@ -0,0 +1,4 @@ +import{_ as e,c as a,a2 as s,o as i}from"./chunks/framework.CdbxnhrM.js";const k=JSON.parse('{"title":"Coding Reference","description":"","frontmatter":{},"headers":[],"relativePath":"de/api/index.md","filePath":"de/api/index.md","lastUpdated":1730382198000}'),r={name:"de/api/index.md"};function n(d,t,o,l,h,p){return i(),a("div",null,t[0]||(t[0]=[s(`<h1 id="coding-reference" tabindex="-1">Coding Reference <a class="header-anchor" href="#coding-reference" aria-label="Permalink to "Coding Reference""></a></h1><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props""></a></h2><p>Some basic props are defined in the components provided by <code>vue-chartjs</code>.</p><table tabindex="0"><thead><tr><th>Prop</th><th>Description</th></tr></thead><tbody><tr><td>data</td><td>Data object that is passed into the Chart.js chart</td></tr><tr><td>options</td><td>Options object that is passed into the Chart.js chart</td></tr><tr><td>datasetIdKey</td><td>Key name to identify the dataset</td></tr><tr><td>plugins</td><td>Plugins array that is passed into the Chart.js chart</td></tr><tr><td>updateMode</td><td>Mode string to indicate the transition configuration to be used.</td></tr><tr><td>ariaLabel</td><td>An <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label" target="_blank" rel="noreferrer">ARIA label</a> that describes the chart to make it accessible.</td></tr><tr><td>ariaDescribedby</td><td>A reference to the <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby" target="_blank" rel="noreferrer">describing element</a>. E. g. a table representation of the data.</td></tr></tbody></table><p>The rest of the props will fall through to the canvas element.</p><h2 id="global-methods" tabindex="-1">Global Methods <a class="header-anchor" href="#global-methods" aria-label="Permalink to "Global Methods""></a></h2><p>Global Methods need to be imported.</p><h3 id="createtypedchart" tabindex="-1">createTypedChart <a class="header-anchor" href="#createtypedchart" aria-label="Permalink to "createTypedChart""></a></h3><ul><li><strong>Type:</strong> <code>Function</code></li><li><strong>Arguments</strong>:<code>chart-type</code>, <code>chart-controller</code></li><li><strong>Usage:</strong></li></ul><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineController)</span></span></code></pre></div>`,10)]))}const b=e(r,[["render",n]]);export{k as __pageData,b as default}; diff --git a/assets/de_api_index.md.D17-Qxfi.lean.js b/assets/de_api_index.md.D17-Qxfi.lean.js new file mode 100644 index 00000000..a049b375 --- /dev/null +++ b/assets/de_api_index.md.D17-Qxfi.lean.js @@ -0,0 +1,4 @@ +import{_ as e,c as a,a2 as s,o as i}from"./chunks/framework.CdbxnhrM.js";const k=JSON.parse('{"title":"Coding Reference","description":"","frontmatter":{},"headers":[],"relativePath":"de/api/index.md","filePath":"de/api/index.md","lastUpdated":1730382198000}'),r={name:"de/api/index.md"};function n(d,t,o,l,h,p){return i(),a("div",null,t[0]||(t[0]=[s(`<h1 id="coding-reference" tabindex="-1">Coding Reference <a class="header-anchor" href="#coding-reference" aria-label="Permalink to "Coding Reference""></a></h1><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props""></a></h2><p>Some basic props are defined in the components provided by <code>vue-chartjs</code>.</p><table tabindex="0"><thead><tr><th>Prop</th><th>Description</th></tr></thead><tbody><tr><td>data</td><td>Data object that is passed into the Chart.js chart</td></tr><tr><td>options</td><td>Options object that is passed into the Chart.js chart</td></tr><tr><td>datasetIdKey</td><td>Key name to identify the dataset</td></tr><tr><td>plugins</td><td>Plugins array that is passed into the Chart.js chart</td></tr><tr><td>updateMode</td><td>Mode string to indicate the transition configuration to be used.</td></tr><tr><td>ariaLabel</td><td>An <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label" target="_blank" rel="noreferrer">ARIA label</a> that describes the chart to make it accessible.</td></tr><tr><td>ariaDescribedby</td><td>A reference to the <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby" target="_blank" rel="noreferrer">describing element</a>. E. g. a table representation of the data.</td></tr></tbody></table><p>The rest of the props will fall through to the canvas element.</p><h2 id="global-methods" tabindex="-1">Global Methods <a class="header-anchor" href="#global-methods" aria-label="Permalink to "Global Methods""></a></h2><p>Global Methods need to be imported.</p><h3 id="createtypedchart" tabindex="-1">createTypedChart <a class="header-anchor" href="#createtypedchart" aria-label="Permalink to "createTypedChart""></a></h3><ul><li><strong>Type:</strong> <code>Function</code></li><li><strong>Arguments</strong>:<code>chart-type</code>, <code>chart-controller</code></li><li><strong>Usage:</strong></li></ul><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineController)</span></span></code></pre></div>`,10)]))}const b=e(r,[["render",n]]);export{k as __pageData,b as default}; diff --git a/assets/de_examples_index.md.B1Pa2eih.js b/assets/de_examples_index.md.B1Pa2eih.js new file mode 100644 index 00000000..97c141c2 --- /dev/null +++ b/assets/de_examples_index.md.B1Pa2eih.js @@ -0,0 +1 @@ +import{_ as r,c as a,a2 as t,o as s}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"de/examples/index.md","filePath":"de/examples/index.md","lastUpdated":1730382198000}'),l={name:"de/examples/index.md"};function i(n,e,o,h,u,c){return s(),a("div",null,e[0]||(e[0]=[t('<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="vue-3-charts" tabindex="-1">Vue 3 charts <a class="header-anchor" href="#vue-3-charts" aria-label="Permalink to "Vue 3 charts""></a></h2><ul><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive" target="_blank" rel="noreferrer">Bar with reactive data</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom" target="_blank" rel="noreferrer">Custom chart</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events" target="_blank" rel="noreferrer">Events</a></li></ul><h2 id="vue-2-charts-vue-chartjs-v4" tabindex="-1">Vue 2 charts (vue-chartjs v4) <a class="header-anchor" href="#vue-2-charts-vue-chartjs-v4" aria-label="Permalink to "Vue 2 charts (vue-chartjs v4)""></a></h2><ul><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li></ul>',5)]))}const p=r(l,[["render",i]]);export{d as __pageData,p as default}; diff --git a/assets/de_examples_index.md.B1Pa2eih.lean.js b/assets/de_examples_index.md.B1Pa2eih.lean.js new file mode 100644 index 00000000..97c141c2 --- /dev/null +++ b/assets/de_examples_index.md.B1Pa2eih.lean.js @@ -0,0 +1 @@ +import{_ as r,c as a,a2 as t,o as s}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"de/examples/index.md","filePath":"de/examples/index.md","lastUpdated":1730382198000}'),l={name:"de/examples/index.md"};function i(n,e,o,h,u,c){return s(),a("div",null,e[0]||(e[0]=[t('<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="vue-3-charts" tabindex="-1">Vue 3 charts <a class="header-anchor" href="#vue-3-charts" aria-label="Permalink to "Vue 3 charts""></a></h2><ul><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive" target="_blank" rel="noreferrer">Bar with reactive data</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom" target="_blank" rel="noreferrer">Custom chart</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events" target="_blank" rel="noreferrer">Events</a></li></ul><h2 id="vue-2-charts-vue-chartjs-v4" tabindex="-1">Vue 2 charts (vue-chartjs v4) <a class="header-anchor" href="#vue-2-charts-vue-chartjs-v4" aria-label="Permalink to "Vue 2 charts (vue-chartjs v4)""></a></h2><ul><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li></ul>',5)]))}const p=r(l,[["render",i]]);export{d as __pageData,p as default}; diff --git a/assets/de_guide_examples.md.-BxsMonn.js b/assets/de_guide_examples.md.-BxsMonn.js new file mode 100644 index 00000000..680aa532 --- /dev/null +++ b/assets/de_guide_examples.md.-BxsMonn.js @@ -0,0 +1,128 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"de/guide/examples.md","filePath":"de/guide/examples.md","lastUpdated":1730382198000}'),h={name:"de/guide/examples.md"};function l(p,s,e,k,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="chart-with-props" tabindex="-1">Chart with props <a class="header-anchor" href="#chart-with-props" aria-label="Permalink to "Chart with props""></a></h2><p>Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> required: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-local-data" tabindex="-1">Chart with local data <a class="header-anchor" href="#chart-with-local-data" aria-label="Permalink to "Chart with local data""></a></h2><p>You can handle your chart data directly in your parent component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-api-data" tabindex="-1">Chart with API data <a class="header-anchor" href="#chart-with-api-data" aria-label="Permalink to "Chart with API data""></a></h2><p>A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives.</p><p>To prevent this, a simple <code>v-if</code> is the best solution.</p><p>Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"container"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> v-if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">loaded</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> loaded: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">userlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> fetch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/api/userlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartdata </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> userlist</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e) {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-dynamic-styles" tabindex="-1">Chart with dynamic styles <a class="header-anchor" href="#chart-with-dynamic-styles" aria-label="Permalink to "Chart with dynamic styles""></a></h2><p>You can set <code>responsive: true</code> and pass in a styles object which gets applied as inline styles to the outer <code><div></code>. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>You need to set <code>position: relative</code></p></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">style</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">myStyles</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> myStyles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\`\${</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* mutable height */</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}px\`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> position: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'relative'</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="custom-new-charts" tabindex="-1">Custom / New Charts <a class="header-anchor" href="#custom-new-charts" aria-label="Permalink to "Custom / New Charts""></a></h2><p>Sometimes you need to extend the default Chart.js charts. There are a lot of <a href="http://www.chartjs.org/docs/latest/developers/charts.html" target="_blank" rel="noreferrer">examples</a> on how to extend and modify the default charts. Or, you can create your own chart type.</p><p>In <code>vue-chartjs</code>, you can do this pretty much the same way:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 1. Import Chart.js so you can use the global Chart object</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 2. Import the \`createTypedChart()\` method to create the vue component.</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Import needed controller from Chart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Extend one of the default charts</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// http://www.chartjs.org/docs/latest/developers/charts.html</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineWithLineController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* custom magic here */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 4. Generate the vue-chartjs component</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// The first argument is the chart-id, the second the chart type, third is the custom controller</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineWithLineController)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts.</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { CustomLine }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="resources" tabindex="-1">Resources <a class="header-anchor" href="#resources" aria-label="Permalink to "Resources""></a></h2><p>Here are some resources, such as tutorials, on how to use <code>vue-chartjs</code>:</p><ul><li><a href="https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f" target="_blank" rel="noreferrer">Using vue-chartjs with WordPress</a></li><li><a href="https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a" target="_blank" rel="noreferrer">Create stunning Charts with Vue and Chart.js</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part I</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part II</a></li><li><a href="https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/" target="_blank" rel="noreferrer">Build a realtime chart with VueJS and Pusher</a></li></ul>`,23)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/de_guide_examples.md.-BxsMonn.lean.js b/assets/de_guide_examples.md.-BxsMonn.lean.js new file mode 100644 index 00000000..680aa532 --- /dev/null +++ b/assets/de_guide_examples.md.-BxsMonn.lean.js @@ -0,0 +1,128 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"de/guide/examples.md","filePath":"de/guide/examples.md","lastUpdated":1730382198000}'),h={name:"de/guide/examples.md"};function l(p,s,e,k,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="chart-with-props" tabindex="-1">Chart with props <a class="header-anchor" href="#chart-with-props" aria-label="Permalink to "Chart with props""></a></h2><p>Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> required: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-local-data" tabindex="-1">Chart with local data <a class="header-anchor" href="#chart-with-local-data" aria-label="Permalink to "Chart with local data""></a></h2><p>You can handle your chart data directly in your parent component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-api-data" tabindex="-1">Chart with API data <a class="header-anchor" href="#chart-with-api-data" aria-label="Permalink to "Chart with API data""></a></h2><p>A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives.</p><p>To prevent this, a simple <code>v-if</code> is the best solution.</p><p>Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"container"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> v-if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">loaded</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> loaded: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">userlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> fetch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/api/userlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartdata </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> userlist</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e) {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-dynamic-styles" tabindex="-1">Chart with dynamic styles <a class="header-anchor" href="#chart-with-dynamic-styles" aria-label="Permalink to "Chart with dynamic styles""></a></h2><p>You can set <code>responsive: true</code> and pass in a styles object which gets applied as inline styles to the outer <code><div></code>. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>You need to set <code>position: relative</code></p></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">style</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">myStyles</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> myStyles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\`\${</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* mutable height */</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}px\`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> position: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'relative'</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="custom-new-charts" tabindex="-1">Custom / New Charts <a class="header-anchor" href="#custom-new-charts" aria-label="Permalink to "Custom / New Charts""></a></h2><p>Sometimes you need to extend the default Chart.js charts. There are a lot of <a href="http://www.chartjs.org/docs/latest/developers/charts.html" target="_blank" rel="noreferrer">examples</a> on how to extend and modify the default charts. Or, you can create your own chart type.</p><p>In <code>vue-chartjs</code>, you can do this pretty much the same way:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 1. Import Chart.js so you can use the global Chart object</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 2. Import the \`createTypedChart()\` method to create the vue component.</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Import needed controller from Chart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Extend one of the default charts</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// http://www.chartjs.org/docs/latest/developers/charts.html</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineWithLineController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* custom magic here */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 4. Generate the vue-chartjs component</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// The first argument is the chart-id, the second the chart type, third is the custom controller</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineWithLineController)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts.</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { CustomLine }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="resources" tabindex="-1">Resources <a class="header-anchor" href="#resources" aria-label="Permalink to "Resources""></a></h2><p>Here are some resources, such as tutorials, on how to use <code>vue-chartjs</code>:</p><ul><li><a href="https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f" target="_blank" rel="noreferrer">Using vue-chartjs with WordPress</a></li><li><a href="https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a" target="_blank" rel="noreferrer">Create stunning Charts with Vue and Chart.js</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part I</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part II</a></li><li><a href="https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/" target="_blank" rel="noreferrer">Build a realtime chart with VueJS and Pusher</a></li></ul>`,23)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/de_guide_index.md.BVyItP4I.js b/assets/de_guide_index.md.BVyItP4I.js new file mode 100644 index 00000000..589caa4c --- /dev/null +++ b/assets/de_guide_index.md.BVyItP4I.js @@ -0,0 +1,91 @@ +import{_ as i,c as a,a2 as t,o as n}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"de/guide/index.md","filePath":"de/guide/index.md","lastUpdated":1730382198000}'),h={name:"de/guide/index.md"};function l(e,s,p,k,E,r){return n(),a("div",null,s[0]||(s[0]=[t(`<h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started""></a></h1><p><strong>vue-chartjs</strong> is a wrapper for <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noreferrer">Chart.js</a> in Vue. You can easily create reuseable chart components.</p><p>Supports Chart.js v4.</p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to "Introduction""></a></h2><p><code>vue-chartjs</code> lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible.</p><p>It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility.</p><div class="tip custom-block"><p class="custom-block-title">Need an API to fetch data?</p><p>Please consider <a href="https://cube.dev/?ref=eco-vue-chartjs" target="_blank" rel="noreferrer">Cube</a>, an open-source API for data apps.</p></div><h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h2><p>You can install <code>vue-chartjs</code> over <code>yarn</code> or <code>npm</code> or <code>pnpm</code>. However, you also need to add <code>chart.js</code> as a dependency to your project because <code>Chart.js</code> is a peerDependency. This way you can have full control over the versioning of <code>Chart.js</code>.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span></code></pre></div><h2 id="integration" tabindex="-1">Integration <a class="header-anchor" href="#integration" aria-label="Permalink to "Integration""></a></h2><p>Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components.</p><p>The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility.</p><h2 id="creating-your-first-chart" tabindex="-1">Creating your first Chart <a class="header-anchor" href="#creating-your-first-chart" aria-label="Permalink to "Creating your first Chart""></a></h2><p>First, you need to import the base chart.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>Check out the official <a href="http://www.chartjs.org/docs/latest/#creating-a-chart" target="_blank" rel="noreferrer">Chart.js docs</a> to see the object structure you need to provide.</p><p>Just create your own component.</p><p><strong>BarChart.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-chart-id"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [ { data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] } ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> responsive: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Use it in your vue app:</p><p><strong>App.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'App'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="updating-charts" tabindex="-1">Updating Charts <a class="header-anchor" href="#updating-charts" aria-label="Permalink to "Updating Charts""></a></h2><p>Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart options */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>You may get Vue's <code>Target is readonly</code> warnings when you are updating your <code>chartData</code>.</p><p>If your <code>chartData</code> is a <code>read-only</code> reactive value, you can override this warning by using a clone:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">stringify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parse</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(chartData))</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Unless you have a writable computed <code>chartData</code>, you won't be able to use the newer <code>structuredClone</code>, as you'll likely hit the <code>Write operation failed: computed value is readonly</code> error.</p><p>You don't need to use a clone if your <code>chartData</code> is a <a href="https://vuejs.org/guide/essentials/computed#writable-computed" target="_blank" rel="noreferrer">writable computed value</a>.</p><h2 id="access-to-chart-instance" tabindex="-1">Access to Chart instance <a class="header-anchor" href="#access-to-chart-instance" aria-label="Permalink to "Access to Chart instance""></a></h2><p>You can get access to chart instance via template refs.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ref</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bar"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In Vue3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> chartInstance</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.$refs.bar.chart</span></span></code></pre></div><h2 id="accessibility" tabindex="-1">Accessibility <a class="header-anchor" href="#accessibility" aria-label="Permalink to "Accessibility""></a></h2><p>To make your charts accessible to all users, you should label your charts. Please refer also to the official <a href="https://www.chartjs.org/docs/latest/general/accessibility.html" target="_blank" rel="noreferrer">Chart.js Accessibility notes</a>.</p><h3 id="aria-label" tabindex="-1"><code>aria-label</code> <a class="header-anchor" href="#aria-label" aria-label="Permalink to "\`aria-label\`""></a></h3><p>You can directly label a chart by passing an <code>aria-label</code> prop.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-label</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825."</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="aria-describedby" tabindex="-1"><code>aria-describedby</code> <a class="header-anchor" href="#aria-describedby" aria-label="Permalink to "\`aria-describedby\`""></a></h3><p>You can reference to a describing element such as a table which describes the data by using the <code>aria-describedby</code> property.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-describedby</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Sales figures for the years 2022 to 2024.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2022</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2023</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2024</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>987</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>1209</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>825</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="fallback-content" tabindex="-1">Fallback-Content <a class="header-anchor" href="#fallback-content" aria-label="Permalink to "Fallback-Content""></a></h3><p>In case the Browser is not able to render the <code>canvas</code> element, you should consider providing fallback content by using the Slot of each component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Chart couldn't be loaded.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,47)]))}const c=i(h,[["render",l]]);export{g as __pageData,c as default}; diff --git a/assets/de_guide_index.md.BVyItP4I.lean.js b/assets/de_guide_index.md.BVyItP4I.lean.js new file mode 100644 index 00000000..589caa4c --- /dev/null +++ b/assets/de_guide_index.md.BVyItP4I.lean.js @@ -0,0 +1,91 @@ +import{_ as i,c as a,a2 as t,o as n}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"de/guide/index.md","filePath":"de/guide/index.md","lastUpdated":1730382198000}'),h={name:"de/guide/index.md"};function l(e,s,p,k,E,r){return n(),a("div",null,s[0]||(s[0]=[t(`<h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started""></a></h1><p><strong>vue-chartjs</strong> is a wrapper for <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noreferrer">Chart.js</a> in Vue. You can easily create reuseable chart components.</p><p>Supports Chart.js v4.</p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to "Introduction""></a></h2><p><code>vue-chartjs</code> lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible.</p><p>It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility.</p><div class="tip custom-block"><p class="custom-block-title">Need an API to fetch data?</p><p>Please consider <a href="https://cube.dev/?ref=eco-vue-chartjs" target="_blank" rel="noreferrer">Cube</a>, an open-source API for data apps.</p></div><h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h2><p>You can install <code>vue-chartjs</code> over <code>yarn</code> or <code>npm</code> or <code>pnpm</code>. However, you also need to add <code>chart.js</code> as a dependency to your project because <code>Chart.js</code> is a peerDependency. This way you can have full control over the versioning of <code>Chart.js</code>.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span></code></pre></div><h2 id="integration" tabindex="-1">Integration <a class="header-anchor" href="#integration" aria-label="Permalink to "Integration""></a></h2><p>Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components.</p><p>The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility.</p><h2 id="creating-your-first-chart" tabindex="-1">Creating your first Chart <a class="header-anchor" href="#creating-your-first-chart" aria-label="Permalink to "Creating your first Chart""></a></h2><p>First, you need to import the base chart.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>Check out the official <a href="http://www.chartjs.org/docs/latest/#creating-a-chart" target="_blank" rel="noreferrer">Chart.js docs</a> to see the object structure you need to provide.</p><p>Just create your own component.</p><p><strong>BarChart.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-chart-id"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [ { data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] } ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> responsive: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Use it in your vue app:</p><p><strong>App.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'App'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="updating-charts" tabindex="-1">Updating Charts <a class="header-anchor" href="#updating-charts" aria-label="Permalink to "Updating Charts""></a></h2><p>Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart options */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>You may get Vue's <code>Target is readonly</code> warnings when you are updating your <code>chartData</code>.</p><p>If your <code>chartData</code> is a <code>read-only</code> reactive value, you can override this warning by using a clone:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">stringify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parse</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(chartData))</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Unless you have a writable computed <code>chartData</code>, you won't be able to use the newer <code>structuredClone</code>, as you'll likely hit the <code>Write operation failed: computed value is readonly</code> error.</p><p>You don't need to use a clone if your <code>chartData</code> is a <a href="https://vuejs.org/guide/essentials/computed#writable-computed" target="_blank" rel="noreferrer">writable computed value</a>.</p><h2 id="access-to-chart-instance" tabindex="-1">Access to Chart instance <a class="header-anchor" href="#access-to-chart-instance" aria-label="Permalink to "Access to Chart instance""></a></h2><p>You can get access to chart instance via template refs.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ref</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bar"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In Vue3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> chartInstance</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.$refs.bar.chart</span></span></code></pre></div><h2 id="accessibility" tabindex="-1">Accessibility <a class="header-anchor" href="#accessibility" aria-label="Permalink to "Accessibility""></a></h2><p>To make your charts accessible to all users, you should label your charts. Please refer also to the official <a href="https://www.chartjs.org/docs/latest/general/accessibility.html" target="_blank" rel="noreferrer">Chart.js Accessibility notes</a>.</p><h3 id="aria-label" tabindex="-1"><code>aria-label</code> <a class="header-anchor" href="#aria-label" aria-label="Permalink to "\`aria-label\`""></a></h3><p>You can directly label a chart by passing an <code>aria-label</code> prop.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-label</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825."</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="aria-describedby" tabindex="-1"><code>aria-describedby</code> <a class="header-anchor" href="#aria-describedby" aria-label="Permalink to "\`aria-describedby\`""></a></h3><p>You can reference to a describing element such as a table which describes the data by using the <code>aria-describedby</code> property.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-describedby</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Sales figures for the years 2022 to 2024.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2022</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2023</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2024</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>987</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>1209</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>825</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="fallback-content" tabindex="-1">Fallback-Content <a class="header-anchor" href="#fallback-content" aria-label="Permalink to "Fallback-Content""></a></h3><p>In case the Browser is not able to render the <code>canvas</code> element, you should consider providing fallback content by using the Slot of each component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Chart couldn't be loaded.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,47)]))}const c=i(h,[["render",l]]);export{g as __pageData,c as default}; diff --git a/assets/de_index.md.3FrGuMZ2.js b/assets/de_index.md.3FrGuMZ2.js new file mode 100644 index 00000000..cbc004ef --- /dev/null +++ b/assets/de_index.md.3FrGuMZ2.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.CdbxnhrM.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"📈 vue-chartjs","tagline":"⚡ Einfache und schöne Diagramme mit Chart.js und Vue.js","actions":[{"theme":"brand","text":"Get Started →","link":"/guide/"}]},"features":[{"icon":"🙌","title":"Einfach","details":"Einfach für beginner sowie fortgeschrittene"},{"icon":"💪","title":"Erweiterbar","details":"Simple to use, easy to extend"},{"icon":"💯","title":"Mächtig","details":"With the full power of chart.js 💯"}]},"headers":[],"relativePath":"de/index.md","filePath":"de/index.md","lastUpdated":1730382198000}'),i={name:"de/index.md"};function n(r,s,o,d,c,l){return a(),t("div")}const m=e(i,[["render",n]]);export{f as __pageData,m as default}; diff --git a/assets/de_index.md.3FrGuMZ2.lean.js b/assets/de_index.md.3FrGuMZ2.lean.js new file mode 100644 index 00000000..cbc004ef --- /dev/null +++ b/assets/de_index.md.3FrGuMZ2.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.CdbxnhrM.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"📈 vue-chartjs","tagline":"⚡ Einfache und schöne Diagramme mit Chart.js und Vue.js","actions":[{"theme":"brand","text":"Get Started →","link":"/guide/"}]},"features":[{"icon":"🙌","title":"Einfach","details":"Einfach für beginner sowie fortgeschrittene"},{"icon":"💪","title":"Erweiterbar","details":"Simple to use, easy to extend"},{"icon":"💯","title":"Mächtig","details":"With the full power of chart.js 💯"}]},"headers":[],"relativePath":"de/index.md","filePath":"de/index.md","lastUpdated":1730382198000}'),i={name:"de/index.md"};function n(r,s,o,d,c,l){return a(),t("div")}const m=e(i,[["render",n]]);export{f as __pageData,m as default}; diff --git a/assets/de_migration-guides_index.md.CZ9EWhAj.js b/assets/de_migration-guides_index.md.CZ9EWhAj.js new file mode 100644 index 00000000..2d6be6f4 --- /dev/null +++ b/assets/de_migration-guides_index.md.CZ9EWhAj.js @@ -0,0 +1 @@ +import{_ as t,c as a,a2 as i,o}from"./chunks/framework.CdbxnhrM.js";const m=JSON.parse('{"title":"Migration","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"de/migration-guides/index.md","filePath":"de/migration-guides/index.md","lastUpdated":1730382198000}'),n={name:"de/migration-guides/index.md"};function r(d,e,s,l,h,c){return o(),a("div",null,e[0]||(e[0]=[i('<h1 id="migration" tabindex="-1">Migration <a class="header-anchor" href="#migration" aria-label="Permalink to "Migration""></a></h1><p>Over the time <code>vue-chartjs</code> has changed a lot. As the web and frontend technology has changed. To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides.</p><ul><li><a href="/migration-guides/v5.html">v4 -> v5</a></li><li><a href="/migration-guides/v4.html">v3 -> v4</a></li><li><a href="/migration-guides/vue-chart-3.html">vue-chart-3</a></li></ul>',3)]))}const u=t(n,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/de_migration-guides_index.md.CZ9EWhAj.lean.js b/assets/de_migration-guides_index.md.CZ9EWhAj.lean.js new file mode 100644 index 00000000..2d6be6f4 --- /dev/null +++ b/assets/de_migration-guides_index.md.CZ9EWhAj.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,a2 as i,o}from"./chunks/framework.CdbxnhrM.js";const m=JSON.parse('{"title":"Migration","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"de/migration-guides/index.md","filePath":"de/migration-guides/index.md","lastUpdated":1730382198000}'),n={name:"de/migration-guides/index.md"};function r(d,e,s,l,h,c){return o(),a("div",null,e[0]||(e[0]=[i('<h1 id="migration" tabindex="-1">Migration <a class="header-anchor" href="#migration" aria-label="Permalink to "Migration""></a></h1><p>Over the time <code>vue-chartjs</code> has changed a lot. As the web and frontend technology has changed. To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides.</p><ul><li><a href="/migration-guides/v5.html">v4 -> v5</a></li><li><a href="/migration-guides/v4.html">v3 -> v4</a></li><li><a href="/migration-guides/vue-chart-3.html">vue-chart-3</a></li></ul>',3)]))}const u=t(n,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/de_migration-guides_v4.md.LYrTDWaL.js b/assets/de_migration-guides_v4.md.LYrTDWaL.js new file mode 100644 index 00000000..3f85f824 --- /dev/null +++ b/assets/de_migration-guides_v4.md.LYrTDWaL.js @@ -0,0 +1,93 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Migration from v3 to v4","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"de/migration-guides/v4.md","filePath":"de/migration-guides/v4.md","lastUpdated":1730382198000}'),h={name:"de/migration-guides/v4.md"};function l(p,s,e,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="migration-from-v3-to-v4" tabindex="-1">Migration from v3 to v4 <a class="header-anchor" href="#migration-from-v3-to-v4" aria-label="Permalink to "Migration from v3 to v4""></a></h1><p>With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.</p><p>v4 is fully compatible with Chart.js v3.</p><h2 id="tree-shaking" tabindex="-1">Tree-shaking <a class="header-anchor" href="#tree-shaking" aria-label="Permalink to "Tree-shaking""></a></h2><p>v4 of this library, <a href="https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation" target="_blank" rel="noreferrer">just like Chart.js v3</a>, is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use.</p><p>For a list of all the available items to import, see <a href="https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc" target="_blank" rel="noreferrer">Chart.js docs</a>.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — lazy way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js/auto'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — tree-shakable way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span></code></pre></div><p>Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size.</p><p>Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Pie } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, ArcElement, CategoryScale)</span></span></code></pre></div><h2 id="changing-the-creation-of-charts" tabindex="-1">Changing the creation of Charts <a class="header-anchor" href="#changing-the-creation-of-charts" aria-label="Permalink to "Changing the creation of Charts""></a></h2><p>In v3, you needed to import the component, and then either use extends or mixins and add it.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// BarChart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Bar,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Overwriting base render method with actual data.</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'GitHub Commits'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'DataPage'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="new-reactivity-system" tabindex="-1">New reactivity system <a class="header-anchor" href="#new-reactivity-system" aria-label="Permalink to "New reactivity system""></a></h2><p>v3 does not update or re-render the chart if new data is passed. You needed to use <code>reactiveProp</code> and <code>reactiveData</code> mixins for that.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Line, mixins } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Line,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mixins: [mixins.reactiveProp],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'chartData'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'options'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartData, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.options)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed.</p><p>v4:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,29)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/de_migration-guides_v4.md.LYrTDWaL.lean.js b/assets/de_migration-guides_v4.md.LYrTDWaL.lean.js new file mode 100644 index 00000000..3f85f824 --- /dev/null +++ b/assets/de_migration-guides_v4.md.LYrTDWaL.lean.js @@ -0,0 +1,93 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Migration from v3 to v4","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"de/migration-guides/v4.md","filePath":"de/migration-guides/v4.md","lastUpdated":1730382198000}'),h={name:"de/migration-guides/v4.md"};function l(p,s,e,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="migration-from-v3-to-v4" tabindex="-1">Migration from v3 to v4 <a class="header-anchor" href="#migration-from-v3-to-v4" aria-label="Permalink to "Migration from v3 to v4""></a></h1><p>With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.</p><p>v4 is fully compatible with Chart.js v3.</p><h2 id="tree-shaking" tabindex="-1">Tree-shaking <a class="header-anchor" href="#tree-shaking" aria-label="Permalink to "Tree-shaking""></a></h2><p>v4 of this library, <a href="https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation" target="_blank" rel="noreferrer">just like Chart.js v3</a>, is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use.</p><p>For a list of all the available items to import, see <a href="https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc" target="_blank" rel="noreferrer">Chart.js docs</a>.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — lazy way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js/auto'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — tree-shakable way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span></code></pre></div><p>Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size.</p><p>Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Pie } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, ArcElement, CategoryScale)</span></span></code></pre></div><h2 id="changing-the-creation-of-charts" tabindex="-1">Changing the creation of Charts <a class="header-anchor" href="#changing-the-creation-of-charts" aria-label="Permalink to "Changing the creation of Charts""></a></h2><p>In v3, you needed to import the component, and then either use extends or mixins and add it.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// BarChart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Bar,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Overwriting base render method with actual data.</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'GitHub Commits'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'DataPage'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="new-reactivity-system" tabindex="-1">New reactivity system <a class="header-anchor" href="#new-reactivity-system" aria-label="Permalink to "New reactivity system""></a></h2><p>v3 does not update or re-render the chart if new data is passed. You needed to use <code>reactiveProp</code> and <code>reactiveData</code> mixins for that.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Line, mixins } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Line,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mixins: [mixins.reactiveProp],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'chartData'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'options'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartData, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.options)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed.</p><p>v4:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,29)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/de_migration-guides_v5.md.CG9R7lTX.js b/assets/de_migration-guides_v5.md.CG9R7lTX.js new file mode 100644 index 00000000..94eb5a46 --- /dev/null +++ b/assets/de_migration-guides_v5.md.CG9R7lTX.js @@ -0,0 +1,4 @@ +import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.CdbxnhrM.js";const u=JSON.parse('{"title":"Migration from v4 to v5","description":"","frontmatter":{},"headers":[],"relativePath":"de/migration-guides/v5.md","filePath":"de/migration-guides/v5.md","lastUpdated":1730382198000}'),o={name:"de/migration-guides/v5.md"};function i(n,e,l,h,d,c){return s(),t("div",null,e[0]||(e[0]=[r(`<h1 id="migration-from-v4-to-v5" tabindex="-1">Migration from v4 to v5 <a class="header-anchor" href="#migration-from-v4-to-v5" aria-label="Permalink to "Migration from v4 to v5""></a></h1><p>With v5, this library introduces a number of breaking changes</p><h2 id="esm" tabindex="-1">ESM <a class="header-anchor" href="#esm" aria-label="Permalink to "ESM""></a></h2><h3 id="v5-0" tabindex="-1">v5.0 <a class="header-anchor" href="#v5-0" aria-label="Permalink to "v5.0""></a></h3><p>Chart.js v4 and vue-chartjs v5 are <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM-only packages</a>. To use them in your project, it also should be ESM:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// package.json</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"module"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>If you are experiencing this problem with Jest, you should follow <a href="https://jestjs.io/docs/ecmascript-modules" target="_blank" rel="noreferrer">this doc</a> to enable ESM support. Or, we can recommend you migrate to <a href="https://vitest.dev/" target="_blank" rel="noreferrer">Vitest</a>. Vitest has ESM support out of the box and <a href="https://vitest.dev/guide/migration.html#migrating-from-jest" target="_blank" rel="noreferrer">has almost the same API as Jest</a>. <a href="https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef" target="_blank" rel="noreferrer">Here is our example of migration</a>.</p><h3 id="v5-1" tabindex="-1">v5.1 <a class="header-anchor" href="#v5-1" aria-label="Permalink to "v5.1""></a></h3><p>Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support.</p><h2 id="api-changes" tabindex="-1">API changes <a class="header-anchor" href="#api-changes" aria-label="Permalink to "API changes""></a></h2><ul><li><code>chartData</code> props were renamed to <code>data</code></li><li><code>chartOptions</code> props were renamed to <code>options</code></li><li>unknown props will fall through to the canvas element.</li><li><code>generateChart</code> were refactored and renamed to <code>createTypedChart</code></li><li>Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x.</li></ul>`,11)]))}const m=a(o,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/de_migration-guides_v5.md.CG9R7lTX.lean.js b/assets/de_migration-guides_v5.md.CG9R7lTX.lean.js new file mode 100644 index 00000000..94eb5a46 --- /dev/null +++ b/assets/de_migration-guides_v5.md.CG9R7lTX.lean.js @@ -0,0 +1,4 @@ +import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.CdbxnhrM.js";const u=JSON.parse('{"title":"Migration from v4 to v5","description":"","frontmatter":{},"headers":[],"relativePath":"de/migration-guides/v5.md","filePath":"de/migration-guides/v5.md","lastUpdated":1730382198000}'),o={name:"de/migration-guides/v5.md"};function i(n,e,l,h,d,c){return s(),t("div",null,e[0]||(e[0]=[r(`<h1 id="migration-from-v4-to-v5" tabindex="-1">Migration from v4 to v5 <a class="header-anchor" href="#migration-from-v4-to-v5" aria-label="Permalink to "Migration from v4 to v5""></a></h1><p>With v5, this library introduces a number of breaking changes</p><h2 id="esm" tabindex="-1">ESM <a class="header-anchor" href="#esm" aria-label="Permalink to "ESM""></a></h2><h3 id="v5-0" tabindex="-1">v5.0 <a class="header-anchor" href="#v5-0" aria-label="Permalink to "v5.0""></a></h3><p>Chart.js v4 and vue-chartjs v5 are <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM-only packages</a>. To use them in your project, it also should be ESM:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// package.json</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"module"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>If you are experiencing this problem with Jest, you should follow <a href="https://jestjs.io/docs/ecmascript-modules" target="_blank" rel="noreferrer">this doc</a> to enable ESM support. Or, we can recommend you migrate to <a href="https://vitest.dev/" target="_blank" rel="noreferrer">Vitest</a>. Vitest has ESM support out of the box and <a href="https://vitest.dev/guide/migration.html#migrating-from-jest" target="_blank" rel="noreferrer">has almost the same API as Jest</a>. <a href="https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef" target="_blank" rel="noreferrer">Here is our example of migration</a>.</p><h3 id="v5-1" tabindex="-1">v5.1 <a class="header-anchor" href="#v5-1" aria-label="Permalink to "v5.1""></a></h3><p>Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support.</p><h2 id="api-changes" tabindex="-1">API changes <a class="header-anchor" href="#api-changes" aria-label="Permalink to "API changes""></a></h2><ul><li><code>chartData</code> props were renamed to <code>data</code></li><li><code>chartOptions</code> props were renamed to <code>options</code></li><li>unknown props will fall through to the canvas element.</li><li><code>generateChart</code> were refactored and renamed to <code>createTypedChart</code></li><li>Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x.</li></ul>`,11)]))}const m=a(o,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/de_migration-guides_vue-chart-3.md.KaG0Kt4w.js b/assets/de_migration-guides_vue-chart-3.md.KaG0Kt4w.js new file mode 100644 index 00000000..f5d6019f --- /dev/null +++ b/assets/de_migration-guides_vue-chart-3.md.KaG0Kt4w.js @@ -0,0 +1,9 @@ +import{_ as s,c as i,a2 as t,o as e}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Migration from vue-chart-3","description":"","frontmatter":{},"headers":[],"relativePath":"de/migration-guides/vue-chart-3.md","filePath":"de/migration-guides/vue-chart-3.md","lastUpdated":1730382198000}'),n={name:"de/migration-guides/vue-chart-3.md"};function h(l,a,p,r,o,k){return e(),i("div",null,a[0]||(a[0]=[t(`<h1 id="migration-from-vue-chart-3" tabindex="-1">Migration from vue-chart-3 <a class="header-anchor" href="#migration-from-vue-chart-3" aria-label="Permalink to "Migration from vue-chart-3""></a></h1><h2 id="uninstall-vue-chart-3" tabindex="-1">Uninstall vue-chart-3 <a class="header-anchor" href="#uninstall-vue-chart-3" aria-label="Permalink to "Uninstall vue-chart-3""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> uninstall</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span></code></pre></div><h2 id="install-vue-chartjs" tabindex="-1">Install vue-chartjs <a class="header-anchor" href="#install-vue-chartjs" aria-label="Permalink to "Install vue-chartjs""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span></code></pre></div><h2 id="change-component-import-path" tabindex="-1">Change component import path <a class="header-anchor" href="#change-component-import-path" aria-label="Permalink to "Change component import path""></a></h2><p>For Vue 2.7 and Vue 3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>For Vue 2 (<2.7) projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs/legacy'</span></span></code></pre></div><h2 id="rename-components" tabindex="-1">Rename components <a class="header-anchor" href="#rename-components" aria-label="Permalink to "Rename components""></a></h2><ul><li>BarChart to Bar</li><li>DoughnutChart to Doughnut</li><li>LineChart to Line</li><li>PieChart to Pie</li><li>PolarAreaChart to PolarArea</li><li>RadarChart to Radar</li><li>BubbleChart to Bubble</li><li>ScatterChart to Scatter</li></ul><h2 id="rename-props" tabindex="-1">Rename props <a class="header-anchor" href="#rename-props" aria-label="Permalink to "Rename props""></a></h2><ul><li>options to chartOptions</li></ul>`,14)]))}const u=s(n,[["render",h]]);export{d as __pageData,u as default}; diff --git a/assets/de_migration-guides_vue-chart-3.md.KaG0Kt4w.lean.js b/assets/de_migration-guides_vue-chart-3.md.KaG0Kt4w.lean.js new file mode 100644 index 00000000..f5d6019f --- /dev/null +++ b/assets/de_migration-guides_vue-chart-3.md.KaG0Kt4w.lean.js @@ -0,0 +1,9 @@ +import{_ as s,c as i,a2 as t,o as e}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Migration from vue-chart-3","description":"","frontmatter":{},"headers":[],"relativePath":"de/migration-guides/vue-chart-3.md","filePath":"de/migration-guides/vue-chart-3.md","lastUpdated":1730382198000}'),n={name:"de/migration-guides/vue-chart-3.md"};function h(l,a,p,r,o,k){return e(),i("div",null,a[0]||(a[0]=[t(`<h1 id="migration-from-vue-chart-3" tabindex="-1">Migration from vue-chart-3 <a class="header-anchor" href="#migration-from-vue-chart-3" aria-label="Permalink to "Migration from vue-chart-3""></a></h1><h2 id="uninstall-vue-chart-3" tabindex="-1">Uninstall vue-chart-3 <a class="header-anchor" href="#uninstall-vue-chart-3" aria-label="Permalink to "Uninstall vue-chart-3""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> uninstall</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span></code></pre></div><h2 id="install-vue-chartjs" tabindex="-1">Install vue-chartjs <a class="header-anchor" href="#install-vue-chartjs" aria-label="Permalink to "Install vue-chartjs""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span></code></pre></div><h2 id="change-component-import-path" tabindex="-1">Change component import path <a class="header-anchor" href="#change-component-import-path" aria-label="Permalink to "Change component import path""></a></h2><p>For Vue 2.7 and Vue 3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>For Vue 2 (<2.7) projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs/legacy'</span></span></code></pre></div><h2 id="rename-components" tabindex="-1">Rename components <a class="header-anchor" href="#rename-components" aria-label="Permalink to "Rename components""></a></h2><ul><li>BarChart to Bar</li><li>DoughnutChart to Doughnut</li><li>LineChart to Line</li><li>PieChart to Pie</li><li>PolarAreaChart to PolarArea</li><li>RadarChart to Radar</li><li>BubbleChart to Bubble</li><li>ScatterChart to Scatter</li></ul><h2 id="rename-props" tabindex="-1">Rename props <a class="header-anchor" href="#rename-props" aria-label="Permalink to "Rename props""></a></h2><ul><li>options to chartOptions</li></ul>`,14)]))}const u=s(n,[["render",h]]);export{d as __pageData,u as default}; diff --git a/assets/donate.svg b/assets/donate.svg deleted file mode 100644 index e7f00358..00000000 --- a/assets/donate.svg +++ /dev/null @@ -1,2 +0,0 @@ - -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="74" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="74" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h25v20H0z"/><path fill="#179BD7" d="M25 0h49v20H25z"/><path fill="url(#b)" d="M0 0h74v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><image x="5" y="3" width="14" height="14" xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuWbvuWxgl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUwMHB4IiBoZWlnaHQ9IjUwMHB4IiB2aWV3Qm94PSIwIDAgNTAwIDUwMCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTAwIDUwMCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8cGF0aCBmaWxsPSIjMTc5QkQ3IiBkPSJNNDExLjg5OSwxMzQuMzI4TDQxMS44OTksMTM0LjMyOEw0MTEuODk5LDEzNC4zMjhjLTAuNDM1LDIuNzgyLTAuOTMzLDUuNjI2LTEuNDkyLDguNTQ4DQoJCWMtMTkuMjI2LDk4LjcwOS04NS4wMDEsMTMyLjgwOS0xNjkuMDA3LDEzMi44MDloLTQyLjc3MmMtMTAuMjczLDAtMTguOTMxLDcuNDYtMjAuNTMxLDE3LjU5NGwwLDBsMCwwbC0yMS44OTksMTM4Ljg4Ng0KCQlsLTYuMjAxLDM5LjM2OWMtMS4wNDEsNi42NTIsNC4wODgsMTIuNjUxLDEwLjgwMiwxMi42NTFoNzUuODYyYzguOTgzLDAsMTYuNjE1LTYuNTI4LDE4LjAyOS0xNS4zODdsMC43NDYtMy44NTRsMTQuMjgzLTkwLjY0Mw0KCQlsMC45MTctNC45NzRjMS4zOTktOC44OSw5LjA0Ni0xNS40MTgsMTguMDI5LTE1LjQxOGgxMS4zNDZjNzMuNSwwLDEzMS4wMzctMjkuODQxLDE0Ny44NTQtMTE2LjE5NA0KCQljNy4wMjUtMzYuMDc0LDMuMzg4LTY2LjE5NS0xNS4yLTg3LjM3OUM0MjcuMDM3LDE0My45NDksNDIwLjA1OSwxMzguNjQ5LDQxMS44OTksMTM0LjMyOHoiLz4NCgk8cGF0aCBmaWxsPSIjMjIyRDY1IiBkPSJNMzkxLjc4NywxMjYuMzA4Yy0yLjkzOC0wLjg1NS01Ljk2OC0xLjYzMi05LjA3Ny0yLjMzMWMtMy4xMjQtMC42ODQtNi4zMjYtMS4yOS05LjYyMS0xLjgxOA0KCQljLTExLjUzMi0xLjg2NS0yNC4xNjgtMi43NTEtMzcuNzA2LTIuNzUxSDIyMS4xMTdjLTIuODEzLDAtNS40ODYsMC42MzctNy44OCwxLjc4N2MtNS4yNjksMi41MzMtOS4xODUsNy41MjItMTAuMTM0LDEzLjYzMQ0KCQlsLTI0LjMwOCwxNTMuOTYybC0wLjY5OSw0LjQ5MmMxLjYwMS0xMC4xMzQsMTAuMjU4LTE3LjU5NCwyMC41MzEtMTcuNTk0SDI0MS40Yzg0LjAwNiwwLDE0OS43ODEtMzQuMTE1LDE2OS4wMDctMTMyLjgwOQ0KCQljMC41NzUtMi45MjIsMS4wNTctNS43NjYsMS40OTItOC41NDhjLTQuODY1LTIuNTgtMTAuMTM0LTQuNzg3LTE1LjgwNy02LjY2OEMzOTQuNjk0LDEyNy4xOTQsMzkzLjI0OCwxMjYuNzQzLDM5MS43ODcsMTI2LjMwOHoiLz4NCgk8cGF0aCBmaWxsPSIjMjUzQjgwIiBkPSJNMjAzLjEwNCwxMzQuODI1YzAuOTQ4LTYuMTA4LDQuODY1LTExLjA5NywxMC4xMzQtMTMuNjE1YzIuNDA5LTEuMTUsNS4wNjctMS43ODcsNy44OC0xLjc4N2gxMTQuMjY3DQoJCWMxMy41MzcsMCwyNi4xNzMsMC44ODYsMzcuNzA2LDIuNzUxYzMuMjk1LDAuNTI4LDYuNDk3LDEuMTM1LDkuNjIxLDEuODE4YzMuMTA4LDAuNjk5LDYuMTM5LDEuNDc3LDkuMDc3LDIuMzMxDQoJCWMxLjQ2MSwwLjQzNSwyLjkwNiwwLjg4Niw0LjMyMSwxLjMzN2M1LjY3MywxLjg4MSwxMC45NDIsNC4xMDMsMTUuODA3LDYuNjY4YzUuNzItMzYuNDc4LTAuMDQ3LTYxLjMxNC0xOS43Ny04My44MDQNCgkJYy0yMS43NDQtMjQuNzU5LTYwLjk4OC0zNS4zNTktMTExLjIwNS0zNS4zNTlIMTM1LjE1M2MtMTAuMjU4LDAtMTkuMDA4LDcuNDYtMjAuNTk0LDE3LjYwOUw1My44MzYsNDE3LjY4DQoJCWMtMS4xOTcsNy42MTYsNC42NzgsMTQuNDg1LDEyLjM1NiwxNC40ODVoOTAuMDA1bDIyLjU5OC0xNDMuMzc4TDIwMy4xMDQsMTM0LjgyNXoiLz4NCjwvZz4NCjwvc3ZnPg0K"/><text x="19.5" y="15" fill="#010101" fill-opacity=".3"></text><text x="19.5" y="14"></text><text x="48.5" y="15" fill="#010101" fill-opacity=".3">Donate</text><text x="48.5" y="14">Donate</text></g></svg> diff --git a/assets/doughnut.png b/assets/doughnut.png deleted file mode 100755 index 07977753..00000000 Binary files a/assets/doughnut.png and /dev/null differ diff --git a/assets/examples_index.md.DOTJebGT.js b/assets/examples_index.md.DOTJebGT.js new file mode 100644 index 00000000..4481e594 --- /dev/null +++ b/assets/examples_index.md.DOTJebGT.js @@ -0,0 +1 @@ +import{_ as r,c as a,a2 as t,o as s}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md","lastUpdated":1730382198000}'),l={name:"examples/index.md"};function i(n,e,o,h,u,c){return s(),a("div",null,e[0]||(e[0]=[t('<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="vue-3-charts" tabindex="-1">Vue 3 charts <a class="header-anchor" href="#vue-3-charts" aria-label="Permalink to "Vue 3 charts""></a></h2><ul><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive" target="_blank" rel="noreferrer">Bar with reactive data</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom" target="_blank" rel="noreferrer">Custom chart</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events" target="_blank" rel="noreferrer">Events</a></li></ul><h2 id="vue-2-charts-vue-chartjs-v4" tabindex="-1">Vue 2 charts (vue-chartjs v4) <a class="header-anchor" href="#vue-2-charts-vue-chartjs-v4" aria-label="Permalink to "Vue 2 charts (vue-chartjs v4)""></a></h2><ul><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li></ul>',5)]))}const p=r(l,[["render",i]]);export{d as __pageData,p as default}; diff --git a/assets/examples_index.md.DOTJebGT.lean.js b/assets/examples_index.md.DOTJebGT.lean.js new file mode 100644 index 00000000..4481e594 --- /dev/null +++ b/assets/examples_index.md.DOTJebGT.lean.js @@ -0,0 +1 @@ +import{_ as r,c as a,a2 as t,o as s}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md","lastUpdated":1730382198000}'),l={name:"examples/index.md"};function i(n,e,o,h,u,c){return s(),a("div",null,e[0]||(e[0]=[t('<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="vue-3-charts" tabindex="-1">Vue 3 charts <a class="header-anchor" href="#vue-3-charts" aria-label="Permalink to "Vue 3 charts""></a></h2><ul><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive" target="_blank" rel="noreferrer">Bar with reactive data</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom" target="_blank" rel="noreferrer">Custom chart</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events" target="_blank" rel="noreferrer">Events</a></li></ul><h2 id="vue-2-charts-vue-chartjs-v4" tabindex="-1">Vue 2 charts (vue-chartjs v4) <a class="header-anchor" href="#vue-2-charts-vue-chartjs-v4" aria-label="Permalink to "Vue 2 charts (vue-chartjs v4)""></a></h2><ul><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li></ul>',5)]))}const p=r(l,[["render",i]]);export{d as __pageData,p as default}; diff --git a/assets/guide_examples.md.G49JvuCM.js b/assets/guide_examples.md.G49JvuCM.js new file mode 100644 index 00000000..59ad6b3f --- /dev/null +++ b/assets/guide_examples.md.G49JvuCM.js @@ -0,0 +1,128 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"guide/examples.md","filePath":"guide/examples.md","lastUpdated":1730382198000}'),h={name:"guide/examples.md"};function l(p,s,e,k,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="chart-with-props" tabindex="-1">Chart with props <a class="header-anchor" href="#chart-with-props" aria-label="Permalink to "Chart with props""></a></h2><p>Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> required: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-local-data" tabindex="-1">Chart with local data <a class="header-anchor" href="#chart-with-local-data" aria-label="Permalink to "Chart with local data""></a></h2><p>You can handle your chart data directly in your parent component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-api-data" tabindex="-1">Chart with API data <a class="header-anchor" href="#chart-with-api-data" aria-label="Permalink to "Chart with API data""></a></h2><p>A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives.</p><p>To prevent this, a simple <code>v-if</code> is the best solution.</p><p>Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"container"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> v-if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">loaded</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> loaded: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">userlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> fetch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/api/userlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartdata </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> userlist</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e) {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-dynamic-styles" tabindex="-1">Chart with dynamic styles <a class="header-anchor" href="#chart-with-dynamic-styles" aria-label="Permalink to "Chart with dynamic styles""></a></h2><p>You can set <code>responsive: true</code> and pass in a styles object which gets applied as inline styles to the outer <code><div></code>. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>You need to set <code>position: relative</code></p></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">style</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">myStyles</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> myStyles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\`\${</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* mutable height */</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}px\`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> position: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'relative'</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="custom-new-charts" tabindex="-1">Custom / New Charts <a class="header-anchor" href="#custom-new-charts" aria-label="Permalink to "Custom / New Charts""></a></h2><p>Sometimes you need to extend the default Chart.js charts. There are a lot of <a href="http://www.chartjs.org/docs/latest/developers/charts.html" target="_blank" rel="noreferrer">examples</a> on how to extend and modify the default charts. Or, you can create your own chart type.</p><p>In <code>vue-chartjs</code>, you can do this pretty much the same way:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 1. Import Chart.js so you can use the global Chart object</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 2. Import the \`createTypedChart()\` method to create the vue component.</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Import needed controller from Chart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Extend one of the default charts</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// http://www.chartjs.org/docs/latest/developers/charts.html</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineWithLineController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* custom magic here */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 4. Generate the vue-chartjs component</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// The first argument is the chart-id, the second the chart type, third is the custom controller</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineWithLineController)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts.</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { CustomLine }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="resources" tabindex="-1">Resources <a class="header-anchor" href="#resources" aria-label="Permalink to "Resources""></a></h2><p>Here are some resources, such as tutorials, on how to use <code>vue-chartjs</code>:</p><ul><li><a href="https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f" target="_blank" rel="noreferrer">Using vue-chartjs with WordPress</a></li><li><a href="https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a" target="_blank" rel="noreferrer">Create stunning Charts with Vue and Chart.js</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part I</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part II</a></li><li><a href="https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/" target="_blank" rel="noreferrer">Build a realtime chart with VueJS and Pusher</a></li></ul>`,23)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/guide_examples.md.G49JvuCM.lean.js b/assets/guide_examples.md.G49JvuCM.lean.js new file mode 100644 index 00000000..59ad6b3f --- /dev/null +++ b/assets/guide_examples.md.G49JvuCM.lean.js @@ -0,0 +1,128 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Examples","description":"","frontmatter":{},"headers":[],"relativePath":"guide/examples.md","filePath":"guide/examples.md","lastUpdated":1730382198000}'),h={name:"guide/examples.md"};function l(p,s,e,k,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="chart-with-props" tabindex="-1">Chart with props <a class="header-anchor" href="#chart-with-props" aria-label="Permalink to "Chart with props""></a></h2><p>Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> required: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-local-data" tabindex="-1">Chart with local data <a class="header-anchor" href="#chart-with-local-data" aria-label="Permalink to "Chart with local data""></a></h2><p>You can handle your chart data directly in your parent component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-api-data" tabindex="-1">Chart with API data <a class="header-anchor" href="#chart-with-api-data" aria-label="Permalink to "Chart with API data""></a></h2><p>A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives.</p><p>To prevent this, a simple <code>v-if</code> is the best solution.</p><p>Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"container"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> v-if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">loaded</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> loaded: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">userlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> fetch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/api/userlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartdata </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> userlist</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e) {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-dynamic-styles" tabindex="-1">Chart with dynamic styles <a class="header-anchor" href="#chart-with-dynamic-styles" aria-label="Permalink to "Chart with dynamic styles""></a></h2><p>You can set <code>responsive: true</code> and pass in a styles object which gets applied as inline styles to the outer <code><div></code>. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>You need to set <code>position: relative</code></p></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">style</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">myStyles</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> myStyles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\`\${</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* mutable height */</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}px\`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> position: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'relative'</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="custom-new-charts" tabindex="-1">Custom / New Charts <a class="header-anchor" href="#custom-new-charts" aria-label="Permalink to "Custom / New Charts""></a></h2><p>Sometimes you need to extend the default Chart.js charts. There are a lot of <a href="http://www.chartjs.org/docs/latest/developers/charts.html" target="_blank" rel="noreferrer">examples</a> on how to extend and modify the default charts. Or, you can create your own chart type.</p><p>In <code>vue-chartjs</code>, you can do this pretty much the same way:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 1. Import Chart.js so you can use the global Chart object</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 2. Import the \`createTypedChart()\` method to create the vue component.</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Import needed controller from Chart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Extend one of the default charts</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// http://www.chartjs.org/docs/latest/developers/charts.html</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineWithLineController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* custom magic here */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 4. Generate the vue-chartjs component</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// The first argument is the chart-id, the second the chart type, third is the custom controller</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineWithLineController)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts.</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { CustomLine }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="resources" tabindex="-1">Resources <a class="header-anchor" href="#resources" aria-label="Permalink to "Resources""></a></h2><p>Here are some resources, such as tutorials, on how to use <code>vue-chartjs</code>:</p><ul><li><a href="https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f" target="_blank" rel="noreferrer">Using vue-chartjs with WordPress</a></li><li><a href="https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a" target="_blank" rel="noreferrer">Create stunning Charts with Vue and Chart.js</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part I</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part II</a></li><li><a href="https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/" target="_blank" rel="noreferrer">Build a realtime chart with VueJS and Pusher</a></li></ul>`,23)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/guide_index.md.BghNT2ZM.js b/assets/guide_index.md.BghNT2ZM.js new file mode 100644 index 00000000..35852d9d --- /dev/null +++ b/assets/guide_index.md.BghNT2ZM.js @@ -0,0 +1,91 @@ +import{_ as i,c as a,a2 as t,o as n}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md","lastUpdated":1730382198000}'),h={name:"guide/index.md"};function l(e,s,p,k,E,r){return n(),a("div",null,s[0]||(s[0]=[t(`<h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started""></a></h1><p><strong>vue-chartjs</strong> is a wrapper for <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noreferrer">Chart.js</a> in Vue. You can easily create reuseable chart components.</p><p>Supports Chart.js v4.</p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to "Introduction""></a></h2><p><code>vue-chartjs</code> lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible.</p><p>It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility.</p><div class="tip custom-block"><p class="custom-block-title">Need an API to fetch data?</p><p>Please consider <a href="https://cube.dev/?ref=eco-vue-chartjs" target="_blank" rel="noreferrer">Cube</a>, an open-source API for data apps.</p></div><h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h2><p>You can install <code>vue-chartjs</code> over <code>yarn</code> or <code>npm</code> or <code>pnpm</code>. However, you also need to add <code>chart.js</code> as a dependency to your project because <code>Chart.js</code> is a peerDependency. This way you can have full control over the versioning of <code>Chart.js</code>.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span></code></pre></div><h2 id="integration" tabindex="-1">Integration <a class="header-anchor" href="#integration" aria-label="Permalink to "Integration""></a></h2><p>Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components.</p><p>The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility.</p><h2 id="creating-your-first-chart" tabindex="-1">Creating your first Chart <a class="header-anchor" href="#creating-your-first-chart" aria-label="Permalink to "Creating your first Chart""></a></h2><p>First, you need to import the base chart.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>Check out the official <a href="http://www.chartjs.org/docs/latest/#creating-a-chart" target="_blank" rel="noreferrer">Chart.js docs</a> to see the object structure you need to provide.</p><p>Just create your own component.</p><p><strong>BarChart.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-chart-id"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [ { data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] } ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> responsive: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Use it in your vue app:</p><p><strong>App.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'App'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="updating-charts" tabindex="-1">Updating Charts <a class="header-anchor" href="#updating-charts" aria-label="Permalink to "Updating Charts""></a></h2><p>Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart options */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>You may get Vue's <code>Target is readonly</code> warnings when you are updating your <code>chartData</code>.</p><p>If your <code>chartData</code> is a <code>read-only</code> reactive value, you can override this warning by using a clone:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">stringify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parse</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(chartData))</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Unless you have a writable computed <code>chartData</code>, you won't be able to use the newer <code>structuredClone</code>, as you'll likely hit the <code>Write operation failed: computed value is readonly</code> error.</p><p>You don't need to use a clone if your <code>chartData</code> is a <a href="https://vuejs.org/guide/essentials/computed#writable-computed" target="_blank" rel="noreferrer">writable computed value</a>.</p><h2 id="access-to-chart-instance" tabindex="-1">Access to Chart instance <a class="header-anchor" href="#access-to-chart-instance" aria-label="Permalink to "Access to Chart instance""></a></h2><p>You can get access to chart instance via template refs.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ref</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bar"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In Vue3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> chartInstance</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.$refs.bar.chart</span></span></code></pre></div><h2 id="accessibility" tabindex="-1">Accessibility <a class="header-anchor" href="#accessibility" aria-label="Permalink to "Accessibility""></a></h2><p>To make your charts accessible to all users, you should label your charts. Please refer also to the official <a href="https://www.chartjs.org/docs/latest/general/accessibility.html" target="_blank" rel="noreferrer">Chart.js Accessibility notes</a>.</p><h3 id="aria-label" tabindex="-1"><code>aria-label</code> <a class="header-anchor" href="#aria-label" aria-label="Permalink to "\`aria-label\`""></a></h3><p>You can directly label a chart by passing an <code>aria-label</code> prop.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-label</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825."</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="aria-describedby" tabindex="-1"><code>aria-describedby</code> <a class="header-anchor" href="#aria-describedby" aria-label="Permalink to "\`aria-describedby\`""></a></h3><p>You can reference to a describing element such as a table which describes the data by using the <code>aria-describedby</code> property.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-describedby</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Sales figures for the years 2022 to 2024.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2022</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2023</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2024</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>987</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>1209</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>825</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="fallback-content" tabindex="-1">Fallback-Content <a class="header-anchor" href="#fallback-content" aria-label="Permalink to "Fallback-Content""></a></h3><p>In case the Browser is not able to render the <code>canvas</code> element, you should consider providing fallback content by using the Slot of each component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Chart couldn't be loaded.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,47)]))}const c=i(h,[["render",l]]);export{g as __pageData,c as default}; diff --git a/assets/guide_index.md.BghNT2ZM.lean.js b/assets/guide_index.md.BghNT2ZM.lean.js new file mode 100644 index 00000000..35852d9d --- /dev/null +++ b/assets/guide_index.md.BghNT2ZM.lean.js @@ -0,0 +1,91 @@ +import{_ as i,c as a,a2 as t,o as n}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md","lastUpdated":1730382198000}'),h={name:"guide/index.md"};function l(e,s,p,k,E,r){return n(),a("div",null,s[0]||(s[0]=[t(`<h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started""></a></h1><p><strong>vue-chartjs</strong> is a wrapper for <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noreferrer">Chart.js</a> in Vue. You can easily create reuseable chart components.</p><p>Supports Chart.js v4.</p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to "Introduction""></a></h2><p><code>vue-chartjs</code> lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible.</p><p>It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility.</p><div class="tip custom-block"><p class="custom-block-title">Need an API to fetch data?</p><p>Please consider <a href="https://cube.dev/?ref=eco-vue-chartjs" target="_blank" rel="noreferrer">Cube</a>, an open-source API for data apps.</p></div><h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h2><p>You can install <code>vue-chartjs</code> over <code>yarn</code> or <code>npm</code> or <code>pnpm</code>. However, you also need to add <code>chart.js</code> as a dependency to your project because <code>Chart.js</code> is a peerDependency. This way you can have full control over the versioning of <code>Chart.js</code>.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span></code></pre></div><h2 id="integration" tabindex="-1">Integration <a class="header-anchor" href="#integration" aria-label="Permalink to "Integration""></a></h2><p>Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components.</p><p>The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility.</p><h2 id="creating-your-first-chart" tabindex="-1">Creating your first Chart <a class="header-anchor" href="#creating-your-first-chart" aria-label="Permalink to "Creating your first Chart""></a></h2><p>First, you need to import the base chart.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>Check out the official <a href="http://www.chartjs.org/docs/latest/#creating-a-chart" target="_blank" rel="noreferrer">Chart.js docs</a> to see the object structure you need to provide.</p><p>Just create your own component.</p><p><strong>BarChart.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-chart-id"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [ { data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] } ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> responsive: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Use it in your vue app:</p><p><strong>App.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'App'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="updating-charts" tabindex="-1">Updating Charts <a class="header-anchor" href="#updating-charts" aria-label="Permalink to "Updating Charts""></a></h2><p>Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart options */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>You may get Vue's <code>Target is readonly</code> warnings when you are updating your <code>chartData</code>.</p><p>If your <code>chartData</code> is a <code>read-only</code> reactive value, you can override this warning by using a clone:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">stringify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parse</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(chartData))</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Unless you have a writable computed <code>chartData</code>, you won't be able to use the newer <code>structuredClone</code>, as you'll likely hit the <code>Write operation failed: computed value is readonly</code> error.</p><p>You don't need to use a clone if your <code>chartData</code> is a <a href="https://vuejs.org/guide/essentials/computed#writable-computed" target="_blank" rel="noreferrer">writable computed value</a>.</p><h2 id="access-to-chart-instance" tabindex="-1">Access to Chart instance <a class="header-anchor" href="#access-to-chart-instance" aria-label="Permalink to "Access to Chart instance""></a></h2><p>You can get access to chart instance via template refs.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ref</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bar"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In Vue3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> chartInstance</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.$refs.bar.chart</span></span></code></pre></div><h2 id="accessibility" tabindex="-1">Accessibility <a class="header-anchor" href="#accessibility" aria-label="Permalink to "Accessibility""></a></h2><p>To make your charts accessible to all users, you should label your charts. Please refer also to the official <a href="https://www.chartjs.org/docs/latest/general/accessibility.html" target="_blank" rel="noreferrer">Chart.js Accessibility notes</a>.</p><h3 id="aria-label" tabindex="-1"><code>aria-label</code> <a class="header-anchor" href="#aria-label" aria-label="Permalink to "\`aria-label\`""></a></h3><p>You can directly label a chart by passing an <code>aria-label</code> prop.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-label</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825."</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="aria-describedby" tabindex="-1"><code>aria-describedby</code> <a class="header-anchor" href="#aria-describedby" aria-label="Permalink to "\`aria-describedby\`""></a></h3><p>You can reference to a describing element such as a table which describes the data by using the <code>aria-describedby</code> property.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-describedby</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Sales figures for the years 2022 to 2024.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2022</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2023</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2024</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>987</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>1209</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>825</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="fallback-content" tabindex="-1">Fallback-Content <a class="header-anchor" href="#fallback-content" aria-label="Permalink to "Fallback-Content""></a></h3><p>In case the Browser is not able to render the <code>canvas</code> element, you should consider providing fallback content by using the Slot of each component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Chart couldn't be loaded.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,47)]))}const c=i(h,[["render",l]]);export{g as __pageData,c as default}; diff --git a/assets/index.md.DsYyaYhL.js b/assets/index.md.DsYyaYhL.js new file mode 100644 index 00000000..e77de86e --- /dev/null +++ b/assets/index.md.DsYyaYhL.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.CdbxnhrM.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"📈 vue-chartjs","tagline":"⚡ Easy and beautiful charts with Chart.js and Vue.js","actions":[{"theme":"brand","text":"Get Started →","link":"/guide/"}]},"features":[{"icon":"🙌","title":"Easy","details":"Easy for both beginners and pros"},{"icon":"💪","title":"Extendable","details":"Simple to use, easy to extend"},{"icon":"💯","title":"Powerful","details":"With the full power of chart.js 💯"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1730382198000}'),n={name:"index.md"};function s(i,o,r,d,l,c){return a(),t("div")}const f=e(n,[["render",s]]);export{p as __pageData,f as default}; diff --git a/assets/index.md.DsYyaYhL.lean.js b/assets/index.md.DsYyaYhL.lean.js new file mode 100644 index 00000000..e77de86e --- /dev/null +++ b/assets/index.md.DsYyaYhL.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.CdbxnhrM.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"📈 vue-chartjs","tagline":"⚡ Easy and beautiful charts with Chart.js and Vue.js","actions":[{"theme":"brand","text":"Get Started →","link":"/guide/"}]},"features":[{"icon":"🙌","title":"Easy","details":"Easy for both beginners and pros"},{"icon":"💪","title":"Extendable","details":"Simple to use, easy to extend"},{"icon":"💯","title":"Powerful","details":"With the full power of chart.js 💯"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1730382198000}'),n={name:"index.md"};function s(i,o,r,d,l,c){return a(),t("div")}const f=e(n,[["render",s]]);export{p as __pageData,f 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/line.png b/assets/line.png deleted file mode 100755 index 28bf84a6..00000000 Binary files a/assets/line.png and /dev/null differ diff --git a/assets/logo.png b/assets/logo.png deleted file mode 100644 index f3d2503f..00000000 Binary files a/assets/logo.png and /dev/null differ diff --git a/assets/migration-guides_index.md.sXAq1EDA.js b/assets/migration-guides_index.md.sXAq1EDA.js new file mode 100644 index 00000000..d752ea1a --- /dev/null +++ b/assets/migration-guides_index.md.sXAq1EDA.js @@ -0,0 +1 @@ +import{_ as t,c as a,a2 as i,o}from"./chunks/framework.CdbxnhrM.js";const m=JSON.parse('{"title":"Migration","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"migration-guides/index.md","filePath":"migration-guides/index.md","lastUpdated":1730382198000}'),n={name:"migration-guides/index.md"};function r(d,e,s,l,h,c){return o(),a("div",null,e[0]||(e[0]=[i('<h1 id="migration" tabindex="-1">Migration <a class="header-anchor" href="#migration" aria-label="Permalink to "Migration""></a></h1><p>Over the time <code>vue-chartjs</code> has changed a lot. As the web and frontend technology has changed. To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides.</p><ul><li><a href="/migration-guides/v5.html">v4 -> v5</a></li><li><a href="/migration-guides/v4.html">v3 -> v4</a></li><li><a href="/migration-guides/vue-chart-3.html">vue-chart-3</a></li></ul>',3)]))}const u=t(n,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/migration-guides_index.md.sXAq1EDA.lean.js b/assets/migration-guides_index.md.sXAq1EDA.lean.js new file mode 100644 index 00000000..d752ea1a --- /dev/null +++ b/assets/migration-guides_index.md.sXAq1EDA.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,a2 as i,o}from"./chunks/framework.CdbxnhrM.js";const m=JSON.parse('{"title":"Migration","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"migration-guides/index.md","filePath":"migration-guides/index.md","lastUpdated":1730382198000}'),n={name:"migration-guides/index.md"};function r(d,e,s,l,h,c){return o(),a("div",null,e[0]||(e[0]=[i('<h1 id="migration" tabindex="-1">Migration <a class="header-anchor" href="#migration" aria-label="Permalink to "Migration""></a></h1><p>Over the time <code>vue-chartjs</code> has changed a lot. As the web and frontend technology has changed. To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides.</p><ul><li><a href="/migration-guides/v5.html">v4 -> v5</a></li><li><a href="/migration-guides/v4.html">v3 -> v4</a></li><li><a href="/migration-guides/vue-chart-3.html">vue-chart-3</a></li></ul>',3)]))}const u=t(n,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/migration-guides_v4.md.CeBcEFpH.js b/assets/migration-guides_v4.md.CeBcEFpH.js new file mode 100644 index 00000000..f10ee415 --- /dev/null +++ b/assets/migration-guides_v4.md.CeBcEFpH.js @@ -0,0 +1,93 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Migration from v3 to v4","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"migration-guides/v4.md","filePath":"migration-guides/v4.md","lastUpdated":1730382198000}'),h={name:"migration-guides/v4.md"};function l(p,s,e,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="migration-from-v3-to-v4" tabindex="-1">Migration from v3 to v4 <a class="header-anchor" href="#migration-from-v3-to-v4" aria-label="Permalink to "Migration from v3 to v4""></a></h1><p>With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.</p><p>v4 is fully compatible with Chart.js v3.</p><h2 id="tree-shaking" tabindex="-1">Tree-shaking <a class="header-anchor" href="#tree-shaking" aria-label="Permalink to "Tree-shaking""></a></h2><p>v4 of this library, <a href="https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation" target="_blank" rel="noreferrer">just like Chart.js v3</a>, is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use.</p><p>For a list of all the available items to import, see <a href="https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc" target="_blank" rel="noreferrer">Chart.js docs</a>.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — lazy way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js/auto'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — tree-shakable way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span></code></pre></div><p>Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size.</p><p>Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Pie } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, ArcElement, CategoryScale)</span></span></code></pre></div><h2 id="changing-the-creation-of-charts" tabindex="-1">Changing the creation of Charts <a class="header-anchor" href="#changing-the-creation-of-charts" aria-label="Permalink to "Changing the creation of Charts""></a></h2><p>In v3, you needed to import the component, and then either use extends or mixins and add it.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// BarChart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Bar,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Overwriting base render method with actual data.</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'GitHub Commits'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'DataPage'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="new-reactivity-system" tabindex="-1">New reactivity system <a class="header-anchor" href="#new-reactivity-system" aria-label="Permalink to "New reactivity system""></a></h2><p>v3 does not update or re-render the chart if new data is passed. You needed to use <code>reactiveProp</code> and <code>reactiveData</code> mixins for that.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Line, mixins } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Line,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mixins: [mixins.reactiveProp],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'chartData'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'options'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartData, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.options)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed.</p><p>v4:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,29)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/migration-guides_v4.md.CeBcEFpH.lean.js b/assets/migration-guides_v4.md.CeBcEFpH.lean.js new file mode 100644 index 00000000..f10ee415 --- /dev/null +++ b/assets/migration-guides_v4.md.CeBcEFpH.lean.js @@ -0,0 +1,93 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CdbxnhrM.js";const g=JSON.parse('{"title":"Migration from v3 to v4","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"migration-guides/v4.md","filePath":"migration-guides/v4.md","lastUpdated":1730382198000}'),h={name:"migration-guides/v4.md"};function l(p,s,e,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="migration-from-v3-to-v4" tabindex="-1">Migration from v3 to v4 <a class="header-anchor" href="#migration-from-v3-to-v4" aria-label="Permalink to "Migration from v3 to v4""></a></h1><p>With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.</p><p>v4 is fully compatible with Chart.js v3.</p><h2 id="tree-shaking" tabindex="-1">Tree-shaking <a class="header-anchor" href="#tree-shaking" aria-label="Permalink to "Tree-shaking""></a></h2><p>v4 of this library, <a href="https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation" target="_blank" rel="noreferrer">just like Chart.js v3</a>, is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use.</p><p>For a list of all the available items to import, see <a href="https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc" target="_blank" rel="noreferrer">Chart.js docs</a>.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — lazy way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js/auto'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — tree-shakable way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span></code></pre></div><p>Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size.</p><p>Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Pie } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, ArcElement, CategoryScale)</span></span></code></pre></div><h2 id="changing-the-creation-of-charts" tabindex="-1">Changing the creation of Charts <a class="header-anchor" href="#changing-the-creation-of-charts" aria-label="Permalink to "Changing the creation of Charts""></a></h2><p>In v3, you needed to import the component, and then either use extends or mixins and add it.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// BarChart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Bar,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Overwriting base render method with actual data.</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'GitHub Commits'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'DataPage'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="new-reactivity-system" tabindex="-1">New reactivity system <a class="header-anchor" href="#new-reactivity-system" aria-label="Permalink to "New reactivity system""></a></h2><p>v3 does not update or re-render the chart if new data is passed. You needed to use <code>reactiveProp</code> and <code>reactiveData</code> mixins for that.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Line, mixins } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Line,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mixins: [mixins.reactiveProp],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'chartData'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'options'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartData, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.options)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed.</p><p>v4:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div>`,29)]))}const y=i(h,[["render",l]]);export{g as __pageData,y as default}; diff --git a/assets/migration-guides_v5.md.lT20HEsg.js b/assets/migration-guides_v5.md.lT20HEsg.js new file mode 100644 index 00000000..e88c36e7 --- /dev/null +++ b/assets/migration-guides_v5.md.lT20HEsg.js @@ -0,0 +1,4 @@ +import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.CdbxnhrM.js";const u=JSON.parse('{"title":"Migration from v4 to v5","description":"","frontmatter":{},"headers":[],"relativePath":"migration-guides/v5.md","filePath":"migration-guides/v5.md","lastUpdated":1730382198000}'),o={name:"migration-guides/v5.md"};function i(n,e,l,h,d,c){return s(),t("div",null,e[0]||(e[0]=[r(`<h1 id="migration-from-v4-to-v5" tabindex="-1">Migration from v4 to v5 <a class="header-anchor" href="#migration-from-v4-to-v5" aria-label="Permalink to "Migration from v4 to v5""></a></h1><p>With v5, this library introduces a number of breaking changes</p><h2 id="esm" tabindex="-1">ESM <a class="header-anchor" href="#esm" aria-label="Permalink to "ESM""></a></h2><h3 id="v5-0" tabindex="-1">v5.0 <a class="header-anchor" href="#v5-0" aria-label="Permalink to "v5.0""></a></h3><p>Chart.js v4 and vue-chartjs v5 are <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM-only packages</a>. To use them in your project, it also should be ESM:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// package.json</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"module"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>If you are experiencing this problem with Jest, you should follow <a href="https://jestjs.io/docs/ecmascript-modules" target="_blank" rel="noreferrer">this doc</a> to enable ESM support. Or, we can recommend you migrate to <a href="https://vitest.dev/" target="_blank" rel="noreferrer">Vitest</a>. Vitest has ESM support out of the box and <a href="https://vitest.dev/guide/migration.html#migrating-from-jest" target="_blank" rel="noreferrer">has almost the same API as Jest</a>. <a href="https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef" target="_blank" rel="noreferrer">Here is our example of migration</a>.</p><h3 id="v5-1" tabindex="-1">v5.1 <a class="header-anchor" href="#v5-1" aria-label="Permalink to "v5.1""></a></h3><p>Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support.</p><h2 id="api-changes" tabindex="-1">API changes <a class="header-anchor" href="#api-changes" aria-label="Permalink to "API changes""></a></h2><ul><li><code>chartData</code> props were renamed to <code>data</code></li><li><code>chartOptions</code> props were renamed to <code>options</code></li><li>unknown props will fall through to the canvas element.</li><li><code>generateChart</code> were refactored and renamed to <code>createTypedChart</code></li><li>Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x.</li></ul>`,11)]))}const m=a(o,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/migration-guides_v5.md.lT20HEsg.lean.js b/assets/migration-guides_v5.md.lT20HEsg.lean.js new file mode 100644 index 00000000..e88c36e7 --- /dev/null +++ b/assets/migration-guides_v5.md.lT20HEsg.lean.js @@ -0,0 +1,4 @@ +import{_ as a,c as t,a2 as r,o as s}from"./chunks/framework.CdbxnhrM.js";const u=JSON.parse('{"title":"Migration from v4 to v5","description":"","frontmatter":{},"headers":[],"relativePath":"migration-guides/v5.md","filePath":"migration-guides/v5.md","lastUpdated":1730382198000}'),o={name:"migration-guides/v5.md"};function i(n,e,l,h,d,c){return s(),t("div",null,e[0]||(e[0]=[r(`<h1 id="migration-from-v4-to-v5" tabindex="-1">Migration from v4 to v5 <a class="header-anchor" href="#migration-from-v4-to-v5" aria-label="Permalink to "Migration from v4 to v5""></a></h1><p>With v5, this library introduces a number of breaking changes</p><h2 id="esm" tabindex="-1">ESM <a class="header-anchor" href="#esm" aria-label="Permalink to "ESM""></a></h2><h3 id="v5-0" tabindex="-1">v5.0 <a class="header-anchor" href="#v5-0" aria-label="Permalink to "v5.0""></a></h3><p>Chart.js v4 and vue-chartjs v5 are <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM-only packages</a>. To use them in your project, it also should be ESM:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// package.json</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"module"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>If you are experiencing this problem with Jest, you should follow <a href="https://jestjs.io/docs/ecmascript-modules" target="_blank" rel="noreferrer">this doc</a> to enable ESM support. Or, we can recommend you migrate to <a href="https://vitest.dev/" target="_blank" rel="noreferrer">Vitest</a>. Vitest has ESM support out of the box and <a href="https://vitest.dev/guide/migration.html#migrating-from-jest" target="_blank" rel="noreferrer">has almost the same API as Jest</a>. <a href="https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef" target="_blank" rel="noreferrer">Here is our example of migration</a>.</p><h3 id="v5-1" tabindex="-1">v5.1 <a class="header-anchor" href="#v5-1" aria-label="Permalink to "v5.1""></a></h3><p>Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support.</p><h2 id="api-changes" tabindex="-1">API changes <a class="header-anchor" href="#api-changes" aria-label="Permalink to "API changes""></a></h2><ul><li><code>chartData</code> props were renamed to <code>data</code></li><li><code>chartOptions</code> props were renamed to <code>options</code></li><li>unknown props will fall through to the canvas element.</li><li><code>generateChart</code> were refactored and renamed to <code>createTypedChart</code></li><li>Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x.</li></ul>`,11)]))}const m=a(o,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/migration-guides_vue-chart-3.md.95rcNC-y.js b/assets/migration-guides_vue-chart-3.md.95rcNC-y.js new file mode 100644 index 00000000..e271eba7 --- /dev/null +++ b/assets/migration-guides_vue-chart-3.md.95rcNC-y.js @@ -0,0 +1,9 @@ +import{_ as s,c as i,a2 as t,o as e}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Migration from vue-chart-3","description":"","frontmatter":{},"headers":[],"relativePath":"migration-guides/vue-chart-3.md","filePath":"migration-guides/vue-chart-3.md","lastUpdated":1730382198000}'),n={name:"migration-guides/vue-chart-3.md"};function h(l,a,p,r,o,k){return e(),i("div",null,a[0]||(a[0]=[t(`<h1 id="migration-from-vue-chart-3" tabindex="-1">Migration from vue-chart-3 <a class="header-anchor" href="#migration-from-vue-chart-3" aria-label="Permalink to "Migration from vue-chart-3""></a></h1><h2 id="uninstall-vue-chart-3" tabindex="-1">Uninstall vue-chart-3 <a class="header-anchor" href="#uninstall-vue-chart-3" aria-label="Permalink to "Uninstall vue-chart-3""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> uninstall</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span></code></pre></div><h2 id="install-vue-chartjs" tabindex="-1">Install vue-chartjs <a class="header-anchor" href="#install-vue-chartjs" aria-label="Permalink to "Install vue-chartjs""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span></code></pre></div><h2 id="change-component-import-path" tabindex="-1">Change component import path <a class="header-anchor" href="#change-component-import-path" aria-label="Permalink to "Change component import path""></a></h2><p>For Vue 2.7 and Vue 3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>For Vue 2 (<2.7) projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs/legacy'</span></span></code></pre></div><h2 id="rename-components" tabindex="-1">Rename components <a class="header-anchor" href="#rename-components" aria-label="Permalink to "Rename components""></a></h2><ul><li>BarChart to Bar</li><li>DoughnutChart to Doughnut</li><li>LineChart to Line</li><li>PieChart to Pie</li><li>PolarAreaChart to PolarArea</li><li>RadarChart to Radar</li><li>BubbleChart to Bubble</li><li>ScatterChart to Scatter</li></ul><h2 id="rename-props" tabindex="-1">Rename props <a class="header-anchor" href="#rename-props" aria-label="Permalink to "Rename props""></a></h2><ul><li>options to chartOptions</li></ul>`,14)]))}const u=s(n,[["render",h]]);export{d as __pageData,u as default}; diff --git a/assets/migration-guides_vue-chart-3.md.95rcNC-y.lean.js b/assets/migration-guides_vue-chart-3.md.95rcNC-y.lean.js new file mode 100644 index 00000000..e271eba7 --- /dev/null +++ b/assets/migration-guides_vue-chart-3.md.95rcNC-y.lean.js @@ -0,0 +1,9 @@ +import{_ as s,c as i,a2 as t,o as e}from"./chunks/framework.CdbxnhrM.js";const d=JSON.parse('{"title":"Migration from vue-chart-3","description":"","frontmatter":{},"headers":[],"relativePath":"migration-guides/vue-chart-3.md","filePath":"migration-guides/vue-chart-3.md","lastUpdated":1730382198000}'),n={name:"migration-guides/vue-chart-3.md"};function h(l,a,p,r,o,k){return e(),i("div",null,a[0]||(a[0]=[t(`<h1 id="migration-from-vue-chart-3" tabindex="-1">Migration from vue-chart-3 <a class="header-anchor" href="#migration-from-vue-chart-3" aria-label="Permalink to "Migration from vue-chart-3""></a></h1><h2 id="uninstall-vue-chart-3" tabindex="-1">Uninstall vue-chart-3 <a class="header-anchor" href="#uninstall-vue-chart-3" aria-label="Permalink to "Uninstall vue-chart-3""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> uninstall</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span></code></pre></div><h2 id="install-vue-chartjs" tabindex="-1">Install vue-chartjs <a class="header-anchor" href="#install-vue-chartjs" aria-label="Permalink to "Install vue-chartjs""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span></code></pre></div><h2 id="change-component-import-path" tabindex="-1">Change component import path <a class="header-anchor" href="#change-component-import-path" aria-label="Permalink to "Change component import path""></a></h2><p>For Vue 2.7 and Vue 3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>For Vue 2 (<2.7) projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs/legacy'</span></span></code></pre></div><h2 id="rename-components" tabindex="-1">Rename components <a class="header-anchor" href="#rename-components" aria-label="Permalink to "Rename components""></a></h2><ul><li>BarChart to Bar</li><li>DoughnutChart to Doughnut</li><li>LineChart to Line</li><li>PieChart to Pie</li><li>PolarAreaChart to PolarArea</li><li>RadarChart to Radar</li><li>BubbleChart to Bubble</li><li>ScatterChart to Scatter</li></ul><h2 id="rename-props" tabindex="-1">Rename props <a class="header-anchor" href="#rename-props" aria-label="Permalink to "Rename props""></a></h2><ul><li>options to chartOptions</li></ul>`,14)]))}const u=s(n,[["render",h]]);export{d as __pageData,u as default}; diff --git a/assets/pie.png b/assets/pie.png deleted file mode 100755 index ee54d683..00000000 Binary files a/assets/pie.png and /dev/null differ diff --git a/assets/polar.png b/assets/polar.png deleted file mode 100755 index 8343f6be..00000000 Binary files a/assets/polar.png and /dev/null differ diff --git a/assets/radar.png b/assets/radar.png deleted file mode 100755 index ab8e6a5d..00000000 Binary files a/assets/radar.png and /dev/null differ diff --git a/assets/scatter.png b/assets/scatter.png deleted file mode 100755 index 6a357053..00000000 Binary files a/assets/scatter.png and /dev/null differ diff --git a/assets/style.D4ugNl4d.css b/assets/style.D4ugNl4d.css new file mode 100644 index 00000000..698665b6 --- /dev/null +++ b/assets/style.D4ugNl4d.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.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;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c9fbc3c9]{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-c9fbc3c9],.VPBackdrop.fade-leave-to[data-v-c9fbc3c9]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c9fbc3c9]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c9fbc3c9]{display:none}}.NotFound[data-v-d8c9a0ed]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d8c9a0ed]{padding:96px 32px 168px}}.code[data-v-d8c9a0ed]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d8c9a0ed]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d8c9a0ed]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d8c9a0ed]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d8c9a0ed]{padding-top:20px}.link[data-v-d8c9a0ed]{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-d8c9a0ed]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-85f41b19]{position:relative;z-index:1}.nested[data-v-85f41b19]{padding-right:16px;padding-left:16px}.outline-link[data-v-85f41b19]{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-85f41b19]:hover,.outline-link.active[data-v-85f41b19]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-85f41b19]{padding-left:13px}.VPDocAsideOutline[data-v-cc231367]{display:none}.VPDocAsideOutline.has-outline[data-v-cc231367]{display:block}.content[data-v-cc231367]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-cc231367]{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-cc231367]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-646020bd]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-646020bd]{flex-grow:1}.VPDocAside[data-v-646020bd] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-646020bd] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-646020bd] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-d37dd316]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-d37dd316]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-be2aa953]{margin-top:64px}.edit-info[data-v-be2aa953]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-be2aa953]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-be2aa953]{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-be2aa953]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-be2aa953]{margin-right:8px}.prev-next[data-v-be2aa953]{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-be2aa953]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-be2aa953]{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-be2aa953]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-be2aa953]{margin-left:auto;text-align:right}.desc[data-v-be2aa953]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-be2aa953]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-c6c1d99a]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-c6c1d99a]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-c6c1d99a]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-c6c1d99a]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-c6c1d99a]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-c6c1d99a]{display:flex;justify-content:center}.VPDoc .aside[data-v-c6c1d99a]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-c6c1d99a]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-c6c1d99a]{max-width:1104px}}.container[data-v-c6c1d99a]{margin:0 auto;width:100%}.aside[data-v-c6c1d99a]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-c6c1d99a]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-c6c1d99a]{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-c6c1d99a]::-webkit-scrollbar{display:none}.aside-curtain[data-v-c6c1d99a]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-c6c1d99a]{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-c6c1d99a]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-c6c1d99a]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-c6c1d99a]{order:1;margin:0;min-width:640px}}.content-container[data-v-c6c1d99a]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-c6c1d99a]{max-width:688px}.VPButton[data-v-5817f143]{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-5817f143]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-5817f143]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-5817f143]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-5817f143]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-5817f143]: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-5817f143]: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-5817f143]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-5817f143]: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-5817f143]: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-5817f143]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-5817f143]: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-5817f143]: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-8af65e37]{display:none}.dark .VPImage.light[data-v-8af65e37]{display:none}.VPHero[data-v-f4b4dff7]{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-f4b4dff7]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-f4b4dff7]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-f4b4dff7]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-f4b4dff7]{flex-direction:row}}.main[data-v-f4b4dff7]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-f4b4dff7]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-f4b4dff7]{text-align:left}}@media (min-width: 960px){.main[data-v-f4b4dff7]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-f4b4dff7]{max-width:592px}}.name[data-v-f4b4dff7],.text[data-v-f4b4dff7]{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-f4b4dff7],.VPHero.has-image .text[data-v-f4b4dff7]{margin:0 auto}.name[data-v-f4b4dff7]{color:var(--vp-home-hero-name-color)}.clip[data-v-f4b4dff7]{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-f4b4dff7],.text[data-v-f4b4dff7]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-f4b4dff7],.text[data-v-f4b4dff7]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-f4b4dff7],.VPHero.has-image .text[data-v-f4b4dff7]{margin:0}}.tagline[data-v-f4b4dff7]{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-f4b4dff7]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-f4b4dff7]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-f4b4dff7]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-f4b4dff7]{margin:0}}.actions[data-v-f4b4dff7]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-f4b4dff7]{justify-content:center}@media (min-width: 640px){.actions[data-v-f4b4dff7]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-f4b4dff7]{justify-content:flex-start}}.action[data-v-f4b4dff7]{flex-shrink:0;padding:6px}.image[data-v-f4b4dff7]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-f4b4dff7]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-f4b4dff7]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-f4b4dff7]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-f4b4dff7]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-f4b4dff7]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-f4b4dff7]{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-f4b4dff7]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-f4b4dff7]{width:320px;height:320px}}[data-v-f4b4dff7] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-f4b4dff7] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-f4b4dff7] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-ddc412bb]{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-ddc412bb]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-ddc412bb]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-ddc412bb]>.VPImage{margin-bottom:20px}.icon[data-v-ddc412bb]{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-ddc412bb]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-ddc412bb]{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-ddc412bb]{padding-top:8px}.link-text-value[data-v-ddc412bb]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-ddc412bb]{margin-left:6px}.VPFeatures[data-v-901d64aa]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-901d64aa]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-901d64aa]{padding:0 64px}}.container[data-v-901d64aa]{margin:0 auto;max-width:1152px}.items[data-v-901d64aa]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-901d64aa]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-901d64aa],.item.grid-4[data-v-901d64aa],.item.grid-6[data-v-901d64aa]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-901d64aa],.item.grid-4[data-v-901d64aa]{width:50%}.item.grid-3[data-v-901d64aa],.item.grid-6[data-v-901d64aa]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-901d64aa]{width:25%}}.container[data-v-30d82f28]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-30d82f28]{padding:0 48px}}@media (min-width: 960px){.container[data-v-30d82f28]{width:100%;padding:0 64px}}.vp-doc[data-v-30d82f28] .VPHomeSponsors,.vp-doc[data-v-30d82f28] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-30d82f28] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-30d82f28] .VPHomeSponsors a,.vp-doc[data-v-30d82f28] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cc8ba45b]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cc8ba45b]{margin-bottom:128px}}.VPContent[data-v-0fe28542]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-0fe28542]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-0fe28542]{margin:0}@media (min-width: 960px){.VPContent[data-v-0fe28542]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-0fe28542]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-0fe28542]{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-969adff1]{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-969adff1]{display:none}.VPFooter[data-v-969adff1] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-969adff1] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-969adff1]{padding:32px}}.container[data-v-969adff1]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-969adff1],.copyright[data-v-969adff1]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-21e70e53]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-21e70e53]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-21e70e53]{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-21e70e53]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-21e70e53]{color:var(--vp-c-text-1)}.icon[data-v-21e70e53]{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-21e70e53]{font-size:14px}.icon[data-v-21e70e53]{font-size:16px}}.open>.icon[data-v-21e70e53]{transform:rotate(90deg)}.items[data-v-21e70e53]{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-21e70e53]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-21e70e53]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-21e70e53]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-21e70e53]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-21e70e53]{transition:all .2s ease-out}.flyout-leave-active[data-v-21e70e53]{transition:all .15s ease-in}.flyout-enter-from[data-v-21e70e53],.flyout-leave-to[data-v-21e70e53]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-76c0c9b9]{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-76c0c9b9]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-76c0c9b9]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-76c0c9b9]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-76c0c9b9]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-76c0c9b9]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-76c0c9b9]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-76c0c9b9]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-76c0c9b9]{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-76c0c9b9]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-76c0c9b9]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-76c0c9b9]{display:none}}.menu-icon[data-v-76c0c9b9]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-76c0c9b9]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-76c0c9b9]{padding:12px 32px 11px}}.VPSwitch[data-v-bdee5f6f]{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-bdee5f6f]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-bdee5f6f]{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-bdee5f6f]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-bdee5f6f] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-bdee5f6f] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-8bbecb59]{opacity:1}.moon[data-v-8bbecb59],.dark .sun[data-v-8bbecb59]{opacity:0}.dark .moon[data-v-8bbecb59]{opacity:1}.dark .VPSwitchAppearance[data-v-8bbecb59] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e142ede8]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e142ede8]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-853d4873]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-853d4873]{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-853d4873]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-853d4873]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69b2cd49]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69b2cd49]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69b2cd49]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69b2cd49]{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-7d4ca9a7]{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-7d4ca9a7] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7d4ca9a7] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7d4ca9a7] .group:last-child{padding-bottom:0}.VPMenu[data-v-7d4ca9a7] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7d4ca9a7] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7d4ca9a7] .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-7d4ca9a7] .action{padding-left:24px}.VPFlyout[data-v-4704c17a]{position:relative}.VPFlyout[data-v-4704c17a]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-4704c17a]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-4704c17a]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-4704c17a]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-4704c17a]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-4704c17a]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-4704c17a],.button[aria-expanded=true]+.menu[data-v-4704c17a]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-4704c17a]{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-4704c17a]{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-4704c17a]{margin-right:0;font-size:16px}.text-icon[data-v-4704c17a]{margin-left:4px;font-size:14px}.icon[data-v-4704c17a]{font-size:20px;transition:fill .25s}.menu[data-v-4704c17a]{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-77ae8116]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-77ae8116]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-77ae8116]>svg,.VPSocialLink[data-v-77ae8116]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-146cd071]{display:flex;justify-content:center}.VPNavBarExtra[data-v-a191e894]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-a191e894]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-a191e894]{display:none}}.trans-title[data-v-a191e894]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-a191e894],.item.social-links[data-v-a191e894]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-a191e894]{min-width:176px}.appearance-action[data-v-a191e894]{margin-right:-2px}.social-links-list[data-v-a191e894]{margin:-4px -8px}.VPNavBarHamburger[data-v-a7d339bd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-a7d339bd]{display:none}}.container[data-v-a7d339bd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-a7d339bd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-a7d339bd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-a7d339bd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-a7d339bd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-a7d339bd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-a7d339bd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-a7d339bd],.VPNavBarHamburger.active:hover .middle[data-v-a7d339bd],.VPNavBarHamburger.active:hover .bottom[data-v-a7d339bd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-a7d339bd],.middle[data-v-a7d339bd],.bottom[data-v-a7d339bd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-a7d339bd]{top:0;left:0;transform:translate(0)}.middle[data-v-a7d339bd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-a7d339bd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-780e4a1c]{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-780e4a1c],.VPNavBarMenuLink[data-v-780e4a1c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-0655dfd0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-0655dfd0]{display:flex}}/*! @docsearch/css 3.6.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-16444370]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-16444370]{display:flex;align-items:center}}.title[data-v-27d5dab5]{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-27d5dab5]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-27d5dab5]{border-bottom-color:var(--vp-c-divider)}}[data-v-27d5dab5] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-cfaf8272]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-cfaf8272]{display:flex;align-items:center}}.title[data-v-cfaf8272]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-f0f60ea4]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-f0f60ea4]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-f0f60ea4]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-f0f60ea4]:not(.home){background-color:transparent}.VPNavBar[data-v-f0f60ea4]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-f0f60ea4]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-f0f60ea4]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-f0f60ea4]{padding:0}}.container[data-v-f0f60ea4]{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-f0f60ea4],.container>.content[data-v-f0f60ea4]{pointer-events:none}.container[data-v-f0f60ea4] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-f0f60ea4]{max-width:100%}}.title[data-v-f0f60ea4]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-f0f60ea4]{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-f0f60ea4]{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-f0f60ea4]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-f0f60ea4]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-f0f60ea4]{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-f0f60ea4]{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-f0f60ea4]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-f0f60ea4]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-f0f60ea4]{column-gap:.5rem}}.menu+.translations[data-v-f0f60ea4]:before,.menu+.appearance[data-v-f0f60ea4]:before,.menu+.social-links[data-v-f0f60ea4]:before,.translations+.appearance[data-v-f0f60ea4]:before,.appearance+.social-links[data-v-f0f60ea4]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-f0f60ea4]:before,.translations+.appearance[data-v-f0f60ea4]:before{margin-right:16px}.appearance+.social-links[data-v-f0f60ea4]:before{margin-left:16px}.social-links[data-v-f0f60ea4]{margin-right:-8px}.divider[data-v-f0f60ea4]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-f0f60ea4]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-f0f60ea4]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-f0f60ea4]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-f0f60ea4]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-f0f60ea4]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-f0f60ea4]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2251cbd3]{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-2251cbd3]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-d8dab840]{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-d8dab840]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-61d91e32]{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-61d91e32]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-6529da28]{display:block}.title[data-v-6529da28]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-f3d0198e]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-f3d0198e]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-f3d0198e]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-f3d0198e]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-f3d0198e]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-f3d0198e]{transform:rotate(45deg)}.button[data-v-f3d0198e]{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-f3d0198e]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-f3d0198e]{transition:transform .25s}.group[data-v-f3d0198e]:first-child{padding-top:0}.group+.group[data-v-f3d0198e],.group+.item[data-v-f3d0198e]{padding-top:4px}.VPNavScreenTranslations[data-v-336efab7]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-336efab7]{height:auto}.title[data-v-336efab7]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-336efab7]{font-size:16px}.icon.lang[data-v-336efab7]{margin-right:8px}.icon.chevron[data-v-336efab7]{margin-left:4px}.list[data-v-336efab7]{padding:4px 0 0 24px}.link[data-v-336efab7]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-943e4a5e]{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-943e4a5e],.VPNavScreen.fade-leave-active[data-v-943e4a5e]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-943e4a5e],.VPNavScreen.fade-leave-active .container[data-v-943e4a5e]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-943e4a5e],.VPNavScreen.fade-leave-to[data-v-943e4a5e]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-943e4a5e],.VPNavScreen.fade-leave-to .container[data-v-943e4a5e]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-943e4a5e]{display:none}}.container[data-v-943e4a5e]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-943e4a5e],.menu+.appearance[data-v-943e4a5e],.translations+.appearance[data-v-943e4a5e]{margin-top:24px}.menu+.social-links[data-v-943e4a5e]{margin-top:16px}.appearance+.social-links[data-v-943e4a5e]{margin-top:16px}.VPNav[data-v-4ee8bff2]{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-4ee8bff2]{position:fixed}}.VPSidebarItem.level-0[data-v-d4309205]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-d4309205]{padding-bottom:10px}.item[data-v-d4309205]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-d4309205]{cursor:pointer}.indicator[data-v-d4309205]{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-d4309205],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-d4309205],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-d4309205],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-d4309205]{background-color:var(--vp-c-brand-1)}.link[data-v-d4309205]{display:flex;align-items:center;flex-grow:1}.text[data-v-d4309205]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-d4309205]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-d4309205],.VPSidebarItem.level-2 .text[data-v-d4309205],.VPSidebarItem.level-3 .text[data-v-d4309205],.VPSidebarItem.level-4 .text[data-v-d4309205],.VPSidebarItem.level-5 .text[data-v-d4309205]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-d4309205],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-d4309205],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-d4309205],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-d4309205],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-d4309205],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-d4309205]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-d4309205],.VPSidebarItem.level-1.has-active>.item>.text[data-v-d4309205],.VPSidebarItem.level-2.has-active>.item>.text[data-v-d4309205],.VPSidebarItem.level-3.has-active>.item>.text[data-v-d4309205],.VPSidebarItem.level-4.has-active>.item>.text[data-v-d4309205],.VPSidebarItem.level-5.has-active>.item>.text[data-v-d4309205],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-d4309205],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-d4309205],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-d4309205],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-d4309205],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-d4309205],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-d4309205]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-d4309205],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-d4309205],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-d4309205],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-d4309205],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-d4309205],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-d4309205]{color:var(--vp-c-brand-1)}.caret[data-v-d4309205]{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-d4309205]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-d4309205]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-d4309205]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-d4309205]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-d4309205],.VPSidebarItem.level-2 .items[data-v-d4309205],.VPSidebarItem.level-3 .items[data-v-d4309205],.VPSidebarItem.level-4 .items[data-v-d4309205],.VPSidebarItem.level-5 .items[data-v-d4309205]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-d4309205]{display:none}.no-transition[data-v-29097003] .caret-icon{transition:none}.group+.group[data-v-29097003]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-29097003]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-4a238344]{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-4a238344]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-4a238344]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-4a238344]{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-4a238344]{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-4a238344]{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-4a238344]{outline:0}.VPSkipLink[data-v-0d927997]{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-0d927997]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0d927997]{top:14px;left:16px}}.Layout[data-v-267e9c9a]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-24e8e03f]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-24e8e03f]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-24e8e03f]{margin:128px 0}}.VPHomeSponsors[data-v-24e8e03f]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-24e8e03f]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-24e8e03f]{padding:0 64px}}.container[data-v-24e8e03f]{margin:0 auto;max-width:1152px}.love[data-v-24e8e03f]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-24e8e03f]{display:inline-block}.message[data-v-24e8e03f]{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-24e8e03f]{padding-top:32px}.action[data-v-24e8e03f]{padding-top:40px;text-align:center}.VPTeamPage[data-v-763a1a20]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-763a1a20]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-763a1a20-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-763a1a20-s],.VPTeamMembers+.VPTeamPageSection[data-v-763a1a20-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-763a1a20-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-763a1a20-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-763a1a20-s],.VPTeamMembers+.VPTeamPageSection[data-v-763a1a20-s]{margin-top:96px}}.VPTeamMembers[data-v-763a1a20-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-763a1a20-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-763a1a20-s]{padding:0 64px}}.VPTeamPageTitle[data-v-63afa447]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-63afa447]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-63afa447]{padding:80px 64px 48px}}.title[data-v-63afa447]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-63afa447]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-63afa447]{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-63afa447]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-50bd08e2]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-50bd08e2]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-50bd08e2]{padding:0 64px}}.title[data-v-50bd08e2]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-50bd08e2]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-50bd08e2]{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-50bd08e2]{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-50bd08e2]{padding-top:40px}.VPTeamMembersItem[data-v-ed4fb7bc]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-ed4fb7bc]{padding:32px}.VPTeamMembersItem.small .data[data-v-ed4fb7bc]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-ed4fb7bc]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-ed4fb7bc]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-ed4fb7bc]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-ed4fb7bc]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-ed4fb7bc]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-ed4fb7bc]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-ed4fb7bc]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-ed4fb7bc]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-ed4fb7bc]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-ed4fb7bc]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-ed4fb7bc]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-ed4fb7bc]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-ed4fb7bc]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-ed4fb7bc]{text-align:center}.avatar[data-v-ed4fb7bc]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-ed4fb7bc]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-ed4fb7bc]{margin:0;font-weight:600}.affiliation[data-v-ed4fb7bc]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-ed4fb7bc]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-ed4fb7bc]:hover{color:var(--vp-c-brand-1)}.desc[data-v-ed4fb7bc]{margin:0 auto}.desc[data-v-ed4fb7bc] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-ed4fb7bc]{display:flex;justify-content:center;height:56px}.sp-link[data-v-ed4fb7bc]{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-ed4fb7bc]:hover,.sp .sp-link.link[data-v-ed4fb7bc]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-ed4fb7bc]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-d5186113]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-d5186113]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-d5186113]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-d5186113]{max-width:876px}.VPTeamMembers.medium .container[data-v-d5186113]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-d5186113]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-d5186113]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-d5186113]{max-width:760px}.container[data-v-d5186113]{display:grid;gap:24px;margin:0 auto;max-width:1152px} diff --git a/assets/vue-chartjs.svg b/assets/vue-chartjs.svg deleted file mode 100644 index 43cd47b4..00000000 --- a/assets/vue-chartjs.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256"><defs><linearGradient id="a" x1="100%" x2="0%" y1="4.18%" y2="65.116%"><stop stop-color="#FAFAFA" offset="0%"/><stop stop-color="#D9D9D9" offset="100%"/></linearGradient><linearGradient id="b" x1="108.208%" x2="5.433%" y1="12.265%" y2="86.92%"><stop stop-color="#FAFAFA" offset="0%"/><stop stop-color="#D9D9D9" offset="100%"/></linearGradient></defs><g fill="none"><path fill="#fff" stroke="#EBEBEB" stroke-width="8.456" d="M128.744 13l99.745 57.46v114.921l-99.745 57.46-99.744-57.46v-114.921z"/><path fill="url(#a)" d="M129 17.941l90.395 51.432-4.057 117.675-86.903 4.653z"/><path fill="url(#b)" d="M129 17.814l-90.961 51.559-3.191 113.538 93.587 8.79z"/><path fill="#41B883" d="M32.955 72.755l95.789 54.681v110.49l-95.789-54.681z"/><path fill="#35495E" d="M224.48 71.627l-95.789 55.809v110.49l95.789-54.681z"/><path fill="#596F85" d="M224.48 71.627l-95.789 55.809v-7.892l88.445-51.299z"/><path fill="#61D09F" d="M32.955 72.755l95.789 54.681v-7.892l-89.575-50.171z"/></g></svg> \ No newline at end of file diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index 35d83c0c..00000000 --- a/codecov.yml +++ /dev/null @@ -1,34 +0,0 @@ -codecov: - branch: master - -coverage: - precision: 2 - round: down - range: "70...100" - - status: - project: - default: - target: auto - threshold: null - branches: null - - patch: - default: - target: auto - branches: null - - changes: - default: - branches: null - - ignore: - - "tests/*" - - "sandboxes/*" - - "stories/*" - - -comment: - layout: "header, diff, changes, sunburst, uncovered, tree" - branches: null - behavior: default diff --git a/de/api/index.html b/de/api/index.html new file mode 100644 index 00000000..347c9fa7 --- /dev/null +++ b/de/api/index.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Coding Reference | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_api_index.md.D17-Qxfi.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/api/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/api/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_api_" data-v-c6c1d99a><div><h1 id="coding-reference" tabindex="-1">Coding Reference <a class="header-anchor" href="#coding-reference" aria-label="Permalink to "Coding Reference""></a></h1><h2 id="props" tabindex="-1">Props <a class="header-anchor" href="#props" aria-label="Permalink to "Props""></a></h2><p>Some basic props are defined in the components provided by <code>vue-chartjs</code>.</p><table tabindex="0"><thead><tr><th>Prop</th><th>Description</th></tr></thead><tbody><tr><td>data</td><td>Data object that is passed into the Chart.js chart</td></tr><tr><td>options</td><td>Options object that is passed into the Chart.js chart</td></tr><tr><td>datasetIdKey</td><td>Key name to identify the dataset</td></tr><tr><td>plugins</td><td>Plugins array that is passed into the Chart.js chart</td></tr><tr><td>updateMode</td><td>Mode string to indicate the transition configuration to be used.</td></tr><tr><td>ariaLabel</td><td>An <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label" target="_blank" rel="noreferrer">ARIA label</a> that describes the chart to make it accessible.</td></tr><tr><td>ariaDescribedby</td><td>A reference to the <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby" target="_blank" rel="noreferrer">describing element</a>. E. g. a table representation of the data.</td></tr></tbody></table><p>The rest of the props will fall through to the canvas element.</p><h2 id="global-methods" tabindex="-1">Global Methods <a class="header-anchor" href="#global-methods" aria-label="Permalink to "Global Methods""></a></h2><p>Global Methods need to be imported.</p><h3 id="createtypedchart" tabindex="-1">createTypedChart <a class="header-anchor" href="#createtypedchart" aria-label="Permalink to "createTypedChart""></a></h3><ul><li><strong>Type:</strong> <code>Function</code></li><li><strong>Arguments</strong>:<code>chart-type</code>, <code>chart-controller</code></li><li><strong>Usage:</strong></li></ul><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineController)</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/api/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/examples/index.html b/de/examples/index.html new file mode 100644 index 00000000..f53a356a --- /dev/null +++ b/de/examples/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Examples | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_examples_index.md.B1Pa2eih.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/examples/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/examples/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_examples_" data-v-c6c1d99a><div><h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="vue-3-charts" tabindex="-1">Vue 3 charts <a class="header-anchor" href="#vue-3-charts" aria-label="Permalink to "Vue 3 charts""></a></h2><ul><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive" target="_blank" rel="noreferrer">Bar with reactive data</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom" target="_blank" rel="noreferrer">Custom chart</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events" target="_blank" rel="noreferrer">Events</a></li></ul><h2 id="vue-2-charts-vue-chartjs-v4" tabindex="-1">Vue 2 charts (vue-chartjs v4) <a class="header-anchor" href="#vue-2-charts-vue-chartjs-v4" aria-label="Permalink to "Vue 2 charts (vue-chartjs v4)""></a></h2><ul><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/examples/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/guide/examples.html b/de/guide/examples.html new file mode 100644 index 00000000..81e7a7a8 --- /dev/null +++ b/de/guide/examples.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Examples | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_guide_examples.md.-BxsMonn.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/guide/examples.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/guide/examples.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_guide_examples" data-v-c6c1d99a><div><h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="chart-with-props" tabindex="-1">Chart with props <a class="header-anchor" href="#chart-with-props" aria-label="Permalink to "Chart with props""></a></h2><p>Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> required: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-local-data" tabindex="-1">Chart with local data <a class="header-anchor" href="#chart-with-local-data" aria-label="Permalink to "Chart with local data""></a></h2><p>You can handle your chart data directly in your parent component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-api-data" tabindex="-1">Chart with API data <a class="header-anchor" href="#chart-with-api-data" aria-label="Permalink to "Chart with API data""></a></h2><p>A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives.</p><p>To prevent this, a simple <code>v-if</code> is the best solution.</p><p>Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"container"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> v-if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">loaded</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> loaded: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">userlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> fetch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/api/userlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartdata </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> userlist</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e) {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-dynamic-styles" tabindex="-1">Chart with dynamic styles <a class="header-anchor" href="#chart-with-dynamic-styles" aria-label="Permalink to "Chart with dynamic styles""></a></h2><p>You can set <code>responsive: true</code> and pass in a styles object which gets applied as inline styles to the outer <code><div></code>. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>You need to set <code>position: relative</code></p></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">style</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">myStyles</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> myStyles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`${</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* mutable height */</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}px`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> position: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'relative'</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="custom-new-charts" tabindex="-1">Custom / New Charts <a class="header-anchor" href="#custom-new-charts" aria-label="Permalink to "Custom / New Charts""></a></h2><p>Sometimes you need to extend the default Chart.js charts. There are a lot of <a href="http://www.chartjs.org/docs/latest/developers/charts.html" target="_blank" rel="noreferrer">examples</a> on how to extend and modify the default charts. Or, you can create your own chart type.</p><p>In <code>vue-chartjs</code>, you can do this pretty much the same way:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 1. Import Chart.js so you can use the global Chart object</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 2. Import the `createTypedChart()` method to create the vue component.</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Import needed controller from Chart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Extend one of the default charts</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// http://www.chartjs.org/docs/latest/developers/charts.html</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineWithLineController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* custom magic here */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 4. Generate the vue-chartjs component</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// The first argument is the chart-id, the second the chart type, third is the custom controller</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineWithLineController)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts.</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { CustomLine }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="resources" tabindex="-1">Resources <a class="header-anchor" href="#resources" aria-label="Permalink to "Resources""></a></h2><p>Here are some resources, such as tutorials, on how to use <code>vue-chartjs</code>:</p><ul><li><a href="https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f" target="_blank" rel="noreferrer">Using vue-chartjs with WordPress</a></li><li><a href="https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a" target="_blank" rel="noreferrer">Create stunning Charts with Vue and Chart.js</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part I</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part II</a></li><li><a href="https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/" target="_blank" rel="noreferrer">Build a realtime chart with VueJS and Pusher</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/guide/examples.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/guide/index.html b/de/guide/index.html new file mode 100644 index 00000000..670c6fe4 --- /dev/null +++ b/de/guide/index.html @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Getting Started | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_guide_index.md.BVyItP4I.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/guide/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/guide/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_guide_" data-v-c6c1d99a><div><h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started""></a></h1><p><strong>vue-chartjs</strong> is a wrapper for <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noreferrer">Chart.js</a> in Vue. You can easily create reuseable chart components.</p><p>Supports Chart.js v4.</p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to "Introduction""></a></h2><p><code>vue-chartjs</code> lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible.</p><p>It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility.</p><div class="tip custom-block"><p class="custom-block-title">Need an API to fetch data?</p><p>Please consider <a href="https://cube.dev/?ref=eco-vue-chartjs" target="_blank" rel="noreferrer">Cube</a>, an open-source API for data apps.</p></div><h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h2><p>You can install <code>vue-chartjs</code> over <code>yarn</code> or <code>npm</code> or <code>pnpm</code>. However, you also need to add <code>chart.js</code> as a dependency to your project because <code>Chart.js</code> is a peerDependency. This way you can have full control over the versioning of <code>Chart.js</code>.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span></code></pre></div><h2 id="integration" tabindex="-1">Integration <a class="header-anchor" href="#integration" aria-label="Permalink to "Integration""></a></h2><p>Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components.</p><p>The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility.</p><h2 id="creating-your-first-chart" tabindex="-1">Creating your first Chart <a class="header-anchor" href="#creating-your-first-chart" aria-label="Permalink to "Creating your first Chart""></a></h2><p>First, you need to import the base chart.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>Check out the official <a href="http://www.chartjs.org/docs/latest/#creating-a-chart" target="_blank" rel="noreferrer">Chart.js docs</a> to see the object structure you need to provide.</p><p>Just create your own component.</p><p><strong>BarChart.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-chart-id"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [ { data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] } ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> responsive: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Use it in your vue app:</p><p><strong>App.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'App'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="updating-charts" tabindex="-1">Updating Charts <a class="header-anchor" href="#updating-charts" aria-label="Permalink to "Updating Charts""></a></h2><p>Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart options */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>You may get Vue's <code>Target is readonly</code> warnings when you are updating your <code>chartData</code>.</p><p>If your <code>chartData</code> is a <code>read-only</code> reactive value, you can override this warning by using a clone:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">stringify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parse</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(chartData))</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Unless you have a writable computed <code>chartData</code>, you won't be able to use the newer <code>structuredClone</code>, as you'll likely hit the <code>Write operation failed: computed value is readonly</code> error.</p><p>You don't need to use a clone if your <code>chartData</code> is a <a href="https://vuejs.org/guide/essentials/computed#writable-computed" target="_blank" rel="noreferrer">writable computed value</a>.</p><h2 id="access-to-chart-instance" tabindex="-1">Access to Chart instance <a class="header-anchor" href="#access-to-chart-instance" aria-label="Permalink to "Access to Chart instance""></a></h2><p>You can get access to chart instance via template refs.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ref</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bar"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In Vue3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> chartInstance</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.$refs.bar.chart</span></span></code></pre></div><h2 id="accessibility" tabindex="-1">Accessibility <a class="header-anchor" href="#accessibility" aria-label="Permalink to "Accessibility""></a></h2><p>To make your charts accessible to all users, you should label your charts. Please refer also to the official <a href="https://www.chartjs.org/docs/latest/general/accessibility.html" target="_blank" rel="noreferrer">Chart.js Accessibility notes</a>.</p><h3 id="aria-label" tabindex="-1"><code>aria-label</code> <a class="header-anchor" href="#aria-label" aria-label="Permalink to "`aria-label`""></a></h3><p>You can directly label a chart by passing an <code>aria-label</code> prop.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-label</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825."</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="aria-describedby" tabindex="-1"><code>aria-describedby</code> <a class="header-anchor" href="#aria-describedby" aria-label="Permalink to "`aria-describedby`""></a></h3><p>You can reference to a describing element such as a table which describes the data by using the <code>aria-describedby</code> property.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-describedby</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Sales figures for the years 2022 to 2024.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2022</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2023</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2024</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>987</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>1209</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>825</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="fallback-content" tabindex="-1">Fallback-Content <a class="header-anchor" href="#fallback-content" aria-label="Permalink to "Fallback-Content""></a></h3><p>In case the Browser is not able to render the <code>canvas</code> element, you should consider providing fallback content by using the Slot of each component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Chart couldn't be loaded.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/guide/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/index.html b/de/index.html new file mode 100644 index 00000000..5ce42cc3 --- /dev/null +++ b/de/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_index.md.3FrGuMZ2.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><!----><!----><div class="VPContent is-home" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPHome" data-v-0fe28542 data-v-cc8ba45b><!--[--><!--]--><div class="VPHero VPHomeHero" data-v-cc8ba45b data-v-f4b4dff7><div class="container" data-v-f4b4dff7><div class="main" data-v-f4b4dff7><!--[--><!--]--><!--[--><h1 class="name" data-v-f4b4dff7><span class="clip" data-v-f4b4dff7>📈 vue-chartjs</span></h1><!----><p class="tagline" data-v-f4b4dff7>⚡ Einfache und schöne Diagramme mit Chart.js und Vue.js</p><!--]--><!--[--><!--]--><div class="actions" data-v-f4b4dff7><!--[--><div class="action" data-v-f4b4dff7><a class="VPButton medium brand" href="/guide/" data-v-f4b4dff7 data-v-5817f143>Get Started →</a></div><!--]--></div><!--[--><!--]--></div><!----></div></div><!--[--><!--]--><!--[--><!--]--><div class="VPFeatures VPHomeFeatures" data-v-cc8ba45b data-v-901d64aa><div class="container" data-v-901d64aa><div class="items" data-v-901d64aa><!--[--><div class="grid-3 item" data-v-901d64aa><div class="VPLink no-icon VPFeature" data-v-901d64aa data-v-ddc412bb><!--[--><article class="box" data-v-ddc412bb><div class="icon" data-v-ddc412bb>🙌</div><h2 class="title" data-v-ddc412bb>Einfach</h2><p class="details" data-v-ddc412bb>Einfach für beginner sowie fortgeschrittene</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-901d64aa><div class="VPLink no-icon VPFeature" data-v-901d64aa data-v-ddc412bb><!--[--><article class="box" data-v-ddc412bb><div class="icon" data-v-ddc412bb>💪</div><h2 class="title" data-v-ddc412bb>Erweiterbar</h2><p class="details" data-v-ddc412bb>Simple to use, easy to extend</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-901d64aa><div class="VPLink no-icon VPFeature" data-v-901d64aa data-v-ddc412bb><!--[--><article class="box" data-v-ddc412bb><div class="icon" data-v-ddc412bb>💯</div><h2 class="title" data-v-ddc412bb>Mächtig</h2><p class="details" data-v-ddc412bb>With the full power of chart.js 💯</p><!----></article><!--]--></div></div><!--]--></div></div></div><!--[--><!--]--><div class="vp-doc container" style="" data-v-cc8ba45b data-v-30d82f28><!--[--><div style="position:relative;" data-v-cc8ba45b><div></div></div><!--]--></div></div></div><footer class="VPFooter" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/migration-guides/index.html b/de/migration-guides/index.html new file mode 100644 index 00000000..7d9b68a5 --- /dev/null +++ b/de/migration-guides/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_migration-guides_index.md.CZ9EWhAj.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/migration-guides/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/migration-guides/" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_migration-guides_" data-v-c6c1d99a><div><h1 id="migration" tabindex="-1">Migration <a class="header-anchor" href="#migration" aria-label="Permalink to "Migration""></a></h1><p>Over the time <code>vue-chartjs</code> has changed a lot. As the web and frontend technology has changed. To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides.</p><ul><li><a href="/migration-guides/v5.html">v4 -> v5</a></li><li><a href="/migration-guides/v4.html">v3 -> v4</a></li><li><a href="/migration-guides/vue-chart-3.html">vue-chart-3</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/migration-guides/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/migration-guides/v4.html b/de/migration-guides/v4.html new file mode 100644 index 00000000..1aa7fe44 --- /dev/null +++ b/de/migration-guides/v4.html @@ -0,0 +1,116 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration from v3 to v4 | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_migration-guides_v4.md.LYrTDWaL.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/migration-guides/v4.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/migration-guides/v4.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_migration-guides_v4" data-v-c6c1d99a><div><h1 id="migration-from-v3-to-v4" tabindex="-1">Migration from v3 to v4 <a class="header-anchor" href="#migration-from-v3-to-v4" aria-label="Permalink to "Migration from v3 to v4""></a></h1><p>With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.</p><p>v4 is fully compatible with Chart.js v3.</p><h2 id="tree-shaking" tabindex="-1">Tree-shaking <a class="header-anchor" href="#tree-shaking" aria-label="Permalink to "Tree-shaking""></a></h2><p>v4 of this library, <a href="https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation" target="_blank" rel="noreferrer">just like Chart.js v3</a>, is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use.</p><p>For a list of all the available items to import, see <a href="https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc" target="_blank" rel="noreferrer">Chart.js docs</a>.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — lazy way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js/auto'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — tree-shakable way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span></code></pre></div><p>Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size.</p><p>Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Pie } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, ArcElement, CategoryScale)</span></span></code></pre></div><h2 id="changing-the-creation-of-charts" tabindex="-1">Changing the creation of Charts <a class="header-anchor" href="#changing-the-creation-of-charts" aria-label="Permalink to "Changing the creation of Charts""></a></h2><p>In v3, you needed to import the component, and then either use extends or mixins and add it.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// BarChart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Bar,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Overwriting base render method with actual data.</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'GitHub Commits'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'DataPage'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="new-reactivity-system" tabindex="-1">New reactivity system <a class="header-anchor" href="#new-reactivity-system" aria-label="Permalink to "New reactivity system""></a></h2><p>v3 does not update or re-render the chart if new data is passed. You needed to use <code>reactiveProp</code> and <code>reactiveData</code> mixins for that.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Line, mixins } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Line,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mixins: [mixins.reactiveProp],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'chartData'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'options'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartData, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.options)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed.</p><p>v4:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/migration-guides/v4.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/migration-guides/v5.html b/de/migration-guides/v5.html new file mode 100644 index 00000000..41cf1d48 --- /dev/null +++ b/de/migration-guides/v5.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration from v4 to v5 | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_migration-guides_v5.md.CG9R7lTX.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/migration-guides/v5.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/migration-guides/v5.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_migration-guides_v5" data-v-c6c1d99a><div><h1 id="migration-from-v4-to-v5" tabindex="-1">Migration from v4 to v5 <a class="header-anchor" href="#migration-from-v4-to-v5" aria-label="Permalink to "Migration from v4 to v5""></a></h1><p>With v5, this library introduces a number of breaking changes</p><h2 id="esm" tabindex="-1">ESM <a class="header-anchor" href="#esm" aria-label="Permalink to "ESM""></a></h2><h3 id="v5-0" tabindex="-1">v5.0 <a class="header-anchor" href="#v5-0" aria-label="Permalink to "v5.0""></a></h3><p>Chart.js v4 and vue-chartjs v5 are <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM-only packages</a>. To use them in your project, it also should be ESM:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// package.json</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"module"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>If you are experiencing this problem with Jest, you should follow <a href="https://jestjs.io/docs/ecmascript-modules" target="_blank" rel="noreferrer">this doc</a> to enable ESM support. Or, we can recommend you migrate to <a href="https://vitest.dev/" target="_blank" rel="noreferrer">Vitest</a>. Vitest has ESM support out of the box and <a href="https://vitest.dev/guide/migration.html#migrating-from-jest" target="_blank" rel="noreferrer">has almost the same API as Jest</a>. <a href="https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef" target="_blank" rel="noreferrer">Here is our example of migration</a>.</p><h3 id="v5-1" tabindex="-1">v5.1 <a class="header-anchor" href="#v5-1" aria-label="Permalink to "v5.1""></a></h3><p>Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support.</p><h2 id="api-changes" tabindex="-1">API changes <a class="header-anchor" href="#api-changes" aria-label="Permalink to "API changes""></a></h2><ul><li><code>chartData</code> props were renamed to <code>data</code></li><li><code>chartOptions</code> props were renamed to <code>options</code></li><li>unknown props will fall through to the canvas element.</li><li><code>generateChart</code> were refactored and renamed to <code>createTypedChart</code></li><li>Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x.</li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/migration-guides/v5.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/de/migration-guides/vue-chart-3.html b/de/migration-guides/vue-chart-3.html new file mode 100644 index 00000000..a48f523a --- /dev/null +++ b/de/migration-guides/vue-chart-3.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="de" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration from vue-chart-3 | 📈 vue-chartjs</title> + <meta name="description" content="⚡Einfache und schöne Diagramme mit Chart.js und Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/de_migration-guides_vue-chart-3.md.KaG0Kt4w.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/de/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>Deutsch</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/migration-guides/vue-chart-3.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>Deutsch</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/migration-guides/vue-chart-3.html" data-v-853d4873><!--[--><span data-v-853d4873>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _de_migration-guides_vue-chart-3" data-v-c6c1d99a><div><h1 id="migration-from-vue-chart-3" tabindex="-1">Migration from vue-chart-3 <a class="header-anchor" href="#migration-from-vue-chart-3" aria-label="Permalink to "Migration from vue-chart-3""></a></h1><h2 id="uninstall-vue-chart-3" tabindex="-1">Uninstall vue-chart-3 <a class="header-anchor" href="#uninstall-vue-chart-3" aria-label="Permalink to "Uninstall vue-chart-3""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> uninstall</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span></code></pre></div><h2 id="install-vue-chartjs" tabindex="-1">Install vue-chartjs <a class="header-anchor" href="#install-vue-chartjs" aria-label="Permalink to "Install vue-chartjs""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span></code></pre></div><h2 id="change-component-import-path" tabindex="-1">Change component import path <a class="header-anchor" href="#change-component-import-path" aria-label="Permalink to "Change component import path""></a></h2><p>For Vue 2.7 and Vue 3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>For Vue 2 (<2.7) projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs/legacy'</span></span></code></pre></div><h2 id="rename-components" tabindex="-1">Rename components <a class="header-anchor" href="#rename-components" aria-label="Permalink to "Rename components""></a></h2><ul><li>BarChart to Bar</li><li>DoughnutChart to Doughnut</li><li>LineChart to Line</li><li>PieChart to Pie</li><li>PolarAreaChart to PolarArea</li><li>RadarChart to Radar</li><li>BubbleChart to Bubble</li><li>ScatterChart to Scatter</li></ul><h2 id="rename-props" tabindex="-1">Rename props <a class="header-anchor" href="#rename-props" aria-label="Permalink to "Rename props""></a></h2><ul><li>options to chartOptions</li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/de/migration-guides/vue-chart-3.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 00000000..3e51fde5 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Examples | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/examples_index.md.DOTJebGT.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/examples/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/examples/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _examples_" data-v-c6c1d99a><div><h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="vue-3-charts" tabindex="-1">Vue 3 charts <a class="header-anchor" href="#vue-3-charts" aria-label="Permalink to "Vue 3 charts""></a></h2><ul><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive" target="_blank" rel="noreferrer">Bar with reactive data</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom" target="_blank" rel="noreferrer">Custom chart</a></li><li><a href="https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events" target="_blank" rel="noreferrer">Events</a></li></ul><h2 id="vue-2-charts-vue-chartjs-v4" tabindex="-1">Vue 2 charts (vue-chartjs v4) <a class="header-anchor" href="#vue-2-charts-vue-chartjs-v4" aria-label="Permalink to "Vue 2 charts (vue-chartjs v4)""></a></h2><ul><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar" target="_blank" rel="noreferrer">Bar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble" target="_blank" rel="noreferrer">Bubble</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut" target="_blank" rel="noreferrer">Doughnut</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line" target="_blank" rel="noreferrer">Line</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie" target="_blank" rel="noreferrer">Pie</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area" target="_blank" rel="noreferrer">PolarArea</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar" target="_blank" rel="noreferrer">Radar</a></li><li><a href="https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter" target="_blank" rel="noreferrer">Scatter</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/examples/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/guide/examples.html b/guide/examples.html new file mode 100644 index 00000000..46a87161 --- /dev/null +++ b/guide/examples.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Examples | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/guide_examples.md.G49JvuCM.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/guide/examples.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/guide/examples.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0 has-active" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _guide_examples" data-v-c6c1d99a><div><h1 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h1><h2 id="chart-with-props" tabindex="-1">Chart with props <a class="header-anchor" href="#chart-with-props" aria-label="Permalink to "Chart with props""></a></h2><p>Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> required: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: Object,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-local-data" tabindex="-1">Chart with local data <a class="header-anchor" href="#chart-with-local-data" aria-label="Permalink to "Chart with local data""></a></h2><p>You can handle your chart data directly in your parent component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-api-data" tabindex="-1">Chart with API data <a class="header-anchor" href="#chart-with-api-data" aria-label="Permalink to "Chart with API data""></a></h2><p>A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives.</p><p>To prevent this, a simple <code>v-if</code> is the best solution.</p><p>Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> class</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"container"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> v-if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">loaded</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> loaded: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">userlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> fetch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/api/userlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartdata </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> userlist</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.loaded </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">catch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (e) {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">error</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="chart-with-dynamic-styles" tabindex="-1">Chart with dynamic styles <a class="header-anchor" href="#chart-with-dynamic-styles" aria-label="Permalink to "Chart with dynamic styles""></a></h2><p>You can set <code>responsive: true</code> and pass in a styles object which gets applied as inline styles to the outer <code><div></code>. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>You need to set <code>position: relative</code></p></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">style</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">myStyles</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">div</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> myStyles</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`${</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* mutable height */</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}px`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> position: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'relative'</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="custom-new-charts" tabindex="-1">Custom / New Charts <a class="header-anchor" href="#custom-new-charts" aria-label="Permalink to "Custom / New Charts""></a></h2><p>Sometimes you need to extend the default Chart.js charts. There are a lot of <a href="http://www.chartjs.org/docs/latest/developers/charts.html" target="_blank" rel="noreferrer">examples</a> on how to extend and modify the default charts. Or, you can create your own chart type.</p><p>In <code>vue-chartjs</code>, you can do this pretty much the same way:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 1. Import Chart.js so you can use the global Chart object</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 2. Import the `createTypedChart()` method to create the vue component.</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { createTypedChart } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Import needed controller from Chart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { LineController } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 3. Extend one of the default charts</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// http://www.chartjs.org/docs/latest/developers/charts.html</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineWithLineController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> LineController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* custom magic here */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 4. Generate the vue-chartjs component</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// The first argument is the chart-id, the second the chart type, third is the custom controller</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> CustomLine</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> createTypedChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'line'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, LineWithLineController)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts.</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { CustomLine }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="resources" tabindex="-1">Resources <a class="header-anchor" href="#resources" aria-label="Permalink to "Resources""></a></h2><p>Here are some resources, such as tutorials, on how to use <code>vue-chartjs</code>:</p><ul><li><a href="https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f" target="_blank" rel="noreferrer">Using vue-chartjs with WordPress</a></li><li><a href="https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a" target="_blank" rel="noreferrer">Create stunning Charts with Vue and Chart.js</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part I</a></li><li><a href="https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf" target="_blank" rel="noreferrer">Let’s Build a Web App with Vue, Chart.js and an API Part II</a></li><li><a href="https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/" target="_blank" rel="noreferrer">Build a realtime chart with VueJS and Pusher</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/guide/examples.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><a class="VPLink link pager-link prev" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Previous page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/migration-guides/" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Introduction</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/guide/index.html b/guide/index.html new file mode 100644 index 00000000..6ce3e865 --- /dev/null +++ b/guide/index.html @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Getting Started | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/guide_index.md.BghNT2ZM.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/guide/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/guide/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _guide_" data-v-c6c1d99a><div><h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started""></a></h1><p><strong>vue-chartjs</strong> is a wrapper for <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noreferrer">Chart.js</a> in Vue. You can easily create reuseable chart components.</p><p>Supports Chart.js v4.</p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to "Introduction""></a></h2><p><code>vue-chartjs</code> lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible.</p><p>It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility.</p><div class="tip custom-block"><p class="custom-block-title">Need an API to fetch data?</p><p>Please consider <a href="https://cube.dev/?ref=eco-vue-chartjs" target="_blank" rel="noreferrer">Cube</a>, an open-source API for data apps.</p></div><h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h2><p>You can install <code>vue-chartjs</code> over <code>yarn</code> or <code>npm</code> or <code>pnpm</code>. However, you also need to add <code>chart.js</code> as a dependency to your project because <code>Chart.js</code> is a peerDependency. This way you can have full control over the versioning of <code>Chart.js</code>.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> chart.js</span></span></code></pre></div><h2 id="integration" tabindex="-1">Integration <a class="header-anchor" href="#integration" aria-label="Permalink to "Integration""></a></h2><p>Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components.</p><p>The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility.</p><h2 id="creating-your-first-chart" tabindex="-1">Creating your first Chart <a class="header-anchor" href="#creating-your-first-chart" aria-label="Permalink to "Creating your first Chart""></a></h2><p>First, you need to import the base chart.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>Check out the official <a href="http://www.chartjs.org/docs/latest/#creating-a-chart" target="_blank" rel="noreferrer">Chart.js docs</a> to see the object structure you need to provide.</p><p>Just create your own component.</p><p><strong>BarChart.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-chart-id"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [ { data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] } ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartOptions: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> responsive: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Use it in your vue app:</p><p><strong>App.vue</strong></p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'App'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="updating-charts" tabindex="-1">Updating Charts <a class="header-anchor" href="#updating-charts" aria-label="Permalink to "Updating Charts""></a></h2><p>Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart options */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>You may get Vue's <code>Target is readonly</code> warnings when you are updating your <code>chartData</code>.</p><p>If your <code>chartData</code> is a <code>read-only</code> reactive value, you can override this warning by using a clone:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">stringify</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parse</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(chartData))</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartOptions</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>Unless you have a writable computed <code>chartData</code>, you won't be able to use the newer <code>structuredClone</code>, as you'll likely hit the <code>Write operation failed: computed value is readonly</code> error.</p><p>You don't need to use a clone if your <code>chartData</code> is a <a href="https://vuejs.org/guide/essentials/computed#writable-computed" target="_blank" rel="noreferrer">writable computed value</a>.</p><h2 id="access-to-chart-instance" tabindex="-1">Access to Chart instance <a class="header-anchor" href="#access-to-chart-instance" aria-label="Permalink to "Access to Chart instance""></a></h2><p>You can get access to chart instance via template refs.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ref</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bar"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In Vue3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> chartInstance</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.$refs.bar.chart</span></span></code></pre></div><h2 id="accessibility" tabindex="-1">Accessibility <a class="header-anchor" href="#accessibility" aria-label="Permalink to "Accessibility""></a></h2><p>To make your charts accessible to all users, you should label your charts. Please refer also to the official <a href="https://www.chartjs.org/docs/latest/general/accessibility.html" target="_blank" rel="noreferrer">Chart.js Accessibility notes</a>.</p><h3 id="aria-label" tabindex="-1"><code>aria-label</code> <a class="header-anchor" href="#aria-label" aria-label="Permalink to "`aria-label`""></a></h3><p>You can directly label a chart by passing an <code>aria-label</code> prop.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-label</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825."</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="aria-describedby" tabindex="-1"><code>aria-describedby</code> <a class="header-anchor" href="#aria-describedby" aria-label="Permalink to "`aria-describedby`""></a></h3><p>You can reference to a describing element such as a table which describes the data by using the <code>aria-describedby</code> property.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> aria-describedby</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> id</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"my-data-table"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Sales figures for the years 2022 to 2024.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">caption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2022</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2023</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2024</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">th</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">thead</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>987</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>1209</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>825</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">td</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">tbody</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">table</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h3 id="fallback-content" tabindex="-1">Fallback-Content <a class="header-anchor" href="#fallback-content" aria-label="Permalink to "Fallback-Content""></a></h3><p>In case the Browser is not able to render the <code>canvas</code> element, you should consider providing fallback content by using the Slot of each component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>Chart couldn't be loaded.</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/guide/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><!----></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/guide.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Getting started</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 00000000..86cd3144 --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"api_index.md":"OxqrgQ8I","de_api_index.md":"D17-Qxfi","de_examples_index.md":"B1Pa2eih","de_guide_examples.md":"-BxsMonn","de_guide_index.md":"BVyItP4I","de_index.md":"3FrGuMZ2","de_migration-guides_index.md":"CZ9EWhAj","de_migration-guides_v4.md":"LYrTDWaL","de_migration-guides_v5.md":"CG9R7lTX","de_migration-guides_vue-chart-3.md":"KaG0Kt4w","examples_index.md":"DOTJebGT","guide_examples.md":"G49JvuCM","guide_index.md":"BghNT2ZM","index.md":"DsYyaYhL","migration-guides_index.md":"sXAq1EDA","migration-guides_v4.md":"CeBcEFpH","migration-guides_v5.md":"lT20HEsg","migration-guides_vue-chart-3.md":"95rcNC-y"} diff --git a/index.html b/index.html new file mode 100644 index 00000000..a65ff76b --- /dev/null +++ b/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/index.md.DsYyaYhL.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><!----><!----><div class="VPContent is-home" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPHome" data-v-0fe28542 data-v-cc8ba45b><!--[--><!--]--><div class="VPHero VPHomeHero" data-v-cc8ba45b data-v-f4b4dff7><div class="container" data-v-f4b4dff7><div class="main" data-v-f4b4dff7><!--[--><!--]--><!--[--><h1 class="name" data-v-f4b4dff7><span class="clip" data-v-f4b4dff7>📈 vue-chartjs</span></h1><!----><p class="tagline" data-v-f4b4dff7>⚡ Easy and beautiful charts with Chart.js and Vue.js</p><!--]--><!--[--><!--]--><div class="actions" data-v-f4b4dff7><!--[--><div class="action" data-v-f4b4dff7><a class="VPButton medium brand" href="/guide/" data-v-f4b4dff7 data-v-5817f143>Get Started →</a></div><!--]--></div><!--[--><!--]--></div><!----></div></div><!--[--><!--]--><!--[--><!--]--><div class="VPFeatures VPHomeFeatures" data-v-cc8ba45b data-v-901d64aa><div class="container" data-v-901d64aa><div class="items" data-v-901d64aa><!--[--><div class="grid-3 item" data-v-901d64aa><div class="VPLink no-icon VPFeature" data-v-901d64aa data-v-ddc412bb><!--[--><article class="box" data-v-ddc412bb><div class="icon" data-v-ddc412bb>🙌</div><h2 class="title" data-v-ddc412bb>Easy</h2><p class="details" data-v-ddc412bb>Easy for both beginners and pros</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-901d64aa><div class="VPLink no-icon VPFeature" data-v-901d64aa data-v-ddc412bb><!--[--><article class="box" data-v-ddc412bb><div class="icon" data-v-ddc412bb>💪</div><h2 class="title" data-v-ddc412bb>Extendable</h2><p class="details" data-v-ddc412bb>Simple to use, easy to extend</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-901d64aa><div class="VPLink no-icon VPFeature" data-v-901d64aa data-v-ddc412bb><!--[--><article class="box" data-v-ddc412bb><div class="icon" data-v-ddc412bb>💯</div><h2 class="title" data-v-ddc412bb>Powerful</h2><p class="details" data-v-ddc412bb>With the full power of chart.js 💯</p><!----></article><!--]--></div></div><!--]--></div></div></div><!--[--><!--]--><div class="vp-doc container" style="" data-v-cc8ba45b data-v-30d82f28><!--[--><div style="position:relative;" data-v-cc8ba45b><div></div></div><!--]--></div></div></div><footer class="VPFooter" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/migration-guides/index.html b/migration-guides/index.html new file mode 100644 index 00000000..61855464 --- /dev/null +++ b/migration-guides/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/migration-guides_index.md.sXAq1EDA.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0 has-active" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _migration-guides_" data-v-c6c1d99a><div><h1 id="migration" tabindex="-1">Migration <a class="header-anchor" href="#migration" aria-label="Permalink to "Migration""></a></h1><p>Over the time <code>vue-chartjs</code> has changed a lot. As the web and frontend technology has changed. To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides.</p><ul><li><a href="/migration-guides/v5.html">v4 -> v5</a></li><li><a href="/migration-guides/v4.html">v3 -> v4</a></li><li><a href="/migration-guides/vue-chart-3.html">vue-chart-3</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/migration-guides/index.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><a class="VPLink link pager-link prev" href="/guide/examples.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Previous page</span><span class="title" data-v-be2aa953>Examples</span><!--]--></a></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/migration-guides/v5.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Migrate to v5</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/migration-guides/v4.html b/migration-guides/v4.html new file mode 100644 index 00000000..d7c929e0 --- /dev/null +++ b/migration-guides/v4.html @@ -0,0 +1,116 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration from v3 to v4 | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/migration-guides_v4.md.CeBcEFpH.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/v4.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/v4.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0 has-active" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _migration-guides_v4" data-v-c6c1d99a><div><h1 id="migration-from-v3-to-v4" tabindex="-1">Migration from v3 to v4 <a class="header-anchor" href="#migration-from-v3-to-v4" aria-label="Permalink to "Migration from v3 to v4""></a></h1><p>With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.</p><p>v4 is fully compatible with Chart.js v3.</p><h2 id="tree-shaking" tabindex="-1">Tree-shaking <a class="header-anchor" href="#tree-shaking" aria-label="Permalink to "Tree-shaking""></a></h2><p>v4 of this library, <a href="https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation" target="_blank" rel="noreferrer">just like Chart.js v3</a>, is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use.</p><p>For a list of all the available items to import, see <a href="https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc" target="_blank" rel="noreferrer">Chart.js docs</a>.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — lazy way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js/auto'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>v4 — tree-shakable way:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span></code></pre></div><p>Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size.</p><p>Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Pie } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, ArcElement, CategoryScale)</span></span></code></pre></div><h2 id="changing-the-creation-of-charts" tabindex="-1">Changing the creation of Charts <a class="header-anchor" href="#changing-the-creation-of-charts" aria-label="Permalink to "Changing the creation of Charts""></a></h2><p>In v3, you needed to import the component, and then either use extends or mixins and add it.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// BarChart.js</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Bar,</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Overwriting base render method with actual data.</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'GitHub Commits'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">BarChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BarChart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'path/to/component/BarChart'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'DataPage'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { BarChart }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component.</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> chartData: {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> labels: [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'January'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'February'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'March'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> datasets: [</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> label: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Data One'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backgroundColor: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'#f87979'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data: [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">40</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><h2 id="new-reactivity-system" tabindex="-1">New reactivity system <a class="header-anchor" href="#new-reactivity-system" aria-label="Permalink to "New reactivity system""></a></h2><p>v3 does not update or re-render the chart if new data is passed. You needed to use <code>reactiveProp</code> and <code>reactiveData</code> mixins for that.</p><p>v3:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Line, mixins } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extends: Line,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mixins: [mixins.reactiveProp],</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> props: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'chartData'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'options'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> mounted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">renderChart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.chartData, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.options)</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed.</p><p>v4:</p><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">Bar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> :</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chart-data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">chartData</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /></span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">template</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// DataPage.vue</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Bar } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { Chart </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'chart.js'</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ChartJS.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale)</span></span> +<span class="line"></span> +<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'BarChart'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> components: { Bar },</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> computed: {</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chartData</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* mutable chart data */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">script</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/migration-guides/v4.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><a class="VPLink link pager-link prev" href="/migration-guides/v5.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Previous page</span><span class="title" data-v-be2aa953>Migrate to v5</span><!--]--></a></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/migration-guides/vue-chart-3.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Migrate from vue-chart-3</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/migration-guides/v5.html b/migration-guides/v5.html new file mode 100644 index 00000000..73e87e71 --- /dev/null +++ b/migration-guides/v5.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration from v4 to v5 | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/migration-guides_v5.md.lT20HEsg.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/v5.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/v5.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0 has-active" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _migration-guides_v5" data-v-c6c1d99a><div><h1 id="migration-from-v4-to-v5" tabindex="-1">Migration from v4 to v5 <a class="header-anchor" href="#migration-from-v4-to-v5" aria-label="Permalink to "Migration from v4 to v5""></a></h1><p>With v5, this library introduces a number of breaking changes</p><h2 id="esm" tabindex="-1">ESM <a class="header-anchor" href="#esm" aria-label="Permalink to "ESM""></a></h2><h3 id="v5-0" tabindex="-1">v5.0 <a class="header-anchor" href="#v5-0" aria-label="Permalink to "v5.0""></a></h3><p>Chart.js v4 and vue-chartjs v5 are <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM-only packages</a>. To use them in your project, it also should be ESM:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// package.json</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span> +<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"module"</span></span> +<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>If you are experiencing this problem with Jest, you should follow <a href="https://jestjs.io/docs/ecmascript-modules" target="_blank" rel="noreferrer">this doc</a> to enable ESM support. Or, we can recommend you migrate to <a href="https://vitest.dev/" target="_blank" rel="noreferrer">Vitest</a>. Vitest has ESM support out of the box and <a href="https://vitest.dev/guide/migration.html#migrating-from-jest" target="_blank" rel="noreferrer">has almost the same API as Jest</a>. <a href="https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef" target="_blank" rel="noreferrer">Here is our example of migration</a>.</p><h3 id="v5-1" tabindex="-1">v5.1 <a class="header-anchor" href="#v5-1" aria-label="Permalink to "v5.1""></a></h3><p>Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support.</p><h2 id="api-changes" tabindex="-1">API changes <a class="header-anchor" href="#api-changes" aria-label="Permalink to "API changes""></a></h2><ul><li><code>chartData</code> props were renamed to <code>data</code></li><li><code>chartOptions</code> props were renamed to <code>options</code></li><li>unknown props will fall through to the canvas element.</li><li><code>generateChart</code> were refactored and renamed to <code>createTypedChart</code></li><li>Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x.</li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/migration-guides/v5.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><a class="VPLink link pager-link prev" href="/migration-guides/" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Previous page</span><span class="title" data-v-be2aa953>Introduction</span><!--]--></a></div><div class="pager" data-v-be2aa953><a class="VPLink link pager-link next" href="/migration-guides/v4.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Next page</span><span class="title" data-v-be2aa953>Migrate to v4</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/migration-guides/vue-chart-3.html b/migration-guides/vue-chart-3.html new file mode 100644 index 00000000..bae9a320 --- /dev/null +++ b/migration-guides/vue-chart-3.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en-US" dir="ltr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Migration from vue-chart-3 | 📈 vue-chartjs</title> + <meta name="description" content="⚡ Easy and beautiful charts with Chart.js and Vue.js"> + <meta name="generator" content="VitePress v1.4.3"> + <link rel="preload stylesheet" href="/assets/style.D4ugNl4d.css" as="style"> + + <script type="module" src="/assets/app.GBN-9bPq.js"></script> + <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin=""> + <link rel="modulepreload" href="/assets/chunks/theme.BMGZMIu3.js"> + <link rel="modulepreload" href="/assets/chunks/framework.CdbxnhrM.js"> + <link rel="modulepreload" href="/assets/migration-guides_vue-chart-3.md.95rcNC-y.lean.js"> + <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script> + <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script> + </head> + <body> + <div id="app"><div class="Layout" data-v-267e9c9a><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0d927997></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0d927997> Skip to content </a><!--]--><!----><header class="VPNav" data-v-267e9c9a data-v-4ee8bff2><div class="VPNavBar" data-v-4ee8bff2 data-v-f0f60ea4><div class="wrapper" data-v-f0f60ea4><div class="container" data-v-f0f60ea4><div class="title" data-v-f0f60ea4><div class="VPNavBarTitle has-sidebar" data-v-f0f60ea4 data-v-27d5dab5><a class="title" href="/" data-v-27d5dab5><!--[--><!--]--><!----><span data-v-27d5dab5>📈 vue-chartjs</span><!--[--><!--]--></a></div></div><div class="content" data-v-f0f60ea4><div class="content-body" data-v-f0f60ea4><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f0f60ea4><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f0f60ea4 data-v-0655dfd0><span id="main-nav-aria-label" class="visually-hidden" data-v-0655dfd0> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Guide</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/migration-guides/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Migration guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/api/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>API</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://stackoverflow.com/questions/tagged/vue-chartjs/" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Stack Overflow</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/apertureless/vue-chartjs" target="_blank" rel="noreferrer" tabindex="0" data-v-0655dfd0 data-v-780e4a1c><!--[--><span data-v-780e4a1c>Github</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-f0f60ea4 data-v-cfaf8272 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-4704c17a><span class="text" data-v-4704c17a><span class="vpi-languages option-icon" data-v-4704c17a></span><!----><span class="vpi-chevron-down text-icon" data-v-4704c17a></span></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="items" data-v-cfaf8272><p class="title" data-v-cfaf8272>English</p><!--[--><div class="VPMenuLink" data-v-cfaf8272 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/vue-chart-3.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-f0f60ea4 data-v-e142ede8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-e142ede8 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f0f60ea4 data-v-a191e894 data-v-4704c17a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-4704c17a><span class="vpi-more-horizontal icon" data-v-4704c17a></span></button><div class="menu" data-v-4704c17a><div class="VPMenu" data-v-4704c17a data-v-7d4ca9a7><!----><!--[--><!--[--><div class="group translations" data-v-a191e894><p class="trans-title" data-v-a191e894>English</p><!--[--><div class="VPMenuLink" data-v-a191e894 data-v-853d4873><a class="VPLink link" href="/de/migration-guides/vue-chart-3.html" data-v-853d4873><!--[--><span data-v-853d4873>Deutsch</span><!--]--></a></div><!--]--></div><div class="group" data-v-a191e894><div class="item appearance" data-v-a191e894><p class="label" data-v-a191e894>Appearance</p><div class="appearance-action" data-v-a191e894><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-a191e894 data-v-8bbecb59 data-v-bdee5f6f><span class="check" data-v-bdee5f6f><span class="icon" data-v-bdee5f6f><!--[--><span class="vpi-sun sun" data-v-8bbecb59></span><span class="vpi-moon moon" data-v-8bbecb59></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f0f60ea4 data-v-a7d339bd><span class="container" data-v-a7d339bd><span class="top" data-v-a7d339bd></span><span class="middle" data-v-a7d339bd></span><span class="bottom" data-v-a7d339bd></span></span></button></div></div></div></div><div class="divider" data-v-f0f60ea4><div class="divider-line" data-v-f0f60ea4></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-267e9c9a data-v-76c0c9b9><div class="container" data-v-76c0c9b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-76c0c9b9><span class="vpi-align-left menu-icon" data-v-76c0c9b9></span><span class="menu-text" data-v-76c0c9b9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-76c0c9b9 data-v-21e70e53><button data-v-21e70e53>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-267e9c9a data-v-4a238344><div class="curtain" data-v-4a238344></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4a238344><span class="visually-hidden" id="sidebar-aria-label" data-v-4a238344> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Introduction</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/guide/examples.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Examples</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-29097003><section class="VPSidebarItem level-0 has-active" data-v-29097003 data-v-d4309205><div class="item" role="button" tabindex="0" data-v-d4309205><div class="indicator" data-v-d4309205></div><h2 class="text" data-v-d4309205>Migration</h2><!----></div><div class="items" data-v-d4309205><!--[--><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v5.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v5</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/v4.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate to v4</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-d4309205 data-v-d4309205><div class="item" data-v-d4309205><div class="indicator" data-v-d4309205></div><a class="VPLink link link" href="/migration-guides/vue-chart-3.html" data-v-d4309205><!--[--><p class="text" data-v-d4309205>Migrate from vue-chart-3</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-267e9c9a data-v-0fe28542><div class="VPDoc has-sidebar has-aside" data-v-0fe28542 data-v-c6c1d99a><!--[--><!--]--><div class="container" data-v-c6c1d99a><div class="aside" data-v-c6c1d99a><div class="aside-curtain" data-v-c6c1d99a></div><div class="aside-container" data-v-c6c1d99a><div class="aside-content" data-v-c6c1d99a><div class="VPDocAside" data-v-c6c1d99a data-v-646020bd><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-646020bd data-v-cc231367><div class="content" data-v-cc231367><div class="outline-marker" data-v-cc231367></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-cc231367>On this page</div><ul class="VPDocOutlineItem root" data-v-cc231367 data-v-85f41b19><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-646020bd></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c6c1d99a><div class="content-container" data-v-c6c1d99a><!--[--><!--]--><main class="main" data-v-c6c1d99a><div style="position:relative;" class="vp-doc _migration-guides_vue-chart-3" data-v-c6c1d99a><div><h1 id="migration-from-vue-chart-3" tabindex="-1">Migration from vue-chart-3 <a class="header-anchor" href="#migration-from-vue-chart-3" aria-label="Permalink to "Migration from vue-chart-3""></a></h1><h2 id="uninstall-vue-chart-3" tabindex="-1">Uninstall vue-chart-3 <a class="header-anchor" href="#uninstall-vue-chart-3" aria-label="Permalink to "Uninstall vue-chart-3""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> uninstall</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chart-3</span></span></code></pre></div><h2 id="install-vue-chartjs" tabindex="-1">Install vue-chartjs <a class="header-anchor" href="#install-vue-chartjs" aria-label="Permalink to "Install vue-chartjs""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span> +<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span> +<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue-chartjs</span></span></code></pre></div><h2 id="change-component-import-path" tabindex="-1">Change component import path <a class="header-anchor" href="#change-component-import-path" aria-label="Permalink to "Change component import path""></a></h2><p>For Vue 2.7 and Vue 3 projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs'</span></span></code></pre></div><p>For Vue 2 (<2.7) projects:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/* component */</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'vue-chartjs/legacy'</span></span></code></pre></div><h2 id="rename-components" tabindex="-1">Rename components <a class="header-anchor" href="#rename-components" aria-label="Permalink to "Rename components""></a></h2><ul><li>BarChart to Bar</li><li>DoughnutChart to Doughnut</li><li>LineChart to Line</li><li>PieChart to Pie</li><li>PolarAreaChart to PolarArea</li><li>RadarChart to Radar</li><li>BubbleChart to Bubble</li><li>ScatterChart to Scatter</li></ul><h2 id="rename-props" tabindex="-1">Rename props <a class="header-anchor" href="#rename-props" aria-label="Permalink to "Rename props""></a></h2><ul><li>options to chartOptions</li></ul></div></div></main><footer class="VPDocFooter" data-v-c6c1d99a data-v-be2aa953><!--[--><!--]--><div class="edit-info" data-v-be2aa953><div class="edit-link" data-v-be2aa953><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/apertureless/vue-chartjs/edit/main/website/src/migration-guides/vue-chart-3.md" target="_blank" rel="noreferrer" data-v-be2aa953><!--[--><span class="vpi-square-pen edit-link-icon" data-v-be2aa953></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-be2aa953><p class="VPLastUpdated" data-v-be2aa953 data-v-d37dd316>Last updated: <time datetime="2024-10-31T13:43:18.000Z" data-v-d37dd316></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-be2aa953><span class="visually-hidden" id="doc-footer-aria-label" data-v-be2aa953>Pager</span><div class="pager" data-v-be2aa953><a class="VPLink link pager-link prev" href="/migration-guides/v4.html" data-v-be2aa953><!--[--><span class="desc" data-v-be2aa953>Previous page</span><span class="title" data-v-be2aa953>Migrate to v4</span><!--]--></a></div><div class="pager" data-v-be2aa953><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-267e9c9a data-v-969adff1><div class="container" data-v-969adff1><p class="message" data-v-969adff1>Released under the MIT License.</p><p class="copyright" data-v-969adff1>Copyright © 2019-present Jakub Juszczak</p></div></footer><!--[--><!--]--></div></div> + <script>window.__VP_HASH_MAP__=JSON.parse("{\"api_index.md\":\"OxqrgQ8I\",\"de_api_index.md\":\"D17-Qxfi\",\"de_examples_index.md\":\"B1Pa2eih\",\"de_guide_examples.md\":\"-BxsMonn\",\"de_guide_index.md\":\"BVyItP4I\",\"de_index.md\":\"3FrGuMZ2\",\"de_migration-guides_index.md\":\"CZ9EWhAj\",\"de_migration-guides_v4.md\":\"LYrTDWaL\",\"de_migration-guides_v5.md\":\"CG9R7lTX\",\"de_migration-guides_vue-chart-3.md\":\"KaG0Kt4w\",\"examples_index.md\":\"DOTJebGT\",\"guide_examples.md\":\"G49JvuCM\",\"guide_index.md\":\"BghNT2ZM\",\"index.md\":\"DsYyaYhL\",\"migration-guides_index.md\":\"sXAq1EDA\",\"migration-guides_v4.md\":\"CeBcEFpH\",\"migration-guides_v5.md\":\"lT20HEsg\",\"migration-guides_vue-chart-3.md\":\"95rcNC-y\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"editLink\":{\"pattern\":\"https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"indexName\":\"vue-chartjs\",\"apiKey\":\"a1bb4528e8ed1eb89e40d6e4c1000514\",\"appId\":\"24VA3R3NCC\"}},\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"Migration guides\",\"link\":\"/migration-guides/\",\"activeMatch\":\"^/migration-guides/\"},{\"text\":\"API\",\"link\":\"/api/\",\"activeMatch\":\"^/api/\"},{\"text\":\"Examples\",\"link\":\"/examples/\",\"activeMatch\":\"^/examples/\"},{\"text\":\"Stack Overflow\",\"link\":\"https://stackoverflow.com/questions/tagged/vue-chartjs/\"},{\"text\":\"Github\",\"link\":\"https://github.com/apertureless/vue-chartjs\"}],\"sidebar\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/guide\"},{\"text\":\"Examples\",\"link\":\"/guide/examples\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/migration-guides/\"},{\"text\":\"Migrate to v5\",\"link\":\"/migration-guides/v5\"},{\"text\":\"Migrate to v4\",\"link\":\"/migration-guides/v4\"},{\"text\":\"Migrate from vue-chart-3\",\"link\":\"/migration-guides/vue-chart-3\"}]}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Jakub Juszczak\"}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡ Easy and beautiful charts with Chart.js and Vue.js\"},\"de\":{\"label\":\"Deutsch\",\"lang\":\"de\",\"link\":\"/de/\",\"title\":\"📈 vue-chartjs\",\"description\":\"⚡Einfache und schöne Diagramme mit Chart.js und Vue.js\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script> + + </body> +</html> \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 53beaeff..00000000 --- a/package.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "name": "vue-chartjs", - "type": "module", - "version": "5.3.2", - "description": "Vue.js wrapper for chart.js for creating beautiful charts.", - "author": "Jakub Juszczak <jakub@posteo.de>", - "homepage": "http://vue-chartjs.org", - "license": "MIT", - "contributors": [ - { - "name": "Thorsten Lünborg", - "web": "https://github.com/LinusBorg" - }, - { - "name": "Juan Carlos Alonso", - "web": "https://github.com/jcalonso" - } - ], - "maintainers": [ - { - "name": "Jakub Juszczak", - "email": "jakub@posteo.de", - "web": "http://www.jakubjuszczak.de" - } - ], - "repository": { - "type": "git", - "url": "git+ssh://git@github.com:apertureless/vue-chartjs.git" - }, - "bugs": { - "url": "https://github.com/apertureless/vue-chartjs/issues" - }, - "keywords": [ - "ChartJs", - "Vue", - "Visualisation", - "Wrapper", - "Charts" - ], - "sideEffects": false, - "types": "./dist/index.d.ts", - "exports": "./src/index.ts", - "publishConfig": { - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "exports": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "directory": "package" - }, - "files": [ - "dist" - ], - "scripts": { - "prepublishOnly": "pnpm test && pnpm build && del ./package && clean-publish", - "postpublish": "del ./package", - "emitDeclarations": "tsc --emitDeclarationOnly", - "build": "rollup -c & pnpm emitDeclarations", - "start:storybook": "start-storybook -p 6006 --ci", - "build:storybook": "del ./storybook-static; NODE_ENV=production build-storybook", - "lint": "eslint 'sandboxes/**/*.{js,ts,vue}' 'src/**/*.{js,ts,vue}' 'stories/**/*.{js,ts,vue}' 'test/**/*.{js,ts,vue}'", - "test:unit": "vitest run --coverage", - "test:unit:watch": "vitest watch", - "test:typings": "tsd", - "test:size": "size-limit", - "test": "pnpm lint && pnpm test:unit", - "format": "prettier --write src test sandboxes stories", - "commit": "cz", - "bumpVersion": "standard-version", - "createGithubRelease": "simple-github-release", - "release": "pnpm bumpVersion && git push origin main --tags && pnpm createGithubRelease", - "updateGitHooks": "simple-git-hooks" - }, - "peerDependencies": { - "chart.js": "^4.1.1", - "vue": "^3.0.0-0 || ^2.7.0" - }, - "devDependencies": { - "@commitlint/cli": "^18.0.0", - "@commitlint/config-conventional": "^18.0.0", - "@rollup/plugin-node-resolve": "^15.0.1", - "@size-limit/preset-big-lib": "^11.0.0", - "@storybook/addon-actions": "^6.5.16", - "@storybook/addon-controls": "^6.5.16", - "@storybook/addon-docs": "^6.5.16", - "@storybook/addons": "^6.5.16", - "@storybook/builder-vite": "^0.4.2", - "@storybook/client-api": "^6.5.16", - "@storybook/client-logger": "^6.5.16", - "@storybook/vue3": "^6.5.16", - "@swc/core": "^1.3.23", - "@swc/helpers": "^0.5.0", - "@vitejs/plugin-vue": "^4.0.0", - "@vitest/coverage-c8": "^0.31.0", - "@vue/eslint-config-typescript": "^12.0.0", - "@vue/test-utils": "^2.0.0-rc.17", - "browserslist": "^4.19.1", - "chart.js": "^4.4.1", - "clean-publish": "^4.0.0", - "commitizen": "^4.2.4", - "cross-env": "^7.0.0", - "cz-conventional-changelog": "3.3.0", - "del-cli": "^5.0.0", - "eslint": "8.55.0", - "eslint-config-prettier": "^9.0.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-n": "^16.0.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-prettier-vue": "5.0.0", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-vue": "^9.0.0", - "jsdom": "^23.0.0", - "nano-staged": "^0.8.0", - "prettier": "2.8.8", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "rollup": "^3.7.5", - "rollup-plugin-swc3": "^0.11.0", - "simple-git-hooks": "^2.7.0", - "simple-github-release": "^1.0.0", - "size-limit": "^11.0.0", - "standard-version": "^9.3.2", - "tsd": "^0.25.0", - "typescript": "^4.9.4", - "vite": "^4.0.2", - "vitest": "^0.31.0", - "vitest-canvas-mock": "^0.3.0", - "vue": "^3.2.31" - }, - "tsd": { - "directory": "./test" - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 0a713c37..00000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,20152 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@commitlint/cli': - specifier: ^18.0.0 - version: 18.4.3(typescript@4.9.4) - '@commitlint/config-conventional': - specifier: ^18.0.0 - version: 18.4.3 - '@rollup/plugin-node-resolve': - specifier: ^15.0.1 - version: 15.0.1(rollup@3.7.5) - '@size-limit/preset-big-lib': - specifier: ^11.0.0 - version: 11.0.1(@swc/core@1.3.23)(size-limit@11.0.1) - '@storybook/addon-actions': - specifier: ^6.5.16 - version: 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/addon-controls': - specifier: ^6.5.16 - version: 6.5.16(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4) - '@storybook/addon-docs': - specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.26.0)(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4)(webpack@5.89.0(@swc/core@1.3.23)) - '@storybook/addons': - specifier: ^6.5.16 - version: 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/builder-vite': - specifier: ^0.4.2 - version: 0.4.2(@vitejs/plugin-vue@4.0.0(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))(vue@3.2.45))(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4)(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))(vue-docgen-api@4.56.0(vue@3.2.45)) - '@storybook/client-api': - specifier: ^6.5.16 - version: 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/client-logger': - specifier: ^6.5.16 - version: 6.5.16 - '@storybook/vue3': - specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@swc/core@1.3.23)(@vue/compiler-sfc@3.3.11)(babel-loader@8.4.1(@babel/core@7.26.0)(webpack@5.89.0(@swc/core@1.3.23)))(eslint@8.55.0)(typescript@4.9.4)(vue@3.2.45) - '@swc/core': - specifier: ^1.3.23 - version: 1.3.23 - '@swc/helpers': - specifier: ^0.5.0 - version: 0.5.0 - '@vitejs/plugin-vue': - specifier: ^4.0.0 - version: 4.0.0(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))(vue@3.2.45) - '@vitest/coverage-c8': - specifier: ^0.31.0 - version: 0.31.0(vitest@0.31.0(jsdom@23.0.1)(terser@5.36.0)) - '@vue/eslint-config-typescript': - specifier: ^12.0.0 - version: 12.0.0(eslint-plugin-vue@9.8.0(eslint@8.55.0))(eslint@8.55.0)(typescript@4.9.4) - '@vue/test-utils': - specifier: ^2.0.0-rc.17 - version: 2.2.4(vue@3.2.45) - browserslist: - specifier: ^4.19.1 - version: 4.21.4 - chart.js: - specifier: ^4.4.1 - version: 4.4.1 - clean-publish: - specifier: ^4.0.0 - version: 4.0.1 - commitizen: - specifier: ^4.2.4 - version: 4.2.5(@swc/core@1.3.23) - cross-env: - specifier: ^7.0.0 - version: 7.0.3 - cz-conventional-changelog: - specifier: 3.3.0 - version: 3.3.0(@swc/core@1.3.23) - del-cli: - specifier: ^5.0.0 - version: 5.0.0 - eslint: - specifier: 8.55.0 - version: 8.55.0 - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.1.0(eslint@8.55.0) - eslint-config-standard: - specifier: ^17.0.0 - version: 17.0.0(eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint@8.55.0))(eslint-plugin-n@16.0.0(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0) - eslint-plugin-import: - specifier: ^2.25.4 - version: 2.26.0(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint@8.55.0) - eslint-plugin-n: - specifier: ^16.0.0 - version: 16.0.0(eslint@8.55.0) - eslint-plugin-node: - specifier: ^11.1.0 - version: 11.1.0(eslint@8.55.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@9.1.0(eslint@8.55.0))(eslint@8.55.0)(prettier@2.8.8) - eslint-plugin-prettier-vue: - specifier: 5.0.0 - version: 5.0.0 - eslint-plugin-promise: - specifier: ^6.0.0 - version: 6.1.1(eslint@8.55.0) - eslint-plugin-vue: - specifier: ^9.0.0 - version: 9.8.0(eslint@8.55.0) - jsdom: - specifier: ^23.0.0 - version: 23.0.1 - nano-staged: - specifier: ^0.8.0 - version: 0.8.0 - prettier: - specifier: 2.8.8 - version: 2.8.8 - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - rollup: - specifier: ^3.7.5 - version: 3.7.5 - rollup-plugin-swc3: - specifier: ^0.11.0 - version: 0.11.0(@swc/core@1.3.23)(rollup@3.7.5) - simple-git-hooks: - specifier: ^2.7.0 - version: 2.8.1 - simple-github-release: - specifier: ^1.0.0 - version: 1.0.0 - size-limit: - specifier: ^11.0.0 - version: 11.0.1 - standard-version: - specifier: ^9.3.2 - version: 9.5.0 - tsd: - specifier: ^0.25.0 - version: 0.25.0 - typescript: - specifier: ^4.9.4 - version: 4.9.4 - vite: - specifier: ^4.0.2 - version: 4.0.2(@types/node@18.11.17)(terser@5.36.0) - vitest: - specifier: ^0.31.0 - version: 0.31.0(jsdom@23.0.1)(terser@5.36.0) - vitest-canvas-mock: - specifier: ^0.3.0 - version: 0.3.3(vitest@0.31.0(jsdom@23.0.1)(terser@5.36.0)) - vue: - specifier: ^3.2.31 - version: 3.2.45 - publishDirectory: package - -packages: - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@ampproject/remapping@2.2.0': - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@babel/code-frame@7.18.6': - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.20.5': - resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.26.2': - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.12.9': - resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.20.5': - resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.26.0': - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.20.5': - resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.26.2': - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.18.6': - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.18.9': - resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': - resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.20.0': - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-compilation-targets@7.25.9': - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.20.5': - resolution: {integrity: sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-class-features-plugin@7.25.9': - resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.20.5': - resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.25.9': - resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.1.5': - resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - - '@babel/helper-define-polyfill-provider@0.3.3': - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-environment-visitor@7.18.9': - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-explode-assignable-expression@7.18.6': - resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.19.0': - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.18.6': - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.18.9': - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.18.6': - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.20.2': - resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.18.6': - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-optimise-call-expression@7.25.9': - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.10.4': - resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} - - '@babel/helper-plugin-utils@7.20.2': - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.25.9': - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.18.9': - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-remap-async-to-generator@7.25.9': - resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.19.1': - resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-replace-supers@7.25.9': - resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-simple-access@7.20.2': - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.25.9': - resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.20.0': - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.18.6': - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.19.4': - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.19.1': - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.18.6': - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.20.5': - resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.25.9': - resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.20.6': - resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.26.0': - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.18.6': - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.20.5': - resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.23.6': - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6': - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.18.9': - resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-async-generator-functions@7.20.1': - resolution: {integrity: sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-class-static-block@7.18.6': - resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-proposal-decorators@7.25.9': - resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-dynamic-import@7.18.6': - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-export-default-from@7.25.9': - resolution: {integrity: sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-export-namespace-from@7.18.9': - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-json-strings@7.18.6': - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-logical-assignment-operators@7.18.9': - resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-numeric-separator@7.18.6': - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.12.1': - resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.20.2': - resolution: {integrity: sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.20.7': - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-catch-binding@7.18.6': - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.18.9': - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-methods@7.18.6': - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.20.5': - resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.11': - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-unicode-property-regex@7.18.6': - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-decorators@7.25.9': - resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.18.6': - resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.20.0': - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.12.1': - resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.18.6': - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.20.0': - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.18.6': - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-arrow-functions@7.25.9': - resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.25.9': - resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.18.6': - resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.25.9': - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.18.6': - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.25.9': - resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.20.5': - resolution: {integrity: sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.25.9': - resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.25.9': - resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.26.0': - resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.20.2': - resolution: {integrity: sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-classes@7.25.9': - resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.18.9': - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.25.9': - resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.20.2': - resolution: {integrity: sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.25.9': - resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.18.6': - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.18.9': - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.18.6': - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.25.9': - resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.25.9': - resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-flow-strip-types@7.19.0': - resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.18.8': - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.25.9': - resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.18.9': - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.25.9': - resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.25.9': - resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.18.9': - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.25.9': - resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9': - resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.18.6': - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.19.6': - resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.25.9': - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.19.6': - resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.25.9': - resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.19.6': - resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.18.6': - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.25.9': - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.20.5': - resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.18.6': - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-new-target@7.25.9': - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': - resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.25.9': - resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.25.9': - resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.18.6': - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.25.9': - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.25.9': - resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.25.9': - resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.20.5': - resolution: {integrity: sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.25.9': - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.25.9': - resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.25.9': - resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.18.6': - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.25.9': - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.25.9': - resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.25.9': - resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.19.0': - resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.25.9': - resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.25.9': - resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.20.5': - resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.25.9': - resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.26.0': - resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.18.6': - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.25.9': - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.18.6': - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.25.9': - resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.19.0': - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.25.9': - resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.18.6': - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.25.9': - resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.18.9': - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.25.9': - resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.18.9': - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.25.9': - resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.20.2': - resolution: {integrity: sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.25.9': - resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.18.10': - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.18.6': - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.25.9': - resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.20.2': - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-env@7.26.0': - resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-flow@7.18.6': - resolution: {integrity: sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.5': - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-react@7.25.9': - resolution: {integrity: sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.18.6': - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.26.0': - resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/register@7.18.9': - resolution: {integrity: sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/register@7.25.9': - resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime@7.20.6': - resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.26.0': - resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.18.10': - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.25.9': - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.20.5': - resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.25.9': - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.20.5': - resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.26.0': - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@cnakazawa/watch@1.0.4': - resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} - engines: {node: '>=0.1.95'} - hasBin: true - - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - - '@commitlint/cli@18.4.3': - resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} - engines: {node: '>=v18'} - hasBin: true - - '@commitlint/config-conventional@18.4.3': - resolution: {integrity: sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA==} - engines: {node: '>=v18'} - - '@commitlint/config-validator@17.1.0': - resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==} - engines: {node: '>=v14'} - - '@commitlint/config-validator@18.4.3': - resolution: {integrity: sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA==} - engines: {node: '>=v18'} - - '@commitlint/ensure@18.4.3': - resolution: {integrity: sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg==} - engines: {node: '>=v18'} - - '@commitlint/execute-rule@17.0.0': - resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==} - engines: {node: '>=v14'} - - '@commitlint/execute-rule@18.4.3': - resolution: {integrity: sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q==} - engines: {node: '>=v18'} - - '@commitlint/format@18.4.3': - resolution: {integrity: sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ==} - engines: {node: '>=v18'} - - '@commitlint/is-ignored@18.4.3': - resolution: {integrity: sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg==} - engines: {node: '>=v18'} - - '@commitlint/lint@18.4.3': - resolution: {integrity: sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA==} - engines: {node: '>=v18'} - - '@commitlint/load@17.3.0': - resolution: {integrity: sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw==} - engines: {node: '>=v14'} - - '@commitlint/load@18.4.3': - resolution: {integrity: sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q==} - engines: {node: '>=v18'} - - '@commitlint/message@18.4.3': - resolution: {integrity: sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how==} - engines: {node: '>=v18'} - - '@commitlint/parse@18.4.3': - resolution: {integrity: sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA==} - engines: {node: '>=v18'} - - '@commitlint/read@18.4.3': - resolution: {integrity: sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ==} - engines: {node: '>=v18'} - - '@commitlint/resolve-extends@17.3.0': - resolution: {integrity: sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg==} - engines: {node: '>=v14'} - - '@commitlint/resolve-extends@18.4.3': - resolution: {integrity: sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw==} - engines: {node: '>=v18'} - - '@commitlint/rules@18.4.3': - resolution: {integrity: sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA==} - engines: {node: '>=v18'} - - '@commitlint/to-lines@18.4.3': - resolution: {integrity: sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ==} - engines: {node: '>=v18'} - - '@commitlint/top-level@18.4.3': - resolution: {integrity: sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw==} - engines: {node: '>=v18'} - - '@commitlint/types@17.0.0': - resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==} - engines: {node: '>=v14'} - - '@commitlint/types@18.4.3': - resolution: {integrity: sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA==} - engines: {node: '>=v18'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - - '@esbuild/android-arm64@0.16.9': - resolution: {integrity: sha512-ndIAZJUeLx4O+4AJbFQCurQW4VRUXjDsUvt1L+nP8bVELOWdmdCEOtlIweCUE6P+hU0uxYbEK2AEP0n5IVQvhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.16.9': - resolution: {integrity: sha512-kW5ccqWHVOOTGUkkJbtfoImtqu3kA1PFkivM+9QPFSHphPfPBlBalX9eDRqPK+wHCqKhU48/78T791qPgC9e9A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.16.9': - resolution: {integrity: sha512-UbMcJB4EHrAVOnknQklREPgclNU2CPet2h+sCBCXmF2mfoYWopBn/CfTfeyOkb/JglOcdEADqAljFndMKnFtOw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.16.9': - resolution: {integrity: sha512-d7D7/nrt4CxPul98lx4PXhyNZwTYtbdaHhOSdXlZuu5zZIznjqtMqLac8Bv+IuT6SVHiHUwrkL6ywD7mOgLW+A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.16.9': - resolution: {integrity: sha512-LZc+Wlz06AkJYtwWsBM3x2rSqTG8lntDuftsUNQ3fCx9ZttYtvlDcVtgb+NQ6t9s6K5No5zutN3pcjZEC2a4iQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.16.9': - resolution: {integrity: sha512-gIj0UQZlQo93CHYouHKkpzP7AuruSaMIm1etcWIxccFEVqCN1xDr6BWlN9bM+ol/f0W9w3hx3HDuEwcJVtGneQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.16.9': - resolution: {integrity: sha512-GNors4vaMJ7lzGOuhzNc7jvgsQZqErGA8rsW+nck8N1nYu86CvsJW2seigVrQQWOV4QzEP8Zf3gm+QCjA2hnBQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.16.9': - resolution: {integrity: sha512-YPxQunReYp8RQ1FvexFrOEqqf+nLbS3bKVZF5FRT2uKM7Wio7BeATqAwO02AyrdSEntt3I5fhFsujUChIa8CZg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.16.9': - resolution: {integrity: sha512-cNx1EF99c2t1Ztn0lk9N+MuwBijGF8mH6nx9GFsB3e0lpUpPkCE/yt5d+7NP9EwJf5uzqdjutgVYoH1SNqzudA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.16.9': - resolution: {integrity: sha512-zb12ixDIKNwFpIqR00J88FFitVwOEwO78EiUi8wi8FXlmSc3GtUuKV/BSO+730Kglt0B47+ZrJN1BhhOxZaVrw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.16.9': - resolution: {integrity: sha512-X8te4NLxtHiNT6H+4Pfm5RklzItA1Qy4nfyttihGGX+Koc53Ar20ViC+myY70QJ8PDEOehinXZj/F7QK3A+MKQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.16.9': - resolution: {integrity: sha512-ZqyMDLt02c5smoS3enlF54ndK5zK4IpClLTxF0hHfzHJlfm4y8IAkIF8LUW0W7zxcKy7oAwI7BRDqeVvC120SA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.16.9': - resolution: {integrity: sha512-k+ca5W5LDBEF3lfDwMV6YNXwm4wEpw9krMnNvvlNz3MrKSD2Eb2c861O0MaKrZkG/buTQAP4vkavbLwgIe6xjg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.16.9': - resolution: {integrity: sha512-GuInVdogjmg9DhgkEmNipHkC+3tzkanPJzgzTC2ihsvrruLyFoR1YrTGixblNSMPudQLpiqkcwGwwe0oqfrvfA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.16.9': - resolution: {integrity: sha512-49wQ0aYkvwXonGsxc7LuuLNICMX8XtO92Iqmug5Qau0kpnV6SP34jk+jIeu4suHwAbSbRhVFtDv75yRmyfQcHw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.16.9': - resolution: {integrity: sha512-Nx4oKEAJ6EcQlt4dK7qJyuZUoXZG7CAeY22R7rqZijFzwFfMOD+gLP56uV7RrV86jGf8PeRY8TBsRmOcZoG42w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.16.9': - resolution: {integrity: sha512-d0WnpgJ+FTiMZXEQ1NOv9+0gvEhttbgKEvVqWWAtl1u9AvlspKXbodKHzQ5MLP6YV1y52Xp+p8FMYqj8ykTahg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.16.9': - resolution: {integrity: sha512-jccK11278dvEscHFfMk5EIPjF4wv1qGD0vps7mBV1a6TspdR36O28fgPem/SA/0pcsCPHjww5ouCLwP+JNAFlw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.16.9': - resolution: {integrity: sha512-OetwTSsv6mIDLqN7I7I2oX9MmHGwG+AP+wKIHvq+6sIHwcPPJqRx+DJB55jy9JG13CWcdcQno/7V5MTJ5a0xfQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.16.9': - resolution: {integrity: sha512-tKSSSK6unhxbGbHg+Cc+JhRzemkcsX0tPBvG0m5qsWbkShDK9c+/LSb13L18LWVdOQZwuA55Vbakxmt6OjBDOQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.16.9': - resolution: {integrity: sha512-ZTQ5vhNS5gli0KK8I6/s6+LwXmNEfq1ftjnSVyyNm33dBw8zDpstqhGXYUbZSWWLvkqiRRjgxgmoncmi6Yy7Ng==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.16.9': - resolution: {integrity: sha512-C4ZX+YFIp6+lPrru3tpH6Gaapy8IBRHw/e7l63fzGDhn/EaiGpQgbIlT5paByyy+oMvRFQoxxyvC4LE0AjJMqQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint-community/regexpp@4.5.1': - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@1.4.1': - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.55.0': - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@fastify/deepmerge@1.3.0': - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} - - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - - '@humanwhocodes/config-array@0.11.13': - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/config-array@0.9.5': - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@1.2.1': - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - - '@humanwhocodes/object-schema@2.0.1': - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - - '@hutson/parse-repository-url@3.0.2': - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/transform@26.6.2': - resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} - engines: {node: '>= 10.14.2'} - - '@jest/types@26.6.2': - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - - '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1': - resolution: {integrity: sha512-ou4ZJSXMMWHqGS4g8uNRbC5TiTWxAgQZiVucoUrOCWuPrTbkpJbmVyIi9jU72SBry7gQtuMEDp4YR8EEXAg7VQ==} - peerDependencies: - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - - '@jridgewell/gen-mapping@0.1.1': - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - - '@jridgewell/gen-mapping@0.3.2': - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.0': - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.2': - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} - - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.4.14': - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.17': - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@kurkle/color@0.3.1': - resolution: {integrity: sha512-hW0GwZj06z/ZFUW2Espl7toVDjghJN+EKqyXzPSV8NV89d5BYp5rRMBJoc+aUN0x5OXDMeRQHazejr2Xmqj2tw==} - - '@mdx-js/mdx@1.6.22': - resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} - - '@mdx-js/react@1.6.22': - resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} - peerDependencies: - react: ^16.13.1 || ^17.0.0 - - '@mdx-js/util@1.6.22': - resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} - - '@mrmlnc/readdir-enhanced@2.2.1': - resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} - engines: {node: '>=4'} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@1.1.3': - resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} - engines: {node: '>= 6'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@npmcli/fs@1.1.1': - resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} - - '@npmcli/move-file@1.1.2': - resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} - engines: {node: '>=10'} - deprecated: This functionality has been moved to @npmcli/fs - - '@octokit/auth-token@2.5.0': - resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} - - '@octokit/core@3.6.0': - resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} - - '@octokit/endpoint@6.0.12': - resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} - - '@octokit/graphql@4.8.0': - resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} - - '@octokit/openapi-types@12.11.0': - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} - - '@octokit/plugin-paginate-rest@2.21.3': - resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} - peerDependencies: - '@octokit/core': '>=2' - - '@octokit/plugin-request-log@1.0.4': - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/plugin-rest-endpoint-methods@5.16.2': - resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/request-error@2.1.0': - resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} - - '@octokit/request@5.6.3': - resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} - - '@octokit/rest@18.12.0': - resolution: {integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==} - - '@octokit/types@6.41.0': - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} - - '@pkgr/utils@2.4.2': - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@puppeteer/browsers@1.9.0': - resolution: {integrity: sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==} - engines: {node: '>=16.3.0'} - hasBin: true - - '@rollup/plugin-node-resolve@15.0.1': - resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.0.2': - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@sindresorhus/merge-streams@1.0.0': - resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} - engines: {node: '>=18'} - - '@sitespeed.io/tracium@0.3.3': - resolution: {integrity: sha512-dNZafjM93Y+F+sfwTO5gTpsGXlnc/0Q+c2+62ViqP3gkMWvHEMSKkaEHgVJLcLg3i/g19GSIPziiKpgyne07Bw==} - engines: {node: '>=8'} - - '@size-limit/file@11.0.1': - resolution: {integrity: sha512-ioSYJ1WY66kc9+3dgTHi5mT/gcaNNCJ22xU87cjzfKiNxmol+lGsNKbplmrJf+QezvPH9kRIFOWxBjGY+DOt3g==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - size-limit: 11.0.1 - - '@size-limit/preset-big-lib@11.0.1': - resolution: {integrity: sha512-3B06HMEn05qkMDlP5z8y7p4P+TYeq12CfYKjUe42d3FSjN7dNovy6c8Ry/V1+9LIVAkNOQ6TIbGyRKj1aJKW0g==} - peerDependencies: - size-limit: 11.0.1 - - '@size-limit/time@11.0.1': - resolution: {integrity: sha512-o4m2kGFufKqcgcaExGAGrylnRcDrbhn1FelCa6q6aDCut2lypfBle5TRt36xdW64ceOArRkObfcVv4AkWK3kow==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - size-limit: 11.0.1 - - '@size-limit/webpack@11.0.1': - resolution: {integrity: sha512-aQLzpXpp0Xx/AqijgpXnxJGQ3bypLo0acLt8ar3OH83w4cKE1choYROxBsqGFpPSMlwXjCIAwLxLmU98pClPzA==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - size-limit: 11.0.1 - - '@storybook/addon-actions@6.5.16': - resolution: {integrity: sha512-aADjilFmuD6TNGz2CRPSupnyiA/IGkPJHDBTqMpsDXTUr8xnuD122xkIhg6UxmCM2y1c+ncwYXy3WPK2xXK57g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-controls@6.5.16': - resolution: {integrity: sha512-kShSGjq1MjmmyL3l8i+uPz6yddtf82mzys0l82VKtcuyjrr5944wYFJ5NTXMfZxrO/U6FeFsfuFZE/k6ex3EMg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-docs@6.5.16': - resolution: {integrity: sha512-QM9WDZG9P02UvbzLu947a8ZngOrQeAKAT8jCibQFM/+RJ39xBlfm8rm+cQy3dm94wgtjmVkA3mKGOV/yrrsddg==} - peerDependencies: - '@storybook/mdx2-csf': ^0.0.3 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@storybook/mdx2-csf': - optional: true - react: - optional: true - react-dom: - optional: true - - '@storybook/addons@6.5.16': - resolution: {integrity: sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/api@6.5.16': - resolution: {integrity: sha512-HOsuT8iomqeTMQJrRx5U8nsC7lJTwRr1DhdD0SzlqL4c80S/7uuCy4IZvOt4sYQjOzW5fOo/kamcoBXyLproTA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/builder-vite@0.4.2': - resolution: {integrity: sha512-KBBiDdYCK0BCOns8iCVrtzaIiYQF9NjwQ7u3HY/a0bmAuaXPd9m3t6Tvp2jNwmdRAtHOHXnM+d6ROJAI77DCYg==} - peerDependencies: - '@storybook/mdx2-csf': '>=1.0.0-next.0' - '@sveltejs/vite-plugin-svelte': ^2.0.0 - '@vitejs/plugin-react': ^3.0.0 - '@vitejs/plugin-react-swc': ^3.0.0 - '@vitejs/plugin-vue': ^4.0.0 - vite: '>= 4.0.0' - vue-docgen-api: ^4.40.0 - peerDependenciesMeta: - '@storybook/mdx2-csf': - optional: true - '@sveltejs/vite-plugin-svelte': - optional: true - '@vitejs/plugin-react': - optional: true - '@vitejs/plugin-react-swc': - optional: true - '@vitejs/plugin-vue': - optional: true - vue-docgen-api: - optional: true - - '@storybook/builder-webpack4@6.5.16': - resolution: {integrity: sha512-YqDIrVNsUo8r9xc6AxsYDLxVYtMgl5Bxk+8/h1adsOko+jAFhdg6hOcAVxEmoSI0TMASOOVMFlT2hr23ppN2rQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/channel-postmessage@6.5.16': - resolution: {integrity: sha512-fZZSN29dsUArWOx7e7lTdMA9+7zijVwCwbvi2Fo4fqhRLh1DsTb/VXfz1FKMCWAjNlcX7QQvV25tnxbqsD6lyw==} - - '@storybook/channel-websocket@6.5.16': - resolution: {integrity: sha512-wJg2lpBjmRC2GJFzmhB9kxlh109VE58r/0WhFtLbwKvPqsvGf82xkBEl6BtBCvIQ4stzYnj/XijjA8qSi2zpOg==} - - '@storybook/channels@6.5.16': - resolution: {integrity: sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg==} - - '@storybook/client-api@6.5.16': - resolution: {integrity: sha512-i3UwkzzUFw8I+E6fOcgB5sc4oU2fhvaKnqC1mpd9IYGJ9JN9MnGIaVl3Ko28DtFItu/QabC9JsLIJVripFLktQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/client-logger@6.5.16': - resolution: {integrity: sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q==} - - '@storybook/components@6.5.16': - resolution: {integrity: sha512-LzBOFJKITLtDcbW9jXl0/PaG+4xAz25PK8JxPZpIALbmOpYWOAPcO6V9C2heX6e6NgWFMUxjplkULEk9RCQMNA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/core-client@6.5.16': - resolution: {integrity: sha512-14IRaDrVtKrQ+gNWC0wPwkCNfkZOKghYV/swCUnQX3rP99defsZK8Hc7xHIYoAiOP5+sc3sweRAxgmFiJeQ1Ig==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/core-common@6.5.16': - resolution: {integrity: sha512-2qtnKP3TTOzt2cp6LXKRTh7XrI9z5VanMnMTgeoFcA5ebnndD4V6BExQUdYPClE/QooLx6blUWNgS9dFEpjSqQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/core-events@6.5.16': - resolution: {integrity: sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==} - - '@storybook/core-server@6.5.16': - resolution: {integrity: sha512-/3NPfmNyply395Dm0zaVZ8P9aruwO+tPx4D6/jpw8aqrRSwvAMndPMpoMCm0NXcpSm5rdX+Je4S3JW6JcggFkA==} - peerDependencies: - '@storybook/builder-webpack5': '*' - '@storybook/manager-webpack5': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - - '@storybook/core@6.5.16': - resolution: {integrity: sha512-CEF3QFTsm/VMnMKtRNr4rRdLeIkIG0g1t26WcmxTdSThNPBd8CsWzQJ7Jqu7CKiut+MU4A1LMOwbwCE5F2gmyA==} - peerDependencies: - '@storybook/builder-webpack5': '*' - '@storybook/manager-webpack5': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - - '@storybook/csf-tools@6.5.16': - resolution: {integrity: sha512-+WD4sH/OwAfXZX3IN6/LOZ9D9iGEFcN+Vvgv9wOsLRgsAZ10DG/NK6c1unXKDM/ogJtJYccNI8Hd+qNE/GFV6A==} - peerDependencies: - '@storybook/mdx2-csf': ^0.0.3 - peerDependenciesMeta: - '@storybook/mdx2-csf': - optional: true - - '@storybook/csf@0.0.2--canary.4566f4d.1': - resolution: {integrity: sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==} - - '@storybook/docs-tools@6.5.16': - resolution: {integrity: sha512-o+rAWPRGifjBF5xZzTKOqnHN3XQWkl0QFJYVDIiJYJrVll7ExCkpEq/PahOGzIBBV+tpMstJgmKM3lr/lu/jmg==} - - '@storybook/manager-webpack4@6.5.16': - resolution: {integrity: sha512-5VJZwmQU6AgdsBPsYdu886UKBHQ9SJEnFMaeUxKEclXk+iRsmbzlL4GHKyVd6oGX/ZaecZtcHPR6xrzmA4Ziew==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/mdx1-csf@0.0.1': - resolution: {integrity: sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==} - - '@storybook/mdx1-csf@1.0.0-next.0': - resolution: {integrity: sha512-zrv5yRKSOQum69DU+5+wK1VcfmHv8xdqLsACeVOHJp1Mq2eG8s3/WuEA0L3wljoebbuKasZecn2Eu/TQCt+0og==} - - '@storybook/node-logger@6.5.16': - resolution: {integrity: sha512-YjhBKrclQtjhqFNSO+BZK+RXOx6EQypAELJKoLFaawg331e8VUfvUuRCNB3fcEWp8G9oH13PQQte0OTjLyyOYg==} - - '@storybook/postinstall@6.5.16': - resolution: {integrity: sha512-08K2q+qN6pqyPW7PHLCZ5G5Xa6Wosd6t0F16PQ4abX2ItlJLabVoJN5mZ0gm/aeLTjD8QYr8IDvacu4eXh0SVA==} - - '@storybook/preview-web@6.5.16': - resolution: {integrity: sha512-IJnvfe2sKCfk7apN9Fu9U8qibbarrPX5JB55ZzK1amSHVmSDuYk5MIMc/U3NnSQNnvd1DO5v/zMcGgj563hrtg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/router@6.5.16': - resolution: {integrity: sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/semver@7.3.2': - resolution: {integrity: sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==} - engines: {node: '>=10'} - hasBin: true - - '@storybook/source-loader@6.5.16': - resolution: {integrity: sha512-fyVl4jrM/5JLrb48aqXPu7sTsmySQaVGFp1zfeqvPPlJRFMastDrePm5XGPN7Qjv1wsKmpuBvuweFKOT1pru3g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/store@6.5.16': - resolution: {integrity: sha512-g+bVL5hmMq/9cM51K04e37OviUPHT0rHHrRm5wj/hrf18Kd9120b3sxdQ5Dc+HZ292yuME0n+cyrQPTYx9Epmw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/telemetry@6.5.16': - resolution: {integrity: sha512-CWr5Uko1l9jJW88yTXsZTj/3GTabPvw0o7pDPOXPp8JRZiJTxv1JFaFCafhK9UzYbgcRuGfCC8kEWPZims7iKA==} - - '@storybook/theming@6.5.16': - resolution: {integrity: sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/ui@6.5.16': - resolution: {integrity: sha512-rHn/n12WM8BaXtZ3IApNZCiS+C4Oc5+Lkl4MoctX8V7QSml0SxZBB5hsJ/AiWkgbRxjQpa/L/Nt7/Qw0FjTH/A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/vue3@6.5.16': - resolution: {integrity: sha512-bKUxNlzv2a1V8mGIDgI77uBbZ9GI2ydhQ2TQA/Hd3pCycm/3YEISsetPkhieS+M5Kmh2lum250c+2UyBRmnrZQ==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - '@babel/core': '*' - '@vue/compiler-sfc': ^3.0.0 - babel-loader: ^7.0.0 || ^8.0.0 - vue: ^3.0.0 - - '@swc/core-darwin-arm64@1.3.23': - resolution: {integrity: sha512-IGOEHmE4aBDX7gQWpanI3A0ni47UcvX7rmcy0H8kE6mm/y7mEMWskvNsYhYzJl4GVZgw38v1/lL/A7MRX6g71A==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.3.23': - resolution: {integrity: sha512-eQSN+JJqx/5Dk2C5uet2l7HifGsDBorQHD3PAVnge5jxl+rXU/zbzX9Un56+uuUB0QYeS4Dyr8cN7NHuIKGxBA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.3.23': - resolution: {integrity: sha512-zxYvggbw6R/sTNey0qgsigFMY59DYepm1+JNojxOKjbnvxmgyeIa5sPdu/5gLj0TtJOiWvSGrpMPNUIVreUSGA==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.3.23': - resolution: {integrity: sha512-l8UWhcNvZ6RzNZBBToMYuKYijF0h7mbw2RuFV5rpCYF/k/Wh85PaDHPQIQ6qjMHJsIBHYXUt0HLAP+fiAfBiDw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.3.23': - resolution: {integrity: sha512-TZDPp1wUE1ynVyY0vwIToyOULKEQ91H49R+p6Iu/2YY+UQQwUamhX0Gp8O85RT+j72/iHyhbQkz7yRg6v+GB5A==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.3.23': - resolution: {integrity: sha512-rKqWnOmUyQfoKZuuXs/S0RNobN+kcUyMtwoCdRdCNqOlk1XZRCMpjGc9Aqn73K3xlZ6JXX6oLrXKn375b2dydw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.3.23': - resolution: {integrity: sha512-1MK9eocIhuIr/+yUKnTNHpYovMQvfKTJQbU4UMfQLg2qyCGKAvO+jOy5JIGR9x04MWqz9U3EHHS/7Id35ekhFQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.3.23': - resolution: {integrity: sha512-3nmdugj0SJIGWeCJBhvPWIfnE2Ax8H2KZsJfcaWmWg0SDh19aAt48Ncyd8WHHBandJmVm2fSjaANSjp+cS2S9A==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.3.23': - resolution: {integrity: sha512-2AlGRhys1BsfLjXyWOd+5J/Ko2kkVQVuy3ZR8OBGy7XI54p0PpepabloYI9irr+4bi9vtyxoc5rS21PmJxB83Q==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.3.23': - resolution: {integrity: sha512-qYKP8sIM7VVLuDb5BkRBoHy28OHZWrUhPTO7WgpErhVVM9wnzmMi/Jgg8SyfMy6oheBjO0QiwWbXONxBwByjnQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.3.23': - resolution: {integrity: sha512-Aa7yw5+7ErOxr+G0J1eU2hkb9nEMSdt1Ye3isdAgg9mrsPuttk+cfLp6nP/Lux/VUnu5k4eOxeTy9UhjJhRAFw==} - engines: {node: '>=10'} - hasBin: true - - '@swc/helpers@0.5.0': - resolution: {integrity: sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==} - - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.3': - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - - '@tsd/typescript@4.9.3': - resolution: {integrity: sha512-iyi45620s9QN62rW90KelRJLG7p15g4NhTezxYCHmE5RY/BI270Sn7E8vWtiLzB+9mQgy71sYXcgyDKjtJamSQ==} - - '@types/chai-subset@1.3.3': - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - - '@types/chai@4.3.4': - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} - - '@types/eslint-scope@3.7.4': - resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} - - '@types/eslint@7.29.0': - resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} - - '@types/eslint@8.4.10': - resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} - - '@types/estree@0.0.51': - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - - '@types/estree@1.0.0': - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - - '@types/git-url-parse@9.0.1': - resolution: {integrity: sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA==} - - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - - '@types/glob@8.1.0': - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - - '@types/graceful-fs@4.1.5': - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} - - '@types/hast@2.3.4': - resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} - - '@types/html-minifier-terser@5.1.2': - resolution: {integrity: sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==} - - '@types/is-function@1.0.1': - resolution: {integrity: sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==} - - '@types/istanbul-lib-coverage@2.0.4': - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - - '@types/istanbul-lib-report@3.0.0': - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - - '@types/istanbul-reports@3.0.1': - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - - '@types/json-schema@7.0.11': - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/lodash@4.14.190': - resolution: {integrity: sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==} - - '@types/mdast@3.0.10': - resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - - '@types/node-fetch@2.6.11': - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - - '@types/node@14.18.33': - resolution: {integrity: sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==} - - '@types/node@16.18.10': - resolution: {integrity: sha512-XU1+v7h81p7145ddPfjv7jtWvkSilpcnON3mQ+bDi9Yuf7OI56efOglXRyXWgQ57xH3fEQgh7WOJMncRHVew5w==} - - '@types/node@16.18.117': - resolution: {integrity: sha512-db08yWk6b/8KUyNujwlX+1nDK9qwKrReuQ106BF9axgPrtzDVSOIXcJEZBsisFB3IF9EH5K8+s/asBMkkLhnqw==} - - '@types/node@18.11.17': - resolution: {integrity: sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==} - - '@types/node@22.8.5': - resolution: {integrity: sha512-5iYk6AMPtsMbkZqCO1UGF9W5L38twq11S2pYWkybGHH2ogPUvXWNlQqJBzuEZWKj/WRH+QTeiv6ySWqJtvIEgA==} - - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - - '@types/npmlog@4.1.6': - resolution: {integrity: sha512-0l3z16vnlJGl2Mi/rgJFrdwfLZ4jfNYgE6ZShEpjqhHuGTqdEzNles03NpYHwUMVYZa+Tj46UxKIEpE78lQ3DQ==} - - '@types/parse-json@4.0.0': - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/parse5@5.0.3': - resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} - - '@types/pretty-hrtime@1.0.3': - resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} - - '@types/qs@6.9.7': - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/semver@7.5.6': - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - - '@types/source-list-map@0.1.6': - resolution: {integrity: sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==} - - '@types/tapable@1.0.12': - resolution: {integrity: sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==} - - '@types/uglify-js@3.17.5': - resolution: {integrity: sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==} - - '@types/unist@2.0.6': - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - - '@types/webpack-env@1.18.0': - resolution: {integrity: sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==} - - '@types/webpack-sources@3.2.3': - resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} - - '@types/webpack@4.41.40': - resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} - - '@types/yargs-parser@21.0.0': - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - - '@types/yargs@15.0.14': - resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==} - - '@types/yauzl@2.10.0': - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} - - '@typescript-eslint/eslint-plugin@6.14.0': - resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@6.14.0': - resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@6.14.0': - resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/type-utils@6.14.0': - resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@6.14.0': - resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/typescript-estree@6.14.0': - resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@6.14.0': - resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - '@typescript-eslint/visitor-keys@6.14.0': - resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@vitejs/plugin-vue@4.0.0': - resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - - '@vitest/coverage-c8@0.31.0': - resolution: {integrity: sha512-h72qN1D962AO7UefQVulm9JFP5ACS7OfhCdBHioXU8f7ohH/+NTZCgAqmgcfRNHHO/8wLFxx+93YVxhodkEJVA==} - peerDependencies: - vitest: '>=0.30.0 <1' - - '@vitest/expect@0.31.0': - resolution: {integrity: sha512-Jlm8ZTyp6vMY9iz9Ny9a0BHnCG4fqBa8neCF6Pk/c/6vkUk49Ls6UBlgGAU82QnzzoaUs9E/mUhq/eq9uMOv/g==} - - '@vitest/runner@0.31.0': - resolution: {integrity: sha512-H1OE+Ly7JFeBwnpHTrKyCNm/oZgr+16N4qIlzzqSG/YRQDATBYmJb/KUn3GrZaiQQyL7GwpNHVZxSQd6juLCgw==} - - '@vitest/snapshot@0.31.0': - resolution: {integrity: sha512-5dTXhbHnyUMTMOujZPB0wjFjQ6q5x9c8TvAsSPUNKjp1tVU7i9pbqcKPqntyu2oXtmVxKbuHCqrOd+Ft60r4tg==} - - '@vitest/spy@0.31.0': - resolution: {integrity: sha512-IzCEQ85RN26GqjQNkYahgVLLkULOxOm5H/t364LG0JYb3Apg0PsYCHLBYGA006+SVRMWhQvHlBBCyuByAMFmkg==} - - '@vitest/utils@0.31.0': - resolution: {integrity: sha512-kahaRyLX7GS1urekRXN2752X4gIgOGVX4Wo8eDUGUkTWlGpXzf5ZS6N9RUUS+Re3XEE8nVGqNyxkSxF5HXlGhQ==} - - '@vue/compiler-core@3.2.45': - resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==} - - '@vue/compiler-core@3.3.11': - resolution: {integrity: sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w==} - - '@vue/compiler-dom@3.2.45': - resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==} - - '@vue/compiler-dom@3.3.11': - resolution: {integrity: sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw==} - - '@vue/compiler-sfc@3.2.45': - resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==} - - '@vue/compiler-sfc@3.3.11': - resolution: {integrity: sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA==} - - '@vue/compiler-ssr@3.2.45': - resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==} - - '@vue/compiler-ssr@3.3.11': - resolution: {integrity: sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg==} - - '@vue/eslint-config-typescript@12.0.0': - resolution: {integrity: sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - eslint-plugin-vue: ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/reactivity-transform@3.2.45': - resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==} - - '@vue/reactivity-transform@3.3.11': - resolution: {integrity: sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg==} - - '@vue/reactivity@3.2.45': - resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==} - - '@vue/runtime-core@3.2.45': - resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==} - - '@vue/runtime-dom@3.2.45': - resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==} - - '@vue/server-renderer@3.2.45': - resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==} - peerDependencies: - vue: 3.2.45 - - '@vue/shared@3.2.45': - resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} - - '@vue/shared@3.3.11': - resolution: {integrity: sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw==} - - '@vue/test-utils@2.2.4': - resolution: {integrity: sha512-1JjLduJ84bFcuCt/1YLTNyktYeUHS/zA0u8iTmF6w6ul1K/nSvyKu/MC47YjdpZ4lI/hn7FH31B22kfz62e9wA==} - peerDependencies: - vue: ^3.0.1 - - '@webassemblyjs/ast@1.11.1': - resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} - - '@webassemblyjs/ast@1.11.6': - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} - - '@webassemblyjs/ast@1.9.0': - resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} - - '@webassemblyjs/floating-point-hex-parser@1.11.1': - resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/floating-point-hex-parser@1.9.0': - resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} - - '@webassemblyjs/helper-api-error@1.11.1': - resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-api-error@1.9.0': - resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} - - '@webassemblyjs/helper-buffer@1.11.1': - resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} - - '@webassemblyjs/helper-buffer@1.11.6': - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - - '@webassemblyjs/helper-buffer@1.9.0': - resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} - - '@webassemblyjs/helper-code-frame@1.9.0': - resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} - - '@webassemblyjs/helper-fsm@1.9.0': - resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} - - '@webassemblyjs/helper-module-context@1.9.0': - resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} - - '@webassemblyjs/helper-numbers@1.11.1': - resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.1': - resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-bytecode@1.9.0': - resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} - - '@webassemblyjs/helper-wasm-section@1.11.1': - resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} - - '@webassemblyjs/helper-wasm-section@1.11.6': - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - - '@webassemblyjs/helper-wasm-section@1.9.0': - resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} - - '@webassemblyjs/ieee754@1.11.1': - resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/ieee754@1.9.0': - resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} - - '@webassemblyjs/leb128@1.11.1': - resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/leb128@1.9.0': - resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} - - '@webassemblyjs/utf8@1.11.1': - resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/utf8@1.9.0': - resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} - - '@webassemblyjs/wasm-edit@1.11.1': - resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} - - '@webassemblyjs/wasm-edit@1.11.6': - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - - '@webassemblyjs/wasm-edit@1.9.0': - resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} - - '@webassemblyjs/wasm-gen@1.11.1': - resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} - - '@webassemblyjs/wasm-gen@1.11.6': - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} - - '@webassemblyjs/wasm-gen@1.9.0': - resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} - - '@webassemblyjs/wasm-opt@1.11.1': - resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} - - '@webassemblyjs/wasm-opt@1.11.6': - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} - - '@webassemblyjs/wasm-opt@1.9.0': - resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} - - '@webassemblyjs/wasm-parser@1.11.1': - resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} - - '@webassemblyjs/wasm-parser@1.11.6': - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} - - '@webassemblyjs/wasm-parser@1.9.0': - resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} - - '@webassemblyjs/wast-parser@1.9.0': - resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} - - '@webassemblyjs/wast-printer@1.11.1': - resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} - - '@webassemblyjs/wast-printer@1.11.6': - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} - - '@webassemblyjs/wast-printer@1.9.0': - resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-import-assertions@1.8.0: - resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} - peerDependencies: - acorn: ^8 - - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - - acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - - add-stream@1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - - agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - aggregate-error@4.0.1: - resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} - engines: {node: '>=12'} - - airbnb-js-shims@2.2.1: - resolution: {integrity: sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==} - - ajv-errors@1.0.1: - resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} - peerDependencies: - ajv: '>=5.0.0' - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.11.2: - resolution: {integrity: sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@3.2.4: - resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} - engines: {node: '>=6'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-to-html@0.6.15: - resolution: {integrity: sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==} - engines: {node: '>=8.0.0'} - hasBin: true - - anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - - aproba@1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - argue-cli@2.1.0: - resolution: {integrity: sha512-dgojXfc4SiqmNwe38PnbT3zJasrz7g62dLAPD+VFT5RJb8W7LGRqw2IFd2ES+plnhsp4HYNJmFqMU1tCThdCww==} - engines: {node: '>=14.0.0'} - - arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - - array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - - array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - - array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - array.prototype.map@1.0.7: - resolution: {integrity: sha512-XpcFfLoBEAhezrrNw1V+yLXkE7M6uR7xJEsxbG6c/V9v043qurwVJB9r9UTnoSioFDoz1i1VOydpWGmJpfVZbg==} - engines: {node: '>= 0.4'} - - array.prototype.reduce@1.0.7: - resolution: {integrity: sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - asn1.js@4.10.1: - resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} - - assert-never@1.2.1: - resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} - - assert@1.5.1: - resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - - ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - - ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - - async-each@1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - - autoprefixer@9.8.8: - resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} - hasBin: true - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-loader@8.2.5: - resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - - babel-loader@8.4.1: - resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - - babel-plugin-apply-mdx-type-prop@1.6.22: - resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} - peerDependencies: - '@babel/core': ^7.11.6 - - babel-plugin-extract-import-names@1.6.22: - resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - - babel-plugin-polyfill-corejs2@0.3.3: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-corejs2@0.4.11: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.1.7: - resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-corejs3@0.10.6: - resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.6.0: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-regenerator@0.4.1: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-walk@3.0.0-canary-5: - resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} - engines: {node: '>= 10.0.0'} - - bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - - basic-ftp@5.0.3: - resolution: {integrity: sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==} - engines: {node: '>=10.0.0'} - - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - - better-opn@2.1.1: - resolution: {integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==} - engines: {node: '>8.0.0'} - - big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - - big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - - binary-extensions@1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - - blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - - bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - - bplist-parser@0.1.1: - resolution: {integrity: sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==} - - bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - - browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - - browserify-rsa@4.1.1: - resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} - engines: {node: '>= 0.10'} - - browserify-sign@4.2.3: - resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} - engines: {node: '>= 0.12'} - - browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - - browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - - builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - - bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - - bytes-iec@3.1.1: - resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} - engines: {node: '>= 0.8'} - - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - c8@7.13.0: - resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} - engines: {node: '>=10.12.0'} - hasBin: true - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cacache@12.0.4: - resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} - - cacache@15.3.0: - resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} - engines: {node: '>= 10'} - - cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - - cachedir@2.3.0: - resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} - engines: {node: '>=6'} - - call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase-keys@2.1.0: - resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} - engines: {node: '>=0.10.0'} - - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} - - camelcase@2.1.1: - resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} - engines: {node: '>=0.10.0'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001434: - resolution: {integrity: sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==} - - caniuse-lite@1.0.30001676: - resolution: {integrity: sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==} - - capture-exit@2.0.0: - resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} - engines: {node: 6.* || 8.* || >= 10.*} - - case-sensitive-paths-webpack-plugin@2.4.0: - resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} - engines: {node: '>=4'} - - ccount@1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - - chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - - character-parser@2.2.0: - resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} - - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - chart.js@4.4.1: - resolution: {integrity: sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==} - engines: {pnpm: '>=7'} - - check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - - chokidar@2.1.8: - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - chromium-bidi@0.5.1: - resolution: {integrity: sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g==} - peerDependencies: - devtools-protocol: '*' - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - - class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - - clean-css@4.2.4: - resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} - engines: {node: '>= 4.0'} - - clean-publish@4.0.1: - resolution: {integrity: sha512-6v0bh5kQD5FDlxBgXDVNNc6KmAB7iIP/GHD91q9xsGVZT5XB9Y8TNqB7dL5u9PTZlBeLpBw+A1AseRlEEJLSWA==} - engines: {node: '>= 16.0.0'} - hasBin: true - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - clean-stack@4.2.0: - resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} - engines: {node: '>=12'} - - cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} - engines: {node: '>=6'} - - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - - collapse-white-space@1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - - collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - comma-separated-tokens@1.0.8: - resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - - commitizen@4.2.5: - resolution: {integrity: sha512-9sXju8Qrz1B4Tw7kC5KhnvwYQN88qs2zbiB8oyMsnXZyJ24PPGiNM3nHr73d32dnE3i8VJEXddBFIbOgYSEXtQ==} - engines: {node: '>= 12'} - hasBin: true - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - - component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - - concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - - concordance@5.0.4: - resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} - engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - - console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - - constantinople@4.0.1: - resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} - - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - conventional-changelog-angular@5.0.13: - resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} - engines: {node: '>=10'} - - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} - - conventional-changelog-atom@2.0.8: - resolution: {integrity: sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==} - engines: {node: '>=10'} - - conventional-changelog-codemirror@2.0.8: - resolution: {integrity: sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==} - engines: {node: '>=10'} - - conventional-changelog-config-spec@2.1.0: - resolution: {integrity: sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==} - - conventional-changelog-conventionalcommits@4.6.3: - resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} - engines: {node: '>=10'} - - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} - - conventional-changelog-core@4.2.4: - resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==} - engines: {node: '>=10'} - - conventional-changelog-ember@2.0.9: - resolution: {integrity: sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==} - engines: {node: '>=10'} - - conventional-changelog-eslint@3.0.9: - resolution: {integrity: sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==} - engines: {node: '>=10'} - - conventional-changelog-express@2.0.6: - resolution: {integrity: sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==} - engines: {node: '>=10'} - - conventional-changelog-jquery@3.0.11: - resolution: {integrity: sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==} - engines: {node: '>=10'} - - conventional-changelog-jshint@2.0.9: - resolution: {integrity: sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==} - engines: {node: '>=10'} - - conventional-changelog-preset-loader@2.3.4: - resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==} - engines: {node: '>=10'} - - conventional-changelog-writer@5.0.1: - resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==} - engines: {node: '>=10'} - hasBin: true - - conventional-changelog@3.1.25: - resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==} - engines: {node: '>=10'} - - conventional-commit-types@3.0.0: - resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} - - conventional-commits-filter@2.0.7: - resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==} - engines: {node: '>=10'} - - conventional-commits-parser@3.2.4: - resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} - engines: {node: '>=10'} - hasBin: true - - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} - hasBin: true - - conventional-recommended-bump@6.1.0: - resolution: {integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==} - engines: {node: '>=10'} - hasBin: true - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - - copy-concurrently@1.0.5: - resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} - deprecated: This package is no longer supported. - - copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - - core-js-compat@3.26.1: - resolution: {integrity: sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==} - - core-js-compat@3.39.0: - resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} - - core-js@3.26.1: - resolution: {integrity: sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig-typescript-loader@4.2.0: - resolution: {integrity: sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' - typescript: '>=3' - - cosmiconfig-typescript-loader@5.0.0: - resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} - engines: {node: '>=v16'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=8.2' - typescript: '>=4' - - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cp-file@7.0.0: - resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==} - engines: {node: '>=8'} - - cpy@8.1.2: - resolution: {integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==} - engines: {node: '>=8'} - - create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crypto-browserify@3.12.1: - resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} - engines: {node: '>= 0.10'} - - css-loader@3.6.0: - resolution: {integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==} - engines: {node: '>= 8.9.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssfontparser@1.2.1: - resolution: {integrity: sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==} - - cssstyle@3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} - - csstype@2.6.21: - resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} - - currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} - - cyclist@1.0.2: - resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} - - cz-conventional-changelog@3.3.0: - resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} - engines: {node: '>= 10'} - - dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - - data-uri-to-buffer@6.0.1: - resolution: {integrity: sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==} - engines: {node: '>= 14'} - - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} - - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - - date-time@3.1.0: - resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} - engines: {node: '>=6'} - - dateformat@3.0.3: - resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - - decode-uri-component@0.2.0: - resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} - engines: {node: '>=0.10'} - - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - default-browser-id@1.0.4: - resolution: {integrity: sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw==} - engines: {node: '>=0.10.0'} - hasBin: true - - default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - - default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - - define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - - define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - - define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - - del-cli@5.0.0: - resolution: {integrity: sha512-rENFhUaYcjoMODwFhhlON+ogN7DoG+4+GFN+bsA1XeDt4w2OKQnQadFP1thHSAlK9FAtl88qgP66wOV+eFZZiQ==} - engines: {node: '>=14.16'} - hasBin: true - - del@7.0.0: - resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} - engines: {node: '>=14.16'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - - des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detab@2.0.4: - resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} - - detect-file@1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - - devtools-protocol@0.0.1203626: - resolution: {integrity: sha512-nEzHZteIUZfGCZtTiS1fRpC8UZmsfD1SiyPvaUNvS13dvKf666OAm8YTi0+Ca3n1nLEyu49Cy4+dPWpaHFJk9g==} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - - dir-glob@2.2.2: - resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} - engines: {node: '>=4'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - doctypes@1.1.0: - resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} - - dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - - domain-browser@1.2.0: - resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} - engines: {node: '>=0.4', npm: '>=1.2'} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@3.3.0: - resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} - engines: {node: '>= 4'} - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - - dotenv-expand@5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} - - dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} - engines: {node: '>=10'} - - dotgitignore@2.1.0: - resolution: {integrity: sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==} - engines: {node: '>=6'} - - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - electron-to-chromium@1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - - electron-to-chromium@1.5.49: - resolution: {integrity: sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==} - - elliptic@6.6.0: - resolution: {integrity: sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enhanced-resolve@4.5.0: - resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} - engines: {node: '>=6.9.0'} - - enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} - - enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} - engines: {node: '>=0.12'} - - errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.20.4: - resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} - engines: {node: '>= 0.4'} - - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - - es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - es5-shim@4.6.7: - resolution: {integrity: sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==} - engines: {node: '>=0.4.0'} - - es6-shim@0.35.8: - resolution: {integrity: sha512-Twf7I2v4/1tLoIXMT8HlqaBSS5H2wQTs2wx3MNYCI8K1R1/clXyCazrcVCPm/FuO9cyV8+leEaZOWD5C253NDg==} - - esbuild@0.16.9: - resolution: {integrity: sha512-gkH83yHyijMSZcZFs1IWew342eMdFuWXmQo3zkDPTre25LIPBJsXryg02M3u8OpTwCJdBkdaQwqKkDLnAsAeLQ==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-standard@17.0.0: - resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==} - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: ^15.0.0 - eslint-plugin-promise: ^6.0.0 - - eslint-formatter-pretty@4.1.0: - resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} - engines: {node: '>=10'} - - eslint-import-resolver-node@0.3.6: - resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} - - eslint-module-utils@2.7.4: - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-es-x@6.1.0: - resolution: {integrity: sha512-f6dHOuVDDYHOCu3w+EledZnUkDdCa71GGHxZ0DMNfalM/2Upl0t/ks0+d5W5YDQJEQmvthE3WYv7RI/9Fl+csQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - - eslint-plugin-es@3.0.1: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - - eslint-plugin-import@2.26.0: - resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-n@16.0.0: - resolution: {integrity: sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-node@11.1.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' - - eslint-plugin-prettier-vue@5.0.0: - resolution: {integrity: sha512-VsWmk/fftpjHBM7QFci0jZDLsc6Fh7jhenDHJ7Mbd/V0EMolcbezJRhtidE//3Liy5vEaVeX+U3skCQduWlmGA==} - engines: {node: '>=16'} - - eslint-plugin-prettier@4.2.1: - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - eslint-plugin-promise@6.1.1: - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - eslint-plugin-vue@9.8.0: - resolution: {integrity: sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - - eslint-rule-docs@1.1.235: - resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==} - - eslint-scope@4.0.3: - resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} - engines: {node: '>=4.0.0'} - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-utils@3.0.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - - eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.4.1: - resolution: {integrity: sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - espree@9.2.0: - resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - espree@9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} - engines: {node: '>=0.10'} - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estimo@3.0.1: - resolution: {integrity: sha512-xk0Gln+Ie+rfF3EDfa07wcq1n8u3tT6Hbt9UVAYBb3CMvYVfeljqlX9eJBSklbMhgV2BV3Hpcd22Q4T+jiC0fw==} - engines: {node: '>=18'} - hasBin: true - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-to-babel@3.2.1: - resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} - engines: {node: '>=8.3.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - exec-sh@0.3.6: - resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} - - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - - expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - - express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} - engines: {node: '>= 0.10.0'} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@2.2.7: - resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} - engines: {node: '>=4.0.0'} - - fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - - fetch-retry@5.0.6: - resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} - - figgy-pudding@3.5.2: - resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} - deprecated: This module is no longer supported. - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - file-loader@6.2.0: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - file-system-cache@1.1.0: - resolution: {integrity: sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-chrome-bin@2.0.1: - resolution: {integrity: sha512-aDwC2y0dLxt0GFmQ+q8bqBCZ10VW9zYT/lNV806tRDqDAh5XpkTWulB96RKDHDuKu36m/dEvhmhD5IU237oOTg==} - engines: {node: '>=18.0.0'} - - find-node-modules@2.1.3: - resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - - find-up@1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} - engines: {node: '>=0.10.0'} - - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - findup-sync@4.0.0: - resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} - engines: {node: '>= 8'} - - flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - - flow-parser@0.196.0: - resolution: {integrity: sha512-739keKrDa+/5wpGFirMVK04elYMBjnwX2VH0WneKm3zx4K60ic8acJ6Ya6BekuHKLHIuz36ZUOQuGSUjc8D21A==} - engines: {node: '>=0.4.0'} - - flush-write-stream@1.1.1: - resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - - fork-ts-checker-webpack-plugin@4.1.6: - resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} - engines: {node: '>=6.11.5', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - fork-ts-checker-webpack-plugin@6.5.3: - resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - - fs-write-stream-atomic@1.0.10: - resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} - deprecated: This package is no longer supported. - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - - get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-pkg-repo@4.2.1: - resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} - engines: {node: '>=6.9.0'} - hasBin: true - - get-stdin@4.0.1: - resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} - engines: {node: '>=0.10.0'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - - get-uri@6.0.2: - resolution: {integrity: sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==} - engines: {node: '>= 14'} - - get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - - git-raw-commits@2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} - hasBin: true - - git-remote-origin-url@2.0.0: - resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} - engines: {node: '>=4'} - - git-semver-tags@4.1.1: - resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==} - engines: {node: '>=10'} - hasBin: true - - git-up@4.0.5: - resolution: {integrity: sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==} - - git-url-parse@11.6.0: - resolution: {integrity: sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==} - - gitconfiglocal@1.0.0: - resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} - - github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - - glob-parent@3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-promise@3.4.0: - resolution: {integrity: sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==} - engines: {node: '>=4'} - peerDependencies: - glob: '*' - - glob-promise@4.2.2: - resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} - engines: {node: '>=12'} - peerDependencies: - glob: ^7.1.6 - - glob-to-regexp@0.3.0: - resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - - global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.19.0: - resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} - engines: {node: '>=8'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@13.1.2: - resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - globby@14.0.0: - resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} - engines: {node: '>=18'} - - globby@9.2.0: - resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} - engines: {node: '>=6'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - handlebars@4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} - engines: {node: '>=0.4.7'} - hasBin: true - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-glob@1.0.0: - resolution: {integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==} - engines: {node: '>=0.10.0'} - - has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - - has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - - has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - - has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - - has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - - hash-base@3.0.4: - resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} - engines: {node: '>=4'} - - hash-sum@1.0.2: - resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} - - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-to-hyperscript@9.0.1: - resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} - - hast-util-from-parse5@6.0.1: - resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} - - hast-util-parse-selector@2.2.5: - resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} - - hast-util-raw@6.0.1: - resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} - - hast-util-to-parse5@6.0.0: - resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} - - hastscript@6.0.0: - resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} - - html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - html-minifier-terser@5.1.1: - resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==} - engines: {node: '>=6'} - hasBin: true - - html-void-elements@1.0.5: - resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} - - html-webpack-plugin@4.5.2: - resolution: {integrity: sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==} - engines: {node: '>=6.9'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - htmlparser2-svelte@4.1.0: - resolution: {integrity: sha512-+4f4RBFz7Rj2Hp0ZbFbXC+Kzbd6S9PgjiuFtdT76VMNgKogrEZy0pG2UrPycPbrZzVEIM5lAT3lAdkSTCHLPjg==} - - htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} - engines: {node: '>= 14'} - - https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - - https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - icss-utils@4.1.1: - resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} - engines: {node: '>= 6'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - iferr@0.1.5: - resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} - - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - - ignore@5.2.1: - resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} - engines: {node: '>= 4'} - - ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@2.1.0: - resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} - engines: {node: '>=0.10.0'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - - inquirer@8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} - engines: {node: '>=12.0.0'} - - internal-slot@1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} - - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - interpret@2.2.0: - resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} - engines: {node: '>= 0.10'} - - ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - - ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - - ip@2.0.1: - resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - irregular-plurals@3.3.0: - resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==} - engines: {node: '>=8'} - - is-absolute-url@3.0.3: - resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} - engines: {node: '>=8'} - - is-accessor-descriptor@0.1.6: - resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} - engines: {node: '>=0.10.0'} - - is-accessor-descriptor@1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-builtin-module@3.2.0: - resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} - engines: {node: '>=6'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - - is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - - is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} - - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - - is-data-descriptor@0.1.4: - resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} - engines: {node: '>=0.10.0'} - - is-data-descriptor@1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - - is-descriptor@0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - - is-descriptor@1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - is-dom@1.1.0: - resolution: {integrity: sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==} - - is-expression@4.0.0: - resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finite@1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - - is-glob@3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - is-object@1.0.2: - resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} - - is-path-cwd@3.0.0: - resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-path-inside@4.0.0: - resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} - engines: {node: '>=12'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-whitespace-character@1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - - is-window@1.0.2: - resolution: {integrity: sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-word-character@1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isobject@4.0.0: - resolution: {integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==} - engines: {node: '>=0.10.0'} - - isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} - - istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - - istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - - iterate-iterator@1.0.2: - resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} - - iterate-value@1.0.2: - resolution: {integrity: sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==} - - jest-canvas-mock@2.5.2: - resolution: {integrity: sha512-vgnpPupjOL6+L5oJXzxTxFrlGEIbHdZqFU+LFNdtLxZ3lRDCl17FlTMM7IatoRQkrcyOTMlDinjUguqmQ6bR2A==} - - jest-haste-map@26.6.2: - resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} - engines: {node: '>= 10.14.2'} - - jest-regex-util@26.0.0: - resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} - engines: {node: '>= 10.14.2'} - - jest-serializer@26.6.2: - resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} - engines: {node: '>= 10.14.2'} - - jest-util@26.6.2: - resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} - engines: {node: '>= 10.14.2'} - - jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - js-string-escape@1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - - js-stringify@1.0.2: - resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jscodeshift@0.13.1: - resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - - jsdom@23.0.1: - resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} - hasBin: true - - json5@2.2.2: - resolution: {integrity: sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==} - engines: {node: '>=6'} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - jstransformer@1.0.0: - resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} - - junk@3.1.0: - resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} - engines: {node: '>=8'} - - kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - - kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - - kind-of@5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - - lazy-universal-dotenv@3.0.1: - resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} - engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} - engines: {node: '>=10'} - - lilconfig@3.0.0: - resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-json-file@1.1.0: - resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} - engines: {node: '>=0.10.0'} - - load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - - loader-runner@2.4.0: - resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - loader-utils@1.4.2: - resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} - engines: {node: '>=4.0.0'} - - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - - lodash.ismatch@4.4.0: - resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.map@4.6.0: - resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - longest@2.0.1: - resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} - engines: {node: '>=0.10.0'} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - loud-rejection@1.6.0: - resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} - engines: {node: '>=0.10.0'} - - loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - - magic-string@0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} - engines: {node: '>=12'} - - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - - magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} - engines: {node: '>=12'} - - magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - - map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - - markdown-escapes@1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - - md5-hex@3.0.1: - resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} - engines: {node: '>=8'} - - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - mdast-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} - - mdast-util-definitions@4.0.0: - resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} - - mdast-util-to-hast@10.0.1: - resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} - - mdast-util-to-string@1.1.0: - resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} - - mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - - memory-fs@0.4.1: - resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} - - memory-fs@0.5.0: - resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - - meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} - - meow@3.7.0: - resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==} - engines: {node: '>=0.10.0'} - - meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - - meow@9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - merge@2.1.1: - resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - microevent.ts@0.1.1: - resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==} - - micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - - minimist@1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - - minimist@1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mississippi@3.0.0: - resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} - engines: {node: '>=4.0.0'} - - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.2.0: - resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} - - modify-values@1.0.1: - resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} - engines: {node: '>=0.10.0'} - - moo-color@1.0.3: - resolution: {integrity: sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==} - - move-concurrently@1.0.1: - resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} - deprecated: This package is no longer supported. - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - nan@2.22.0: - resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} - - nano-staged@0.8.0: - resolution: {integrity: sha512-QSEqPGTCJbkHU2yLvfY6huqYPjdBrOaTMKatO1F8nCSrkQGXeKwtCiCnsdxnuMhbg3DTVywKaeWLGCE5oJpq0g==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@5.0.4: - resolution: {integrity: sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==} - engines: {node: ^18 || >=20} - hasBin: true - - nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - - nanospinner@1.1.0: - resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - nested-error-stacks@2.1.1: - resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - - new-github-release-url@2.0.0: - resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-libs-browser@2.2.1: - resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} - - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - - node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - - normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - num2fraction@1.2.2: - resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} - - nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - - object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.getownpropertydescriptors@2.1.8: - resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} - engines: {node: '>= 0.8'} - - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - - object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} - - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - - open@8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} - engines: {node: '>=12'} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - - optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - - os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - p-all@2.1.0: - resolution: {integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==} - engines: {node: '>=6'} - - p-event@4.2.0: - resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} - engines: {node: '>=8'} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-map@5.5.0: - resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} - engines: {node: '>=12'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} - engines: {node: '>= 14'} - - pac-resolver@7.0.0: - resolution: {integrity: sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==} - engines: {node: '>= 14'} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - parallel-transform@1.2.0: - resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-asn1@5.1.7: - resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} - engines: {node: '>= 0.10'} - - parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - - parse-json@2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - - parse-path@4.0.4: - resolution: {integrity: sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==} - - parse-url@6.0.5: - resolution: {integrity: sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA==} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - - path-browserify@0.0.1: - resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} - - path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - - path-exists@2.1.0: - resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} - engines: {node: '>=0.10.0'} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - - path-type@1.1.0: - resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} - engines: {node: '>=0.10.0'} - - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - - pathe@1.1.0: - resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - - picocolors@0.2.1: - resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - - pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - - pkg-types@1.0.2: - resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} - - plur@4.0.0: - resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} - engines: {node: '>=10'} - - pnp-webpack-plugin@1.6.4: - resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} - engines: {node: '>=6'} - - polished@4.2.2: - resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} - engines: {node: '>=10'} - - posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-flexbugs-fixes@4.2.1: - resolution: {integrity: sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==} - - postcss-loader@4.3.0: - resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} - engines: {node: '>= 10.13.0'} - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^4.0.0 || ^5.0.0 - - postcss-modules-extract-imports@2.0.0: - resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} - engines: {node: '>= 6'} - - postcss-modules-local-by-default@3.0.3: - resolution: {integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==} - engines: {node: '>= 6'} - - postcss-modules-scope@2.2.0: - resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} - engines: {node: '>= 6'} - - postcss-modules-values@3.0.0: - resolution: {integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==} - - postcss-selector-parser@6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} - engines: {node: '>=4'} - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@7.0.39: - resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} - engines: {node: '>=6.0.0'} - - postcss@8.4.19: - resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.20: - resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@2.3.0: - resolution: {integrity: sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} - engines: {node: '>=14'} - hasBin: true - - pretty-error@2.1.2: - resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==} - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise.allsettled@1.0.7: - resolution: {integrity: sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==} - engines: {node: '>= 0.4'} - - promise.prototype.finally@3.1.8: - resolution: {integrity: sha512-aVDtsXOml9iuMJzUco9J1je/UrIT3oMYfWkCTiUhkt+AvZw72q4dUZnR/R/eB3h5GeAagQVXvM1ApoYniJiwoA==} - engines: {node: '>= 0.4'} - - promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@5.6.0: - resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - - protocols@1.4.8: - resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==} - - protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-agent@6.3.1: - resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} - engines: {node: '>= 14'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - - public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - - pug-attrs@3.0.0: - resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} - - pug-code-gen@3.0.2: - resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} - - pug-error@2.0.0: - resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} - - pug-filters@4.0.0: - resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} - - pug-lexer@5.0.1: - resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} - - pug-linker@4.0.0: - resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} - - pug-load@3.0.0: - resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} - - pug-parser@6.0.0: - resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} - - pug-runtime@3.0.1: - resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} - - pug-strip-comments@2.0.0: - resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} - - pug-walk@2.0.0: - resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} - - pug@3.0.2: - resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} - - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - puppeteer-core@21.6.0: - resolution: {integrity: sha512-1vrzbp2E1JpBwtIIrriWkN+A0afUxkqRuFTC3uASc5ql6iuK9ppOdIU/CPGKwOyB4YFIQ16mRbK0PK19mbXnaQ==} - engines: {node: '>=16.13.2'} - - q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - query-string@6.14.1: - resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} - engines: {node: '>=6'} - - querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - - querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - ramda@0.28.0: - resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - raw-loader@4.0.2: - resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - react-docgen-typescript@2.2.2: - resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} - peerDependencies: - typescript: '>= 4.3.x' - - react-docgen@6.0.0-alpha.3: - resolution: {integrity: sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==} - engines: {node: '>=12.0.0'} - hasBin: true - - react-dom@16.14.0: - resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} - peerDependencies: - react: ^16.14.0 - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-inspector@5.1.1: - resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react@16.14.0: - resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} - engines: {node: '>=0.10.0'} - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - read-pkg-up@1.0.1: - resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} - engines: {node: '>=0.10.0'} - - read-pkg-up@3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} - - read-pkg@1.1.0: - resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} - engines: {node: '>=0.10.0'} - - read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - read-pkg@6.0.0: - resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} - engines: {node: '>=12'} - - readable-stream@2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - recast@0.20.5: - resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} - engines: {node: '>= 4'} - - recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} - - redent@1.0.0: - resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} - engines: {node: '>=0.10.0'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - - regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} - - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.1: - resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - - regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - - regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - - regexp.prototype.flags@1.5.3: - resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} - engines: {node: '>= 0.4'} - - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - - regexpu-core@5.2.2: - resolution: {integrity: sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==} - engines: {node: '>=4'} - - regexpu-core@6.1.1: - resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} - engines: {node: '>=4'} - - regjsgen@0.7.1: - resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.11.2: - resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} - hasBin: true - - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - - remark-external-links@8.0.0: - resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} - - remark-footnotes@2.0.0: - resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} - - remark-mdx@1.6.22: - resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} - - remark-parse@8.0.3: - resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} - - remark-slug@6.1.0: - resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} - - remark-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} - - remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - - renderkid@2.0.7: - resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==} - - repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - repeating@2.0.1: - resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} - engines: {node: '>=0.10.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - - resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - - resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - rollup-plugin-swc3@0.11.0: - resolution: {integrity: sha512-luB9Ngb1YieWPpJttKvkmjN3lG5l28SmASLbf2CoScUB2+EImU0bE8wX4EYKEqv5clVulhWRQHQvE+H33X/03g==} - engines: {node: '>=12'} - peerDependencies: - '@swc/core': '>=1.2.165' - rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 - - rollup-preserve-directives@1.0.1: - resolution: {integrity: sha512-v7mFds6y7kBIaxWp0vipT2qeneRCRHO9YpUdYCv/7xmlvL+q+vwmCVdihkQYkO3JOBAa7zdBqkFAvdmTeOFY5w==} - peerDependencies: - rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 - - rollup@3.7.5: - resolution: {integrity: sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - - rsvp@4.8.5: - resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} - engines: {node: 6.* || >= 7.*} - - run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - run-queue@1.0.3: - resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} - - rxjs@7.5.7: - resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} - - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.1: - resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sane@4.1.0: - resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} - engines: {node: 6.* || 8.* || >= 10.*} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - scheduler@0.19.1: - resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} - - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - - schema-utils@1.0.0: - resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} - engines: {node: '>= 4'} - - schema-utils@2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} - - schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} - - schema-utils@3.1.1: - resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} - engines: {node: '>= 10.13.0'} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - - semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} - engines: {node: '>=10'} - hasBin: true - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - - serialize-javascript@5.0.1: - resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} - - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - - serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} - - serve-favicon@2.5.0: - resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - simple-git-hooks@2.8.1: - resolution: {integrity: sha512-DYpcVR1AGtSfFUNzlBdHrQGPsOhuuEJ/FkmPOOlFysP60AHd3nsEpkGq/QEOdtUyT1Qhk7w9oLmFoMG+75BDog==} - hasBin: true - - simple-github-release@1.0.0: - resolution: {integrity: sha512-Hf55EbQfNdah15ECPL1v+8VxTqszvG3Sy8CV72lInZsd0kbB/jnSfxXh32hN22OTYLMdpQKfEoiA/WLN52w/gA==} - engines: {node: '>=14'} - hasBin: true - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - size-limit@11.0.1: - resolution: {integrity: sha512-6L80ocVspWPrhIRg8kPl41VypqTGH8/lu9e6TJiSJpkNLtOR2h/EEqdAO/wNJOv/sUVtjX+lVEWrzBpItGP+gQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - - snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - - snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - - socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - - socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - - source-list-map@2.0.1: - resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - - space-separated-tokens@1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - - spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} - - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} - - split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - - split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - - split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - split@1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - ssri@6.0.2: - resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} - - ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - standard-version@9.5.0: - resolution: {integrity: sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q==} - engines: {node: '>=10'} - hasBin: true - - state-toggle@1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - - static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - std-env@3.3.2: - resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} - - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - - store2@2.14.2: - resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - - store2@2.14.3: - resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} - - stream-browserify@2.0.2: - resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} - - stream-each@1.2.3: - resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} - - stream-http@2.8.3: - resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - streamx@2.15.6: - resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} - - strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - - string.prototype.padend@3.1.6: - resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} - engines: {node: '>= 0.4'} - - string.prototype.padstart@3.1.6: - resolution: {integrity: sha512-1y15lz7otgfRTAVK5qbp3eHIga+w8j7+jIH+7HpUrOfnLVl6n0hbspi4EXf4tR+PNOpBjPstltemkx0SvViOCg==} - engines: {node: '>= 0.4'} - - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - - string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-package@1.0.1: - resolution: {integrity: sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==} - deprecated: This module is not used anymore, and has been replaced by @npmcli/package-json - - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@2.0.0: - resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@1.0.1: - resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} - engines: {node: '>=0.10.0'} - hasBin: true - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@1.0.1: - resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} - - style-loader@1.3.0: - resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==} - engines: {node: '>= 8.9.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - style-to-object@0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - sveltedoc-parser@4.2.1: - resolution: {integrity: sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==} - engines: {node: '>=10.0.0'} - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - symbol.prototype.description@1.0.6: - resolution: {integrity: sha512-VgVgtEabORsQtmuindtO7v8fF+bsKxUkvEMFj+ecBK6bomrwv5JUSWdMoC3ypa9+Jaqp/wOzkWk4f6I+p5GzyA==} - engines: {node: '>= 0.4'} - - synchronous-promise@2.0.16: - resolution: {integrity: sha512-qImOD23aDfnIDNqlG1NOehdB9IYsn1V9oByPjKY1nakv2MQYCEMyX033/q+aEtYCpmYK1cv2+NTmlH+ra6GA5A==} - - synchronous-promise@2.0.17: - resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} - - synckit@0.8.6: - resolution: {integrity: sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==} - engines: {node: ^14.18.0 || >=16.0.0} - - tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - tar-fs@3.0.4: - resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} - - tar-stream@3.1.6: - resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - telejson@6.0.8: - resolution: {integrity: sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==} - - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - - terser-webpack-plugin@1.4.6: - resolution: {integrity: sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==} - engines: {node: '>= 6.9.0'} - peerDependencies: - webpack: ^4.0.0 - - terser-webpack-plugin@4.2.3: - resolution: {integrity: sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - terser-webpack-plugin@5.3.6: - resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser-webpack-plugin@5.3.9: - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@4.8.1: - resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} - engines: {node: '>=6.0.0'} - hasBin: true - - terser@5.16.1: - resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} - engines: {node: '>=10'} - hasBin: true - - terser@5.26.0: - resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} - engines: {node: '>=10'} - hasBin: true - - terser@5.36.0: - resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} - engines: {node: '>=10'} - hasBin: true - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} - - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - time-zone@1.0.0: - resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} - engines: {node: '>=4'} - - timers-browserify@2.0.12: - resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} - engines: {node: '>=0.6.0'} - - tinybench@2.4.0: - resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} - - tinypool@0.5.0: - resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} - engines: {node: '>=14.0.0'} - - tinyspy@2.1.0: - resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} - engines: {node: '>=14.0.0'} - - titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-arraybuffer@1.0.1: - resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - - to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - token-stream@1.0.0: - resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} - - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} - - trim-newlines@1.0.0: - resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==} - engines: {node: '>=0.10.0'} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - trim-newlines@4.0.2: - resolution: {integrity: sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==} - engines: {node: '>=12'} - - trim-trailing-lines@1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - - trim@0.0.1: - resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} - deprecated: Use String.prototype.trim() instead - - trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - - ts-api-utils@1.0.3: - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - - ts-loader@8.4.0: - resolution: {integrity: sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==} - engines: {node: '>=10.0.0'} - peerDependencies: - typescript: '*' - webpack: '*' - - ts-map@1.0.3: - resolution: {integrity: sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==} - - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - ts-pnp@1.2.0: - resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} - engines: {node: '>=6'} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - tsconfig-paths@3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} - - tsd@0.25.0: - resolution: {integrity: sha512-liUlvKtsdr+70XEZP/kkF6U8+Q9URZi4Pw58ih7a9x3kjJblG8rdVgvG62xcvkgRva1q3yWX5qAxfYZuYiC5CA==} - engines: {node: '>=14.16'} - hasBin: true - - tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - - tty-browserify@0.0.0: - resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typescript@4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} - hasBin: true - - ufo@1.1.1: - resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} - - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - - uglify-js@3.19.3: - resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} - engines: {node: '>=0.8.0'} - hasBin: true - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - - unherit@1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unified@9.2.0: - resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} - - union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - - unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - - unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - - unist-builder@2.0.3: - resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} - - unist-util-generated@1.1.6: - resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} - - unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - - unist-util-position@3.1.0: - resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} - - unist-util-remove-position@2.0.1: - resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} - - unist-util-remove@2.1.0: - resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} - - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - - unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - - unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} - - universal-user-agent@6.0.0: - resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - - untildify@2.1.0: - resolution: {integrity: sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==} - engines: {node: '>=0.10.0'} - - untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - - upath@1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - - update-browserslist-db@1.0.10: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - - url-loader@4.1.1: - resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - file-loader: '*' - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - - urlpattern-polyfill@9.0.0: - resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} - - use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util.promisify@1.0.0: - resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} - - util@0.10.4: - resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} - - util@0.11.1: - resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} - - utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid-browser@3.1.0: - resolution: {integrity: sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==} - - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - - v8-to-istanbul@9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} - engines: {node: '>=10.12.0'} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vfile-location@3.2.0: - resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - - vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - - vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - - vite-node@0.31.0: - resolution: {integrity: sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==} - engines: {node: '>=v14.18.0'} - hasBin: true - - vite@4.0.2: - resolution: {integrity: sha512-QJaY3R+tFlTagH0exVqbgkkw45B+/bXVBzF2ZD1KB5Z8RiAoiKo60vSUf6/r4c2Vh9jfGBKM4oBI9b4/1ZJYng==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest-canvas-mock@0.3.3: - resolution: {integrity: sha512-3P968tYBpqYyzzOaVtqnmYjqbe13576/fkjbDEJSfQAkHtC5/UjuRHOhFEN/ZV5HVZIkaROBUWgazDKJ+Ibw+Q==} - peerDependencies: - vitest: '*' - - vitest@0.31.0: - resolution: {integrity: sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - - vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - - void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - - vue-docgen-api@4.56.0: - resolution: {integrity: sha512-ab/Scb0DCjm4YVLf+AFa/R7XMFl8TVwUsvh26fFT5iaURih1m2hdd5Y8NveA7NQDcycpWavkFZj9eVbQdp2VGQ==} - - vue-docgen-loader@1.5.1: - resolution: {integrity: sha512-coMmQYsg+fy18SVtBNU7/tztdqEyrneFfwQFLmx8O7jaJ11VZ//9tRWXlwGzJM07cPRwMHDKMlAdWrpuw3U46A==} - engines: {node: '>= 8.16'} - peerDependencies: - vue-docgen-api: '>=3' - webpack: '>=4' - - vue-eslint-parser@9.1.0: - resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - vue-eslint-parser@9.3.2: - resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - vue-inbrowser-compiler-independent-utils@4.55.0: - resolution: {integrity: sha512-RXrhCfHhG/12OY9uvIIrIvynPEUzDz9r4fWgC7E59BdMaUD/58MDcE14Wy6o7V242zawS/vVR37KVxT5whFyTw==} - peerDependencies: - vue: '>=2' - - vue-loader@16.8.3: - resolution: {integrity: sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==} - peerDependencies: - '@vue/compiler-sfc': ^3.0.8 - vue: ^3.2.13 - webpack: ^4.1.0 || ^5.0.0-0 - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true - vue: - optional: true - - vue@3.2.45: - resolution: {integrity: sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==} - - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - watchpack-chokidar2@2.0.1: - resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} - - watchpack@1.7.5: - resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} - - watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-namespaces@1.1.4: - resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - webpack-dev-middleware@3.7.3: - resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} - engines: {node: '>= 6'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - webpack-filter-warnings-plugin@1.2.1: - resolution: {integrity: sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==} - engines: {node: '>= 4.3 < 5.0.0 || >= 5.10'} - peerDependencies: - webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 - - webpack-hot-middleware@2.26.1: - resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} - - webpack-log@2.0.0: - resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} - engines: {node: '>= 6'} - - webpack-sources@1.4.3: - resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack-virtual-modules@0.2.2: - resolution: {integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==} - - webpack@4.47.0: - resolution: {integrity: sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==} - engines: {node: '>=6.11.5'} - hasBin: true - peerDependencies: - webpack-cli: '*' - webpack-command: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack-command: - optional: true - - webpack@5.75.0: - resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - well-known-symbols@2.0.0: - resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} - engines: {node: '>=6'} - - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} - engines: {node: '>=18'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - - with@7.0.2: - resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} - engines: {node: '>= 10.0.0'} - - word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - worker-farm@1.7.0: - resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} - - worker-rpc@0.1.1: - resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - - ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - x-default-browser@0.4.0: - resolution: {integrity: sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==} - hasBin: true - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - - zwitch@1.0.5: - resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} - -publishDirectory: package - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@ampproject/remapping@2.2.0': - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@babel/code-frame@7.18.6': - dependencies: - '@babel/highlight': 7.18.6 - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.20.5': {} - - '@babel/compat-data@7.26.2': {} - - '@babel/core@7.12.9': - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.6 - '@babel/parser': 7.20.5 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.2 - lodash: 4.17.21 - resolve: 1.22.2 - semver: 5.7.1 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.20.5': - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5) - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.6 - '@babel/parser': 7.20.5 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.2 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.26.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.20.5': - dependencies: - '@babel/types': 7.20.5 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - - '@babel/generator@7.26.2': - dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 - - '@babel/helper-annotate-as-pure@7.18.6': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-annotate-as-pure@7.25.9': - dependencies: - '@babel/types': 7.26.0 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.18.9': - dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.5 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5)': - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - - '@babel/helper-compilation-targets@7.20.0(@babel/core@7.26.0)': - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.26.0 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - - '@babel/helper-compilation-targets@7.25.9': - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.20.5(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.20.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.25.9 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.20.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.2 - - '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.1.1 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.1.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.2 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-environment-visitor@7.18.9': {} - - '@babel/helper-explode-assignable-expression@7.18.6': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-function-name@7.19.0': - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 - - '@babel/helper-hoist-variables@7.18.6': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-member-expression-to-functions@7.18.9': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-member-expression-to-functions@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.18.6': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.20.2': - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.18.6': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-optimise-call-expression@7.25.9': - dependencies: - '@babel/types': 7.26.0 - - '@babel/helper-plugin-utils@7.10.4': {} - - '@babel/helper-plugin-utils@7.20.2': {} - - '@babel/helper-plugin-utils@7.25.9': {} - - '@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.19.1': - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/helper-simple-access@7.20.2': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-simple-access@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.20.0': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-split-export-declaration@7.18.6': - dependencies: - '@babel/types': 7.20.5 - - '@babel/helper-string-parser@7.19.4': {} - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.19.1': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/helper-validator-option@7.18.6': {} - - '@babel/helper-validator-option@7.25.9': {} - - '@babel/helper-wrap-function@7.20.5': - dependencies: - '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-wrap-function@7.25.9': - dependencies: - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.20.6': - dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.26.0': - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - - '@babel/highlight@7.18.6': - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/parser@7.20.5': - dependencies: - '@babel/types': 7.20.5 - - '@babel/parser@7.23.6': - dependencies: - '@babel/types': 7.20.5 - - '@babel/parser@7.26.2': - dependencies: - '@babel/types': 7.26.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.26.0) - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-async-generator-functions@7.20.1(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-class-static-block@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - - '@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - - '@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) - - '@babel/plugin-proposal-logical-assignment-operators@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.5) - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - - '@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9)': - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-transform-parameters': 7.20.5(@babel/core@7.12.9) - - '@babel/plugin-proposal-object-rest-spread@7.20.2(@babel/core@7.26.0)': - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.20.5(@babel/core@7.26.0) - - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - - '@babel/plugin-proposal-optional-chaining@7.18.9(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.5) - - '@babel/plugin-proposal-optional-chaining@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.20.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-flow@7.18.6(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9)': - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9)': - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-block-scoping@7.20.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.20.2(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.26.0) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/template': 7.25.9 - - '@babel/plugin-transform-destructuring@7.20.2(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.20.5) - - '@babel/plugin-transform-for-of@7.18.8(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.26.0) - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-literals@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-modules-amd@7.19.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-simple-access': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.19.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-new-target@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - - '@babel/plugin-transform-object-super@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.20.5(@babel/core@7.12.9)': - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-parameters@7.20.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.26.0) - '@babel/types': 7.20.5 - - '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - regenerator-transform: 0.15.1 - - '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-spread@7.19.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - - '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-typescript@7.20.2(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5(@babel/core@7.20.5) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.20.5(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - - '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/preset-env@7.20.2(@babel/core@7.26.0)': - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-proposal-async-generator-functions': 7.20.1(@babel/core@7.26.0) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-class-static-block': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.2(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-private-property-in-object': 7.20.5(@babel/core@7.26.0) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.26.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.20.5(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.20.2(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.20.2(@babel/core@7.26.0) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-modules-amd': 7.19.6(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.26.0) - '@babel/plugin-transform-modules-systemjs': 7.19.6(@babel/core@7.26.0) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.26.0) - '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.20.5(@babel/core@7.26.0) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.26.0) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.26.0) - '@babel/preset-modules': 0.1.5(@babel/core@7.26.0) - '@babel/types': 7.20.5 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.26.0) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.26.0) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.26.0) - core-js-compat: 3.26.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) - '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.39.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-flow@7.18.6(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.20.5) - - '@babel/preset-modules@0.1.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.26.0) - '@babel/types': 7.20.5 - esutils: 2.0.3 - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/types': 7.26.0 - esutils: 2.0.3 - - '@babel/preset-react@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.18.6(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.20.2(@babel/core@7.20.5) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/register@7.18.9(@babel/core@7.20.5)': - dependencies: - '@babel/core': 7.20.5 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.5 - source-map-support: 0.5.21 - - '@babel/register@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - - '@babel/runtime@7.20.6': - dependencies: - regenerator-runtime: 0.13.11 - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.18.10': - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - - '@babel/template@7.25.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - - '@babel/traverse@7.20.5': - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.25.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.20.5': - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - '@babel/types@7.26.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@0.2.3': {} - - '@cnakazawa/watch@1.0.4': - dependencies: - exec-sh: 0.3.6 - minimist: 1.2.7 - - '@colors/colors@1.5.0': - optional: true - - '@commitlint/cli@18.4.3(typescript@4.9.4)': - dependencies: - '@commitlint/format': 18.4.3 - '@commitlint/lint': 18.4.3 - '@commitlint/load': 18.4.3(typescript@4.9.4) - '@commitlint/read': 18.4.3 - '@commitlint/types': 18.4.3 - execa: 5.1.1 - lodash.isfunction: 3.0.9 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - typescript - - '@commitlint/config-conventional@18.4.3': - dependencies: - conventional-changelog-conventionalcommits: 7.0.2 - - '@commitlint/config-validator@17.1.0': - dependencies: - '@commitlint/types': 17.0.0 - ajv: 8.11.2 - optional: true - - '@commitlint/config-validator@18.4.3': - dependencies: - '@commitlint/types': 18.4.3 - ajv: 8.11.2 - - '@commitlint/ensure@18.4.3': - dependencies: - '@commitlint/types': 18.4.3 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - - '@commitlint/execute-rule@17.0.0': - optional: true - - '@commitlint/execute-rule@18.4.3': {} - - '@commitlint/format@18.4.3': - dependencies: - '@commitlint/types': 18.4.3 - chalk: 4.1.2 - - '@commitlint/is-ignored@18.4.3': - dependencies: - '@commitlint/types': 18.4.3 - semver: 7.5.4 - - '@commitlint/lint@18.4.3': - dependencies: - '@commitlint/is-ignored': 18.4.3 - '@commitlint/parse': 18.4.3 - '@commitlint/rules': 18.4.3 - '@commitlint/types': 18.4.3 - - '@commitlint/load@17.3.0(@swc/core@1.3.23)': - dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/execute-rule': 17.0.0 - '@commitlint/resolve-extends': 17.3.0 - '@commitlint/types': 17.0.0 - '@types/node': 14.18.33 - chalk: 4.1.2 - cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 4.2.0(@types/node@14.18.33)(cosmiconfig@7.1.0)(ts-node@10.9.1(@swc/core@1.3.23)(@types/node@18.11.17)(typescript@4.9.4))(typescript@4.9.4) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.1(@swc/core@1.3.23)(@types/node@14.18.33)(typescript@4.9.4) - typescript: 4.9.4 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - optional: true - - '@commitlint/load@18.4.3(typescript@4.9.4)': - dependencies: - '@commitlint/config-validator': 18.4.3 - '@commitlint/execute-rule': 18.4.3 - '@commitlint/resolve-extends': 18.4.3 - '@commitlint/types': 18.4.3 - '@types/node': 18.11.17 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@4.9.4) - cosmiconfig-typescript-loader: 5.0.0(@types/node@18.11.17)(cosmiconfig@8.3.6(typescript@4.9.4))(typescript@4.9.4) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - transitivePeerDependencies: - - typescript - - '@commitlint/message@18.4.3': {} - - '@commitlint/parse@18.4.3': - dependencies: - '@commitlint/types': 18.4.3 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 - - '@commitlint/read@18.4.3': - dependencies: - '@commitlint/top-level': 18.4.3 - '@commitlint/types': 18.4.3 - fs-extra: 11.2.0 - git-raw-commits: 2.0.11 - minimist: 1.2.7 - - '@commitlint/resolve-extends@17.3.0': - dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/types': 17.0.0 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - optional: true - - '@commitlint/resolve-extends@18.4.3': - dependencies: - '@commitlint/config-validator': 18.4.3 - '@commitlint/types': 18.4.3 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - - '@commitlint/rules@18.4.3': - dependencies: - '@commitlint/ensure': 18.4.3 - '@commitlint/message': 18.4.3 - '@commitlint/to-lines': 18.4.3 - '@commitlint/types': 18.4.3 - execa: 5.1.1 - - '@commitlint/to-lines@18.4.3': {} - - '@commitlint/top-level@18.4.3': - dependencies: - find-up: 5.0.0 - - '@commitlint/types@17.0.0': - dependencies: - chalk: 4.1.2 - optional: true - - '@commitlint/types@18.4.3': - dependencies: - chalk: 4.1.2 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - optional: true - - '@discoveryjs/json-ext@0.5.7': {} - - '@esbuild/android-arm64@0.16.9': - optional: true - - '@esbuild/android-arm@0.16.9': - optional: true - - '@esbuild/android-x64@0.16.9': - optional: true - - '@esbuild/darwin-arm64@0.16.9': - optional: true - - '@esbuild/darwin-x64@0.16.9': - optional: true - - '@esbuild/freebsd-arm64@0.16.9': - optional: true - - '@esbuild/freebsd-x64@0.16.9': - optional: true - - '@esbuild/linux-arm64@0.16.9': - optional: true - - '@esbuild/linux-arm@0.16.9': - optional: true - - '@esbuild/linux-ia32@0.16.9': - optional: true - - '@esbuild/linux-loong64@0.16.9': - optional: true - - '@esbuild/linux-mips64el@0.16.9': - optional: true - - '@esbuild/linux-ppc64@0.16.9': - optional: true - - '@esbuild/linux-riscv64@0.16.9': - optional: true - - '@esbuild/linux-s390x@0.16.9': - optional: true - - '@esbuild/linux-x64@0.16.9': - optional: true - - '@esbuild/netbsd-x64@0.16.9': - optional: true - - '@esbuild/openbsd-x64@0.16.9': - optional: true - - '@esbuild/sunos-x64@0.16.9': - optional: true - - '@esbuild/win32-arm64@0.16.9': - optional: true - - '@esbuild/win32-ia32@0.16.9': - optional: true - - '@esbuild/win32-x64@0.16.9': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@8.55.0)': - dependencies: - eslint: 8.55.0 - eslint-visitor-keys: 3.4.1 - - '@eslint-community/regexpp@4.10.0': {} - - '@eslint-community/regexpp@4.5.1': {} - - '@eslint/eslintrc@1.4.1': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.2 - globals: 13.19.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.19.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.55.0': {} - - '@fastify/deepmerge@1.3.0': {} - - '@gar/promisify@1.1.3': {} - - '@humanwhocodes/config-array@0.11.13': - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/config-array@0.9.5': - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@1.2.1': {} - - '@humanwhocodes/object-schema@2.0.1': {} - - '@hutson/parse-repository-url@3.0.2': {} - - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/transform@26.6.2': - dependencies: - '@babel/core': 7.20.5 - '@jest/types': 26.6.2 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 26.6.2 - jest-regex-util: 26.0.0 - jest-util: 26.6.2 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - - '@jest/types@26.6.2': - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.17 - '@types/yargs': 15.0.14 - chalk: 4.1.2 - - '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@4.9.4)(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))': - dependencies: - glob: 7.2.3 - glob-promise: 4.2.2(glob@7.2.3) - magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@4.9.4) - vite: 4.0.2(@types/node@18.11.17)(terser@5.36.0) - optionalDependencies: - typescript: 4.9.4 - - '@jridgewell/gen-mapping@0.1.1': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@jridgewell/gen-mapping@0.3.2': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.17 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.0': {} - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.2': - dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - - '@jridgewell/source-map@0.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.4.14': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.17': - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.15 - optional: true - - '@kurkle/color@0.3.1': {} - - '@mdx-js/mdx@1.6.22': - dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) - babel-plugin-extract-import-names: 1.6.22 - camelcase-css: 2.0.1 - detab: 2.0.4 - hast-util-raw: 6.0.1 - lodash.uniq: 4.5.0 - mdast-util-to-hast: 10.0.1 - remark-footnotes: 2.0.0 - remark-mdx: 1.6.22 - remark-parse: 8.0.3 - remark-squeeze-paragraphs: 4.0.0 - style-to-object: 0.3.0 - unified: 9.2.0 - unist-builder: 2.0.3 - unist-util-visit: 2.0.3 - transitivePeerDependencies: - - supports-color - - '@mdx-js/react@1.6.22(react@18.2.0)': - dependencies: - react: 18.2.0 - - '@mdx-js/util@1.6.22': {} - - '@mrmlnc/readdir-enhanced@2.2.1': - dependencies: - call-me-maybe: 1.0.2 - glob-to-regexp: 0.3.0 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@1.1.3': {} - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 - - '@npmcli/fs@1.1.1': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.3 - - '@npmcli/move-file@1.1.2': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - - '@octokit/auth-token@2.5.0': - dependencies: - '@octokit/types': 6.41.0 - - '@octokit/core@3.6.0': - dependencies: - '@octokit/auth-token': 2.5.0 - '@octokit/graphql': 4.8.0 - '@octokit/request': 5.6.3 - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding - - '@octokit/endpoint@6.0.12': - dependencies: - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.0 - - '@octokit/graphql@4.8.0': - dependencies: - '@octokit/request': 5.6.3 - '@octokit/types': 6.41.0 - universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding - - '@octokit/openapi-types@12.11.0': {} - - '@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0)': - dependencies: - '@octokit/core': 3.6.0 - '@octokit/types': 6.41.0 - - '@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0)': - dependencies: - '@octokit/core': 3.6.0 - - '@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0)': - dependencies: - '@octokit/core': 3.6.0 - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - - '@octokit/request-error@2.1.0': - dependencies: - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request@5.6.3': - dependencies: - '@octokit/endpoint': 6.0.12 - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - node-fetch: 2.6.7 - universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding - - '@octokit/rest@18.12.0': - dependencies: - '@octokit/core': 3.6.0 - '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0) - '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0) - transitivePeerDependencies: - - encoding - - '@octokit/types@6.41.0': - dependencies: - '@octokit/openapi-types': 12.11.0 - - '@pkgr/utils@2.4.2': - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 - - '@puppeteer/browsers@1.9.0': - dependencies: - debug: 4.3.4 - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.3.1 - tar-fs: 3.0.4 - unbzip2-stream: 1.4.3 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - - '@rollup/plugin-node-resolve@15.0.1(rollup@3.7.5)': - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.7.5) - '@types/resolve': 1.20.2 - deepmerge: 4.2.2 - is-builtin-module: 3.2.0 - is-module: 1.0.0 - resolve: 1.22.1 - optionalDependencies: - rollup: 3.7.5 - - '@rollup/pluginutils@5.0.2(rollup@3.7.5)': - dependencies: - '@types/estree': 1.0.0 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.7.5 - - '@rollup/pluginutils@5.1.0(rollup@3.7.5)': - dependencies: - '@types/estree': 1.0.0 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.7.5 - - '@sindresorhus/merge-streams@1.0.0': {} - - '@sitespeed.io/tracium@0.3.3': - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - '@size-limit/file@11.0.1(size-limit@11.0.1)': - dependencies: - size-limit: 11.0.1 - - '@size-limit/preset-big-lib@11.0.1(@swc/core@1.3.23)(size-limit@11.0.1)': - dependencies: - '@size-limit/file': 11.0.1(size-limit@11.0.1) - '@size-limit/time': 11.0.1(size-limit@11.0.1) - '@size-limit/webpack': 11.0.1(@swc/core@1.3.23)(size-limit@11.0.1) - size-limit: 11.0.1 - transitivePeerDependencies: - - '@swc/core' - - bufferutil - - encoding - - esbuild - - supports-color - - uglify-js - - utf-8-validate - - webpack-cli - - '@size-limit/time@11.0.1(size-limit@11.0.1)': - dependencies: - estimo: 3.0.1 - size-limit: 11.0.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@size-limit/webpack@11.0.1(@swc/core@1.3.23)(size-limit@11.0.1)': - dependencies: - nanoid: 5.0.4 - size-limit: 11.0.1 - webpack: 5.89.0(@swc/core@1.3.23) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@storybook/addon-actions@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/client-logger': 6.5.16 - '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - polished: 4.2.2 - prop-types: 15.8.1 - react-inspector: 5.1.1(react@18.2.0) - regenerator-runtime: 0.13.11 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - uuid-browser: 3.1.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-controls@6.5.16(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/client-logger': 6.5.16 - '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4) - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/node-logger': 6.5.16 - '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.26.1 - lodash: 4.17.21 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - eslint - - supports-color - - typescript - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/addon-docs@6.5.16(@babel/core@7.26.0)(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4)(webpack@5.89.0(@swc/core@1.3.23))': - dependencies: - '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.26.0) - '@babel/preset-env': 7.20.2(@babel/core@7.26.0) - '@jest/transform': 26.6.2 - '@mdx-js/react': 1.6.22(react@18.2.0) - '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4) - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/mdx1-csf': 0.0.1(@babel/core@7.26.0) - '@storybook/node-logger': 6.5.16 - '@storybook/postinstall': 6.5.16 - '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/source-loader': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - babel-loader: 8.2.5(@babel/core@7.26.0)(webpack@5.89.0(@swc/core@1.3.23)) - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - regenerator-runtime: 0.13.11 - remark-external-links: 8.0.0 - remark-slug: 6.1.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - eslint - - supports-color - - typescript - - vue-template-compiler - - webpack - - webpack-cli - - webpack-command - - '@storybook/addons@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/api': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/theming': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@types/webpack-env': 1.18.0 - core-js: 3.26.1 - global: 4.4.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - - '@storybook/addons@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/webpack-env': 1.18.0 - core-js: 3.26.1 - global: 4.4.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@storybook/api@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/semver': 7.3.2 - '@storybook/theming': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - store2: 2.14.3 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/api@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/semver': 7.3.2 - '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - store2: 2.14.3 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/builder-vite@0.4.2(@vitejs/plugin-vue@4.0.0(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))(vue@3.2.45))(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4)(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))(vue-docgen-api@4.56.0(vue@3.2.45))': - dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@4.9.4)(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0)) - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4) - '@storybook/mdx1-csf': 1.0.0-next.0(react@18.2.0) - '@storybook/node-logger': 6.5.16 - '@storybook/semver': 7.3.2 - '@storybook/source-loader': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - ast-types: 0.14.2 - es-module-lexer: 0.9.3 - glob: 7.2.3 - glob-promise: 4.2.2(glob@7.2.3) - magic-string: 0.26.7 - react-docgen: 6.0.0-alpha.3 - slash: 3.0.0 - sveltedoc-parser: 4.2.1 - vite: 4.0.2(@types/node@18.11.17)(terser@5.36.0) - optionalDependencies: - '@vitejs/plugin-vue': 4.0.0(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))(vue@3.2.45) - vue-docgen-api: 4.56.0(vue@3.2.45) - transitivePeerDependencies: - - eslint - - react - - react-dom - - supports-color - - typescript - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/builder-webpack4@6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)': - dependencies: - '@babel/core': 7.26.0 - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/api': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/channels': 6.5.16 - '@storybook/client-api': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/client-logger': 6.5.16 - '@storybook/components': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - '@storybook/core-events': 6.5.16 - '@storybook/node-logger': 6.5.16 - '@storybook/preview-web': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/router': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/semver': 7.3.2 - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/theming': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/ui': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@types/node': 16.18.10 - '@types/webpack': 4.41.40 - autoprefixer: 9.8.8 - babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@4.47.0) - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.26.1 - css-loader: 3.6.0(webpack@4.47.0) - file-loader: 6.2.0(webpack@4.47.0) - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6(eslint@8.55.0)(typescript@4.9.4)(webpack@4.47.0) - glob: 7.2.3 - glob-promise: 3.4.0(glob@7.2.3) - global: 4.4.0 - html-webpack-plugin: 4.5.2(webpack@4.47.0) - pnp-webpack-plugin: 1.6.4(typescript@4.9.4) - postcss: 7.0.39 - postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0(postcss@7.0.39)(webpack@4.47.0) - raw-loader: 4.0.2(webpack@4.47.0) - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - stable: 0.1.8 - style-loader: 1.3.0(webpack@4.47.0) - terser-webpack-plugin: 4.2.3(webpack@4.47.0) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.3.23)))(webpack@4.47.0) - util-deprecate: 1.0.2 - webpack: 4.47.0 - webpack-dev-middleware: 3.7.3(webpack@4.47.0) - webpack-filter-warnings-plugin: 1.2.1(webpack@4.47.0) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - bluebird - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/channel-postmessage@6.5.16': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - core-js: 3.26.1 - global: 4.4.0 - qs: 6.11.0 - telejson: 6.0.8 - - '@storybook/channel-websocket@6.5.16': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - core-js: 3.26.1 - global: 4.4.0 - telejson: 6.0.8 - - '@storybook/channels@6.5.16': - dependencies: - core-js: 3.26.1 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/client-api@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@types/qs': 6.9.7 - '@types/webpack-env': 1.18.0 - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - store2: 2.14.2 - synchronous-promise: 2.0.16 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/client-api@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/qs': 6.9.7 - '@types/webpack-env': 1.18.0 - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - store2: 2.14.2 - synchronous-promise: 2.0.16 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/client-logger@6.5.16': - dependencies: - core-js: 3.26.1 - global: 4.4.0 - - '@storybook/components@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/client-logger': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/theming': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - core-js: 3.26.1 - memoizerific: 1.11.3 - qs: 6.13.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - util-deprecate: 1.0.2 - - '@storybook/components@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/client-logger': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.26.1 - memoizerific: 1.11.3 - qs: 6.13.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - util-deprecate: 1.0.2 - - '@storybook/core-client@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)(webpack@4.47.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/channel-websocket': 6.5.16 - '@storybook/client-api': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/preview-web': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/ui': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - airbnb-js-shims: 2.2.1 - ansi-to-html: 0.6.15 - core-js: 3.26.1 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.13.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - webpack: 4.47.0 - optionalDependencies: - typescript: 4.9.4 - - '@storybook/core-client@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)(webpack@5.75.0(@swc/core@1.3.23))': - dependencies: - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/channel-websocket': 6.5.16 - '@storybook/client-api': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/preview-web': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/ui': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - airbnb-js-shims: 2.2.1 - ansi-to-html: 0.6.15 - core-js: 3.26.1 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.13.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - webpack: 5.75.0(@swc/core@1.3.23) - optionalDependencies: - typescript: 4.9.4 - - '@storybook/core-common@6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.26.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-react': 7.25.9(@babel/core@7.26.0) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@babel/register': 7.25.9(@babel/core@7.26.0) - '@storybook/node-logger': 6.5.16 - '@storybook/semver': 7.3.2 - '@types/node': 16.18.117 - '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@4.47.0) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.26.0) - chalk: 4.1.2 - core-js: 3.26.1 - express: 4.21.1 - file-system-cache: 1.1.0 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.55.0)(typescript@4.9.4)(webpack@4.47.0) - fs-extra: 9.1.0 - glob: 7.2.3 - handlebars: 4.7.8 - interpret: 2.2.0 - json5: 2.2.3 - lazy-universal-dotenv: 3.0.1 - picomatch: 2.3.1 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - resolve-from: 5.0.0 - slash: 3.0.0 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 4.47.0 - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/core-common@6.5.16(eslint@8.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@4.9.4)': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.26.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-react': 7.25.9(@babel/core@7.26.0) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@babel/register': 7.25.9(@babel/core@7.26.0) - '@storybook/node-logger': 6.5.16 - '@storybook/semver': 7.3.2 - '@types/node': 16.18.117 - '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@4.47.0) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.26.0) - chalk: 4.1.2 - core-js: 3.26.1 - express: 4.21.1 - file-system-cache: 1.1.0 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.55.0)(typescript@4.9.4)(webpack@4.47.0) - fs-extra: 9.1.0 - glob: 7.2.3 - handlebars: 4.7.8 - interpret: 2.2.0 - json5: 2.2.3 - lazy-universal-dotenv: 3.0.1 - picomatch: 2.3.1 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - resolve-from: 5.0.0 - slash: 3.0.0 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 4.47.0 - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/core-events@6.5.16': - dependencies: - core-js: 3.26.1 - - '@storybook/core-server@6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)': - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - '@storybook/core-client': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)(webpack@4.47.0) - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/csf-tools': 6.5.16 - '@storybook/manager-webpack4': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - '@storybook/node-logger': 6.5.16 - '@storybook/semver': 7.3.2 - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/telemetry': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - '@types/node': 16.18.10 - '@types/node-fetch': 2.6.11 - '@types/pretty-hrtime': 1.0.3 - '@types/webpack': 4.41.40 - better-opn: 2.1.1 - boxen: 5.1.2 - chalk: 4.1.2 - cli-table3: 0.6.5 - commander: 6.2.1 - compression: 1.7.4 - core-js: 3.26.1 - cpy: 8.1.2 - detect-port: 1.6.1 - express: 4.21.1 - fs-extra: 9.1.0 - global: 4.4.0 - globby: 11.1.0 - ip: 2.0.1 - lodash: 4.17.21 - node-fetch: 2.7.0 - open: 8.4.2 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - serve-favicon: 2.5.0 - slash: 3.0.0 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - watchpack: 2.4.2 - webpack: 4.47.0 - ws: 8.18.0 - x-default-browser: 0.4.0 - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - bluebird - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/core@6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)(webpack@5.75.0(@swc/core@1.3.23))': - dependencies: - '@storybook/core-client': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)(webpack@5.75.0(@swc/core@1.3.23)) - '@storybook/core-server': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - webpack: 5.75.0(@swc/core@1.3.23) - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - bluebird - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/csf-tools@6.5.16': - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/mdx1-csf': 0.0.1(@babel/core@7.26.0) - core-js: 3.26.1 - fs-extra: 9.1.0 - global: 4.4.0 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@storybook/csf@0.0.2--canary.4566f4d.1': - dependencies: - lodash: 4.17.21 - - '@storybook/docs-tools@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@babel/core': 7.26.0 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - core-js: 3.26.1 - doctrine: 3.0.0 - lodash: 4.17.21 - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - react - - react-dom - - supports-color - - '@storybook/docs-tools@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/core': 7.26.0 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.26.1 - doctrine: 3.0.0 - lodash: 4.17.21 - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - react - - react-dom - - supports-color - - '@storybook/manager-webpack4@6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) - '@babel/preset-react': 7.25.9(@babel/core@7.26.0) - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/core-client': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)(webpack@4.47.0) - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - '@storybook/node-logger': 6.5.16 - '@storybook/theming': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/ui': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@types/node': 16.18.10 - '@types/webpack': 4.41.40 - babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@4.47.0) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.26.1 - css-loader: 3.6.0(webpack@4.47.0) - express: 4.21.1 - file-loader: 6.2.0(webpack@4.47.0) - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@4.47.0) - node-fetch: 2.7.0 - pnp-webpack-plugin: 1.6.4(typescript@4.9.4) - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.11 - resolve-from: 5.0.0 - style-loader: 1.3.0(webpack@4.47.0) - telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@4.47.0) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.3.23)))(webpack@4.47.0) - util-deprecate: 1.0.2 - webpack: 4.47.0 - webpack-dev-middleware: 3.7.3(webpack@4.47.0) - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - bluebird - - encoding - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/mdx1-csf@0.0.1(@babel/core@7.26.0)': - dependencies: - '@babel/generator': 7.20.5 - '@babel/parser': 7.20.5 - '@babel/preset-env': 7.20.2(@babel/core@7.26.0) - '@babel/types': 7.20.5 - '@mdx-js/mdx': 1.6.22 - '@types/lodash': 4.14.190 - js-string-escape: 1.0.1 - loader-utils: 2.0.4 - lodash: 4.17.21 - prettier: 2.3.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color - - '@storybook/mdx1-csf@1.0.0-next.0(react@18.2.0)': - dependencies: - '@mdx-js/mdx': 1.6.22 - '@mdx-js/react': 1.6.22(react@18.2.0) - transitivePeerDependencies: - - react - - supports-color - - '@storybook/node-logger@6.5.16': - dependencies: - '@types/npmlog': 4.1.6 - chalk: 4.1.2 - core-js: 3.26.1 - npmlog: 5.0.1 - pretty-hrtime: 1.0.3 - - '@storybook/postinstall@6.5.16': - dependencies: - core-js: 3.26.1 - - '@storybook/preview-web@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - ansi-to-html: 0.6.15 - core-js: 3.26.1 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.13.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview-web@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - ansi-to-html: 0.6.15 - core-js: 3.26.1 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.13.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - - '@storybook/router@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/client-logger': 6.5.16 - core-js: 3.26.1 - memoizerific: 1.11.3 - qs: 6.13.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - - '@storybook/router@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/client-logger': 6.5.16 - core-js: 3.26.1 - memoizerific: 1.11.3 - qs: 6.13.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@storybook/semver@7.3.2': - dependencies: - core-js: 3.26.1 - find-up: 4.1.0 - - '@storybook/source-loader@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/client-logger': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.26.1 - estraverse: 5.3.0 - global: 4.4.0 - loader-utils: 2.0.4 - lodash: 4.17.21 - prettier: 2.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@storybook/store@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - slash: 3.0.0 - stable: 0.1.8 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/store@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.26.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - slash: 3.0.0 - stable: 0.1.8 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/telemetry@6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)': - dependencies: - '@storybook/client-logger': 6.5.16 - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - chalk: 4.1.2 - core-js: 3.26.1 - detect-package-manager: 2.0.1 - fetch-retry: 5.0.6 - fs-extra: 9.1.0 - global: 4.4.0 - isomorphic-unfetch: 3.1.0 - nanoid: 3.3.7 - read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - encoding - - eslint - - react - - react-dom - - supports-color - - typescript - - vue-template-compiler - - webpack-cli - - webpack-command - - '@storybook/theming@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/client-logger': 6.5.16 - core-js: 3.26.1 - memoizerific: 1.11.3 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - - '@storybook/theming@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/client-logger': 6.5.16 - core-js: 3.26.1 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@storybook/ui@6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/api': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/components': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/core-events': 6.5.16 - '@storybook/router': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/semver': 7.3.2 - '@storybook/theming': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - core-js: 3.26.1 - memoizerific: 1.11.3 - qs: 6.13.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - regenerator-runtime: 0.13.11 - resolve-from: 5.0.0 - - '@storybook/vue3@6.5.16(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@swc/core@1.3.23)(@vue/compiler-sfc@3.3.11)(babel-loader@8.4.1(@babel/core@7.26.0)(webpack@5.89.0(@swc/core@1.3.23)))(eslint@8.55.0)(typescript@4.9.4)(vue@3.2.45)': - dependencies: - '@babel/core': 7.26.0 - '@storybook/addons': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/core': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4)(webpack@5.75.0(@swc/core@1.3.23)) - '@storybook/core-common': 6.5.16(eslint@8.55.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(typescript@4.9.4) - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/docs-tools': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@storybook/store': 6.5.16(react-dom@16.14.0(react@16.14.0))(react@16.14.0) - '@types/node': 16.18.10 - '@types/webpack-env': 1.18.0 - '@vue/compiler-sfc': 3.3.11 - babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@5.89.0(@swc/core@1.3.23)) - core-js: 3.26.1 - global: 4.4.0 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - ts-loader: 8.4.0(typescript@4.9.4)(webpack@5.75.0(@swc/core@1.3.23)) - vue: 3.2.45 - vue-docgen-api: 4.56.0(vue@3.2.45) - vue-docgen-loader: 1.5.1(@babel/preset-env@7.26.0(@babel/core@7.26.0))(vue-docgen-api@4.56.0(vue@3.2.45))(webpack@5.75.0(@swc/core@1.3.23)) - vue-loader: 16.8.3(@vue/compiler-sfc@3.3.11)(vue@3.2.45)(webpack@5.75.0(@swc/core@1.3.23)) - webpack: 5.75.0(@swc/core@1.3.23) - transitivePeerDependencies: - - '@babel/preset-env' - - '@storybook/builder-webpack5' - - '@storybook/manager-webpack5' - - '@storybook/mdx2-csf' - - '@swc/core' - - bluebird - - bufferutil - - encoding - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - - '@swc/core-darwin-arm64@1.3.23': - optional: true - - '@swc/core-darwin-x64@1.3.23': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.3.23': - optional: true - - '@swc/core-linux-arm64-gnu@1.3.23': - optional: true - - '@swc/core-linux-arm64-musl@1.3.23': - optional: true - - '@swc/core-linux-x64-gnu@1.3.23': - optional: true - - '@swc/core-linux-x64-musl@1.3.23': - optional: true - - '@swc/core-win32-arm64-msvc@1.3.23': - optional: true - - '@swc/core-win32-ia32-msvc@1.3.23': - optional: true - - '@swc/core-win32-x64-msvc@1.3.23': - optional: true - - '@swc/core@1.3.23': - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.23 - '@swc/core-darwin-x64': 1.3.23 - '@swc/core-linux-arm-gnueabihf': 1.3.23 - '@swc/core-linux-arm64-gnu': 1.3.23 - '@swc/core-linux-arm64-musl': 1.3.23 - '@swc/core-linux-x64-gnu': 1.3.23 - '@swc/core-linux-x64-musl': 1.3.23 - '@swc/core-win32-arm64-msvc': 1.3.23 - '@swc/core-win32-ia32-msvc': 1.3.23 - '@swc/core-win32-x64-msvc': 1.3.23 - - '@swc/helpers@0.5.0': - dependencies: - tslib: 2.4.1 - - '@tootallnate/quickjs-emscripten@0.23.0': {} - - '@tsconfig/node10@1.0.9': - optional: true - - '@tsconfig/node12@1.0.11': - optional: true - - '@tsconfig/node14@1.0.3': - optional: true - - '@tsconfig/node16@1.0.3': - optional: true - - '@tsd/typescript@4.9.3': {} - - '@types/chai-subset@1.3.3': - dependencies: - '@types/chai': 4.3.4 - - '@types/chai@4.3.4': {} - - '@types/eslint-scope@3.7.4': - dependencies: - '@types/eslint': 8.4.10 - '@types/estree': 1.0.0 - - '@types/eslint@7.29.0': - dependencies: - '@types/estree': 1.0.0 - '@types/json-schema': 7.0.11 - - '@types/eslint@8.4.10': - dependencies: - '@types/estree': 1.0.0 - '@types/json-schema': 7.0.11 - - '@types/estree@0.0.51': {} - - '@types/estree@1.0.0': {} - - '@types/git-url-parse@9.0.1': {} - - '@types/glob@7.2.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 18.11.17 - - '@types/glob@8.1.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 16.18.10 - - '@types/graceful-fs@4.1.5': - dependencies: - '@types/node': 18.11.17 - - '@types/hast@2.3.4': - dependencies: - '@types/unist': 2.0.6 - - '@types/html-minifier-terser@5.1.2': {} - - '@types/is-function@1.0.1': {} - - '@types/istanbul-lib-coverage@2.0.4': {} - - '@types/istanbul-lib-report@3.0.0': - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - - '@types/istanbul-reports@3.0.1': - dependencies: - '@types/istanbul-lib-report': 3.0.0 - - '@types/json-schema@7.0.11': {} - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/lodash@4.14.190': {} - - '@types/mdast@3.0.10': - dependencies: - '@types/unist': 2.0.6 - - '@types/minimatch@5.1.2': {} - - '@types/minimist@1.2.2': {} - - '@types/node-fetch@2.6.11': - dependencies: - '@types/node': 16.18.10 - form-data: 4.0.1 - - '@types/node@14.18.33': - optional: true - - '@types/node@16.18.10': {} - - '@types/node@16.18.117': {} - - '@types/node@18.11.17': {} - - '@types/node@22.8.5': - dependencies: - undici-types: 6.19.8 - - '@types/normalize-package-data@2.4.1': {} - - '@types/npmlog@4.1.6': - dependencies: - '@types/node': 22.8.5 - - '@types/parse-json@4.0.0': {} - - '@types/parse-json@4.0.2': {} - - '@types/parse5@5.0.3': {} - - '@types/pretty-hrtime@1.0.3': {} - - '@types/qs@6.9.7': {} - - '@types/resolve@1.20.2': {} - - '@types/semver@7.5.6': {} - - '@types/source-list-map@0.1.6': {} - - '@types/tapable@1.0.12': {} - - '@types/uglify-js@3.17.5': - dependencies: - source-map: 0.6.1 - - '@types/unist@2.0.6': {} - - '@types/webpack-env@1.18.0': {} - - '@types/webpack-sources@3.2.3': - dependencies: - '@types/node': 16.18.10 - '@types/source-list-map': 0.1.6 - source-map: 0.7.4 - - '@types/webpack@4.41.40': - dependencies: - '@types/node': 16.18.10 - '@types/tapable': 1.0.12 - '@types/uglify-js': 3.17.5 - '@types/webpack-sources': 3.2.3 - anymatch: 3.1.3 - source-map: 0.6.1 - - '@types/yargs-parser@21.0.0': {} - - '@types/yargs@15.0.14': - dependencies: - '@types/yargs-parser': 21.0.0 - - '@types/yauzl@2.10.0': - dependencies: - '@types/node': 18.11.17 - optional: true - - '@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint@8.55.0)(typescript@4.9.4)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@4.9.4) - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/type-utils': 6.14.0(eslint@8.55.0)(typescript@4.9.4) - '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@4.9.4) - '@typescript-eslint/visitor-keys': 6.14.0 - debug: 4.3.4 - eslint: 8.55.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@4.9.4) - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4)': - dependencies: - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/typescript-estree': 6.14.0(typescript@4.9.4) - '@typescript-eslint/visitor-keys': 6.14.0 - debug: 4.3.4 - eslint: 8.55.0 - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@6.14.0': - dependencies: - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/visitor-keys': 6.14.0 - - '@typescript-eslint/type-utils@6.14.0(eslint@8.55.0)(typescript@4.9.4)': - dependencies: - '@typescript-eslint/typescript-estree': 6.14.0(typescript@4.9.4) - '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@4.9.4) - debug: 4.3.4 - eslint: 8.55.0 - ts-api-utils: 1.0.3(typescript@4.9.4) - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@6.14.0': {} - - '@typescript-eslint/typescript-estree@6.14.0(typescript@4.9.4)': - dependencies: - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/visitor-keys': 6.14.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@4.9.4) - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@6.14.0(eslint@8.55.0)(typescript@4.9.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/typescript-estree': 6.14.0(typescript@4.9.4) - eslint: 8.55.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@6.14.0': - dependencies: - '@typescript-eslint/types': 6.14.0 - eslint-visitor-keys: 3.4.3 - - '@ungap/structured-clone@1.2.0': {} - - '@vitejs/plugin-vue@4.0.0(vite@4.0.2(@types/node@18.11.17)(terser@5.36.0))(vue@3.2.45)': - dependencies: - vite: 4.0.2(@types/node@18.11.17)(terser@5.36.0) - vue: 3.2.45 - - '@vitest/coverage-c8@0.31.0(vitest@0.31.0(jsdom@23.0.1)(terser@5.36.0))': - dependencies: - '@ampproject/remapping': 2.2.0 - c8: 7.13.0 - magic-string: 0.30.0 - picocolors: 1.0.0 - std-env: 3.3.2 - vitest: 0.31.0(jsdom@23.0.1)(terser@5.36.0) - - '@vitest/expect@0.31.0': - dependencies: - '@vitest/spy': 0.31.0 - '@vitest/utils': 0.31.0 - chai: 4.3.7 - - '@vitest/runner@0.31.0': - dependencies: - '@vitest/utils': 0.31.0 - concordance: 5.0.4 - p-limit: 4.0.0 - pathe: 1.1.0 - - '@vitest/snapshot@0.31.0': - dependencies: - magic-string: 0.30.5 - pathe: 1.1.0 - pretty-format: 27.5.1 - - '@vitest/spy@0.31.0': - dependencies: - tinyspy: 2.1.0 - - '@vitest/utils@0.31.0': - dependencies: - concordance: 5.0.4 - loupe: 2.3.6 - pretty-format: 27.5.1 - - '@vue/compiler-core@3.2.45': - dependencies: - '@babel/parser': 7.20.5 - '@vue/shared': 3.2.45 - estree-walker: 2.0.2 - source-map: 0.6.1 - - '@vue/compiler-core@3.3.11': - dependencies: - '@babel/parser': 7.23.6 - '@vue/shared': 3.3.11 - estree-walker: 2.0.2 - source-map-js: 1.0.2 - - '@vue/compiler-dom@3.2.45': - dependencies: - '@vue/compiler-core': 3.2.45 - '@vue/shared': 3.2.45 - - '@vue/compiler-dom@3.3.11': - dependencies: - '@vue/compiler-core': 3.3.11 - '@vue/shared': 3.3.11 - - '@vue/compiler-sfc@3.2.45': - dependencies: - '@babel/parser': 7.20.5 - '@vue/compiler-core': 3.2.45 - '@vue/compiler-dom': 3.2.45 - '@vue/compiler-ssr': 3.2.45 - '@vue/reactivity-transform': 3.2.45 - '@vue/shared': 3.2.45 - estree-walker: 2.0.2 - magic-string: 0.25.9 - postcss: 8.4.19 - source-map: 0.6.1 - - '@vue/compiler-sfc@3.3.11': - dependencies: - '@babel/parser': 7.23.6 - '@vue/compiler-core': 3.3.11 - '@vue/compiler-dom': 3.3.11 - '@vue/compiler-ssr': 3.3.11 - '@vue/reactivity-transform': 3.3.11 - '@vue/shared': 3.3.11 - estree-walker: 2.0.2 - magic-string: 0.30.5 - postcss: 8.4.32 - source-map-js: 1.0.2 - - '@vue/compiler-ssr@3.2.45': - dependencies: - '@vue/compiler-dom': 3.2.45 - '@vue/shared': 3.2.45 - - '@vue/compiler-ssr@3.3.11': - dependencies: - '@vue/compiler-dom': 3.3.11 - '@vue/shared': 3.3.11 - - '@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@9.8.0(eslint@8.55.0))(eslint@8.55.0)(typescript@4.9.4)': - dependencies: - '@typescript-eslint/eslint-plugin': 6.14.0(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint@8.55.0)(typescript@4.9.4) - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@4.9.4) - eslint: 8.55.0 - eslint-plugin-vue: 9.8.0(eslint@8.55.0) - vue-eslint-parser: 9.3.2(eslint@8.55.0) - optionalDependencies: - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - - '@vue/reactivity-transform@3.2.45': - dependencies: - '@babel/parser': 7.20.5 - '@vue/compiler-core': 3.2.45 - '@vue/shared': 3.2.45 - estree-walker: 2.0.2 - magic-string: 0.25.9 - - '@vue/reactivity-transform@3.3.11': - dependencies: - '@babel/parser': 7.23.6 - '@vue/compiler-core': 3.3.11 - '@vue/shared': 3.3.11 - estree-walker: 2.0.2 - magic-string: 0.30.5 - - '@vue/reactivity@3.2.45': - dependencies: - '@vue/shared': 3.2.45 - - '@vue/runtime-core@3.2.45': - dependencies: - '@vue/reactivity': 3.2.45 - '@vue/shared': 3.2.45 - - '@vue/runtime-dom@3.2.45': - dependencies: - '@vue/runtime-core': 3.2.45 - '@vue/shared': 3.2.45 - csstype: 2.6.21 - - '@vue/server-renderer@3.2.45(vue@3.2.45)': - dependencies: - '@vue/compiler-ssr': 3.2.45 - '@vue/shared': 3.2.45 - vue: 3.2.45 - - '@vue/shared@3.2.45': {} - - '@vue/shared@3.3.11': {} - - '@vue/test-utils@2.2.4(vue@3.2.45)': - dependencies: - vue: 3.2.45 - - '@webassemblyjs/ast@1.11.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - - '@webassemblyjs/ast@1.11.6': - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - - '@webassemblyjs/ast@1.9.0': - dependencies: - '@webassemblyjs/helper-module-context': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/wast-parser': 1.9.0 - - '@webassemblyjs/floating-point-hex-parser@1.11.1': {} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - - '@webassemblyjs/floating-point-hex-parser@1.9.0': {} - - '@webassemblyjs/helper-api-error@1.11.1': {} - - '@webassemblyjs/helper-api-error@1.11.6': {} - - '@webassemblyjs/helper-api-error@1.9.0': {} - - '@webassemblyjs/helper-buffer@1.11.1': {} - - '@webassemblyjs/helper-buffer@1.11.6': {} - - '@webassemblyjs/helper-buffer@1.9.0': {} - - '@webassemblyjs/helper-code-frame@1.9.0': - dependencies: - '@webassemblyjs/wast-printer': 1.9.0 - - '@webassemblyjs/helper-fsm@1.9.0': {} - - '@webassemblyjs/helper-module-context@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - - '@webassemblyjs/helper-numbers@1.11.1': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-numbers@1.11.6': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.11.1': {} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - - '@webassemblyjs/helper-wasm-bytecode@1.9.0': {} - - '@webassemblyjs/helper-wasm-section@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - - '@webassemblyjs/helper-wasm-section@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - - '@webassemblyjs/helper-wasm-section@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - - '@webassemblyjs/ieee754@1.11.1': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/ieee754@1.11.6': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/ieee754@1.9.0': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.11.1': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/leb128@1.11.6': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/leb128@1.9.0': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.11.1': {} - - '@webassemblyjs/utf8@1.11.6': {} - - '@webassemblyjs/utf8@1.9.0': {} - - '@webassemblyjs/wasm-edit@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/helper-wasm-section': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-opt': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - '@webassemblyjs/wast-printer': 1.11.1 - - '@webassemblyjs/wasm-edit@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 - - '@webassemblyjs/wasm-edit@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/helper-wasm-section': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - '@webassemblyjs/wasm-opt': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - '@webassemblyjs/wast-printer': 1.9.0 - - '@webassemblyjs/wasm-gen@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 - - '@webassemblyjs/wasm-gen@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wasm-gen@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/ieee754': 1.9.0 - '@webassemblyjs/leb128': 1.9.0 - '@webassemblyjs/utf8': 1.9.0 - - '@webassemblyjs/wasm-opt@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - - '@webassemblyjs/wasm-opt@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - - '@webassemblyjs/wasm-opt@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-buffer': 1.9.0 - '@webassemblyjs/wasm-gen': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - - '@webassemblyjs/wasm-parser@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 - - '@webassemblyjs/wasm-parser@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wasm-parser@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-api-error': 1.9.0 - '@webassemblyjs/helper-wasm-bytecode': 1.9.0 - '@webassemblyjs/ieee754': 1.9.0 - '@webassemblyjs/leb128': 1.9.0 - '@webassemblyjs/utf8': 1.9.0 - - '@webassemblyjs/wast-parser@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/floating-point-hex-parser': 1.9.0 - '@webassemblyjs/helper-api-error': 1.9.0 - '@webassemblyjs/helper-code-frame': 1.9.0 - '@webassemblyjs/helper-fsm': 1.9.0 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/wast-printer@1.11.1': - dependencies: - '@webassemblyjs/ast': 1.11.1 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/wast-printer@1.11.6': - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/wast-printer@1.9.0': - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/wast-parser': 1.9.0 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn-import-assertions@1.8.0(acorn@8.8.2): - dependencies: - acorn: 8.8.2 - - acorn-import-assertions@1.9.0(acorn@8.8.2): - dependencies: - acorn: 8.8.2 - - acorn-jsx@5.3.2(acorn@8.11.2): - dependencies: - acorn: 8.11.2 - - acorn-jsx@5.3.2(acorn@8.8.2): - dependencies: - acorn: 8.8.2 - - acorn-walk@8.2.0: {} - - acorn@6.4.2: {} - - acorn@7.4.1: {} - - acorn@8.11.2: {} - - acorn@8.14.0: {} - - acorn@8.8.2: {} - - add-stream@1.0.0: {} - - address@1.2.2: {} - - agent-base@7.1.0: - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - aggregate-error@4.0.1: - dependencies: - clean-stack: 4.2.0 - indent-string: 5.0.0 - - airbnb-js-shims@2.2.1: - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - es5-shim: 4.6.7 - es6-shim: 0.35.8 - function.prototype.name: 1.1.6 - globalthis: 1.0.4 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.getownpropertydescriptors: 2.1.8 - object.values: 1.2.0 - promise.allsettled: 1.0.7 - promise.prototype.finally: 3.1.8 - string.prototype.matchall: 4.0.11 - string.prototype.padend: 3.1.6 - string.prototype.padstart: 3.1.6 - symbol.prototype.description: 1.0.6 - - ajv-errors@1.0.1(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.11.2: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-colors@3.2.4: {} - - ansi-colors@4.1.3: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-html-community@0.0.8: {} - - ansi-regex@2.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - ansi-to-html@0.6.15: - dependencies: - entities: 2.2.0 - - anymatch@2.0.0: - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - app-root-dir@1.0.2: {} - - aproba@1.2.0: {} - - aproba@2.0.0: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - arg@4.1.3: - optional: true - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - argue-cli@2.1.0: {} - - arr-diff@4.0.0: {} - - arr-flatten@1.1.0: {} - - arr-union@3.1.0: {} - - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - - array-find-index@1.0.2: - optional: true - - array-flatten@1.1.1: {} - - array-ify@1.0.0: {} - - array-includes@3.1.6: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - get-intrinsic: 1.1.3 - is-string: 1.0.7 - - array-includes@3.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - - array-union@1.0.2: - dependencies: - array-uniq: 1.0.3 - - array-union@2.1.0: {} - - array-uniq@1.0.3: {} - - array-unique@0.3.2: {} - - array.prototype.flat@1.3.1: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - es-shim-unscopables: 1.0.0 - - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.flatmap@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.map@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-array-method-boxes-properly: 1.0.0 - es-object-atoms: 1.0.0 - is-string: 1.0.7 - - array.prototype.reduce@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-array-method-boxes-properly: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - is-string: 1.0.7 - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - - arrify@1.0.1: {} - - arrify@2.0.1: {} - - asap@2.0.6: {} - - asn1.js@4.10.1: - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - assert-never@1.2.1: {} - - assert@1.5.1: - dependencies: - object.assign: 4.1.5 - util: 0.10.4 - - assertion-error@1.1.0: {} - - assign-symbols@1.0.0: {} - - ast-types@0.13.4: - dependencies: - tslib: 2.4.1 - - ast-types@0.14.2: - dependencies: - tslib: 2.4.1 - - ast-types@0.15.2: - dependencies: - tslib: 2.4.1 - - async-each@1.0.6: - optional: true - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - atob@2.1.2: {} - - autoprefixer@9.8.8: - dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001676 - normalize-range: 0.1.2 - num2fraction: 1.2.2 - picocolors: 0.2.1 - postcss: 7.0.39 - postcss-value-parser: 4.2.0 - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - b4a@1.6.4: {} - - babel-core@7.0.0-bridge.0(@babel/core@7.20.5): - dependencies: - '@babel/core': 7.20.5 - - babel-loader@8.2.5(@babel/core@7.26.0)(webpack@5.89.0(@swc/core@1.3.23)): - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.89.0(@swc/core@1.3.23) - - babel-loader@8.4.1(@babel/core@7.26.0)(webpack@4.47.0): - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 4.47.0 - - babel-loader@8.4.1(@babel/core@7.26.0)(webpack@5.89.0(@swc/core@1.3.23)): - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.89.0(@swc/core@1.3.23) - - babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@mdx-js/util': 1.6.22 - - babel-plugin-extract-import-names@1.6.22: - dependencies: - '@babel/helper-plugin-utils': 7.10.4 - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.26.0 - cosmiconfig: 7.1.0 - resolve: 1.22.8 - - babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.26.0): - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.26.0) - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.1.7(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.1.5(@babel/core@7.26.0) - core-js-compat: 3.39.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.39.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.26.0) - core-js-compat: 3.26.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - babel-walk@3.0.0-canary-5: - dependencies: - '@babel/types': 7.20.5 - - bail@1.0.5: {} - - balanced-match@1.0.2: {} - - base64-js@1.5.1: {} - - base@0.11.2: - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - - basic-ftp@5.0.3: {} - - before-after-hook@2.2.3: {} - - better-opn@2.1.1: - dependencies: - open: 7.4.2 - - big-integer@1.6.51: {} - - big-integer@1.6.52: - optional: true - - big.js@5.2.2: {} - - binary-extensions@1.13.1: - optional: true - - binary-extensions@2.2.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - optional: true - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.0 - - bluebird@3.7.2: {} - - blueimp-md5@2.19.0: {} - - bn.js@4.12.0: {} - - bn.js@5.2.1: {} - - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - boolbase@1.0.0: {} - - boxen@5.1.2: - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - - bplist-parser@0.1.1: - dependencies: - big-integer: 1.6.52 - optional: true - - bplist-parser@0.2.0: - dependencies: - big-integer: 1.6.51 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@2.3.2: - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - brorand@1.1.0: {} - - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-cipher@1.0.1: - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - - browserify-des@1.0.2: - dependencies: - cipher-base: 1.0.4 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-rsa@4.1.1: - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - browserify-sign@4.2.3: - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.6.0 - hash-base: 3.0.4 - inherits: 2.0.4 - parse-asn1: 5.1.7 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - - browserify-zlib@0.2.0: - dependencies: - pako: 1.0.11 - - browserslist@4.21.4: - dependencies: - caniuse-lite: 1.0.30001434 - electron-to-chromium: 1.4.284 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - - browserslist@4.24.2: - dependencies: - caniuse-lite: 1.0.30001676 - electron-to-chromium: 1.5.49 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.2) - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - - buffer-crc32@0.2.13: {} - - buffer-from@1.1.2: {} - - buffer-xor@1.0.3: {} - - buffer@4.9.2: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - isarray: 1.0.0 - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - builtin-modules@3.3.0: {} - - builtin-status-codes@3.0.0: {} - - builtins@5.0.1: - dependencies: - semver: 7.5.1 - - bundle-name@3.0.0: - dependencies: - run-applescript: 5.0.0 - - bytes-iec@3.1.1: {} - - bytes@3.0.0: {} - - bytes@3.1.2: {} - - c8@7.13.0: - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.5 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.0.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - - cac@6.7.14: {} - - cacache@12.0.4: - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - figgy-pudding: 3.5.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - infer-owner: 1.0.4 - lru-cache: 5.1.1 - mississippi: 3.0.0 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 6.0.2 - unique-filename: 1.1.1 - y18n: 4.0.3 - - cacache@15.3.0: - dependencies: - '@npmcli/fs': 1.1.1 - '@npmcli/move-file': 1.1.2 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 7.2.3 - infer-owner: 1.0.4 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.2.1 - unique-filename: 1.1.1 - transitivePeerDependencies: - - bluebird - - cache-base@1.0.1: - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - - cachedir@2.3.0: {} - - call-bind@1.0.2: - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.3 - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - call-me-maybe@1.0.2: {} - - callsites@3.1.0: {} - - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.8.0 - - camelcase-css@2.0.1: {} - - camelcase-keys@2.1.0: - dependencies: - camelcase: 2.1.1 - map-obj: 1.0.1 - optional: true - - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - camelcase-keys@7.0.2: - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - - camelcase@2.1.1: - optional: true - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - - caniuse-lite@1.0.30001434: {} - - caniuse-lite@1.0.30001676: {} - - capture-exit@2.0.0: - dependencies: - rsvp: 4.8.5 - - case-sensitive-paths-webpack-plugin@2.4.0: {} - - ccount@1.1.0: {} - - chai@4.3.7: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - character-entities-legacy@1.1.4: {} - - character-entities@1.2.4: {} - - character-parser@2.2.0: - dependencies: - is-regex: 1.1.4 - - character-reference-invalid@1.1.4: {} - - chardet@0.7.0: {} - - chart.js@4.4.1: - dependencies: - '@kurkle/color': 0.3.1 - - check-error@1.0.2: {} - - chokidar@2.1.8: - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 2.3.2 - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - optional: true - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chownr@1.1.4: {} - - chownr@2.0.0: {} - - chrome-trace-event@1.0.3: {} - - chrome-trace-event@1.0.4: {} - - chromium-bidi@0.5.1(devtools-protocol@0.0.1203626): - dependencies: - devtools-protocol: 0.0.1203626 - mitt: 3.0.1 - urlpattern-polyfill: 9.0.0 - - ci-info@2.0.0: {} - - cipher-base@1.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - class-utils@0.3.6: - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - - clean-css@4.2.4: - dependencies: - source-map: 0.6.1 - - clean-publish@4.0.1: - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.2.12 - lilconfig: 2.0.6 - micromatch: 4.0.5 - - clean-stack@2.2.0: {} - - clean-stack@4.2.0: - dependencies: - escape-string-regexp: 5.0.0 - - cli-boxes@2.2.1: {} - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-spinners@2.7.0: {} - - cli-table3@0.6.5: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - - cli-width@3.0.0: {} - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - - clone@1.0.4: {} - - clone@2.1.2: {} - - collapse-white-space@1.0.6: {} - - collection-visit@1.0.0: - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-support@1.1.3: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - comma-separated-tokens@1.0.8: {} - - commander@11.1.0: {} - - commander@2.20.3: {} - - commander@4.1.1: {} - - commander@6.2.1: {} - - commitizen@4.2.5(@swc/core@1.3.23): - dependencies: - cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@swc/core@1.3.23) - dedent: 0.7.0 - detect-indent: 6.1.0 - find-node-modules: 2.1.3 - find-root: 1.1.0 - fs-extra: 9.1.0 - glob: 7.2.3 - inquirer: 8.2.4 - is-utf8: 0.2.1 - lodash: 4.17.21 - minimist: 1.2.6 - strip-bom: 4.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - commondir@1.0.1: {} - - compare-func@2.0.0: - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - - component-emitter@1.3.0: {} - - compressible@2.0.18: - dependencies: - mime-db: 1.53.0 - - compression@1.7.4: - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - concat-map@0.0.1: {} - - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.0 - typedarray: 0.0.6 - - concordance@5.0.4: - dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.2.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.5.1 - well-known-symbols: 2.0.0 - - console-browserify@1.2.0: {} - - console-control-strings@1.1.0: {} - - constantinople@4.0.1: - dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - - constants-browserify@1.0.0: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - conventional-changelog-angular@5.0.13: - dependencies: - compare-func: 2.0.0 - q: 1.5.1 - - conventional-changelog-angular@7.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-atom@2.0.8: - dependencies: - q: 1.5.1 - - conventional-changelog-codemirror@2.0.8: - dependencies: - q: 1.5.1 - - conventional-changelog-config-spec@2.1.0: {} - - conventional-changelog-conventionalcommits@4.6.3: - dependencies: - compare-func: 2.0.0 - lodash: 4.17.21 - q: 1.5.1 - - conventional-changelog-conventionalcommits@7.0.2: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-core@4.2.4: - dependencies: - add-stream: 1.0.0 - conventional-changelog-writer: 5.0.1 - conventional-commits-parser: 3.2.4 - dateformat: 3.0.3 - get-pkg-repo: 4.2.1 - git-raw-commits: 2.0.11 - git-remote-origin-url: 2.0.0 - git-semver-tags: 4.1.1 - lodash: 4.17.21 - normalize-package-data: 3.0.3 - q: 1.5.1 - read-pkg: 3.0.0 - read-pkg-up: 3.0.0 - through2: 4.0.2 - - conventional-changelog-ember@2.0.9: - dependencies: - q: 1.5.1 - - conventional-changelog-eslint@3.0.9: - dependencies: - q: 1.5.1 - - conventional-changelog-express@2.0.6: - dependencies: - q: 1.5.1 - - conventional-changelog-jquery@3.0.11: - dependencies: - q: 1.5.1 - - conventional-changelog-jshint@2.0.9: - dependencies: - compare-func: 2.0.0 - q: 1.5.1 - - conventional-changelog-preset-loader@2.3.4: {} - - conventional-changelog-writer@5.0.1: - dependencies: - conventional-commits-filter: 2.0.7 - dateformat: 3.0.3 - handlebars: 4.7.7 - json-stringify-safe: 5.0.1 - lodash: 4.17.21 - meow: 8.1.2 - semver: 6.3.0 - split: 1.0.1 - through2: 4.0.2 - - conventional-changelog@3.1.25: - dependencies: - conventional-changelog-angular: 5.0.13 - conventional-changelog-atom: 2.0.8 - conventional-changelog-codemirror: 2.0.8 - conventional-changelog-conventionalcommits: 4.6.3 - conventional-changelog-core: 4.2.4 - conventional-changelog-ember: 2.0.9 - conventional-changelog-eslint: 3.0.9 - conventional-changelog-express: 2.0.6 - conventional-changelog-jquery: 3.0.11 - conventional-changelog-jshint: 2.0.9 - conventional-changelog-preset-loader: 2.3.4 - - conventional-commit-types@3.0.0: {} - - conventional-commits-filter@2.0.7: - dependencies: - lodash.ismatch: 4.4.0 - modify-values: 1.0.1 - - conventional-commits-parser@3.2.4: - dependencies: - JSONStream: 1.3.5 - is-text-path: 1.0.1 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - - conventional-commits-parser@5.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 - - conventional-recommended-bump@6.1.0: - dependencies: - concat-stream: 2.0.0 - conventional-changelog-preset-loader: 2.3.4 - conventional-commits-filter: 2.0.7 - conventional-commits-parser: 3.2.4 - git-raw-commits: 2.0.11 - git-semver-tags: 4.1.1 - meow: 8.1.2 - q: 1.5.1 - - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - cookie-signature@1.0.6: {} - - cookie@0.7.1: {} - - copy-concurrently@1.0.5: - dependencies: - aproba: 1.2.0 - fs-write-stream-atomic: 1.0.10 - iferr: 0.1.5 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - - copy-descriptor@0.1.1: {} - - core-js-compat@3.26.1: - dependencies: - browserslist: 4.21.4 - - core-js-compat@3.39.0: - dependencies: - browserslist: 4.24.2 - - core-js@3.26.1: {} - - core-util-is@1.0.3: {} - - cosmiconfig-typescript-loader@4.2.0(@types/node@14.18.33)(cosmiconfig@7.1.0)(ts-node@10.9.1(@swc/core@1.3.23)(@types/node@18.11.17)(typescript@4.9.4))(typescript@4.9.4): - dependencies: - '@types/node': 14.18.33 - cosmiconfig: 7.1.0 - ts-node: 10.9.1(@swc/core@1.3.23)(@types/node@18.11.17)(typescript@4.9.4) - typescript: 4.9.4 - optional: true - - cosmiconfig-typescript-loader@5.0.0(@types/node@18.11.17)(cosmiconfig@8.3.6(typescript@4.9.4))(typescript@4.9.4): - dependencies: - '@types/node': 18.11.17 - cosmiconfig: 8.3.6(typescript@4.9.4) - jiti: 1.21.0 - typescript: 4.9.4 - - cosmiconfig@6.0.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@8.3.6(typescript@4.9.4): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 4.9.4 - - cp-file@7.0.0: - dependencies: - graceful-fs: 4.2.11 - make-dir: 3.1.0 - nested-error-stacks: 2.1.1 - p-event: 4.2.0 - - cpy@8.1.2: - dependencies: - arrify: 2.0.1 - cp-file: 7.0.0 - globby: 9.2.0 - has-glob: 1.0.0 - junk: 3.1.0 - nested-error-stacks: 2.1.1 - p-all: 2.1.0 - p-filter: 2.1.0 - p-map: 3.0.0 - transitivePeerDependencies: - - supports-color - - create-ecdh@4.0.4: - dependencies: - bn.js: 4.12.0 - elliptic: 6.6.0 - - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - create-require@1.1.1: - optional: true - - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.3 - - cross-fetch@4.0.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - cross-spawn@6.0.5: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypto-browserify@3.12.1: - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.3 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - hash-base: 3.0.4 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - - css-loader@3.6.0(webpack@4.47.0): - dependencies: - camelcase: 5.3.1 - cssesc: 3.0.0 - icss-utils: 4.1.1 - loader-utils: 1.4.2 - normalize-path: 3.0.0 - postcss: 7.0.39 - postcss-modules-extract-imports: 2.0.0 - postcss-modules-local-by-default: 3.0.3 - postcss-modules-scope: 2.2.0 - postcss-modules-values: 3.0.0 - postcss-value-parser: 4.2.0 - schema-utils: 2.7.1 - semver: 6.3.1 - webpack: 4.47.0 - - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-what@6.1.0: {} - - cssesc@3.0.0: {} - - cssfontparser@1.2.1: {} - - cssstyle@3.0.0: - dependencies: - rrweb-cssom: 0.6.0 - - csstype@2.6.21: {} - - currently-unhandled@0.4.1: - dependencies: - array-find-index: 1.0.2 - optional: true - - cyclist@1.0.2: {} - - cz-conventional-changelog@3.3.0(@swc/core@1.3.23): - dependencies: - chalk: 2.4.2 - commitizen: 4.2.5(@swc/core@1.3.23) - conventional-commit-types: 3.0.0 - lodash.map: 4.6.0 - longest: 2.0.1 - word-wrap: 1.2.3 - optionalDependencies: - '@commitlint/load': 17.3.0(@swc/core@1.3.23) - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - dargs@7.0.0: {} - - data-uri-to-buffer@6.0.1: {} - - data-urls@5.0.0: - dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 - - data-view-buffer@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - data-view-byte-offset@1.0.0: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - - date-time@3.1.0: - dependencies: - time-zone: 1.0.0 - - dateformat@3.0.3: {} - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - - decamelize@5.0.1: {} - - decimal.js@10.4.3: {} - - decode-uri-component@0.2.0: {} - - dedent@0.7.0: {} - - deep-eql@4.1.3: - dependencies: - type-detect: 4.0.8 - - deep-is@0.1.4: {} - - deepmerge@4.2.2: {} - - deepmerge@4.3.1: {} - - default-browser-id@1.0.4: - dependencies: - bplist-parser: 0.1.1 - meow: 3.7.0 - untildify: 2.1.0 - optional: true - - default-browser-id@3.0.0: - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - - default-browser@4.0.0: - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-lazy-prop@2.0.0: {} - - define-lazy-prop@3.0.0: {} - - define-properties@1.1.4: - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - define-property@0.2.5: - dependencies: - is-descriptor: 0.1.6 - - define-property@1.0.0: - dependencies: - is-descriptor: 1.0.2 - - define-property@2.0.2: - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - - del-cli@5.0.0: - dependencies: - del: 7.0.0 - meow: 10.1.5 - - del@7.0.0: - dependencies: - globby: 13.1.2 - graceful-fs: 4.2.10 - is-glob: 4.0.3 - is-path-cwd: 3.0.0 - is-path-inside: 4.0.0 - p-map: 5.5.0 - rimraf: 3.0.2 - slash: 4.0.0 - - delayed-stream@1.0.0: {} - - delegates@1.0.0: {} - - depd@2.0.0: {} - - deprecation@2.3.1: {} - - des.js@1.1.0: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - destroy@1.2.0: {} - - detab@2.0.4: - dependencies: - repeat-string: 1.6.1 - - detect-file@1.0.0: {} - - detect-indent@6.1.0: {} - - detect-newline@3.1.0: {} - - detect-package-manager@2.0.1: - dependencies: - execa: 5.1.1 - - detect-port@1.6.1: - dependencies: - address: 1.2.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - devtools-protocol@0.0.1203626: {} - - diff@4.0.2: - optional: true - - diffie-hellman@5.0.3: - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - - dir-glob@2.2.2: - dependencies: - path-type: 3.0.0 - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - doctypes@1.1.0: {} - - dom-converter@0.2.0: - dependencies: - utila: 0.4.0 - - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - - dom-walk@0.1.2: {} - - domain-browser@1.2.0: {} - - domelementtype@2.3.0: {} - - domhandler@3.3.0: - dependencies: - domelementtype: 2.3.0 - - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 - - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.0 - - dot-prop@5.3.0: - dependencies: - is-obj: 2.0.0 - - dotenv-expand@5.1.0: {} - - dotenv@8.6.0: {} - - dotgitignore@2.1.0: - dependencies: - find-up: 3.0.0 - minimatch: 3.1.2 - - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - - ee-first@1.1.1: {} - - electron-to-chromium@1.4.284: {} - - electron-to-chromium@1.5.49: {} - - elliptic@6.6.0: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - emoji-regex@8.0.0: {} - - emojis-list@3.0.0: {} - - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - enhanced-resolve@4.5.0: - dependencies: - graceful-fs: 4.2.10 - memory-fs: 0.5.0 - tapable: 1.1.3 - - enhanced-resolve@5.12.0: - dependencies: - graceful-fs: 4.2.10 - tapable: 2.2.1 - - enhanced-resolve@5.15.0: - dependencies: - graceful-fs: 4.2.10 - tapable: 2.2.1 - - enquirer@2.3.6: - dependencies: - ansi-colors: 4.1.3 - - entities@2.2.0: {} - - entities@4.4.0: {} - - errno@0.1.8: - dependencies: - prr: 1.0.1 - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es-abstract@1.20.4: - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.2 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - unbox-primitive: 1.0.2 - - es-abstract@1.23.3: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - - es-array-method-boxes-properly@1.0.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - - es-module-lexer@0.9.3: {} - - es-module-lexer@1.4.1: {} - - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.0.0: - dependencies: - has: 1.0.3 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - es5-shim@4.6.7: {} - - es6-shim@0.35.8: {} - - esbuild@0.16.9: - optionalDependencies: - '@esbuild/android-arm': 0.16.9 - '@esbuild/android-arm64': 0.16.9 - '@esbuild/android-x64': 0.16.9 - '@esbuild/darwin-arm64': 0.16.9 - '@esbuild/darwin-x64': 0.16.9 - '@esbuild/freebsd-arm64': 0.16.9 - '@esbuild/freebsd-x64': 0.16.9 - '@esbuild/linux-arm': 0.16.9 - '@esbuild/linux-arm64': 0.16.9 - '@esbuild/linux-ia32': 0.16.9 - '@esbuild/linux-loong64': 0.16.9 - '@esbuild/linux-mips64el': 0.16.9 - '@esbuild/linux-ppc64': 0.16.9 - '@esbuild/linux-riscv64': 0.16.9 - '@esbuild/linux-s390x': 0.16.9 - '@esbuild/linux-x64': 0.16.9 - '@esbuild/netbsd-x64': 0.16.9 - '@esbuild/openbsd-x64': 0.16.9 - '@esbuild/sunos-x64': 0.16.9 - '@esbuild/win32-arm64': 0.16.9 - '@esbuild/win32-ia32': 0.16.9 - '@esbuild/win32-x64': 0.16.9 - - escalade@3.1.1: {} - - escalade@3.2.0: {} - - escape-html@1.0.3: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-config-prettier@9.1.0(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - - eslint-config-standard@17.0.0(eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint@8.55.0))(eslint-plugin-n@16.0.0(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - eslint-plugin-import: 2.26.0(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint@8.55.0) - eslint-plugin-n: 16.0.0(eslint@8.55.0) - eslint-plugin-promise: 6.1.1(eslint@8.55.0) - - eslint-formatter-pretty@4.1.0: - dependencies: - '@types/eslint': 7.29.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - eslint-rule-docs: 1.1.235 - log-symbols: 4.1.0 - plur: 4.0.0 - string-width: 4.2.3 - supports-hyperlinks: 2.3.0 - - eslint-import-resolver-node@0.3.6: - dependencies: - debug: 3.2.7 - resolve: 1.22.2 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.7.4(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.6)(eslint@8.55.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@4.9.4) - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.6 - transitivePeerDependencies: - - supports-color - - eslint-plugin-es-x@6.1.0(eslint@8.55.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.5.1 - eslint: 8.55.0 - - eslint-plugin-es@3.0.1(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - - eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint@8.55.0): - dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - debug: 2.6.9 - doctrine: 2.1.0 - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.6)(eslint@8.55.0) - has: 1.0.3 - is-core-module: 2.11.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.1 - tsconfig-paths: 3.14.1 - optionalDependencies: - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@4.9.4) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-n@16.0.0(eslint@8.55.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - builtins: 5.0.1 - eslint: 8.55.0 - eslint-plugin-es-x: 6.1.0(eslint@8.55.0) - ignore: 5.2.1 - is-core-module: 2.12.1 - minimatch: 3.1.2 - resolve: 1.22.2 - semver: 7.5.1 - - eslint-plugin-node@11.1.0(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - eslint-plugin-es: 3.0.1(eslint@8.55.0) - eslint-utils: 2.1.0 - ignore: 5.2.1 - minimatch: 3.1.2 - resolve: 1.22.1 - semver: 6.3.0 - - eslint-plugin-prettier-vue@5.0.0: - dependencies: - '@vue/compiler-sfc': 3.3.11 - picocolors: 1.0.0 - prettier: 3.1.1 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.6 - - eslint-plugin-prettier@4.2.1(eslint-config-prettier@9.1.0(eslint@8.55.0))(eslint@8.55.0)(prettier@2.8.8): - dependencies: - eslint: 8.55.0 - prettier: 2.8.8 - prettier-linter-helpers: 1.0.0 - optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@8.55.0) - - eslint-plugin-promise@6.1.1(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - - eslint-plugin-vue@9.8.0(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - eslint-utils: 3.0.0(eslint@8.55.0) - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 6.0.11 - semver: 7.3.8 - vue-eslint-parser: 9.1.0(eslint@8.55.0) - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - supports-color - - eslint-rule-docs@1.1.235: {} - - eslint-scope@4.0.3: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@7.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@7.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-utils@3.0.0(eslint@8.4.1): - dependencies: - eslint: 8.4.1 - eslint-visitor-keys: 2.1.0 - - eslint-utils@3.0.0(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - eslint-visitor-keys: 2.1.0 - - eslint-visitor-keys@1.3.0: {} - - eslint-visitor-keys@2.1.0: {} - - eslint-visitor-keys@3.4.1: {} - - eslint-visitor-keys@3.4.3: {} - - eslint@8.4.1: - dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.9.5 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - enquirer: 2.3.6 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-utils: 3.0.0(eslint@8.4.1) - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 6.0.2 - globals: 13.19.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.5.1 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color - - eslint@8.55.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.19.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - espree@9.2.0: - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.1 - - espree@9.4.1: - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.1 - - espree@9.5.2: - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.1 - - espree@9.6.1: - dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - eslint-visitor-keys: 3.4.3 - - esprima@4.0.1: {} - - esquery@1.4.0: - dependencies: - estraverse: 5.3.0 - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estimo@3.0.1: - dependencies: - '@sitespeed.io/tracium': 0.3.3 - commander: 11.1.0 - find-chrome-bin: 2.0.1 - nanoid: 5.0.4 - puppeteer-core: 21.6.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-to-babel@3.2.1: - dependencies: - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - c8: 7.13.0 - transitivePeerDependencies: - - supports-color - - estree-walker@2.0.2: {} - - esutils@2.0.3: {} - - etag@1.8.1: {} - - events@3.3.0: {} - - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - - exec-sh@0.3.6: {} - - execa@1.0.0: - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@7.2.0: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - - expand-brackets@2.1.4: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - - express@4.21.1: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend-shallow@3.0.2: - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - - extend@3.0.2: {} - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - extglob@2.0.4: - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - extract-zip@2.0.1: - dependencies: - debug: 4.3.4 - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.0 - transitivePeerDependencies: - - supports-color - - fast-deep-equal@3.1.3: {} - - fast-diff@1.2.0: {} - - fast-fifo@1.3.2: {} - - fast-glob@2.2.7: - dependencies: - '@mrmlnc/readdir-enhanced': 2.2.1 - '@nodelib/fs.stat': 1.1.3 - glob-parent: 3.1.0 - is-glob: 4.0.3 - merge2: 1.4.1 - micromatch: 3.1.10 - transitivePeerDependencies: - - supports-color - - fast-glob@3.2.12: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.13.0: - dependencies: - reusify: 1.0.4 - - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - - fetch-retry@5.0.6: {} - - figgy-pudding@3.5.2: {} - - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.0.4 - - file-loader@6.2.0(webpack@4.47.0): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 4.47.0 - - file-system-cache@1.1.0: - dependencies: - fs-extra: 10.1.0 - ramda: 0.28.0 - - file-uri-to-path@1.0.0: - optional: true - - fill-range@4.0.0: - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - filter-obj@1.1.0: {} - - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - find-cache-dir@2.1.0: - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - - find-cache-dir@3.3.2: - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - - find-chrome-bin@2.0.1: - dependencies: - '@puppeteer/browsers': 1.9.0 - transitivePeerDependencies: - - supports-color - - find-node-modules@2.1.3: - dependencies: - findup-sync: 4.0.0 - merge: 2.1.1 - - find-root@1.1.0: {} - - find-up@1.1.2: - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - optional: true - - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - findup-sync@4.0.0: - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.5 - resolve-dir: 1.0.1 - - flat-cache@3.0.4: - dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - - flatted@3.2.7: {} - - flow-parser@0.196.0: {} - - flush-write-stream@1.1.1: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - for-in@1.0.2: {} - - foreground-child@2.0.0: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - - fork-ts-checker-webpack-plugin@4.1.6(eslint@8.55.0)(typescript@4.9.4)(webpack@4.47.0): - dependencies: - '@babel/code-frame': 7.26.2 - chalk: 2.4.2 - micromatch: 3.1.10 - minimatch: 3.1.2 - semver: 5.7.2 - tapable: 1.1.3 - typescript: 4.9.4 - webpack: 4.47.0 - worker-rpc: 0.1.1 - optionalDependencies: - eslint: 8.55.0 - transitivePeerDependencies: - - supports-color - - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.55.0)(typescript@4.9.4)(webpack@4.47.0): - dependencies: - '@babel/code-frame': 7.26.2 - '@types/json-schema': 7.0.15 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 6.0.0 - deepmerge: 4.3.1 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.5.3 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.6.3 - tapable: 1.1.3 - typescript: 4.9.4 - webpack: 4.47.0 - optionalDependencies: - eslint: 8.55.0 - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@4.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - forwarded@0.2.0: {} - - fragment-cache@0.2.1: - dependencies: - map-cache: 0.2.2 - - fresh@0.5.2: {} - - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-monkey@1.0.6: {} - - fs-write-stream-atomic@1.0.10: - dependencies: - graceful-fs: 4.2.11 - iferr: 0.1.5 - imurmurhash: 0.1.4 - readable-stream: 2.3.8 - - fs.realpath@1.0.0: {} - - fsevents@1.2.13: - dependencies: - bindings: 1.5.0 - nan: 2.22.0 - optional: true - - fsevents@2.3.2: - optional: true - - fsevents@2.3.3: - optional: true - - function-bind@1.1.1: {} - - function-bind@1.1.2: {} - - function.prototype.name@1.1.5: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - functions-have-names: 1.2.3 - - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - - functional-red-black-tree@1.0.1: {} - - functions-have-names@1.2.3: {} - - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gensync@1.0.0-beta.2: {} - - get-caller-file@2.0.5: {} - - get-func-name@2.0.0: {} - - get-intrinsic@1.1.3: - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - get-package-type@0.1.0: {} - - get-pkg-repo@4.2.1: - dependencies: - '@hutson/parse-repository-url': 3.0.2 - hosted-git-info: 4.1.0 - through2: 2.0.5 - yargs: 16.2.0 - - get-stdin@4.0.1: - optional: true - - get-stream@4.1.0: - dependencies: - pump: 3.0.0 - - get-stream@5.2.0: - dependencies: - pump: 3.0.0 - - get-stream@6.0.1: {} - - get-symbol-description@1.0.0: - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - - get-tsconfig@4.7.2: - dependencies: - resolve-pkg-maps: 1.0.0 - - get-uri@6.0.2: - dependencies: - basic-ftp: 5.0.3 - data-uri-to-buffer: 6.0.1 - debug: 4.3.4 - fs-extra: 8.1.0 - transitivePeerDependencies: - - supports-color - - get-value@2.0.6: {} - - git-raw-commits@2.0.11: - dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - - git-remote-origin-url@2.0.0: - dependencies: - gitconfiglocal: 1.0.0 - pify: 2.3.0 - - git-semver-tags@4.1.1: - dependencies: - meow: 8.1.2 - semver: 6.3.0 - - git-up@4.0.5: - dependencies: - is-ssh: 1.4.0 - parse-url: 6.0.5 - - git-url-parse@11.6.0: - dependencies: - git-up: 4.0.5 - - gitconfiglocal@1.0.0: - dependencies: - ini: 1.3.8 - - github-slugger@1.5.0: {} - - glob-parent@3.1.0: - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-promise@3.4.0(glob@7.2.3): - dependencies: - '@types/glob': 8.1.0 - glob: 7.2.3 - - glob-promise@4.2.2(glob@7.2.3): - dependencies: - '@types/glob': 7.2.0 - glob: 7.2.3 - - glob-to-regexp@0.3.0: {} - - glob-to-regexp@0.4.1: {} - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - global-dirs@0.1.1: - dependencies: - ini: 1.3.8 - - global-modules@1.0.0: - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - - global-prefix@1.0.2: - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - - global@4.4.0: - dependencies: - min-document: 2.19.0 - process: 0.11.10 - - globals@11.12.0: {} - - globals@13.19.0: - dependencies: - type-fest: 0.20.2 - - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.0.1 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.2.1 - merge2: 1.4.1 - slash: 3.0.0 - - globby@13.1.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 4.0.0 - - globby@14.0.0: - dependencies: - '@sindresorhus/merge-streams': 1.0.0 - fast-glob: 3.3.2 - ignore: 5.3.0 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - - globby@9.2.0: - dependencies: - '@types/glob': 7.2.0 - array-union: 1.0.2 - dir-glob: 2.2.2 - fast-glob: 2.2.7 - glob: 7.2.3 - ignore: 4.0.6 - pify: 4.0.1 - slash: 2.0.0 - transitivePeerDependencies: - - supports-color - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - graceful-fs@4.2.10: {} - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - handlebars@4.7.7: - dependencies: - minimist: 1.2.7 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - - handlebars@4.7.8: - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.19.3 - - hard-rejection@2.1.0: {} - - has-bigints@1.0.2: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-glob@1.0.0: - dependencies: - is-glob: 3.1.0 - - has-property-descriptors@1.0.0: - dependencies: - get-intrinsic: 1.1.3 - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.0: - dependencies: - has-symbols: 1.0.3 - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - has-unicode@2.0.1: {} - - has-value@0.3.1: - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - - has-value@1.0.0: - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - - has-values@0.1.4: {} - - has-values@1.0.0: - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - - has@1.0.3: - dependencies: - function-bind: 1.1.1 - - hash-base@3.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - hash-sum@1.0.2: {} - - hash-sum@2.0.0: {} - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-to-hyperscript@9.0.1: - dependencies: - '@types/unist': 2.0.6 - comma-separated-tokens: 1.0.8 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - style-to-object: 0.3.0 - unist-util-is: 4.1.0 - web-namespaces: 1.1.4 - - hast-util-from-parse5@6.0.1: - dependencies: - '@types/parse5': 5.0.3 - hastscript: 6.0.0 - property-information: 5.6.0 - vfile: 4.2.1 - vfile-location: 3.2.0 - web-namespaces: 1.1.4 - - hast-util-parse-selector@2.2.5: {} - - hast-util-raw@6.0.1: - dependencies: - '@types/hast': 2.3.4 - hast-util-from-parse5: 6.0.1 - hast-util-to-parse5: 6.0.0 - html-void-elements: 1.0.5 - parse5: 6.0.1 - unist-util-position: 3.1.0 - vfile: 4.2.1 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - - hast-util-to-parse5@6.0.0: - dependencies: - hast-to-hyperscript: 9.0.1 - property-information: 5.6.0 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - - hastscript@6.0.0: - dependencies: - '@types/hast': 2.3.4 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - - he@1.2.0: {} - - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - - hosted-git-info@2.8.9: {} - - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - html-encoding-sniffer@4.0.0: - dependencies: - whatwg-encoding: 3.1.1 - - html-entities@2.5.2: {} - - html-escaper@2.0.2: {} - - html-minifier-terser@5.1.1: - dependencies: - camel-case: 4.1.2 - clean-css: 4.2.4 - commander: 4.1.1 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 4.8.1 - - html-void-elements@1.0.5: {} - - html-webpack-plugin@4.5.2(webpack@4.47.0): - dependencies: - '@types/html-minifier-terser': 5.1.2 - '@types/tapable': 1.0.12 - '@types/webpack': 4.41.40 - html-minifier-terser: 5.1.1 - loader-utils: 1.4.2 - lodash: 4.17.21 - pretty-error: 2.1.2 - tapable: 1.1.3 - util.promisify: 1.0.0 - webpack: 4.47.0 - - htmlparser2-svelte@4.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 3.3.0 - domutils: 2.8.0 - entities: 2.2.0 - - htmlparser2@6.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-proxy-agent@7.0.0: - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - https-browserify@1.0.0: {} - - https-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - human-signals@2.1.0: {} - - human-signals@4.3.1: {} - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - - icss-utils@4.1.1: - dependencies: - postcss: 7.0.39 - - ieee754@1.2.1: {} - - iferr@0.1.5: {} - - ignore@4.0.6: {} - - ignore@5.2.1: {} - - ignore@5.3.0: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - indent-string@2.1.0: - dependencies: - repeating: 2.0.1 - optional: true - - indent-string@4.0.0: {} - - indent-string@5.0.0: {} - - infer-owner@1.0.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.3: {} - - inherits@2.0.4: {} - - ini@1.3.8: {} - - inline-style-parser@0.1.1: {} - - inquirer@8.2.4: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.5.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - - internal-slot@1.0.3: - dependencies: - get-intrinsic: 1.1.3 - has: 1.0.3 - side-channel: 1.0.4 - - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - - interpret@2.2.0: {} - - ip@1.1.8: {} - - ip@2.0.0: {} - - ip@2.0.1: {} - - ipaddr.js@1.9.1: {} - - irregular-plurals@3.3.0: {} - - is-absolute-url@3.0.3: {} - - is-accessor-descriptor@0.1.6: - dependencies: - kind-of: 3.2.2 - - is-accessor-descriptor@1.0.0: - dependencies: - kind-of: 6.0.3 - - is-alphabetical@1.0.4: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - - is-arrayish@0.2.1: {} - - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - - is-binary-path@1.0.1: - dependencies: - binary-extensions: 1.13.1 - optional: true - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 - - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - - is-buffer@1.1.6: {} - - is-buffer@2.0.5: {} - - is-builtin-module@3.2.0: - dependencies: - builtin-modules: 3.3.0 - - is-callable@1.2.7: {} - - is-ci@2.0.0: - dependencies: - ci-info: 2.0.0 - - is-core-module@2.11.0: - dependencies: - has: 1.0.3 - - is-core-module@2.12.1: - dependencies: - has: 1.0.3 - - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 - - is-data-descriptor@0.1.4: - dependencies: - kind-of: 3.2.2 - - is-data-descriptor@1.0.0: - dependencies: - kind-of: 6.0.3 - - is-data-view@1.0.1: - dependencies: - is-typed-array: 1.1.13 - - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.0 - - is-decimal@1.0.4: {} - - is-descriptor@0.1.6: - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - - is-descriptor@1.0.2: - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - - is-docker@2.2.1: {} - - is-docker@3.0.0: {} - - is-dom@1.1.0: - dependencies: - is-object: 1.0.2 - is-window: 1.0.2 - - is-expression@4.0.0: - dependencies: - acorn: 7.4.1 - object-assign: 4.1.1 - - is-extendable@0.1.1: {} - - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 - - is-extglob@2.1.1: {} - - is-finite@1.1.0: - optional: true - - is-fullwidth-code-point@3.0.0: {} - - is-function@1.0.2: {} - - is-glob@3.1.0: - dependencies: - is-extglob: 2.1.1 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hexadecimal@1.0.4: {} - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - - is-interactive@1.0.0: {} - - is-map@2.0.3: {} - - is-module@1.0.0: {} - - is-negative-zero@2.0.2: {} - - is-negative-zero@2.0.3: {} - - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.0 - - is-number@3.0.0: - dependencies: - kind-of: 3.2.2 - - is-number@7.0.0: {} - - is-obj@2.0.0: {} - - is-object@1.0.2: {} - - is-path-cwd@3.0.0: {} - - is-path-inside@3.0.3: {} - - is-path-inside@4.0.0: {} - - is-plain-obj@1.1.0: {} - - is-plain-obj@2.1.0: {} - - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - - is-plain-object@5.0.0: {} - - is-potential-custom-element-name@1.0.1: {} - - is-promise@2.2.2: {} - - is-regex@1.1.4: - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.2 - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - - is-ssh@1.4.0: - dependencies: - protocols: 2.0.1 - - is-stream@1.1.0: {} - - is-stream@2.0.1: {} - - is-stream@3.0.0: {} - - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.0 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - - is-text-path@1.0.1: - dependencies: - text-extensions: 1.9.0 - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-typedarray@1.0.0: {} - - is-unicode-supported@0.1.0: {} - - is-utf8@0.2.1: {} - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.2 - - is-whitespace-character@1.0.4: {} - - is-window@1.0.2: {} - - is-windows@1.0.2: {} - - is-word-character@1.0.4: {} - - is-wsl@1.1.0: {} - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - isarray@1.0.0: {} - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - isobject@2.1.0: - dependencies: - isarray: 1.0.0 - - isobject@3.0.1: {} - - isobject@4.0.0: {} - - isomorphic-unfetch@3.1.0: - dependencies: - node-fetch: 2.7.0 - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding - - istanbul-lib-coverage@3.2.0: {} - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.20.5 - '@babel/parser': 7.20.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@3.0.0: - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - - istanbul-reports@3.1.5: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - - iterate-iterator@1.0.2: {} - - iterate-value@1.0.2: - dependencies: - es-get-iterator: 1.1.3 - iterate-iterator: 1.0.2 - - jest-canvas-mock@2.5.2: - dependencies: - cssfontparser: 1.2.1 - moo-color: 1.0.3 - - jest-haste-map@26.6.2: - dependencies: - '@jest/types': 26.6.2 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.17 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - jest-regex-util: 26.0.0 - jest-serializer: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 - micromatch: 4.0.5 - sane: 4.1.0 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - transitivePeerDependencies: - - supports-color - - jest-regex-util@26.0.0: {} - - jest-serializer@26.6.2: - dependencies: - '@types/node': 18.11.17 - graceful-fs: 4.2.10 - - jest-util@26.6.2: - dependencies: - '@jest/types': 26.6.2 - '@types/node': 18.11.17 - chalk: 4.1.2 - graceful-fs: 4.2.10 - is-ci: 2.0.0 - micromatch: 4.0.5 - - jest-worker@26.6.2: - dependencies: - '@types/node': 18.11.17 - merge-stream: 2.0.0 - supports-color: 7.2.0 - - jest-worker@27.5.1: - dependencies: - '@types/node': 18.11.17 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jiti@1.21.0: {} - - js-string-escape@1.0.1: {} - - js-stringify@1.0.2: {} - - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jscodeshift@0.13.1(@babel/preset-env@7.26.0(@babel/core@7.26.0)): - dependencies: - '@babel/core': 7.20.5 - '@babel/parser': 7.20.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.5) - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.20.5) - '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.20.5) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-flow': 7.18.6(@babel/core@7.20.5) - '@babel/preset-typescript': 7.18.6(@babel/core@7.20.5) - '@babel/register': 7.18.9(@babel/core@7.20.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.20.5) - chalk: 4.1.2 - flow-parser: 0.196.0 - graceful-fs: 4.2.10 - micromatch: 3.1.10 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.20.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - - jsdom@23.0.1: - dependencies: - cssstyle: 3.0.0 - data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.0 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 7.1.2 - rrweb-cssom: 0.6.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 - ws: 8.14.2 - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsesc@0.5.0: {} - - jsesc@2.5.2: {} - - jsesc@3.0.2: {} - - json-parse-better-errors@1.0.2: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json-stringify-safe@5.0.1: {} - - json5@1.0.1: - dependencies: - minimist: 1.2.7 - - json5@2.2.2: {} - - json5@2.2.3: {} - - jsonc-parser@3.2.0: {} - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.10 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.10 - - jsonparse@1.3.1: {} - - jstransformer@1.0.0: - dependencies: - is-promise: 2.2.2 - promise: 7.3.1 - - junk@3.1.0: {} - - kind-of@3.2.2: - dependencies: - is-buffer: 1.1.6 - - kind-of@4.0.0: - dependencies: - is-buffer: 1.1.6 - - kind-of@5.1.0: {} - - kind-of@6.0.3: {} - - kleur@3.0.3: {} - - klona@2.0.6: {} - - lazy-universal-dotenv@3.0.1: - dependencies: - '@babel/runtime': 7.26.0 - app-root-dir: 1.0.2 - core-js: 3.26.1 - dotenv: 8.6.0 - dotenv-expand: 5.1.0 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lilconfig@2.0.6: {} - - lilconfig@3.0.0: {} - - lines-and-columns@1.2.4: {} - - load-json-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 - optional: true - - load-json-file@4.0.0: - dependencies: - graceful-fs: 4.2.10 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - - loader-runner@2.4.0: {} - - loader-runner@4.3.0: {} - - loader-utils@1.4.2: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.1 - - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.2 - - local-pkg@0.4.3: {} - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.camelcase@4.3.0: {} - - lodash.debounce@4.0.8: {} - - lodash.isfunction@3.0.9: {} - - lodash.ismatch@4.4.0: {} - - lodash.isplainobject@4.0.6: {} - - lodash.kebabcase@4.1.1: {} - - lodash.map@4.6.0: {} - - lodash.merge@4.6.2: {} - - lodash.mergewith@4.6.2: {} - - lodash.snakecase@4.1.1: {} - - lodash.startcase@4.4.0: {} - - lodash.uniq@4.5.0: {} - - lodash.upperfirst@4.3.1: {} - - lodash@4.17.21: {} - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - longest@2.0.1: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - loud-rejection@1.6.0: - dependencies: - currently-unhandled: 0.4.1 - signal-exit: 3.0.7 - optional: true - - loupe@2.3.6: - dependencies: - get-func-name: 2.0.0 - - lower-case@2.0.2: - dependencies: - tslib: 2.8.0 - - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-cache@7.18.3: {} - - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - - magic-string@0.26.7: - dependencies: - sourcemap-codec: 1.4.8 - - magic-string@0.27.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magic-string@0.30.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 - - magic-string@0.30.5: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.1 - - make-dir@3.1.0: - dependencies: - semver: 6.3.0 - - make-error@1.3.6: - optional: true - - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - - map-cache@0.2.2: {} - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - - map-or-similar@1.5.0: {} - - map-visit@1.0.0: - dependencies: - object-visit: 1.0.1 - - markdown-escapes@1.0.4: {} - - md5-hex@3.0.1: - dependencies: - blueimp-md5: 2.19.0 - - md5.js@1.3.5: - dependencies: - hash-base: 3.0.4 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - mdast-squeeze-paragraphs@4.0.0: - dependencies: - unist-util-remove: 2.1.0 - - mdast-util-definitions@4.0.0: - dependencies: - unist-util-visit: 2.0.3 - - mdast-util-to-hast@10.0.1: - dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 - mdast-util-definitions: 4.0.0 - mdurl: 1.0.1 - unist-builder: 2.0.3 - unist-util-generated: 1.1.6 - unist-util-position: 3.1.0 - unist-util-visit: 2.0.3 - - mdast-util-to-string@1.1.0: {} - - mdurl@1.0.1: {} - - media-typer@0.3.0: {} - - memfs@3.5.3: - dependencies: - fs-monkey: 1.0.6 - - memoizerific@1.11.3: - dependencies: - map-or-similar: 1.5.0 - - memory-fs@0.4.1: - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - - memory-fs@0.5.0: - dependencies: - errno: 0.1.8 - readable-stream: 2.3.7 - - meow@10.1.5: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 7.0.2 - decamelize: 5.0.1 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 8.0.0 - redent: 4.0.0 - trim-newlines: 4.0.2 - type-fest: 1.4.0 - yargs-parser: 20.2.9 - - meow@12.1.1: {} - - meow@3.7.0: - dependencies: - camelcase-keys: 2.1.0 - decamelize: 1.2.0 - loud-rejection: 1.6.0 - map-obj: 1.0.1 - minimist: 1.2.8 - normalize-package-data: 2.5.0 - object-assign: 4.1.1 - read-pkg-up: 1.0.1 - redent: 1.0.0 - trim-newlines: 1.0.0 - optional: true - - meow@8.1.2: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - - meow@9.0.0: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - - merge-descriptors@1.0.3: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - merge@2.1.1: {} - - methods@1.1.2: {} - - microevent.ts@0.1.1: {} - - micromatch@3.1.10: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - miller-rabin@4.0.1: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - - mime-db@1.52.0: {} - - mime-db@1.53.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@1.6.0: {} - - mime@2.6.0: {} - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - min-document@2.19.0: - dependencies: - dom-walk: 0.1.2 - - min-indent@1.0.1: {} - - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - - minimist@1.2.6: {} - - minimist@1.2.7: {} - - minimist@1.2.8: {} - - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mississippi@3.0.0: - dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.4 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 3.0.2 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 - - mitt@3.0.1: {} - - mixin-deep@1.3.2: - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - - mkdirp-classic@0.5.3: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mlly@1.2.0: - dependencies: - acorn: 8.8.2 - pathe: 1.1.0 - pkg-types: 1.0.2 - ufo: 1.1.1 - - modify-values@1.0.1: {} - - moo-color@1.0.3: - dependencies: - color-name: 1.1.4 - - move-concurrently@1.0.1: - dependencies: - aproba: 1.2.0 - copy-concurrently: 1.0.5 - fs-write-stream-atomic: 1.0.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - - ms@2.0.0: {} - - ms@2.1.1: {} - - ms@2.1.2: {} - - ms@2.1.3: {} - - mute-stream@0.0.8: {} - - nan@2.22.0: - optional: true - - nano-staged@0.8.0: - dependencies: - picocolors: 1.0.0 - - nanoid@3.3.4: {} - - nanoid@3.3.7: {} - - nanoid@5.0.4: {} - - nanomatch@1.2.13: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - nanospinner@1.1.0: - dependencies: - picocolors: 1.0.0 - - natural-compare@1.4.0: {} - - negotiator@0.6.3: {} - - neo-async@2.6.2: {} - - nested-error-stacks@2.1.1: {} - - netmask@2.0.2: {} - - new-github-release-url@2.0.0: - dependencies: - type-fest: 2.19.0 - - nice-try@1.0.5: {} - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.8.0 - - node-dir@0.1.17: - dependencies: - minimatch: 3.1.2 - - node-fetch@2.6.7: - dependencies: - whatwg-url: 5.0.0 - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-int64@0.4.0: {} - - node-libs-browser@2.2.1: - dependencies: - assert: 1.5.1 - browserify-zlib: 0.2.0 - buffer: 4.9.2 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - crypto-browserify: 3.12.1 - domain-browser: 1.2.0 - events: 3.3.0 - https-browserify: 1.0.0 - os-browserify: 0.3.0 - path-browserify: 0.0.1 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 2.3.8 - stream-browserify: 2.0.2 - stream-http: 2.8.3 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.0 - url: 0.11.4 - util: 0.11.1 - vm-browserify: 1.1.2 - - node-releases@2.0.18: {} - - node-releases@2.0.6: {} - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.12.1 - semver: 7.5.1 - validate-npm-package-license: 3.0.4 - - normalize-path@2.1.1: - dependencies: - remove-trailing-separator: 1.1.0 - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - normalize-url@6.1.0: {} - - npm-run-path@2.0.2: - dependencies: - path-key: 2.0.1 - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - npm-run-path@5.1.0: - dependencies: - path-key: 4.0.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - num2fraction@1.2.2: {} - - nwsapi@2.2.7: {} - - object-assign@4.1.1: {} - - object-copy@0.1.0: - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - - object-inspect@1.12.2: {} - - object-inspect@1.13.2: {} - - object-keys@1.1.1: {} - - object-visit@1.0.1: - dependencies: - isobject: 3.0.1 - - object.assign@4.1.4: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - object.entries@1.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - object.getownpropertydescriptors@2.1.8: - dependencies: - array.prototype.reduce: 1.0.7 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - gopd: 1.0.1 - safe-array-concat: 1.1.2 - - object.pick@1.3.0: - dependencies: - isobject: 3.0.1 - - object.values@1.1.6: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - - object.values@1.2.0: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - on-headers@1.0.2: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - open@7.4.2: - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - - open@8.4.0: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - open@9.1.0: - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - - optionator@0.9.1: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.7.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - os-browserify@0.3.0: {} - - os-homedir@1.0.2: - optional: true - - os-tmpdir@1.0.2: {} - - p-all@2.1.0: - dependencies: - p-map: 2.1.0 - - p-event@4.2.0: - dependencies: - p-timeout: 3.2.0 - - p-filter@2.1.0: - dependencies: - p-map: 2.1.0 - - p-finally@1.0.0: {} - - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-locate@2.0.0: - dependencies: - p-limit: 1.3.0 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-map@2.1.0: {} - - p-map@3.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-map@5.5.0: - dependencies: - aggregate-error: 4.0.1 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - p-try@1.0.0: {} - - p-try@2.2.0: {} - - pac-proxy-agent@7.0.1: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.0 - debug: 4.3.4 - get-uri: 6.0.2 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - pac-resolver: 7.0.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - - pac-resolver@7.0.0: - dependencies: - degenerator: 5.0.1 - ip: 1.1.8 - netmask: 2.0.2 - - pako@1.0.11: {} - - parallel-transform@1.2.0: - dependencies: - cyclist: 1.0.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.0 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-asn1@5.1.7: - dependencies: - asn1.js: 4.10.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - hash-base: 3.0.4 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - - parse-entities@2.0.0: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - - parse-json@2.2.0: - dependencies: - error-ex: 1.3.2 - optional: true - - parse-json@4.0.0: - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.18.6 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-passwd@1.0.0: {} - - parse-path@4.0.4: - dependencies: - is-ssh: 1.4.0 - protocols: 1.4.8 - qs: 6.11.0 - query-string: 6.14.1 - - parse-url@6.0.5: - dependencies: - is-ssh: 1.4.0 - normalize-url: 6.1.0 - parse-path: 4.0.4 - protocols: 1.4.8 - - parse5@6.0.1: {} - - parse5@7.1.2: - dependencies: - entities: 4.4.0 - - parseurl@1.3.3: {} - - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.8.0 - - pascalcase@0.1.1: {} - - path-browserify@0.0.1: {} - - path-dirname@1.0.2: {} - - path-exists@2.1.0: - dependencies: - pinkie-promise: 2.0.1 - optional: true - - path-exists@3.0.0: {} - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@2.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-to-regexp@0.1.10: {} - - path-type@1.1.0: - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 - optional: true - - path-type@3.0.0: - dependencies: - pify: 3.0.0 - - path-type@4.0.0: {} - - path-type@5.0.0: {} - - pathe@1.1.0: {} - - pathval@1.1.1: {} - - pbkdf2@3.1.2: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - pend@1.2.0: {} - - picocolors@0.2.1: {} - - picocolors@1.0.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pify@3.0.0: {} - - pify@4.0.1: {} - - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - optional: true - - pinkie@2.0.4: - optional: true - - pirates@4.0.5: {} - - pirates@4.0.6: {} - - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - pkg-dir@5.0.0: - dependencies: - find-up: 5.0.0 - - pkg-types@1.0.2: - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.2.0 - pathe: 1.1.0 - - plur@4.0.0: - dependencies: - irregular-plurals: 3.3.0 - - pnp-webpack-plugin@1.6.4(typescript@4.9.4): - dependencies: - ts-pnp: 1.2.0(typescript@4.9.4) - transitivePeerDependencies: - - typescript - - polished@4.2.2: - dependencies: - '@babel/runtime': 7.20.6 - - posix-character-classes@0.1.1: {} - - possible-typed-array-names@1.0.0: {} - - postcss-flexbugs-fixes@4.2.1: - dependencies: - postcss: 7.0.39 - - postcss-loader@4.3.0(postcss@7.0.39)(webpack@4.47.0): - dependencies: - cosmiconfig: 7.1.0 - klona: 2.0.6 - loader-utils: 2.0.4 - postcss: 7.0.39 - schema-utils: 3.3.0 - semver: 7.6.3 - webpack: 4.47.0 - - postcss-modules-extract-imports@2.0.0: - dependencies: - postcss: 7.0.39 - - postcss-modules-local-by-default@3.0.3: - dependencies: - icss-utils: 4.1.1 - postcss: 7.0.39 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@2.2.0: - dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.1.2 - - postcss-modules-values@3.0.0: - dependencies: - icss-utils: 4.1.1 - postcss: 7.0.39 - - postcss-selector-parser@6.0.11: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@7.0.39: - dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 - - postcss@8.4.19: - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - postcss@8.4.20: - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - postcss@8.4.32: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.2.0 - - prettier@2.3.0: {} - - prettier@2.8.8: {} - - prettier@3.1.1: {} - - pretty-error@2.1.2: - dependencies: - lodash: 4.17.21 - renderkid: 2.0.7 - - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - - pretty-hrtime@1.0.3: {} - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} - - progress@2.0.3: {} - - promise-inflight@1.0.1(bluebird@3.7.2): - optionalDependencies: - bluebird: 3.7.2 - - promise.allsettled@1.0.7: - dependencies: - array.prototype.map: 1.0.7 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - get-intrinsic: 1.2.4 - iterate-value: 1.0.2 - - promise.prototype.finally@3.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - promise@7.3.1: - dependencies: - asap: 2.0.6 - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - property-information@5.6.0: - dependencies: - xtend: 4.0.2 - - protocols@1.4.8: {} - - protocols@2.0.1: {} - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-agent@6.3.1: - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - - proxy-from-env@1.1.0: {} - - prr@1.0.1: {} - - pseudomap@1.0.2: {} - - psl@1.9.0: {} - - public-encrypt@4.0.3: - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - parse-asn1: 5.1.7 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - pug-attrs@3.0.0: - dependencies: - constantinople: 4.0.1 - js-stringify: 1.0.2 - pug-runtime: 3.0.1 - - pug-code-gen@3.0.2: - dependencies: - constantinople: 4.0.1 - doctypes: 1.1.0 - js-stringify: 1.0.2 - pug-attrs: 3.0.0 - pug-error: 2.0.0 - pug-runtime: 3.0.1 - void-elements: 3.1.0 - with: 7.0.2 - - pug-error@2.0.0: {} - - pug-filters@4.0.0: - dependencies: - constantinople: 4.0.1 - jstransformer: 1.0.0 - pug-error: 2.0.0 - pug-walk: 2.0.0 - resolve: 1.22.2 - - pug-lexer@5.0.1: - dependencies: - character-parser: 2.2.0 - is-expression: 4.0.0 - pug-error: 2.0.0 - - pug-linker@4.0.0: - dependencies: - pug-error: 2.0.0 - pug-walk: 2.0.0 - - pug-load@3.0.0: - dependencies: - object-assign: 4.1.1 - pug-walk: 2.0.0 - - pug-parser@6.0.0: - dependencies: - pug-error: 2.0.0 - token-stream: 1.0.0 - - pug-runtime@3.0.1: {} - - pug-strip-comments@2.0.0: - dependencies: - pug-error: 2.0.0 - - pug-walk@2.0.0: {} - - pug@3.0.2: - dependencies: - pug-code-gen: 3.0.2 - pug-filters: 4.0.0 - pug-lexer: 5.0.1 - pug-linker: 4.0.0 - pug-load: 3.0.0 - pug-parser: 6.0.0 - pug-runtime: 3.0.1 - pug-strip-comments: 2.0.0 - - pump@2.0.1: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - - punycode@1.4.1: {} - - punycode@2.3.0: {} - - punycode@2.3.1: {} - - puppeteer-core@21.6.0: - dependencies: - '@puppeteer/browsers': 1.9.0 - chromium-bidi: 0.5.1(devtools-protocol@0.0.1203626) - cross-fetch: 4.0.0 - debug: 4.3.4 - devtools-protocol: 0.0.1203626 - ws: 8.14.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - q@1.5.1: {} - - qs@6.11.0: - dependencies: - side-channel: 1.0.4 - - qs@6.13.0: - dependencies: - side-channel: 1.0.6 - - query-string@6.14.1: - dependencies: - decode-uri-component: 0.2.0 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - - querystring-es3@0.2.1: {} - - querystring@0.2.1: {} - - querystringify@2.2.0: {} - - queue-microtask@1.2.3: {} - - queue-tick@1.0.1: {} - - quick-lru@4.0.1: {} - - quick-lru@5.1.1: {} - - ramda@0.28.0: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - randomfill@1.0.4: - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - raw-loader@4.0.2(webpack@4.47.0): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 4.47.0 - - react-docgen-typescript@2.2.2(typescript@4.9.4): - dependencies: - typescript: 4.9.4 - - react-docgen@6.0.0-alpha.3: - dependencies: - '@babel/core': 7.20.5 - '@babel/generator': 7.20.5 - ast-types: 0.14.2 - commander: 2.20.3 - doctrine: 3.0.0 - estree-to-babel: 3.2.1 - neo-async: 2.6.2 - node-dir: 0.1.17 - resolve: 1.22.2 - strip-indent: 3.0.0 - transitivePeerDependencies: - - supports-color - - react-dom@16.14.0(react@16.14.0): - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - prop-types: 15.8.1 - react: 16.14.0 - scheduler: 0.19.1 - - react-dom@18.2.0(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - - react-inspector@5.1.1(react@18.2.0): - dependencies: - '@babel/runtime': 7.20.6 - is-dom: 1.1.0 - prop-types: 15.8.1 - react: 18.2.0 - - react-is@16.13.1: {} - - react-is@17.0.2: {} - - react@16.14.0: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - prop-types: 15.8.1 - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - - read-pkg-up@1.0.1: - dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - optional: true - - read-pkg-up@3.0.0: - dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg-up@8.0.0: - dependencies: - find-up: 5.0.0 - read-pkg: 6.0.0 - type-fest: 1.4.0 - - read-pkg@1.1.0: - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - optional: true - - read-pkg@3.0.0: - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - read-pkg@6.0.0: - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 1.4.0 - - readable-stream@2.3.7: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.0: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@2.2.1: - dependencies: - graceful-fs: 4.2.11 - micromatch: 3.1.10 - readable-stream: 2.3.8 - transitivePeerDependencies: - - supports-color - optional: true - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - recast@0.20.5: - dependencies: - ast-types: 0.14.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.4.1 - - recast@0.21.5: - dependencies: - ast-types: 0.15.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.4.1 - - redent@1.0.0: - dependencies: - indent-string: 2.1.0 - strip-indent: 1.0.1 - optional: true - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - redent@4.0.0: - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - - regenerate-unicode-properties@10.1.0: - dependencies: - regenerate: 1.4.2 - - regenerate-unicode-properties@10.2.0: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.13.11: {} - - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.1: - dependencies: - '@babel/runtime': 7.20.6 - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.26.0 - - regex-not@1.0.2: - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - - regexp.prototype.flags@1.4.3: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - functions-have-names: 1.2.3 - - regexp.prototype.flags@1.5.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - regexpp@3.2.0: {} - - regexpu-core@5.2.2: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 - regjsgen: 0.7.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - - regexpu-core@6.1.1: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.11.2 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - - regjsgen@0.7.1: {} - - regjsgen@0.8.0: {} - - regjsparser@0.11.2: - dependencies: - jsesc: 3.0.2 - - regjsparser@0.9.1: - dependencies: - jsesc: 0.5.0 - - relateurl@0.2.7: {} - - remark-external-links@8.0.0: - dependencies: - extend: 3.0.2 - is-absolute-url: 3.0.3 - mdast-util-definitions: 4.0.0 - space-separated-tokens: 1.1.5 - unist-util-visit: 2.0.3 - - remark-footnotes@2.0.0: {} - - remark-mdx@1.6.22: - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - is-alphabetical: 1.0.4 - remark-parse: 8.0.3 - unified: 9.2.0 - transitivePeerDependencies: - - supports-color - - remark-parse@8.0.3: - dependencies: - ccount: 1.1.0 - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 2.0.0 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 2.0.1 - vfile-location: 3.2.0 - xtend: 4.0.2 - - remark-slug@6.1.0: - dependencies: - github-slugger: 1.5.0 - mdast-util-to-string: 1.1.0 - unist-util-visit: 2.0.3 - - remark-squeeze-paragraphs@4.0.0: - dependencies: - mdast-squeeze-paragraphs: 4.0.0 - - remove-trailing-separator@1.1.0: {} - - renderkid@2.0.7: - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 3.0.1 - - repeat-element@1.1.4: {} - - repeat-string@1.6.1: {} - - repeating@2.0.1: - dependencies: - is-finite: 1.1.0 - optional: true - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - requires-port@1.0.0: {} - - resolve-dir@1.0.1: - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve-global@1.0.0: - dependencies: - global-dirs: 0.1.1 - - resolve-pkg-maps@1.0.0: {} - - resolve-url@0.2.1: {} - - resolve@1.22.1: - dependencies: - is-core-module: 2.12.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@1.22.2: - dependencies: - is-core-module: 2.12.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - ret@0.1.15: {} - - reusify@1.0.4: {} - - rimraf@2.6.3: - dependencies: - glob: 7.2.3 - - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - ripemd160@2.0.2: - dependencies: - hash-base: 3.0.4 - inherits: 2.0.4 - - rollup-plugin-swc3@0.11.0(@swc/core@1.3.23)(rollup@3.7.5): - dependencies: - '@fastify/deepmerge': 1.3.0 - '@rollup/pluginutils': 5.1.0(rollup@3.7.5) - '@swc/core': 1.3.23 - get-tsconfig: 4.7.2 - rollup: 3.7.5 - rollup-preserve-directives: 1.0.1(rollup@3.7.5) - - rollup-preserve-directives@1.0.1(rollup@3.7.5): - dependencies: - magic-string: 0.30.5 - rollup: 3.7.5 - - rollup@3.7.5: - optionalDependencies: - fsevents: 2.3.2 - - rrweb-cssom@0.6.0: {} - - rsvp@4.8.5: {} - - run-applescript@5.0.0: - dependencies: - execa: 5.1.1 - - run-async@2.4.1: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - run-queue@1.0.3: - dependencies: - aproba: 1.2.0 - - rxjs@7.5.7: - dependencies: - tslib: 2.4.1 - - safe-array-concat@1.1.2: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - - safe-buffer@5.1.1: {} - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-regex-test@1.0.0: - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - is-regex: 1.1.4 - - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - - safe-regex@1.1.0: - dependencies: - ret: 0.1.15 - - safer-buffer@2.1.2: {} - - sane@4.1.0: - dependencies: - '@cnakazawa/watch': 1.0.4 - anymatch: 2.0.0 - capture-exit: 2.0.0 - exec-sh: 0.3.6 - execa: 1.0.0 - fb-watchman: 2.0.2 - micromatch: 3.1.10 - minimist: 1.2.7 - walker: 1.0.8 - transitivePeerDependencies: - - supports-color - - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - - scheduler@0.19.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - - scheduler@0.23.0: - dependencies: - loose-envify: 1.4.0 - - schema-utils@1.0.0: - dependencies: - ajv: 6.12.6 - ajv-errors: 1.0.1(ajv@6.12.6) - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@2.7.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@2.7.1: - dependencies: - '@types/json-schema': 7.0.11 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@3.1.1: - dependencies: - '@types/json-schema': 7.0.11 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.11 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - semver@5.7.1: {} - - semver@5.7.2: {} - - semver@6.3.0: {} - - semver@6.3.1: {} - - semver@7.3.8: - dependencies: - lru-cache: 6.0.0 - - semver@7.5.1: - dependencies: - lru-cache: 6.0.0 - - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.3: {} - - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serialize-javascript@4.0.0: - dependencies: - randombytes: 2.1.0 - - serialize-javascript@5.0.1: - dependencies: - randombytes: 2.1.0 - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - serialize-javascript@6.0.1: - dependencies: - randombytes: 2.1.0 - - serve-favicon@2.5.0: - dependencies: - etag: 1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: 1.3.3 - safe-buffer: 5.1.1 - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - set-blocking@2.0.0: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-value@2.0.1: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - - setimmediate@1.0.5: {} - - setprototypeof@1.2.0: {} - - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@1.0.0: {} - - shebang-regex@3.0.0: {} - - side-channel@1.0.4: - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 - - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 - - siginfo@2.0.0: {} - - signal-exit@3.0.7: {} - - simple-git-hooks@2.8.1: {} - - simple-github-release@1.0.0: - dependencies: - '@octokit/rest': 18.12.0 - '@types/git-url-parse': 9.0.1 - argue-cli: 2.1.0 - git-url-parse: 11.6.0 - lilconfig: 2.0.6 - new-github-release-url: 2.0.0 - open: 8.4.0 - picocolors: 1.0.0 - transitivePeerDependencies: - - encoding - - sisteransi@1.0.5: {} - - size-limit@11.0.1: - dependencies: - bytes-iec: 3.1.1 - chokidar: 3.5.3 - globby: 14.0.0 - lilconfig: 3.0.0 - nanospinner: 1.1.0 - picocolors: 1.0.0 - - slash@2.0.0: {} - - slash@3.0.0: {} - - slash@4.0.0: {} - - slash@5.1.0: {} - - smart-buffer@4.2.0: {} - - snapdragon-node@2.1.1: - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - - snapdragon-util@3.0.1: - dependencies: - kind-of: 3.2.2 - - snapdragon@0.8.2: - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - - socks-proxy-agent@8.0.2: - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - - socks@2.7.1: - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - - source-list-map@2.0.1: {} - - source-map-js@1.0.2: {} - - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.0 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map-url@0.4.1: {} - - source-map@0.5.7: {} - - source-map@0.6.1: {} - - source-map@0.7.4: {} - - sourcemap-codec@1.4.8: {} - - space-separated-tokens@1.1.5: {} - - spdx-correct@3.1.1: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 - - spdx-exceptions@2.3.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 - - spdx-license-ids@3.0.12: {} - - split-on-first@1.1.0: {} - - split-string@3.1.0: - dependencies: - extend-shallow: 3.0.2 - - split2@3.2.2: - dependencies: - readable-stream: 3.6.0 - - split2@4.2.0: {} - - split@1.0.1: - dependencies: - through: 2.3.8 - - sprintf-js@1.0.3: {} - - ssri@6.0.2: - dependencies: - figgy-pudding: 3.5.2 - - ssri@8.0.1: - dependencies: - minipass: 3.3.6 - - stable@0.1.8: {} - - stackback@0.0.2: {} - - standard-version@9.5.0: - dependencies: - chalk: 2.4.2 - conventional-changelog: 3.1.25 - conventional-changelog-config-spec: 2.1.0 - conventional-changelog-conventionalcommits: 4.6.3 - conventional-recommended-bump: 6.1.0 - detect-indent: 6.1.0 - detect-newline: 3.1.0 - dotgitignore: 2.1.0 - figures: 3.2.0 - find-up: 5.0.0 - git-semver-tags: 4.1.1 - semver: 7.3.8 - stringify-package: 1.0.1 - yargs: 16.2.0 - - state-toggle@1.0.3: {} - - static-extend@0.1.2: - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - - statuses@2.0.1: {} - - std-env@3.3.2: {} - - stop-iteration-iterator@1.0.0: - dependencies: - internal-slot: 1.0.7 - - store2@2.14.2: {} - - store2@2.14.3: {} - - stream-browserify@2.0.2: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - stream-each@1.2.3: - dependencies: - end-of-stream: 1.4.4 - stream-shift: 1.0.3 - - stream-http@2.8.3: - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 2.3.8 - to-arraybuffer: 1.0.1 - xtend: 4.0.2 - - stream-shift@1.0.3: {} - - streamx@2.15.6: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - - strict-uri-encode@2.0.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string.prototype.matchall@4.0.11: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.3 - set-function-name: 2.0.2 - side-channel: 1.0.6 - - string.prototype.padend@3.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - string.prototype.padstart@3.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - string.prototype.trim@1.2.9: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - string.prototype.trimend@1.0.6: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - - string.prototype.trimend@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - string.prototype.trimstart@1.0.6: - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-package@1.0.1: {} - - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@2.0.0: - dependencies: - is-utf8: 0.2.1 - optional: true - - strip-bom@3.0.0: {} - - strip-bom@4.0.0: {} - - strip-eof@1.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-final-newline@3.0.0: {} - - strip-indent@1.0.1: - dependencies: - get-stdin: 4.0.1 - optional: true - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@3.1.1: {} - - strip-literal@1.0.1: - dependencies: - acorn: 8.8.2 - - style-loader@1.3.0(webpack@4.47.0): - dependencies: - loader-utils: 2.0.4 - schema-utils: 2.7.1 - webpack: 4.47.0 - - style-to-object@0.3.0: - dependencies: - inline-style-parser: 0.1.1 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-hyperlinks@2.3.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - sveltedoc-parser@4.2.1: - dependencies: - eslint: 8.4.1 - espree: 9.2.0 - htmlparser2-svelte: 4.1.0 - transitivePeerDependencies: - - supports-color - - symbol-tree@3.2.4: {} - - symbol.prototype.description@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-symbol-description: 1.0.2 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.8 - - synchronous-promise@2.0.16: {} - - synchronous-promise@2.0.17: {} - - synckit@0.8.6: - dependencies: - '@pkgr/utils': 2.4.2 - tslib: 2.6.2 - - tapable@1.1.3: {} - - tapable@2.2.1: {} - - tar-fs@3.0.4: - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.6 - - tar-stream@3.1.6: - dependencies: - b4a: 1.6.4 - fast-fifo: 1.3.2 - streamx: 2.15.6 - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - telejson@6.0.8: - dependencies: - '@types/is-function': 1.0.1 - global: 4.4.0 - is-function: 1.0.2 - is-regex: 1.1.4 - is-symbol: 1.0.4 - isobject: 4.0.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - - temp@0.8.4: - dependencies: - rimraf: 2.6.3 - - terser-webpack-plugin@1.4.6(webpack@4.47.0): - dependencies: - cacache: 12.0.4 - find-cache-dir: 2.1.0 - is-wsl: 1.1.0 - schema-utils: 1.0.0 - serialize-javascript: 4.0.0 - source-map: 0.6.1 - terser: 4.8.1 - webpack: 4.47.0 - webpack-sources: 1.4.3 - worker-farm: 1.7.0 - - terser-webpack-plugin@4.2.3(webpack@4.47.0): - dependencies: - cacache: 15.3.0 - find-cache-dir: 3.3.2 - jest-worker: 26.6.2 - p-limit: 3.1.0 - schema-utils: 3.3.0 - serialize-javascript: 5.0.1 - source-map: 0.6.1 - terser: 5.36.0 - webpack: 4.47.0 - webpack-sources: 1.4.3 - transitivePeerDependencies: - - bluebird - - terser-webpack-plugin@5.3.6(@swc/core@1.3.23)(webpack@5.75.0(@swc/core@1.3.23)): - dependencies: - '@jridgewell/trace-mapping': 0.3.17 - jest-worker: 27.5.1 - schema-utils: 3.1.1 - serialize-javascript: 6.0.0 - terser: 5.16.1 - webpack: 5.75.0(@swc/core@1.3.23) - optionalDependencies: - '@swc/core': 1.3.23 - - terser-webpack-plugin@5.3.9(@swc/core@1.3.23)(webpack@5.89.0(@swc/core@1.3.23)): - dependencies: - '@jridgewell/trace-mapping': 0.3.17 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.26.0 - webpack: 5.89.0(@swc/core@1.3.23) - optionalDependencies: - '@swc/core': 1.3.23 - - terser@4.8.1: - dependencies: - acorn: 8.14.0 - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.21 - - terser@5.16.1: - dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.2 - commander: 2.20.3 - source-map-support: 0.5.21 - - terser@5.26.0: - dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.8.2 - commander: 2.20.3 - source-map-support: 0.5.21 - - terser@5.36.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 - - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - text-extensions@1.9.0: {} - - text-extensions@2.4.0: {} - - text-table@0.2.0: {} - - through2@2.0.5: - dependencies: - readable-stream: 2.3.7 - xtend: 4.0.2 - - through2@4.0.2: - dependencies: - readable-stream: 3.6.0 - - through@2.3.8: {} - - time-zone@1.0.0: {} - - timers-browserify@2.0.12: - dependencies: - setimmediate: 1.0.5 - - tinybench@2.4.0: {} - - tinypool@0.5.0: {} - - tinyspy@2.1.0: {} - - titleize@3.0.0: {} - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - tmpl@1.0.5: {} - - to-arraybuffer@1.0.1: {} - - to-fast-properties@2.0.0: {} - - to-object-path@0.3.0: - dependencies: - kind-of: 3.2.2 - - to-regex-range@2.1.1: - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - to-regex@3.0.2: - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - - toidentifier@1.0.1: {} - - token-stream@1.0.0: {} - - tough-cookie@4.1.3: - dependencies: - psl: 1.9.0 - punycode: 2.3.0 - universalify: 0.2.0 - url-parse: 1.5.10 - - tr46@0.0.3: {} - - tr46@5.0.0: - dependencies: - punycode: 2.3.1 - - trim-newlines@1.0.0: - optional: true - - trim-newlines@3.0.1: {} - - trim-newlines@4.0.2: {} - - trim-trailing-lines@1.1.4: {} - - trim@0.0.1: {} - - trough@1.0.5: {} - - ts-api-utils@1.0.3(typescript@4.9.4): - dependencies: - typescript: 4.9.4 - - ts-dedent@2.2.0: {} - - ts-loader@8.4.0(typescript@4.9.4)(webpack@5.75.0(@swc/core@1.3.23)): - dependencies: - chalk: 4.1.2 - enhanced-resolve: 4.5.0 - loader-utils: 2.0.4 - micromatch: 4.0.5 - semver: 7.5.1 - typescript: 4.9.4 - webpack: 5.75.0(@swc/core@1.3.23) - - ts-map@1.0.3: {} - - ts-node@10.9.1(@swc/core@1.3.23)(@types/node@14.18.33)(typescript@4.9.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 14.18.33 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.3.23 - optional: true - - ts-node@10.9.1(@swc/core@1.3.23)(@types/node@18.11.17)(typescript@4.9.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.11.17 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.3.23 - optional: true - - ts-pnp@1.2.0(typescript@4.9.4): - optionalDependencies: - typescript: 4.9.4 - - tsconfig-paths@3.14.1: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.1 - minimist: 1.2.7 - strip-bom: 3.0.0 - - tsd@0.25.0: - dependencies: - '@tsd/typescript': 4.9.3 - eslint-formatter-pretty: 4.1.0 - globby: 11.1.0 - meow: 9.0.0 - path-exists: 4.0.0 - read-pkg-up: 7.0.1 - - tslib@2.4.1: {} - - tslib@2.6.2: {} - - tslib@2.8.0: {} - - tty-browserify@0.0.0: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.18.1: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@0.6.0: {} - - type-fest@0.8.1: {} - - type-fest@1.4.0: {} - - type-fest@2.19.0: {} - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - typed-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.6: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - - typedarray@0.0.6: {} - - typescript@4.9.4: {} - - ufo@1.1.1: {} - - uglify-js@3.17.4: - optional: true - - uglify-js@3.19.3: - optional: true - - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - - undici-types@6.19.8: {} - - unfetch@4.2.0: {} - - unherit@1.1.3: - dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - - unicode-canonical-property-names-ecmascript@2.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-match-property-value-ecmascript@2.2.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unicorn-magic@0.1.0: {} - - unified@9.2.0: - dependencies: - '@types/unist': 2.0.6 - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - - union-value@1.0.1: - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - - unique-filename@1.1.1: - dependencies: - unique-slug: 2.0.2 - - unique-slug@2.0.2: - dependencies: - imurmurhash: 0.1.4 - - unist-builder@2.0.3: {} - - unist-util-generated@1.1.6: {} - - unist-util-is@4.1.0: {} - - unist-util-position@3.1.0: {} - - unist-util-remove-position@2.0.1: - dependencies: - unist-util-visit: 2.0.3 - - unist-util-remove@2.1.0: - dependencies: - unist-util-is: 4.1.0 - - unist-util-stringify-position@2.0.3: - dependencies: - '@types/unist': 2.0.6 - - unist-util-visit-parents@3.1.1: - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - - unist-util-visit@2.0.3: - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - - universal-user-agent@6.0.0: {} - - universalify@0.1.2: {} - - universalify@0.2.0: {} - - universalify@2.0.0: {} - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - unset-value@1.0.0: - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - - untildify@2.1.0: - dependencies: - os-homedir: 1.0.2 - optional: true - - untildify@4.0.0: {} - - upath@1.2.0: - optional: true - - update-browserslist-db@1.0.10(browserslist@4.21.4): - dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.0 - - update-browserslist-db@1.1.1(browserslist@4.24.2): - dependencies: - browserslist: 4.24.2 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.0 - - urix@0.1.0: {} - - url-loader@4.1.1(file-loader@6.2.0(webpack@5.89.0(@swc/core@1.3.23)))(webpack@4.47.0): - dependencies: - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.3.0 - webpack: 4.47.0 - optionalDependencies: - file-loader: 6.2.0(webpack@4.47.0) - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.13.0 - - urlpattern-polyfill@9.0.0: {} - - use@3.1.1: {} - - util-deprecate@1.0.2: {} - - util.promisify@1.0.0: - dependencies: - define-properties: 1.2.1 - object.getownpropertydescriptors: 2.1.8 - - util@0.10.4: - dependencies: - inherits: 2.0.3 - - util@0.11.1: - dependencies: - inherits: 2.0.3 - - utila@0.4.0: {} - - utils-merge@1.0.1: {} - - uuid-browser@3.1.0: {} - - uuid@3.4.0: {} - - v8-compile-cache-lib@3.0.1: - optional: true - - v8-compile-cache@2.3.0: {} - - v8-to-istanbul@9.0.1: - dependencies: - '@jridgewell/trace-mapping': 0.3.17 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - - vary@1.1.2: {} - - vfile-location@3.2.0: {} - - vfile-message@2.0.4: - dependencies: - '@types/unist': 2.0.6 - unist-util-stringify-position: 2.0.3 - - vfile@4.2.1: - dependencies: - '@types/unist': 2.0.6 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - - vite-node@0.31.0(@types/node@18.11.17)(terser@5.36.0): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.2.0 - pathe: 1.1.0 - picocolors: 1.0.0 - vite: 4.0.2(@types/node@18.11.17)(terser@5.36.0) - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - - vite@4.0.2(@types/node@18.11.17)(terser@5.36.0): - dependencies: - esbuild: 0.16.9 - postcss: 8.4.20 - resolve: 1.22.1 - rollup: 3.7.5 - optionalDependencies: - '@types/node': 18.11.17 - fsevents: 2.3.2 - terser: 5.36.0 - - vitest-canvas-mock@0.3.3(vitest@0.31.0(jsdom@23.0.1)(terser@5.36.0)): - dependencies: - jest-canvas-mock: 2.5.2 - vitest: 0.31.0(jsdom@23.0.1)(terser@5.36.0) - - vitest@0.31.0(jsdom@23.0.1)(terser@5.36.0): - dependencies: - '@types/chai': 4.3.4 - '@types/chai-subset': 1.3.3 - '@types/node': 18.11.17 - '@vitest/expect': 0.31.0 - '@vitest/runner': 0.31.0 - '@vitest/snapshot': 0.31.0 - '@vitest/spy': 0.31.0 - '@vitest/utils': 0.31.0 - acorn: 8.8.2 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - concordance: 5.0.4 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.0 - pathe: 1.1.0 - picocolors: 1.0.0 - std-env: 3.3.2 - strip-literal: 1.0.1 - tinybench: 2.4.0 - tinypool: 0.5.0 - vite: 4.0.2(@types/node@18.11.17)(terser@5.36.0) - vite-node: 0.31.0(@types/node@18.11.17)(terser@5.36.0) - why-is-node-running: 2.2.2 - optionalDependencies: - jsdom: 23.0.1 - transitivePeerDependencies: - - less - - sass - - stylus - - sugarss - - supports-color - - terser - - vm-browserify@1.1.2: {} - - void-elements@3.1.0: {} - - vue-docgen-api@4.56.0(vue@3.2.45): - dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - '@vue/compiler-dom': 3.2.45 - '@vue/compiler-sfc': 3.2.45 - ast-types: 0.14.2 - hash-sum: 1.0.2 - lru-cache: 4.1.5 - pug: 3.0.2 - recast: 0.21.5 - ts-map: 1.0.3 - vue-inbrowser-compiler-independent-utils: 4.55.0(vue@3.2.45) - transitivePeerDependencies: - - vue - - vue-docgen-loader@1.5.1(@babel/preset-env@7.26.0(@babel/core@7.26.0))(vue-docgen-api@4.56.0(vue@3.2.45))(webpack@5.75.0(@swc/core@1.3.23)): - dependencies: - clone: 2.1.2 - jscodeshift: 0.13.1(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - loader-utils: 1.4.2 - querystring: 0.2.1 - vue-docgen-api: 4.56.0(vue@3.2.45) - webpack: 5.75.0(@swc/core@1.3.23) - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - - vue-eslint-parser@9.1.0(eslint@8.55.0): - dependencies: - debug: 4.3.4 - eslint: 8.55.0 - eslint-scope: 7.1.1 - eslint-visitor-keys: 3.4.1 - espree: 9.4.1 - esquery: 1.4.0 - lodash: 4.17.21 - semver: 7.5.1 - transitivePeerDependencies: - - supports-color - - vue-eslint-parser@9.3.2(eslint@8.55.0): - dependencies: - debug: 4.3.4 - eslint: 8.55.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - lodash: 4.17.21 - semver: 7.5.1 - transitivePeerDependencies: - - supports-color - - vue-inbrowser-compiler-independent-utils@4.55.0(vue@3.2.45): - dependencies: - vue: 3.2.45 - - vue-loader@16.8.3(@vue/compiler-sfc@3.3.11)(vue@3.2.45)(webpack@5.75.0(@swc/core@1.3.23)): - dependencies: - chalk: 4.1.2 - hash-sum: 2.0.0 - loader-utils: 2.0.4 - webpack: 5.75.0(@swc/core@1.3.23) - optionalDependencies: - '@vue/compiler-sfc': 3.3.11 - vue: 3.2.45 - - vue@3.2.45: - dependencies: - '@vue/compiler-dom': 3.2.45 - '@vue/compiler-sfc': 3.2.45 - '@vue/runtime-dom': 3.2.45 - '@vue/server-renderer': 3.2.45(vue@3.2.45) - '@vue/shared': 3.2.45 - - w3c-xmlserializer@5.0.0: - dependencies: - xml-name-validator: 5.0.0 - - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - - watchpack-chokidar2@2.0.1: - dependencies: - chokidar: 2.1.8 - transitivePeerDependencies: - - supports-color - optional: true - - watchpack@1.7.5: - dependencies: - graceful-fs: 4.2.11 - neo-async: 2.6.2 - optionalDependencies: - chokidar: 3.6.0 - watchpack-chokidar2: 2.0.1 - transitivePeerDependencies: - - supports-color - - watchpack@2.4.0: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 - - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - web-namespaces@1.1.4: {} - - webidl-conversions@3.0.1: {} - - webidl-conversions@7.0.0: {} - - webpack-dev-middleware@3.7.3(webpack@4.47.0): - dependencies: - memory-fs: 0.4.1 - mime: 2.6.0 - mkdirp: 0.5.6 - range-parser: 1.2.1 - webpack: 4.47.0 - webpack-log: 2.0.0 - - webpack-filter-warnings-plugin@1.2.1(webpack@4.47.0): - dependencies: - webpack: 4.47.0 - - webpack-hot-middleware@2.26.1: - dependencies: - ansi-html-community: 0.0.8 - html-entities: 2.5.2 - strip-ansi: 6.0.1 - - webpack-log@2.0.0: - dependencies: - ansi-colors: 3.2.4 - uuid: 3.4.0 - - webpack-sources@1.4.3: - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - - webpack-sources@3.2.3: {} - - webpack-virtual-modules@0.2.2: - dependencies: - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - - webpack@4.47.0: - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-module-context': 1.9.0 - '@webassemblyjs/wasm-edit': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - acorn: 6.4.2 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - chrome-trace-event: 1.0.4 - enhanced-resolve: 4.5.0 - eslint-scope: 4.0.3 - json-parse-better-errors: 1.0.2 - loader-runner: 2.4.0 - loader-utils: 1.4.2 - memory-fs: 0.4.1 - micromatch: 3.1.10 - mkdirp: 0.5.6 - neo-async: 2.6.2 - node-libs-browser: 2.2.1 - schema-utils: 1.0.0 - tapable: 1.1.3 - terser-webpack-plugin: 1.4.6(webpack@4.47.0) - watchpack: 1.7.5 - webpack-sources: 1.4.3 - transitivePeerDependencies: - - supports-color - - webpack@5.75.0(@swc/core@1.3.23): - dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.8.2 - acorn-import-assertions: 1.8.0(acorn@8.8.2) - browserslist: 4.21.4 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.12.0 - es-module-lexer: 0.9.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.1.1 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(@swc/core@1.3.23)(webpack@5.75.0(@swc/core@1.3.23)) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.89.0(@swc/core@1.3.23): - dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.0 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.8.2 - acorn-import-assertions: 1.9.0(acorn@8.8.2) - browserslist: 4.21.4 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.23)(webpack@5.89.0(@swc/core@1.3.23)) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - well-known-symbols@2.0.0: {} - - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-mimetype@4.0.0: {} - - whatwg-url@14.0.0: - dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - why-is-node-running@2.2.2: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - - with@7.0.2: - dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - assert-never: 1.2.1 - babel-walk: 3.0.0-canary-5 - - word-wrap@1.2.3: {} - - wordwrap@1.0.0: {} - - worker-farm@1.7.0: - dependencies: - errno: 0.1.8 - - worker-rpc@0.1.1: - dependencies: - microevent.ts: 0.1.1 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - write-file-atomic@2.4.3: - dependencies: - graceful-fs: 4.2.10 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - - ws@8.14.2: {} - - ws@8.18.0: {} - - x-default-browser@0.4.0: - optionalDependencies: - default-browser-id: 1.0.4 - - xml-name-validator@4.0.0: {} - - xml-name-validator@5.0.0: {} - - xmlchars@2.2.0: {} - - xtend@4.0.2: {} - - y18n@4.0.3: {} - - y18n@5.0.8: {} - - yallist@2.1.2: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yargs-parser@20.2.9: {} - - yargs-parser@21.1.1: {} - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: - optional: true - - yocto-queue@0.1.0: {} - - yocto-queue@1.0.0: {} - - zwitch@1.0.5: {} diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 1cd95c6a..00000000 --- a/rollup.config.js +++ /dev/null @@ -1,39 +0,0 @@ -import { swc } from 'rollup-plugin-swc3' -import { nodeResolve } from '@rollup/plugin-node-resolve' -import pkg from './package.json' assert { type: 'json' } - -const extensions = ['.js', '.ts'] -const external = _ => /node_modules/.test(_) && !/@swc\/helpers/.test(_) -const plugins = targets => [ - nodeResolve({ - extensions - }), - swc({ - tsconfig: false, - env: { - targets - }, - module: { - type: 'es6' - }, - sourceMaps: true - }) -] - -export default { - input: pkg.exports, - plugins: plugins('defaults and supports es6-module'), - external, - output: [ - { - file: pkg.publishConfig.exports.import, - format: 'es', - sourcemap: true - }, - { - file: pkg.publishConfig.exports.require, - format: 'cjs', - sourcemap: true - } - ] -} diff --git a/sandboxes/bar/index.html b/sandboxes/bar/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/bar/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/bar/index.ts b/sandboxes/bar/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/bar/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/bar/package.json b/sandboxes/bar/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/bar/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/bar/src/App.vue b/sandboxes/bar/src/App.vue deleted file mode 100644 index 239a3ca0..00000000 --- a/sandboxes/bar/src/App.vue +++ /dev/null @@ -1,29 +0,0 @@ -<template> - <Bar :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - Title, - Tooltip, - Legend, - BarElement, - CategoryScale, - LinearScale -} from 'chart.js' -import { Bar } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend) - -export default { - name: 'App', - components: { - Bar - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/bar/src/chartConfig.ts b/sandboxes/bar/src/chartConfig.ts deleted file mode 100644 index 514c046d..00000000 --- a/sandboxes/bar/src/chartConfig.ts +++ /dev/null @@ -1,28 +0,0 @@ -export const data = { - labels: [ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' - ], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 20, 12, 39, 10, 40, 39, 80, 40, 20, 12, 11] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/bar/vite.config.js b/sandboxes/bar/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/bar/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/bubble/index.html b/sandboxes/bubble/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/bubble/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/bubble/index.ts b/sandboxes/bubble/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/bubble/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/bubble/package.json b/sandboxes/bubble/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/bubble/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/bubble/src/App.vue b/sandboxes/bubble/src/App.vue deleted file mode 100644 index 787e5d86..00000000 --- a/sandboxes/bubble/src/App.vue +++ /dev/null @@ -1,27 +0,0 @@ -<template> - <Bubble :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - Tooltip, - Legend, - PointElement, - LinearScale -} from 'chart.js' -import { Bubble } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(LinearScale, PointElement, Tooltip, Legend) - -export default { - name: 'App', - components: { - Bubble - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/bubble/src/chartConfig.ts b/sandboxes/bubble/src/chartConfig.ts deleted file mode 100644 index 72d2811f..00000000 --- a/sandboxes/bubble/src/chartConfig.ts +++ /dev/null @@ -1,51 +0,0 @@ -export const data = { - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [ - { - x: 20, - y: 25, - r: 5 - }, - { - x: 40, - y: 10, - r: 10 - }, - { - x: 30, - y: 22, - r: 30 - } - ] - }, - { - label: 'Data Two', - backgroundColor: '#7C8CF8', - data: [ - { - x: 10, - y: 30, - r: 15 - }, - { - x: 20, - y: 20, - r: 10 - }, - { - x: 15, - y: 8, - r: 30 - } - ] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/bubble/vite.config.js b/sandboxes/bubble/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/bubble/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/custom/index.html b/sandboxes/custom/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/custom/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/custom/index.ts b/sandboxes/custom/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/custom/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/custom/package.json b/sandboxes/custom/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/custom/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/custom/src/App.vue b/sandboxes/custom/src/App.vue deleted file mode 100644 index 9ba2accc..00000000 --- a/sandboxes/custom/src/App.vue +++ /dev/null @@ -1,38 +0,0 @@ -<template> - <LineWithLineChart :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - CategoryScale, - LinearScale, - PointElement, - LineElement, - Title, - Tooltip, - Legend -} from 'chart.js' -import LineWithLineChart from './components/LineWithLineChart.js' -import * as chartConfig from './chartConfig.js' - -ChartJS.register( - CategoryScale, - LinearScale, - PointElement, - LineElement, - Title, - Tooltip, - Legend -) - -export default { - name: 'App', - components: { - LineWithLineChart - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/custom/src/chartConfig.ts b/sandboxes/custom/src/chartConfig.ts deleted file mode 100644 index 9bdbc829..00000000 --- a/sandboxes/custom/src/chartConfig.ts +++ /dev/null @@ -1,18 +0,0 @@ -export const data = { - labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 39, 10, 40, 39, 80, 40] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false, - tooltips: { - intersect: false - } -} diff --git a/sandboxes/custom/src/components/LineWithLineChart.ts b/sandboxes/custom/src/components/LineWithLineChart.ts deleted file mode 100644 index b41135a4..00000000 --- a/sandboxes/custom/src/components/LineWithLineChart.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { createTypedChart } from 'vue-chartjs' -import { LineController } from 'chart.js' - -class LineWithLineController extends LineController { - static override id = 'line-with-line' - - public override draw() { - super.draw() - - if (this.chart?.tooltip && this.chart.tooltip.opacity > 0) { - const ctx = this.chart.ctx - const x = this.chart.tooltip.x - const topY = this.chart.scales.y.top - const bottomY = this.chart.scales.y.bottom - - // draw line - ctx.save() - ctx.beginPath() - ctx.moveTo(x, topY) - ctx.lineTo(x, bottomY) - ctx.lineWidth = 2 - ctx.strokeStyle = '#07C' - ctx.stroke() - ctx.restore() - } - } -} - -const LineWithLineChart = createTypedChart( - 'line-with-line' as 'line', - LineWithLineController -) - -export default LineWithLineChart diff --git a/sandboxes/custom/vite.config.js b/sandboxes/custom/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/custom/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/doughnut/index.html b/sandboxes/doughnut/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/doughnut/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/doughnut/index.ts b/sandboxes/doughnut/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/doughnut/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/doughnut/package.json b/sandboxes/doughnut/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/doughnut/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/doughnut/src/App.vue b/sandboxes/doughnut/src/App.vue deleted file mode 100644 index cfe2fca1..00000000 --- a/sandboxes/doughnut/src/App.vue +++ /dev/null @@ -1,21 +0,0 @@ -<template> - <Doughnut :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js' -import { Doughnut } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(ArcElement, Tooltip, Legend) - -export default { - name: 'App', - components: { - Doughnut - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/doughnut/src/chartConfig.ts b/sandboxes/doughnut/src/chartConfig.ts deleted file mode 100644 index 109fb174..00000000 --- a/sandboxes/doughnut/src/chartConfig.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const data = { - labels: ['VueJs', 'EmberJs', 'ReactJs', 'AngularJs'], - datasets: [ - { - backgroundColor: ['#41B883', '#E46651', '#00D8FF', '#DD1B16'], - data: [40, 20, 80, 10] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/doughnut/vite.config.js b/sandboxes/doughnut/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/doughnut/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/events/index.html b/sandboxes/events/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/events/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/events/index.ts b/sandboxes/events/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/events/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/events/package.json b/sandboxes/events/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/events/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/events/src/App.vue b/sandboxes/events/src/App.vue deleted file mode 100644 index 11e991ce..00000000 --- a/sandboxes/events/src/App.vue +++ /dev/null @@ -1,89 +0,0 @@ -<template> - <Chart - ref="chartRef" - type="bar" - :data="data" - :options="options" - @click="onClick" - /> -</template> - -<script lang="ts"> -import { ref } from 'vue' -import { - Chart as ChartJS, - Title, - Tooltip, - Legend, - BarElement, - CategoryScale, - LinearScale, - InteractionItem -} from 'chart.js' -import { - ChartComponentRef, - Chart, - getDatasetAtEvent, - getElementAtEvent, - getElementsAtEvent -} from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend) - -export default { - name: 'App', - components: { - Chart - }, - setup() { - const datasetAtEvent = (dataset: InteractionItem[]) => { - if (!dataset.length) return - - const datasetIndex = dataset[0].datasetIndex - - console.log('dataset', chartConfig.data.datasets[datasetIndex].label) - } - - const elementAtEvent = (element: InteractionItem[]) => { - if (!element.length) return - - const { datasetIndex, index } = element[0] - - console.log( - 'element', - chartConfig.data.labels[index], - chartConfig.data.datasets[datasetIndex].data[index] - ) - } - - const elementsAtEvent = (elements: InteractionItem[]) => { - if (!elements.length) return - - console.log('elements', elements) - } - - const chartRef = ref<ChartComponentRef>(null) - - const onClick = (event: MouseEvent) => { - const { - value: { chart } - } = chartRef - - if (!chart) { - return - } - - datasetAtEvent(getDatasetAtEvent(chart, event)) - elementAtEvent(getElementAtEvent(chart, event)) - elementsAtEvent(getElementsAtEvent(chart, event)) - } - - return { - chartRef, - onClick, - ...chartConfig - } - } -} -</script> diff --git a/sandboxes/events/src/chartConfig.ts b/sandboxes/events/src/chartConfig.ts deleted file mode 100644 index 514c046d..00000000 --- a/sandboxes/events/src/chartConfig.ts +++ /dev/null @@ -1,28 +0,0 @@ -export const data = { - labels: [ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' - ], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 20, 12, 39, 10, 40, 39, 80, 40, 20, 12, 11] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/events/vite.config.js b/sandboxes/events/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/events/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/line/index.html b/sandboxes/line/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/line/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/line/index.ts b/sandboxes/line/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/line/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/line/package.json b/sandboxes/line/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/line/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/line/src/App.vue b/sandboxes/line/src/App.vue deleted file mode 100644 index d0794b6f..00000000 --- a/sandboxes/line/src/App.vue +++ /dev/null @@ -1,38 +0,0 @@ -<template> - <Line :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - CategoryScale, - LinearScale, - PointElement, - LineElement, - Title, - Tooltip, - Legend -} from 'chart.js' -import { Line } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register( - CategoryScale, - LinearScale, - PointElement, - LineElement, - Title, - Tooltip, - Legend -) - -export default { - name: 'App', - components: { - Line - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/line/src/chartConfig.ts b/sandboxes/line/src/chartConfig.ts deleted file mode 100644 index f82484ec..00000000 --- a/sandboxes/line/src/chartConfig.ts +++ /dev/null @@ -1,15 +0,0 @@ -export const data = { - labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 39, 10, 40, 39, 80, 40] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/line/vite.config.js b/sandboxes/line/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/line/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/pie/index.html b/sandboxes/pie/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/pie/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/pie/index.ts b/sandboxes/pie/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/pie/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/pie/package.json b/sandboxes/pie/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/pie/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/pie/src/App.vue b/sandboxes/pie/src/App.vue deleted file mode 100644 index b6e0b2e3..00000000 --- a/sandboxes/pie/src/App.vue +++ /dev/null @@ -1,21 +0,0 @@ -<template> - <Pie :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js' -import { Pie } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(ArcElement, Tooltip, Legend) - -export default { - name: 'App', - components: { - Pie - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/pie/src/chartConfig.ts b/sandboxes/pie/src/chartConfig.ts deleted file mode 100644 index 109fb174..00000000 --- a/sandboxes/pie/src/chartConfig.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const data = { - labels: ['VueJs', 'EmberJs', 'ReactJs', 'AngularJs'], - datasets: [ - { - backgroundColor: ['#41B883', '#E46651', '#00D8FF', '#DD1B16'], - data: [40, 20, 80, 10] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/pie/vite.config.js b/sandboxes/pie/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/pie/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/polar-area/index.html b/sandboxes/polar-area/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/polar-area/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/polar-area/index.ts b/sandboxes/polar-area/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/polar-area/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/polar-area/package.json b/sandboxes/polar-area/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/polar-area/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/polar-area/src/App.vue b/sandboxes/polar-area/src/App.vue deleted file mode 100644 index e4289c33..00000000 --- a/sandboxes/polar-area/src/App.vue +++ /dev/null @@ -1,27 +0,0 @@ -<template> - <PolarArea :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - RadialLinearScale, - ArcElement, - Tooltip, - Legend -} from 'chart.js' -import { PolarArea } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(RadialLinearScale, ArcElement, Tooltip, Legend) - -export default { - name: 'App', - components: { - PolarArea - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/polar-area/src/chartConfig.ts b/sandboxes/polar-area/src/chartConfig.ts deleted file mode 100644 index 6544d4c7..00000000 --- a/sandboxes/polar-area/src/chartConfig.ts +++ /dev/null @@ -1,36 +0,0 @@ -export const data = { - labels: [ - 'Eating', - 'Drinking', - 'Sleeping', - 'Designing', - 'Coding', - 'Cycling', - 'Running' - ], - datasets: [ - { - label: 'My First dataset', - backgroundColor: 'rgba(179,181,198,0.2)', - pointBackgroundColor: 'rgba(179,181,198,1)', - pointBorderColor: '#fff', - pointHoverBackgroundColor: '#fff', - pointHoverBorderColor: 'rgba(179,181,198,1)', - data: [65, 59, 90, 81, 56, 55, 40] - }, - { - label: 'My Second dataset', - backgroundColor: 'rgba(255,99,132,0.2)', - pointBackgroundColor: 'rgba(255,99,132,1)', - pointBorderColor: '#fff', - pointHoverBackgroundColor: '#fff', - pointHoverBorderColor: 'rgba(255,99,132,1)', - data: [28, 48, 40, 19, 96, 27, 100] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/polar-area/vite.config.js b/sandboxes/polar-area/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/polar-area/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/radar/index.html b/sandboxes/radar/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/radar/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/radar/index.ts b/sandboxes/radar/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/radar/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/radar/package.json b/sandboxes/radar/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/radar/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/radar/src/App.vue b/sandboxes/radar/src/App.vue deleted file mode 100644 index b0809877..00000000 --- a/sandboxes/radar/src/App.vue +++ /dev/null @@ -1,36 +0,0 @@ -<template> - <Radar :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - RadialLinearScale, - PointElement, - LineElement, - Filler, - Tooltip, - Legend -} from 'chart.js' -import { Radar } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register( - RadialLinearScale, - PointElement, - LineElement, - Filler, - Tooltip, - Legend -) - -export default { - name: 'App', - components: { - Radar - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/radar/src/chartConfig.ts b/sandboxes/radar/src/chartConfig.ts deleted file mode 100644 index f436aadd..00000000 --- a/sandboxes/radar/src/chartConfig.ts +++ /dev/null @@ -1,38 +0,0 @@ -export const data = { - labels: [ - 'Eating', - 'Drinking', - 'Sleeping', - 'Designing', - 'Coding', - 'Cycling', - 'Running' - ], - datasets: [ - { - label: 'My First dataset', - backgroundColor: 'rgba(179,181,198,0.2)', - borderColor: 'rgba(179,181,198,1)', - pointBackgroundColor: 'rgba(179,181,198,1)', - pointBorderColor: '#fff', - pointHoverBackgroundColor: '#fff', - pointHoverBorderColor: 'rgba(179,181,198,1)', - data: [65, 59, 90, 81, 56, 55, 40] - }, - { - label: 'My Second dataset', - backgroundColor: 'rgba(255,99,132,0.2)', - borderColor: 'rgba(255,99,132,1)', - pointBackgroundColor: 'rgba(255,99,132,1)', - pointBorderColor: '#fff', - pointHoverBackgroundColor: '#fff', - pointHoverBorderColor: 'rgba(255,99,132,1)', - data: [28, 48, 40, 19, 96, 27, 100] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/radar/vite.config.js b/sandboxes/radar/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/radar/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/reactive/index.html b/sandboxes/reactive/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/reactive/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/reactive/index.ts b/sandboxes/reactive/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/reactive/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/reactive/package.json b/sandboxes/reactive/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/reactive/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/reactive/src/App.vue b/sandboxes/reactive/src/App.vue deleted file mode 100644 index cf083e99..00000000 --- a/sandboxes/reactive/src/App.vue +++ /dev/null @@ -1,32 +0,0 @@ -<template> - <Bar :data="data" :options="options" /> -</template> - -<script lang="ts" setup> -import { ref, onMounted } from 'vue' -import { - Chart as ChartJS, - Title, - Tooltip, - Legend, - BarElement, - CategoryScale, - LinearScale, - ChartData -} from 'chart.js' -import { Bar } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -const options = chartConfig.options -const data = ref<ChartData<'bar'>>({ - datasets: [] -}) - -onMounted(() => { - setInterval(() => { - data.value = chartConfig.randomData() - }, 3000) -}) -</script> diff --git a/sandboxes/reactive/src/chartConfig.ts b/sandboxes/reactive/src/chartConfig.ts deleted file mode 100644 index 1eb2f6c6..00000000 --- a/sandboxes/reactive/src/chartConfig.ts +++ /dev/null @@ -1,45 +0,0 @@ -function getRandomInt() { - return Math.floor(Math.random() * (50 - 5 + 1)) + 5 -} - -export const randomData = () => ({ - labels: [ - 'January' + getRandomInt(), - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' - ], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [ - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt(), - getRandomInt() - ] - } - ] -}) - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/reactive/vite.config.js b/sandboxes/reactive/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/reactive/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/scatter/index.html b/sandboxes/scatter/index.html deleted file mode 100644 index 087b841f..00000000 --- a/sandboxes/scatter/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <script type="module" defer src="./index.ts"></script> - </head> - <body> - <div id="app"></div> - </body> -</html> diff --git a/sandboxes/scatter/index.ts b/sandboxes/scatter/index.ts deleted file mode 100644 index 52c7b68b..00000000 --- a/sandboxes/scatter/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './src/App.vue' - -createApp(App).mount('#app') diff --git a/sandboxes/scatter/package.json b/sandboxes/scatter/package.json deleted file mode 100644 index 3376e5c0..00000000 --- a/sandboxes/scatter/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "module", - "scripts": { - "start": "vite" - }, - "dependencies": { - "chart.js": "^4.0.0", - "vue": "^3.2.31", - "vue-chartjs": "^5.0.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.3", - "vite": "^4.0.0" - } -} diff --git a/sandboxes/scatter/src/App.vue b/sandboxes/scatter/src/App.vue deleted file mode 100644 index 1ed9bd44..00000000 --- a/sandboxes/scatter/src/App.vue +++ /dev/null @@ -1,28 +0,0 @@ -<template> - <Scatter :data="data" :options="options" /> -</template> - -<script lang="ts"> -import { - Chart as ChartJS, - LinearScale, - PointElement, - LineElement, - Tooltip, - Legend -} from 'chart.js' -import { Scatter } from 'vue-chartjs' -import * as chartConfig from './chartConfig.js' - -ChartJS.register(LinearScale, PointElement, LineElement, Tooltip, Legend) - -export default { - name: 'App', - components: { - Scatter - }, - data() { - return chartConfig - } -} -</script> diff --git a/sandboxes/scatter/src/chartConfig.ts b/sandboxes/scatter/src/chartConfig.ts deleted file mode 100644 index 5c43998a..00000000 --- a/sandboxes/scatter/src/chartConfig.ts +++ /dev/null @@ -1,65 +0,0 @@ -export const data = { - datasets: [ - { - label: 'Scatter Dataset 1', - fill: false, - borderColor: '#f87979', - backgroundColor: '#f87979', - data: [ - { - x: -2, - y: 4 - }, - { - x: -1, - y: 1 - }, - { - x: 0, - y: 0 - }, - { - x: 1, - y: 1 - }, - { - x: 2, - y: 4 - } - ] - }, - { - label: 'Scatter Dataset 2', - fill: false, - borderColor: '#7acbf9', - backgroundColor: '#7acbf9', - data: [ - { - x: -2, - y: -4 - }, - { - x: -1, - y: -1 - }, - { - x: 0, - y: 1 - }, - { - x: 1, - y: -1 - }, - { - x: 2, - y: -4 - } - ] - } - ] -} - -export const options = { - responsive: true, - maintainAspectRatio: false -} diff --git a/sandboxes/scatter/vite.config.js b/sandboxes/scatter/vite.config.js deleted file mode 100644 index 2e3d2576..00000000 --- a/sandboxes/scatter/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()] -}) diff --git a/sandboxes/tsconfig.json b/sandboxes/tsconfig.json deleted file mode 100644 index dabfe46e..00000000 --- a/sandboxes/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "vue-chartjs": ["../src"] - } - }, - "include": ["."] -} diff --git a/src/chart.ts b/src/chart.ts deleted file mode 100644 index f77b10ed..00000000 --- a/src/chart.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { Chart as ChartJS } from 'chart.js' -import { - defineComponent, - h, - nextTick, - onUnmounted, - onMounted, - ref, - shallowRef, - toRaw, - watch -} from 'vue' - -import type { ChartComponent } from './types.js' -import { Props } from './props.js' -import { - cloneData, - setLabels, - setDatasets, - setOptions, - toRawIfProxy, - cloneProxy -} from './utils.js' - -export const Chart = defineComponent({ - props: Props, - setup(props, { expose, slots }) { - const canvasRef = ref<HTMLCanvasElement | null>(null) - const chartRef = shallowRef<ChartJS | null>(null) - - expose({ chart: chartRef }) - - const renderChart = () => { - if (!canvasRef.value) return - - const { type, data, options, plugins, datasetIdKey } = props - const clonedData = cloneData(data, datasetIdKey) - const proxiedData = cloneProxy(clonedData, data) - - chartRef.value = new ChartJS(canvasRef.value, { - type, - data: proxiedData, - options: { ...options }, - plugins - }) - } - - const destroyChart = () => { - const chart = toRaw(chartRef.value) - - if (chart) { - if (props.destroyDelay > 0) { - setTimeout(() => { - chart.destroy() - chartRef.value = null - }, props.destroyDelay) - } else { - chart.destroy() - chartRef.value = null - } - } - } - - const update = (chart: ChartJS) => { - chart.update(props.updateMode) - } - - onMounted(renderChart) - - onUnmounted(destroyChart) - - watch( - [() => props.options, () => props.data], - ( - [nextOptionsProxy, nextDataProxy], - [prevOptionsProxy, prevDataProxy] - ) => { - const chart = toRaw(chartRef.value) - - if (!chart) { - return - } - - let shouldUpdate = false - - if (nextOptionsProxy) { - const nextOptions = toRawIfProxy(nextOptionsProxy) - const prevOptions = toRawIfProxy(prevOptionsProxy) - - if (nextOptions && nextOptions !== prevOptions) { - setOptions(chart, nextOptions) - shouldUpdate = true - } - } - - if (nextDataProxy) { - const nextLabels = toRawIfProxy(nextDataProxy.labels) - const prevLabels = toRawIfProxy(prevDataProxy.labels) - const nextDatasets = toRawIfProxy(nextDataProxy.datasets) - const prevDatasets = toRawIfProxy(prevDataProxy.datasets) - - if (nextLabels !== prevLabels) { - setLabels(chart.config.data, nextLabels) - shouldUpdate = true - } - - if (nextDatasets && nextDatasets !== prevDatasets) { - setDatasets(chart.config.data, nextDatasets, props.datasetIdKey) - shouldUpdate = true - } - } - - if (shouldUpdate) { - nextTick(() => { - update(chart) - }) - } - }, - { deep: true } - ) - - return () => { - return h( - 'canvas', - { - role: 'img', - ariaLabel: props.ariaLabel, - ariaDescribedby: props.ariaDescribedby, - ref: canvasRef - }, - [h('p', {}, [slots.default ? slots.default() : ''])] - ) - } - } -}) as ChartComponent diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 7d85bfff..00000000 --- a/src/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Chart } from './chart.js' -import { - createTypedChart, - Bar, - Doughnut, - Line, - Pie, - PolarArea, - Radar, - Bubble, - Scatter -} from './typedCharts.js' - -export type { ChartProps, ChartComponentRef } from './types.js' -export { - getDatasetAtEvent, - getElementAtEvent, - getElementsAtEvent -} from './utils.js' -export { - Chart, - createTypedChart, - Bar, - Doughnut, - Line, - Pie, - PolarArea, - Radar, - Bubble, - Scatter -} diff --git a/src/props.ts b/src/props.ts deleted file mode 100644 index 1a2fec00..00000000 --- a/src/props.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { PropType } from 'vue' -import type { - ChartType, - ChartData, - ChartOptions, - Plugin, - UpdateMode -} from 'chart.js' - -export const CommonProps = { - data: { - type: Object as PropType<ChartData>, - required: true - }, - options: { - type: Object as PropType<ChartOptions>, - default: () => ({}) - }, - plugins: { - type: Array as PropType<Plugin[]>, - default: () => [] - }, - datasetIdKey: { - type: String, - default: 'label' - }, - updateMode: { - type: String as PropType<UpdateMode>, - default: undefined - } -} as const - -export const A11yProps = { - ariaLabel: { - type: String - }, - ariaDescribedby: { - type: String - } -} as const - -export const Props = { - type: { - type: String as PropType<ChartType>, - required: true - }, - destroyDelay: { - type: Number, - default: 0 // No delay by default - }, - ...CommonProps, - ...A11yProps -} as const diff --git a/src/typedCharts.ts b/src/typedCharts.ts deleted file mode 100644 index 60e94cfd..00000000 --- a/src/typedCharts.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { defineComponent, shallowRef, h } from 'vue' -import type { ChartType, ChartComponentLike, DefaultDataPoint } from 'chart.js' -import { - Chart as ChartJS, - BarController, - BubbleController, - DoughnutController, - LineController, - PieController, - PolarAreaController, - RadarController, - ScatterController -} from 'chart.js' -import type { DistributiveArray } from 'chart.js/dist/types/utils' -import type { TypedChartComponent, ChartComponentRef } from './types.js' -import { CommonProps } from './props.js' -import { Chart } from './chart.js' -import { compatProps } from './utils.js' - -export function createTypedChart< - TType extends ChartType = ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown ->( - type: TType, - registerables: ChartComponentLike -): TypedChartComponent<TType, TData, TLabel> { - ChartJS.register(registerables) - - return defineComponent({ - props: CommonProps, - setup(props, { expose }) { - const ref = shallowRef<ChartJS | null>(null) - const reforwardRef = (chartRef: ChartComponentRef) => { - ref.value = chartRef?.chart - } - - expose({ chart: ref }) - - return () => { - return h( - Chart, - compatProps( - { - ref: reforwardRef as any - }, - { - type, - ...props - } - ) - ) - } - } - }) as any -} - -export interface ExtendedDataPoint { - [key: string]: string | number | null | ExtendedDataPoint -} - -export const Bar = /* #__PURE__ */ createTypedChart< - 'bar', - DefaultDataPoint<'bar'> | DistributiveArray<ExtendedDataPoint> ->('bar', BarController) - -export const Doughnut = /* #__PURE__ */ createTypedChart( - 'doughnut', - DoughnutController -) - -export const Line = /* #__PURE__ */ createTypedChart('line', LineController) - -export const Pie = /* #__PURE__ */ createTypedChart('pie', PieController) - -export const PolarArea = /* #__PURE__ */ createTypedChart( - 'polarArea', - PolarAreaController -) - -export const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController) - -export const Bubble = /* #__PURE__ */ createTypedChart( - 'bubble', - BubbleController -) - -export const Scatter = /* #__PURE__ */ createTypedChart( - 'scatter', - ScatterController -) diff --git a/src/types.ts b/src/types.ts deleted file mode 100644 index 47accd65..00000000 --- a/src/types.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { DefineComponent } from 'vue' -import type { - Chart as ChartJS, - ChartType, - ChartData, - ChartOptions, - DefaultDataPoint, - Plugin, - UpdateMode -} from 'chart.js' - -export interface ChartProps< - TType extends ChartType = ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown -> { - /** - * Chart.js chart type - */ - type: TType - /** - * The data object that is passed into the Chart.js chart - * @see https://www.chartjs.org/docs/latest/getting-started/ - */ - data: ChartData<TType, TData, TLabel> - /** - * The options object that is passed into the Chart.js chart - * @see https://www.chartjs.org/docs/latest/general/options.html - * @default {} - */ - options?: ChartOptions<TType> - /** - * The plugins array that is passed into the Chart.js chart - * @see https://www.chartjs.org/docs/latest/developers/plugins.html - * @default [] - */ - plugins?: Plugin<TType>[] - /** - * Key name to identificate dataset - * @default 'label' - */ - datasetIdKey?: string - /** - * A mode string to indicate transition configuration should be used. - * @see https://www.chartjs.org/docs/latest/developers/api.html#update-mode - */ - updateMode?: UpdateMode -} - -export interface ChartComponentRef< - TType extends ChartType = ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown -> { - chart: ChartJS<TType, TData, TLabel> | null -} - -export type ChartComponent = DefineComponent<ChartProps> - -export type TypedChartComponent< - TType extends ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown -> = DefineComponent<Omit<ChartProps<TType, TData, TLabel>, 'type'>> diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index 0f27da4b..00000000 --- a/src/utils.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { isProxy, toRaw, version } from 'vue' -import type { - Chart, - ChartType, - ChartData, - ChartDataset, - ChartOptions, - DefaultDataPoint -} from 'chart.js' - -export const compatProps = - version[0] === '2' - ? <I extends {}, T extends {}>(internals: I, props: T) => - Object.assign(internals, { attrs: props }) as unknown as I & T - : <I extends {}, T extends {}>(internals: I, props: T) => - Object.assign(internals, props) - -export function toRawIfProxy<T>(obj: T) { - return isProxy(obj) ? toRaw(obj) : obj -} - -export function cloneProxy<T extends object>(obj: T, src = obj) { - return isProxy(src) ? new Proxy(obj, {}) : obj -} - -export function setOptions< - TType extends ChartType = ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown ->(chart: Chart<TType, TData, TLabel>, nextOptions: ChartOptions<TType>) { - const options = chart.options - - if (options && nextOptions) { - Object.assign(options, nextOptions) - } -} - -export function setLabels< - TType extends ChartType = ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown ->( - currentData: ChartData<TType, TData, TLabel>, - nextLabels: TLabel[] | undefined -) { - currentData.labels = nextLabels -} - -export function setDatasets< - TType extends ChartType = ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown ->( - currentData: ChartData<TType, TData, TLabel>, - nextDatasets: ChartDataset<TType, TData>[], - datasetIdKey: string -) { - const addedDatasets: ChartDataset<TType, TData>[] = [] - - currentData.datasets = nextDatasets.map( - (nextDataset: Record<string, unknown>) => { - // given the new set, find it's current match - const currentDataset = currentData.datasets.find( - (dataset: Record<string, unknown>) => - dataset[datasetIdKey] === nextDataset[datasetIdKey] - ) - - // There is no original to update, so simply add new one - if ( - !currentDataset || - !nextDataset.data || - addedDatasets.includes(currentDataset) - ) { - return { ...nextDataset } as ChartDataset<TType, TData> - } - - addedDatasets.push(currentDataset) - - Object.assign(currentDataset, nextDataset) - - return currentDataset - } - ) -} - -export function cloneData< - TType extends ChartType = ChartType, - TData = DefaultDataPoint<TType>, - TLabel = unknown ->(data: ChartData<TType, TData, TLabel>, datasetIdKey: string) { - const nextData: ChartData<TType, TData, TLabel> = { - labels: [], - datasets: [] - } - - setLabels(nextData, data.labels) - setDatasets(nextData, data.datasets, datasetIdKey) - - return nextData -} - -/** - * Get dataset from mouse click event - * @param chart - Chart.js instance - * @param event - Mouse click event - * @returns Dataset - */ -export function getDatasetAtEvent(chart: Chart, event: MouseEvent) { - return chart.getElementsAtEventForMode( - event, - 'dataset', - { intersect: true }, - false - ) -} - -/** - * Get single dataset element from mouse click event - * @param chart - Chart.js instance - * @param event - Mouse click event - * @returns Dataset - */ -export function getElementAtEvent(chart: Chart, event: MouseEvent) { - return chart.getElementsAtEventForMode( - event, - 'nearest', - { intersect: true }, - false - ) -} - -/** - * Get all dataset elements from mouse click event - * @param chart - Chart.js instance - * @param event - Mouse click event - * @returns Dataset - */ -export function getElementsAtEvent(chart: Chart, event: MouseEvent) { - return chart.getElementsAtEventForMode( - event, - 'index', - { intersect: true }, - false - ) -} diff --git a/stories/bar.stories.ts b/stories/bar.stories.ts deleted file mode 100644 index ec53afc9..00000000 --- a/stories/bar.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { Bar } from '../src/index.js' -import * as barChartConfig from '../sandboxes/bar/src/chartConfig.js' - -export default { - title: 'BarChart', - component: Bar, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Bar }, - template: '<Bar v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'bar-chart', - width: 400, - height: 400, - ...barChartConfig -} diff --git a/stories/bubble.stories.ts b/stories/bubble.stories.ts deleted file mode 100644 index 3a1c5dd4..00000000 --- a/stories/bubble.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { Bubble } from '../src/index.js' -import * as bubbleChartConfig from '../sandboxes/bubble/src/chartConfig.js' - -export default { - title: 'BubbleChart', - component: Bubble, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Bubble }, - template: '<Bubble v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'bar-chart', - width: 400, - height: 400, - ...bubbleChartConfig -} diff --git a/stories/chart.stories.ts b/stories/chart.stories.ts deleted file mode 100644 index df91040a..00000000 --- a/stories/chart.stories.ts +++ /dev/null @@ -1,101 +0,0 @@ -import 'chart.js/auto' -import type { InteractionItem } from 'chart.js' -import { ref } from 'vue' -import { - ChartComponentRef, - Chart, - getDatasetAtEvent, - getElementAtEvent, - getElementsAtEvent -} from '../src/index.js' -import * as barChartConfig from '../sandboxes/bar/src/chartConfig.js' - -export default { - title: 'Chart', - component: Chart, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Chart }, - template: '<Chart v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'bar-chart', - type: 'bar', - width: 400, - height: 400, - ...barChartConfig -} - -export function Events(args) { - return { - components: { Chart }, - template: '<Chart ref="chartRef" @click="onClick" v-bind="args" />', - setup() { - const datasetAtEvent = (dataset: InteractionItem[]) => { - if (!dataset.length) return - - const datasetIndex = dataset[0].datasetIndex - - console.log('dataset', barChartConfig.data.datasets[datasetIndex].label) - } - - const elementAtEvent = (element: InteractionItem[]) => { - if (!element.length) return - - const { datasetIndex, index } = element[0] - - console.log( - 'element', - barChartConfig.data.labels[index], - barChartConfig.data.datasets[datasetIndex].data[index] - ) - } - - const elementsAtEvent = (elements: InteractionItem[]) => { - if (!elements.length) return - - console.log('elements', elements) - } - - const chartRef = ref<ChartComponentRef>(null) - - const onClick = (event: MouseEvent) => { - const { - value: { chart } - } = chartRef - - if (!chart) { - return - } - - datasetAtEvent(getDatasetAtEvent(chart, event)) - elementAtEvent(getElementAtEvent(chart, event)) - elementsAtEvent(getElementsAtEvent(chart, event)) - } - - return { - chartRef, - args, - onClick - } - } - } -} - -Events.args = { - id: 'bar-chart', - type: 'bar', - width: 400, - height: 400, - ...barChartConfig -} diff --git a/stories/custom.stories.ts b/stories/custom.stories.ts deleted file mode 100644 index cda760fa..00000000 --- a/stories/custom.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import LineWithLineChart from '../sandboxes/custom/src/components/LineWithLineChart.js' -import * as customChartConfig from '../sandboxes/custom/src/chartConfig.js' - -export default { - title: 'CustomChart', - component: LineWithLineChart, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { LineWithLineChart }, - template: '<LineWithLineChart v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'custom-chart', - width: 400, - height: 400, - ...customChartConfig -} diff --git a/stories/doughnut.stories.ts b/stories/doughnut.stories.ts deleted file mode 100644 index edbafc42..00000000 --- a/stories/doughnut.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { Doughnut } from '../src/index.js' -import * as doughnutChartConfig from '../sandboxes/doughnut/src/chartConfig.js' - -export default { - title: 'DoughnutChart', - component: Doughnut, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Doughnut }, - template: '<Doughnut v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'doughnut-chart', - width: 400, - height: 400, - ...doughnutChartConfig -} diff --git a/stories/line.stories.ts b/stories/line.stories.ts deleted file mode 100644 index 2a209046..00000000 --- a/stories/line.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { Line } from '../src/index.js' -import * as lineChartConfig from '../sandboxes/line/src/chartConfig.js' - -export default { - title: 'LineChart', - component: Line, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Line }, - template: '<Line v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'line-chart', - width: 400, - height: 400, - ...lineChartConfig -} diff --git a/stories/pie.stories.ts b/stories/pie.stories.ts deleted file mode 100644 index ebf42dbc..00000000 --- a/stories/pie.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { Pie } from '../src/index.js' -import * as pieChartConfig from '../sandboxes/pie/src/chartConfig.js' - -export default { - title: 'PieChart', - component: Pie, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Pie }, - template: '<Pie v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'pie-chart', - width: 400, - height: 400, - ...pieChartConfig -} diff --git a/stories/polarArea.stories.ts b/stories/polarArea.stories.ts deleted file mode 100644 index 7c1ba82a..00000000 --- a/stories/polarArea.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { PolarArea } from '../src/index.js' -import * as polarAreaChartConfig from '../sandboxes/polar-area/src/chartConfig.js' - -export default { - title: 'PolarAreaChart', - component: PolarArea, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { PolarArea }, - template: '<PolarArea v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'polar-area-chart', - width: 400, - height: 400, - ...polarAreaChartConfig -} diff --git a/stories/radar.stories.ts b/stories/radar.stories.ts deleted file mode 100644 index 29615d46..00000000 --- a/stories/radar.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { Radar } from '../src/index.js' -import * as radarChartConfig from '../sandboxes/radar/src/chartConfig.js' - -export default { - title: 'RadarChart', - component: Radar, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Radar }, - template: '<Radar v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'radar-chart', - width: 400, - height: 400, - ...radarChartConfig -} diff --git a/stories/reactive.stories.ts b/stories/reactive.stories.ts deleted file mode 100644 index e6b01208..00000000 --- a/stories/reactive.stories.ts +++ /dev/null @@ -1,43 +0,0 @@ -import 'chart.js/auto' -import { ref, onMounted } from 'vue' -import { Bar } from '../src/index.js' -import * as reactiveChartConfig from '../sandboxes/reactive/src/chartConfig.js' - -export default { - title: 'Reactive', - component: Bar, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Bar }, - template: '<Bar v-bind="args" :options="options" :data="data" />', - setup() { - const options = reactiveChartConfig.options - const data = ref<any>({ - datasets: [] - }) - - onMounted(() => { - setInterval(() => { - data.value = reactiveChartConfig.randomData() - }, 3000) - }) - - return { - args, - options, - data - } - } - } -} - -Default.args = { - id: 'reactive-chart', - width: 400, - height: 400 -} diff --git a/stories/scatter.stories.ts b/stories/scatter.stories.ts deleted file mode 100644 index e51b5f59..00000000 --- a/stories/scatter.stories.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'chart.js/auto' -import { Scatter } from '../src/index.js' -import * as scatterChartConfig from '../sandboxes/scatter/src/chartConfig.js' - -export default { - title: 'ScatterChart', - component: Scatter, - parameters: { - layout: 'centered' - } -} - -export function Default(args) { - return { - components: { Scatter }, - template: '<Scatter v-bind="args" />', - setup() { - return { args } - } - } -} - -Default.args = { - id: 'scatter-chart', - width: 400, - height: 400, - ...scatterChartConfig -} diff --git a/test/Bar.spec.ts b/test/Bar.spec.ts deleted file mode 100644 index c2b570a3..00000000 --- a/test/Bar.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { Bar } from '../src/index.js' -import * as barChartConfig from '../sandboxes/bar/src/chartConfig.js' - -describe('BarChart', () => { - it('should render a canvas', () => { - const wrapper = mount(Bar, { - props: barChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(Bar, { - props: { - id: 'bar-chart-id', - ...barChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('bar-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(Bar, { - props: { - plugins: [testPlugin], - ...barChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/Bubble.spec.ts b/test/Bubble.spec.ts deleted file mode 100644 index dc5cf60c..00000000 --- a/test/Bubble.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { Bubble } from '../src/index.js' -import * as bubbleChartConfig from '../sandboxes/bubble/src/chartConfig.js' - -describe('BubbleChart', () => { - it('should render a canvas', () => { - const wrapper = mount(Bubble, { - props: bubbleChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(Bubble, { - props: { - id: 'bubble-chart-id', - ...bubbleChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('bubble-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(Bubble, { - props: { - plugins: [testPlugin], - ...bubbleChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/Doughnut.spec.ts b/test/Doughnut.spec.ts deleted file mode 100644 index fa4af99d..00000000 --- a/test/Doughnut.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { Doughnut } from '../src/index.js' -import * as doughnutChartConfig from '../sandboxes/doughnut/src/chartConfig.js' - -describe('DoughnutChart', () => { - it('should render a canvas', () => { - const wrapper = mount(Doughnut, { - props: doughnutChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(Doughnut, { - props: { - id: 'doughnut-chart-id', - ...doughnutChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('doughnut-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(Doughnut, { - props: { - plugins: [testPlugin], - ...doughnutChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/Line.spec.ts b/test/Line.spec.ts deleted file mode 100644 index 81b4a7a2..00000000 --- a/test/Line.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { Line } from '../src/index.js' -import * as lineChartConfig from '../sandboxes/line/src/chartConfig.js' - -describe('LineChart', () => { - it('should render a canvas', () => { - const wrapper = mount(Line, { - props: lineChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(Line, { - props: { - id: 'line-chart-id', - ...lineChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('line-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(Line, { - props: { - plugins: [testPlugin], - ...lineChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/Pie.spec.ts b/test/Pie.spec.ts deleted file mode 100644 index 0f19ceb3..00000000 --- a/test/Pie.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { Pie } from '../src/index.js' -import * as pieChartConfig from '../sandboxes/pie/src/chartConfig.js' - -describe('PieChart', () => { - it('should render a canvas', () => { - const wrapper = mount(Pie, { - props: pieChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(Pie, { - props: { - id: 'pie-chart-id', - ...pieChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('pie-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(Pie, { - props: { - plugins: [testPlugin], - ...pieChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/PolarArea.spec.ts b/test/PolarArea.spec.ts deleted file mode 100644 index e673d07b..00000000 --- a/test/PolarArea.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { PolarArea } from '../src/index.js' -import * as polarAreaChartConfig from '../sandboxes/polar-area/src/chartConfig.js' - -describe('PolarAreaChart', () => { - it('should render a canvas', () => { - const wrapper = mount(PolarArea, { - props: polarAreaChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(PolarArea, { - props: { - id: 'polar-area-chart-id', - ...polarAreaChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('polar-area-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(PolarArea, { - props: { - plugins: [testPlugin], - ...polarAreaChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/Radar.spec.ts b/test/Radar.spec.ts deleted file mode 100644 index 2e5b56b5..00000000 --- a/test/Radar.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { Radar } from '../src/index.js' -import * as radarChartConfig from '../sandboxes/radar/src/chartConfig.js' - -describe('RadarChart', () => { - it('should render a canvas', () => { - const wrapper = mount(Radar, { - props: radarChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(Radar, { - props: { - id: 'radar-chart-id', - ...radarChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('radar-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(Radar, { - props: { - plugins: [testPlugin], - ...radarChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/Scatter.spec.ts b/test/Scatter.spec.ts deleted file mode 100644 index 391825ee..00000000 --- a/test/Scatter.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { mount } from '@vue/test-utils' -import { Scatter } from '../src/index.js' -import * as scatterChartConfig from '../sandboxes/scatter/src/chartConfig.js' - -describe('ScatterChart', () => { - it('should render a canvas', () => { - const wrapper = mount(Scatter, { - props: scatterChartConfig as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('') - }) - - it('should change id based on prop', () => { - const wrapper = mount(Scatter, { - props: { - id: 'scatter-chart-id', - ...scatterChartConfig - } as any - }) - - const canvas = wrapper.find('canvas') - - expect(canvas.exists()).toBe(true) - expect(canvas.element.id).toBe('scatter-chart-id') - }) - - it('should add inline plugins based on prop', () => { - const testPlugin = { - id: 'test' - } - - const wrapper = mount(Scatter, { - props: { - plugins: [testPlugin], - ...scatterChartConfig - } as any - }) - - expect(wrapper.props().plugins.length).toEqual(1) - }) -}) diff --git a/test/setup.js b/test/setup.js deleted file mode 100644 index 8d407511..00000000 --- a/test/setup.js +++ /dev/null @@ -1,18 +0,0 @@ -/* eslint-disable */ -import 'vitest-canvas-mock' - -class ResizeObserver { - observe() {} - unobserve() {} - disconnect() {} -} - -window.ResizeObserver = ResizeObserver - -class MutationObserver { - disconnect() {} - unobserve() {} - observe() {} -} - -window.MutationObserver = MutationObserver diff --git a/test/types.test-d.ts b/test/types.test-d.ts deleted file mode 100644 index a3bb41dc..00000000 --- a/test/types.test-d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { h } from 'vue' -import { expectError } from 'tsd' -import type { Plugin } from 'chart.js' - -import { Bar, Radar, Scatter, Doughnut } from '../src/index.js' - -const data = { - datasets: [] -} - -const testPlugin = { - id: 'test' -} - -/** - * Should check type-specific props - */ - -h(Radar, { - data, - plugins: [] -}) - -h(Scatter, { - data, - plugins: [] -}) - -h(Bar, { - data, - options: {} -}) - -expectError( - h(Scatter, { - data, - plugins: [testPlugin] as Plugin<'bubble'>[] - }) -) - -/** - * Should check type-specific options - */ - -h(Doughnut, { - data, - options: { - cutout: '75%' - } -}) - -expectError( - h(Scatter, { - data, - options: { - cutout: '75%' - } - }) -) diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 99b14f3d..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "compilerOptions": { - /* Type Checking */ - "strict": true, - "strictBindCallApply": true, - "noFallthroughCasesInSwitch": true, - "noImplicitOverride": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - /* Modules */ - "baseUrl": ".", - "module": "ESNext", - "moduleResolution": "Node", // restore to "NodeNext" after Chart.js update - "resolveJsonModule": true, - /* Emit */ - "declaration": true, - "declarationMap": true, - "importsNotUsedAsValues": "error", - "inlineSourceMap": true, - "outDir": "dist", - /* Interop Constraints */ - "allowSyntheticDefaultImports": true, - "isolatedModules": true, - /* Language and Environment */ - "lib": [ - "dom", - "esnext" - ], - "target": "ESNext", - /* Completeness */ - "skipLibCheck": true - }, - "include": [ - "src" - ], - "exclude": [ - "dist" - ] -} diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index 071eb2ef..00000000 --- a/vite.config.js +++ /dev/null @@ -1,16 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -export default defineConfig({ - plugins: [vue()], - test: { - environment: 'jsdom', - setupFiles: ['test/setup.js'], - deps: { - inline: ['vitest-canvas-mock'] - }, - coverage: { - reporter: ['lcovonly', 'text'] - } - } -}) diff --git a/assets/vue-chartjs.png b/vue-chartjs.png similarity index 100% rename from assets/vue-chartjs.png rename to vue-chartjs.png diff --git a/website/package.json b/website/package.json deleted file mode 100644 index b4963005..00000000 --- a/website/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "website", - "version": "0.0.0", - "private": true, - "type": "module", - "scripts": { - "dev": "vitepress dev src", - "build": "vitepress build src" - }, - "devDependencies": { - "vitepress": "^1.4.3" - } -} diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml deleted file mode 100644 index 4c09ae13..00000000 --- a/website/pnpm-lock.yaml +++ /dev/null @@ -1,1503 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - vitepress: - specifier: ^1.4.3 - version: 1.4.3(@algolia/client-search@4.24.0)(postcss@8.4.47)(search-insights@2.17.2)(typescript@5.6.3) - -packages: - - '@algolia/autocomplete-core@1.9.3': - resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} - - '@algolia/autocomplete-plugin-algolia-insights@1.9.3': - resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} - peerDependencies: - search-insights: '>= 1 < 3' - - '@algolia/autocomplete-preset-algolia@1.9.3': - resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/autocomplete-shared@1.9.3': - resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - - '@algolia/cache-browser-local-storage@4.24.0': - resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} - - '@algolia/cache-common@4.24.0': - resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} - - '@algolia/cache-in-memory@4.24.0': - resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - - '@algolia/client-account@4.24.0': - resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} - - '@algolia/client-analytics@4.24.0': - resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - - '@algolia/client-common@4.24.0': - resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - - '@algolia/client-personalization@4.24.0': - resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - - '@algolia/client-search@4.24.0': - resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - - '@algolia/logger-common@4.24.0': - resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} - - '@algolia/logger-console@4.24.0': - resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - - '@algolia/recommend@4.24.0': - resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - - '@algolia/requester-browser-xhr@4.24.0': - resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - - '@algolia/requester-common@4.24.0': - resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - - '@algolia/requester-node-http@4.24.0': - resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - - '@algolia/transporter@4.24.0': - resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} - - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/types@7.26.0': - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} - engines: {node: '>=6.9.0'} - - '@docsearch/css@3.6.2': - resolution: {integrity: sha512-vKNZepO2j7MrYBTZIGXvlUOIR+v9KRf70FApRgovWrj3GTs1EITz/Xb0AOlm1xsQBp16clVZj1SY/qaOJbQtZw==} - - '@docsearch/js@3.6.2': - resolution: {integrity: sha512-pS4YZF+VzUogYrkblCucQ0Oy2m8Wggk8Kk7lECmZM60hTbaydSIhJTTiCrmoxtBqV8wxORnOqcqqOfbmkkQEcA==} - - '@docsearch/react@3.6.2': - resolution: {integrity: sha512-rtZce46OOkVflCQH71IdbXSFK+S8iJZlUF56XBW5rIgx/eG5qoomC7Ag3anZson1bBac/JFQn7XOBfved/IMRA==} - 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 - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - 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-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - 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-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - 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-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - 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-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - 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-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - 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-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - 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/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - 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-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@rollup/rollup-android-arm-eabi@4.24.3': - resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.24.3': - resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.24.3': - resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.24.3': - resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.24.3': - resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.24.3': - resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.24.3': - resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.24.3': - resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.24.3': - resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.24.3': - resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': - resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.24.3': - resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.24.3': - resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.24.3': - resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.24.3': - resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.24.3': - resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.24.3': - resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.24.3': - resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==} - cpu: [x64] - os: [win32] - - '@shikijs/core@1.22.2': - resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} - - '@shikijs/engine-javascript@1.22.2': - resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} - - '@shikijs/engine-oniguruma@1.22.2': - resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} - - '@shikijs/transformers@1.22.2': - resolution: {integrity: sha512-8f78OiBa6pZDoZ53lYTmuvpFPlWtevn23bzG+azpPVvZg7ITax57o/K3TC91eYL3OMJOO0onPbgnQyZjRos8XQ==} - - '@shikijs/types@1.22.2': - resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} - - '@shikijs/vscode-textmate@9.3.0': - resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} - - '@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/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/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/web-bluetooth@0.0.20': - resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@vitejs/plugin-vue@5.1.4': - resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - vite: ^5.0.0 - vue: ^3.2.25 - - '@vue/compiler-core@3.5.12': - resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} - - '@vue/compiler-dom@3.5.12': - resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} - - '@vue/compiler-sfc@3.5.12': - resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==} - - '@vue/compiler-ssr@3.5.12': - resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} - - '@vue/devtools-api@7.6.1': - resolution: {integrity: sha512-W99uw1nJKWeG4V2Bgp/pR1vnIREfixmnYW71wjtID7Gn/XnHH+nhfJmNy/0DjxcXOM14POVBDkl9JGlsOx1UjQ==} - - '@vue/devtools-kit@7.6.1': - resolution: {integrity: sha512-cCcdskZDLqKwJUHq1+kH9zAfYM+y9OFq8J2NT0xcAUYpu8K5IJd03ydZkvr7ydOd9UKBxrGyZpYe9PpJ0ChrVw==} - - '@vue/devtools-shared@7.6.1': - resolution: {integrity: sha512-SdIif2YoOWo8/s8c1+NU67jcx8qoSjM9caetQnjl3++Kufo0qa5JRZe95iV6vvupQzVGGo3ACY0LTyAsMfGeCg==} - - '@vue/reactivity@3.5.12': - resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==} - - '@vue/runtime-core@3.5.12': - resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==} - - '@vue/runtime-dom@3.5.12': - resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==} - - '@vue/server-renderer@3.5.12': - resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==} - peerDependencies: - vue: 3.5.12 - - '@vue/shared@3.5.12': - resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} - - '@vueuse/core@11.2.0': - resolution: {integrity: sha512-JIUwRcOqOWzcdu1dGlfW04kaJhW3EXnnjJJfLTtddJanymTL7lF1C0+dVVZ/siLfc73mWn+cGP1PE1PKPruRSA==} - - '@vueuse/integrations@11.2.0': - resolution: {integrity: sha512-zGXz3dsxNHKwiD9jPMvR3DAxQEOV6VWIEYTGVSB9PNpk4pTWR+pXrHz9gvXWcP2sTk3W2oqqS6KwWDdntUvNVA==} - 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.2.0': - resolution: {integrity: sha512-L0ZmtRmNx+ZW95DmrgD6vn484gSpVeRbgpWevFKXwqqQxW9hnSi2Ppuh2BzMjnbv4aJRiIw8tQatXT9uOB23dQ==} - - '@vueuse/shared@11.2.0': - resolution: {integrity: sha512-VxFjie0EanOudYSgMErxXfq6fo8vhr5ICI+BuE3I9FnX7ePllEsVrRQ7O6Q1TLgApeLuPKcHQxAXpP+KnlrJsg==} - - algoliasearch@4.24.0: - resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} - - birpc@0.2.19: - resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - 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==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - focus-trap@7.6.0: - resolution: {integrity: sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - hast-util-to-html@9.0.3: - resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} - - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} - - mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - minisearch@7.1.0: - resolution: {integrity: sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==} - - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - oniguruma-to-js@0.4.3: - resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} - - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} - engines: {node: ^10 || ^12 || >=14} - - preact@10.24.3: - resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} - - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - regex@4.3.3: - resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rollup@4.24.3: - resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - search-insights@2.17.2: - resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} - - shiki@1.22.2: - resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - superjson@2.2.1: - resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} - engines: {node: '>=16'} - - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - 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==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - vite@5.4.10: - resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} - 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 - - vitepress@1.4.3: - resolution: {integrity: sha512-956c2K2Mr0ubY9bTc2lCJD3g0mgo0mARB1iJC/BqUt4s0AM8Wl60wSU4zbFnzV7X2miFK1XJDKzGZnuEN90umw==} - hasBin: true - peerDependencies: - markdown-it-mathjax3: ^4 - postcss: ^8 - peerDependenciesMeta: - markdown-it-mathjax3: - optional: true - postcss: - optional: true - - 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@3.5.12: - resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)': - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - - '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2)': - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - search-insights: 2.17.2 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - '@algolia/client-search': 4.24.0 - algoliasearch: 4.24.0 - - '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)': - dependencies: - '@algolia/client-search': 4.24.0 - algoliasearch: 4.24.0 - - '@algolia/cache-browser-local-storage@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - - '@algolia/cache-common@4.24.0': {} - - '@algolia/cache-in-memory@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - - '@algolia/client-account@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-analytics@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-common@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-personalization@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/client-search@4.24.0': - dependencies: - '@algolia/client-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/logger-common@4.24.0': {} - - '@algolia/logger-console@4.24.0': - dependencies: - '@algolia/logger-common': 4.24.0 - - '@algolia/recommend@4.24.0': - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - - '@algolia/requester-browser-xhr@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - - '@algolia/requester-common@4.24.0': {} - - '@algolia/requester-node-http@4.24.0': - dependencies: - '@algolia/requester-common': 4.24.0 - - '@algolia/transporter@4.24.0': - dependencies: - '@algolia/cache-common': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/requester-common': 4.24.0 - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/parser@7.26.2': - dependencies: - '@babel/types': 7.26.0 - - '@babel/types@7.26.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@docsearch/css@3.6.2': {} - - '@docsearch/js@3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)': - dependencies: - '@docsearch/react': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2) - preact: 10.24.3 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - - search-insights - - '@docsearch/react@3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2)': - dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.2) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0) - '@docsearch/css': 3.6.2 - algoliasearch: 4.24.0 - optionalDependencies: - search-insights: 2.17.2 - transitivePeerDependencies: - - '@algolia/client-search' - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@rollup/rollup-android-arm-eabi@4.24.3': - optional: true - - '@rollup/rollup-android-arm64@4.24.3': - optional: true - - '@rollup/rollup-darwin-arm64@4.24.3': - optional: true - - '@rollup/rollup-darwin-x64@4.24.3': - optional: true - - '@rollup/rollup-freebsd-arm64@4.24.3': - optional: true - - '@rollup/rollup-freebsd-x64@4.24.3': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.24.3': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.24.3': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.24.3': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.24.3': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.24.3': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.24.3': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.24.3': - optional: true - - '@rollup/rollup-linux-x64-musl@4.24.3': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.24.3': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.24.3': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.24.3': - optional: true - - '@shikijs/core@1.22.2': - dependencies: - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 - - '@shikijs/engine-javascript@1.22.2': - dependencies: - '@shikijs/types': 1.22.2 - '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-js: 0.4.3 - - '@shikijs/engine-oniguruma@1.22.2': - dependencies: - '@shikijs/types': 1.22.2 - '@shikijs/vscode-textmate': 9.3.0 - - '@shikijs/transformers@1.22.2': - dependencies: - shiki: 1.22.2 - - '@shikijs/types@1.22.2': - dependencies: - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - - '@shikijs/vscode-textmate@9.3.0': {} - - '@types/estree@1.0.6': {} - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@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/unist@3.0.3': {} - - '@types/web-bluetooth@0.0.20': {} - - '@ungap/structured-clone@1.2.0': {} - - '@vitejs/plugin-vue@5.1.4(vite@5.4.10)(vue@3.5.12(typescript@5.6.3))': - dependencies: - vite: 5.4.10 - vue: 3.5.12(typescript@5.6.3) - - '@vue/compiler-core@3.5.12': - dependencies: - '@babel/parser': 7.26.2 - '@vue/shared': 3.5.12 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.12': - dependencies: - '@vue/compiler-core': 3.5.12 - '@vue/shared': 3.5.12 - - '@vue/compiler-sfc@3.5.12': - dependencies: - '@babel/parser': 7.26.2 - '@vue/compiler-core': 3.5.12 - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 - estree-walker: 2.0.2 - magic-string: 0.30.12 - postcss: 8.4.47 - source-map-js: 1.2.1 - - '@vue/compiler-ssr@3.5.12': - dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/shared': 3.5.12 - - '@vue/devtools-api@7.6.1': - dependencies: - '@vue/devtools-kit': 7.6.1 - - '@vue/devtools-kit@7.6.1': - dependencies: - '@vue/devtools-shared': 7.6.1 - birpc: 0.2.19 - hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 1.0.0 - speakingurl: 14.0.1 - superjson: 2.2.1 - - '@vue/devtools-shared@7.6.1': - dependencies: - rfdc: 1.4.1 - - '@vue/reactivity@3.5.12': - dependencies: - '@vue/shared': 3.5.12 - - '@vue/runtime-core@3.5.12': - dependencies: - '@vue/reactivity': 3.5.12 - '@vue/shared': 3.5.12 - - '@vue/runtime-dom@3.5.12': - dependencies: - '@vue/reactivity': 3.5.12 - '@vue/runtime-core': 3.5.12 - '@vue/shared': 3.5.12 - csstype: 3.1.3 - - '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 - vue: 3.5.12(typescript@5.6.3) - - '@vue/shared@3.5.12': {} - - '@vueuse/core@11.2.0(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 11.2.0 - '@vueuse/shared': 11.2.0(vue@3.5.12(typescript@5.6.3)) - vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/integrations@11.2.0(focus-trap@7.6.0)(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3)) - '@vueuse/shared': 11.2.0(vue@3.5.12(typescript@5.6.3)) - vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) - optionalDependencies: - focus-trap: 7.6.0 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/metadata@11.2.0': {} - - '@vueuse/shared@11.2.0(vue@3.5.12(typescript@5.6.3))': - dependencies: - vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - algoliasearch@4.24.0: - dependencies: - '@algolia/cache-browser-local-storage': 4.24.0 - '@algolia/cache-common': 4.24.0 - '@algolia/cache-in-memory': 4.24.0 - '@algolia/client-account': 4.24.0 - '@algolia/client-analytics': 4.24.0 - '@algolia/client-common': 4.24.0 - '@algolia/client-personalization': 4.24.0 - '@algolia/client-search': 4.24.0 - '@algolia/logger-common': 4.24.0 - '@algolia/logger-console': 4.24.0 - '@algolia/recommend': 4.24.0 - '@algolia/requester-browser-xhr': 4.24.0 - '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http': 4.24.0 - '@algolia/transporter': 4.24.0 - - birpc@0.2.19: {} - - ccount@2.0.1: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - comma-separated-tokens@2.0.3: {} - - copy-anything@3.0.5: - dependencies: - is-what: 4.1.16 - - csstype@3.1.3: {} - - dequal@2.0.3: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - entities@4.5.0: {} - - 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 - - estree-walker@2.0.2: {} - - focus-trap@7.6.0: - dependencies: - tabbable: 6.2.0 - - fsevents@2.3.3: - optional: true - - hast-util-to-html@9.0.3: - 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 - - hookable@5.5.3: {} - - html-void-elements@3.0.0: {} - - is-what@4.1.16: {} - - magic-string@0.30.12: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - mark.js@8.11.1: {} - - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - - micromark-util-character@2.1.0: - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-encode@2.0.0: {} - - micromark-util-sanitize-uri@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - - micromark-util-symbol@2.0.0: {} - - micromark-util-types@2.0.0: {} - - minisearch@7.1.0: {} - - mitt@3.0.1: {} - - nanoid@3.3.7: {} - - oniguruma-to-js@0.4.3: - dependencies: - regex: 4.3.3 - - perfect-debounce@1.0.0: {} - - picocolors@1.1.1: {} - - postcss@8.4.47: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - preact@10.24.3: {} - - property-information@6.5.0: {} - - regex@4.3.3: {} - - rfdc@1.4.1: {} - - rollup@4.24.3: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.3 - '@rollup/rollup-android-arm64': 4.24.3 - '@rollup/rollup-darwin-arm64': 4.24.3 - '@rollup/rollup-darwin-x64': 4.24.3 - '@rollup/rollup-freebsd-arm64': 4.24.3 - '@rollup/rollup-freebsd-x64': 4.24.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 - '@rollup/rollup-linux-arm-musleabihf': 4.24.3 - '@rollup/rollup-linux-arm64-gnu': 4.24.3 - '@rollup/rollup-linux-arm64-musl': 4.24.3 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 - '@rollup/rollup-linux-riscv64-gnu': 4.24.3 - '@rollup/rollup-linux-s390x-gnu': 4.24.3 - '@rollup/rollup-linux-x64-gnu': 4.24.3 - '@rollup/rollup-linux-x64-musl': 4.24.3 - '@rollup/rollup-win32-arm64-msvc': 4.24.3 - '@rollup/rollup-win32-ia32-msvc': 4.24.3 - '@rollup/rollup-win32-x64-msvc': 4.24.3 - fsevents: 2.3.3 - - search-insights@2.17.2: {} - - shiki@1.22.2: - dependencies: - '@shikijs/core': 1.22.2 - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - - source-map-js@1.2.1: {} - - space-separated-tokens@2.0.2: {} - - speakingurl@14.0.1: {} - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - superjson@2.2.1: - dependencies: - copy-anything: 3.0.5 - - tabbable@6.2.0: {} - - trim-lines@3.0.1: {} - - typescript@5.6.3: - optional: true - - 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 - - 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@5.4.10: - dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.24.3 - optionalDependencies: - fsevents: 2.3.3 - - vitepress@1.4.3(@algolia/client-search@4.24.0)(postcss@8.4.47)(search-insights@2.17.2)(typescript@5.6.3): - dependencies: - '@docsearch/css': 3.6.2 - '@docsearch/js': 3.6.2(@algolia/client-search@4.24.0)(search-insights@2.17.2) - '@shikijs/core': 1.22.2 - '@shikijs/transformers': 1.22.2 - '@shikijs/types': 1.22.2 - '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.1.4(vite@5.4.10)(vue@3.5.12(typescript@5.6.3)) - '@vue/devtools-api': 7.6.1 - '@vue/shared': 3.5.12 - '@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3)) - '@vueuse/integrations': 11.2.0(focus-trap@7.6.0)(vue@3.5.12(typescript@5.6.3)) - focus-trap: 7.6.0 - mark.js: 8.11.1 - minisearch: 7.1.0 - shiki: 1.22.2 - vite: 5.4.10 - vue: 3.5.12(typescript@5.6.3) - optionalDependencies: - postcss: 8.4.47 - 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 - - vue-demi@0.14.10(vue@3.5.12(typescript@5.6.3)): - dependencies: - vue: 3.5.12(typescript@5.6.3) - - vue@3.5.12(typescript@5.6.3): - dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-sfc': 3.5.12 - '@vue/runtime-dom': 3.5.12 - '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3)) - '@vue/shared': 3.5.12 - optionalDependencies: - typescript: 5.6.3 - - zwitch@2.0.4: {} diff --git a/website/src/.vitepress/cache/deps/@theme_index.js b/website/src/.vitepress/cache/deps/@theme_index.js deleted file mode 100644 index b0259519..00000000 --- a/website/src/.vitepress/cache/deps/@theme_index.js +++ /dev/null @@ -1,282 +0,0 @@ -import { useMediaQuery } from './chunk-PWVUJGW4.js' -import { computed, ref, shallowRef, watch } from './chunk-6J5AW4SK.js' - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/index.js -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/fonts.css' - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/without-fonts.js -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/vars.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/base.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/icons.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/utils.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css' -import '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css' -import VPBadge from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue' -import Layout from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/Layout.vue' -import { default as default2 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue' -import { default as default3 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue' -import { default as default4 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue' -import { default as default5 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeContent.vue' -import { default as default6 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue' -import { default as default7 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue' -import { default as default8 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue' -import { default as default9 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPLink.vue' -import { default as default10 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue' -import { default as default11 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLink.vue' -import { default as default12 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPSocialLinks.vue' -import { default as default13 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue' -import { default as default14 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue' -import { default as default15 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue' -import { default as default16 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue' -import { default as default17 } from '/Users/jakubjuszczak/Projekte/Privat/vue-chartjs/website/node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue' - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/support/utils.js -import { withBase } from 'vitepress' - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/data.js -import { useData as useData$ } from 'vitepress' -var useData = useData$ - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/support/utils.js -function ensureStartingSlash(path) { - return /^\//.test(path) ? path : `/${path}` -} - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/support/sidebar.js -function getSidebar(_sidebar, path) { - if (Array.isArray(_sidebar)) return addBase(_sidebar) - if (_sidebar == null) return [] - path = ensureStartingSlash(path) - const dir = Object.keys(_sidebar) - .sort((a, b) => { - return b.split('/').length - a.split('/').length - }) - .find(dir2 => { - return path.startsWith(ensureStartingSlash(dir2)) - }) - const sidebar = dir ? _sidebar[dir] : [] - return Array.isArray(sidebar) - ? addBase(sidebar) - : addBase(sidebar.items, sidebar.base) -} -function getSidebarGroups(sidebar) { - const groups = [] - let lastGroupIndex = 0 - for (const index in sidebar) { - const item = sidebar[index] - if (item.items) { - lastGroupIndex = groups.push(item) - continue - } - if (!groups[lastGroupIndex]) { - groups.push({ items: [] }) - } - groups[lastGroupIndex].items.push(item) - } - return groups -} -function addBase(items, _base) { - return [...items].map(_item => { - const item = { ..._item } - const base = item.base || _base - if (base && item.link) item.link = base + item.link - if (item.items) item.items = addBase(item.items, base) - return item - }) -} - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/sidebar.js -function useSidebar() { - const { frontmatter, page, theme: theme2 } = useData() - const is960 = useMediaQuery('(min-width: 960px)') - const isOpen = ref(false) - const _sidebar = computed(() => { - const sidebarConfig = theme2.value.sidebar - const relativePath = page.value.relativePath - return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [] - }) - const sidebar = ref(_sidebar.value) - watch(_sidebar, (next, prev) => { - if (JSON.stringify(next) !== JSON.stringify(prev)) - sidebar.value = _sidebar.value - }) - const hasSidebar = computed(() => { - return ( - frontmatter.value.sidebar !== false && - sidebar.value.length > 0 && - frontmatter.value.layout !== 'home' - ) - }) - const leftAside = computed(() => { - if (hasAside) - return frontmatter.value.aside == null - ? theme2.value.aside === 'left' - : frontmatter.value.aside === 'left' - return false - }) - const hasAside = computed(() => { - if (frontmatter.value.layout === 'home') return false - if (frontmatter.value.aside != null) return !!frontmatter.value.aside - return theme2.value.aside !== false - }) - const isSidebarEnabled = computed(() => hasSidebar.value && is960.value) - const sidebarGroups = computed(() => { - return hasSidebar.value ? getSidebarGroups(sidebar.value) : [] - }) - function open() { - isOpen.value = true - } - function close() { - isOpen.value = false - } - function toggle() { - isOpen.value ? close() : open() - } - return { - isOpen, - sidebar, - sidebarGroups, - hasSidebar, - hasAside, - leftAside, - isSidebarEnabled, - open, - close, - toggle - } -} - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js -import { onContentUpdated } from 'vitepress' - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/outline.js -import { getScrollOffset } from 'vitepress' -var resolvedHeaders = [] -function getHeaders(range) { - const headers = [ - ...document.querySelectorAll('.VPDoc :where(h1,h2,h3,h4,h5,h6)') - ] - .filter(el => el.id && el.hasChildNodes()) - .map(el => { - const level = Number(el.tagName[1]) - return { - element: el, - title: serializeHeader(el), - link: '#' + el.id, - level - } - }) - return resolveHeaders(headers, range) -} -function serializeHeader(h) { - let ret = '' - for (const node of h.childNodes) { - if (node.nodeType === 1) { - if ( - node.classList.contains('VPBadge') || - node.classList.contains('header-anchor') || - node.classList.contains('ignore-header') - ) { - continue - } - ret += node.textContent - } else if (node.nodeType === 3) { - ret += node.textContent - } - } - return ret.trim() -} -function resolveHeaders(headers, range) { - if (range === false) { - return [] - } - const levelsRange = - (typeof range === 'object' && !Array.isArray(range) - ? range.level - : range) || 2 - const [high, low] = - typeof levelsRange === 'number' - ? [levelsRange, levelsRange] - : levelsRange === 'deep' - ? [2, 6] - : levelsRange - return buildTree(headers, high, low) -} -function buildTree(data, min, max) { - resolvedHeaders.length = 0 - const result = [] - const stack = [] - data.forEach(item => { - const node = { ...item, children: [] } - let parent = stack[stack.length - 1] - while (parent && parent.level >= node.level) { - stack.pop() - parent = stack[stack.length - 1] - } - if ( - node.element.classList.contains('ignore-header') || - (parent && 'shouldIgnore' in parent) - ) { - stack.push({ level: node.level, shouldIgnore: true }) - return - } - if (node.level > max || node.level < min) return - resolvedHeaders.push({ element: node.element, link: node.link }) - if (parent) parent.children.push(node) - else result.push(node) - stack.push(node) - }) - return result -} - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js -function useLocalNav() { - const { theme: theme2, frontmatter } = useData() - const headers = shallowRef([]) - const hasLocalNav = computed(() => { - return headers.value.length > 0 - }) - onContentUpdated(() => { - headers.value = getHeaders( - frontmatter.value.outline ?? theme2.value.outline - ) - }) - return { - headers, - hasLocalNav - } -} - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/without-fonts.js -var theme = { - Layout, - enhanceApp: ({ app }) => { - app.component('Badge', VPBadge) - } -} -var without_fonts_default = theme -export { - default2 as VPBadge, - default4 as VPButton, - default10 as VPDocAsideSponsors, - default5 as VPHomeContent, - default7 as VPHomeFeatures, - default6 as VPHomeHero, - default8 as VPHomeSponsors, - default3 as VPImage, - default9 as VPLink, - default11 as VPSocialLink, - default12 as VPSocialLinks, - default13 as VPSponsors, - default17 as VPTeamMembers, - default14 as VPTeamPage, - default16 as VPTeamPageSection, - default15 as VPTeamPageTitle, - without_fonts_default as default, - useLocalNav, - useSidebar -} -//# sourceMappingURL=@theme_index.js.map diff --git a/website/src/.vitepress/cache/deps/@theme_index.js.map b/website/src/.vitepress/cache/deps/@theme_index.js.map deleted file mode 100644 index 645f4daa..00000000 --- a/website/src/.vitepress/cache/deps/@theme_index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/index.js", "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/without-fonts.js", "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/support/utils.js", "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/data.js", "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/support/sidebar.js", "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/sidebar.js", "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js", "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/composables/outline.js"], - "sourcesContent": ["import './styles/fonts.css';\nexport * from './without-fonts';\nexport { default as default } from './without-fonts';\n", "import './styles/vars.css';\nimport './styles/base.css';\nimport './styles/icons.css';\nimport './styles/utils.css';\nimport './styles/components/custom-block.css';\nimport './styles/components/vp-code.css';\nimport './styles/components/vp-code-group.css';\nimport './styles/components/vp-doc.css';\nimport './styles/components/vp-sponsor.css';\nimport VPBadge from './components/VPBadge.vue';\nimport Layout from './Layout.vue';\nexport { default as VPBadge } from './components/VPBadge.vue';\nexport { default as VPImage } from './components/VPImage.vue';\nexport { default as VPButton } from './components/VPButton.vue';\nexport { default as VPHomeContent } from './components/VPHomeContent.vue';\nexport { default as VPHomeHero } from './components/VPHomeHero.vue';\nexport { default as VPHomeFeatures } from './components/VPHomeFeatures.vue';\nexport { default as VPHomeSponsors } from './components/VPHomeSponsors.vue';\nexport { default as VPLink } from './components/VPLink.vue';\nexport { default as VPDocAsideSponsors } from './components/VPDocAsideSponsors.vue';\nexport { default as VPSocialLink } from './components/VPSocialLink.vue';\nexport { default as VPSocialLinks } from './components/VPSocialLinks.vue';\nexport { default as VPSponsors } from './components/VPSponsors.vue';\nexport { default as VPTeamPage } from './components/VPTeamPage.vue';\nexport { default as VPTeamPageTitle } from './components/VPTeamPageTitle.vue';\nexport { default as VPTeamPageSection } from './components/VPTeamPageSection.vue';\nexport { default as VPTeamMembers } from './components/VPTeamMembers.vue';\nexport { useSidebar } from './composables/sidebar';\nexport { useLocalNav } from './composables/local-nav';\nconst theme = {\n Layout,\n enhanceApp: ({ app }) => {\n app.component('Badge', VPBadge);\n }\n};\nexport default theme;\n", "import { withBase } from 'vitepress';\nimport { useData } from '../composables/data';\nimport { isExternal, treatAsHtml } from '../../shared';\nexport function throttleAndDebounce(fn, delay) {\n let timeoutId;\n let called = false;\n return () => {\n if (timeoutId)\n clearTimeout(timeoutId);\n if (!called) {\n fn();\n (called = true) && setTimeout(() => (called = false), delay);\n }\n else\n timeoutId = setTimeout(fn, delay);\n };\n}\nexport function ensureStartingSlash(path) {\n return /^\\//.test(path) ? path : `/${path}`;\n}\nexport function normalizeLink(url) {\n const { pathname, search, hash, protocol } = new URL(url, 'http://a.com');\n if (isExternal(url) ||\n url.startsWith('#') ||\n !protocol.startsWith('http') ||\n !treatAsHtml(pathname))\n return url;\n const { site } = useData();\n const normalizedPath = pathname.endsWith('/') || pathname.endsWith('.html')\n ? url\n : url.replace(/(?:(^\\.+)\\/)?.*$/, `$1${pathname.replace(/(\\.md)?$/, site.value.cleanUrls ? '' : '.html')}${search}${hash}`);\n return withBase(normalizedPath);\n}\n", "import { useData as useData$ } from 'vitepress';\nexport const useData = useData$;\n", "import { ensureStartingSlash } from './utils';\nimport { isActive } from '../../shared';\n/**\n * Get the `Sidebar` from sidebar option. This method will ensure to get correct\n * sidebar config from `MultiSideBarConfig` with various path combinations such\n * as matching `guide/` and `/guide/`. If no matching config was found, it will\n * return empty array.\n */\nexport function getSidebar(_sidebar, path) {\n if (Array.isArray(_sidebar))\n return addBase(_sidebar);\n if (_sidebar == null)\n return [];\n path = ensureStartingSlash(path);\n const dir = Object.keys(_sidebar)\n .sort((a, b) => {\n return b.split('/').length - a.split('/').length;\n })\n .find((dir) => {\n // make sure the multi sidebar key starts with slash too\n return path.startsWith(ensureStartingSlash(dir));\n });\n const sidebar = dir ? _sidebar[dir] : [];\n return Array.isArray(sidebar)\n ? addBase(sidebar)\n : addBase(sidebar.items, sidebar.base);\n}\n/**\n * Get or generate sidebar group from the given sidebar items.\n */\nexport function getSidebarGroups(sidebar) {\n const groups = [];\n let lastGroupIndex = 0;\n for (const index in sidebar) {\n const item = sidebar[index];\n if (item.items) {\n lastGroupIndex = groups.push(item);\n continue;\n }\n if (!groups[lastGroupIndex]) {\n groups.push({ items: [] });\n }\n groups[lastGroupIndex].items.push(item);\n }\n return groups;\n}\nexport function getFlatSideBarLinks(sidebar) {\n const links = [];\n function recursivelyExtractLinks(items) {\n for (const item of items) {\n if (item.text && item.link) {\n links.push({\n text: item.text,\n link: item.link,\n docFooterText: item.docFooterText\n });\n }\n if (item.items) {\n recursivelyExtractLinks(item.items);\n }\n }\n }\n recursivelyExtractLinks(sidebar);\n return links;\n}\n/**\n * Check if the given sidebar item contains any active link.\n */\nexport function hasActiveLink(path, items) {\n if (Array.isArray(items)) {\n return items.some((item) => hasActiveLink(path, item));\n }\n return isActive(path, items.link)\n ? true\n : items.items\n ? hasActiveLink(path, items.items)\n : false;\n}\nfunction addBase(items, _base) {\n return [...items].map((_item) => {\n const item = { ..._item };\n const base = item.base || _base;\n if (base && item.link)\n item.link = base + item.link;\n if (item.items)\n item.items = addBase(item.items, base);\n return item;\n });\n}\n", "import { useMediaQuery } from '@vueuse/core';\nimport { computed, onMounted, onUnmounted, ref, watch, watchEffect, watchPostEffect } from 'vue';\nimport { isActive } from '../../shared';\nimport { hasActiveLink as containsActiveLink, getSidebar, getSidebarGroups } from '../support/sidebar';\nimport { useData } from './data';\nexport function useSidebar() {\n const { frontmatter, page, theme } = useData();\n const is960 = useMediaQuery('(min-width: 960px)');\n const isOpen = ref(false);\n const _sidebar = computed(() => {\n const sidebarConfig = theme.value.sidebar;\n const relativePath = page.value.relativePath;\n return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [];\n });\n const sidebar = ref(_sidebar.value);\n watch(_sidebar, (next, prev) => {\n if (JSON.stringify(next) !== JSON.stringify(prev))\n sidebar.value = _sidebar.value;\n });\n const hasSidebar = computed(() => {\n return (frontmatter.value.sidebar !== false &&\n sidebar.value.length > 0 &&\n frontmatter.value.layout !== 'home');\n });\n const leftAside = computed(() => {\n if (hasAside)\n return frontmatter.value.aside == null\n ? theme.value.aside === 'left'\n : frontmatter.value.aside === 'left';\n return false;\n });\n const hasAside = computed(() => {\n if (frontmatter.value.layout === 'home')\n return false;\n if (frontmatter.value.aside != null)\n return !!frontmatter.value.aside;\n return theme.value.aside !== false;\n });\n const isSidebarEnabled = computed(() => hasSidebar.value && is960.value);\n const sidebarGroups = computed(() => {\n return hasSidebar.value ? getSidebarGroups(sidebar.value) : [];\n });\n function open() {\n isOpen.value = true;\n }\n function close() {\n isOpen.value = false;\n }\n function toggle() {\n isOpen.value ? close() : open();\n }\n return {\n isOpen,\n sidebar,\n sidebarGroups,\n hasSidebar,\n hasAside,\n leftAside,\n isSidebarEnabled,\n open,\n close,\n toggle\n };\n}\n/**\n * a11y: cache the element that opened the Sidebar (the menu button) then\n * focus that button again when Menu is closed with Escape key.\n */\nexport function useCloseSidebarOnEscape(isOpen, close) {\n let triggerElement;\n watchEffect(() => {\n triggerElement = isOpen.value\n ? document.activeElement\n : undefined;\n });\n onMounted(() => {\n window.addEventListener('keyup', onEscape);\n });\n onUnmounted(() => {\n window.removeEventListener('keyup', onEscape);\n });\n function onEscape(e) {\n if (e.key === 'Escape' && isOpen.value) {\n close();\n triggerElement?.focus();\n }\n }\n}\nexport function useSidebarControl(item) {\n const { page, hash } = useData();\n const collapsed = ref(false);\n const collapsible = computed(() => {\n return item.value.collapsed != null;\n });\n const isLink = computed(() => {\n return !!item.value.link;\n });\n const isActiveLink = ref(false);\n const updateIsActiveLink = () => {\n isActiveLink.value = isActive(page.value.relativePath, item.value.link);\n };\n watch([page, item, hash], updateIsActiveLink);\n onMounted(updateIsActiveLink);\n const hasActiveLink = computed(() => {\n if (isActiveLink.value) {\n return true;\n }\n return item.value.items\n ? containsActiveLink(page.value.relativePath, item.value.items)\n : false;\n });\n const hasChildren = computed(() => {\n return !!(item.value.items && item.value.items.length);\n });\n watchEffect(() => {\n collapsed.value = !!(collapsible.value && item.value.collapsed);\n });\n watchPostEffect(() => {\n ;\n (isActiveLink.value || hasActiveLink.value) && (collapsed.value = false);\n });\n function toggle() {\n if (collapsible.value) {\n collapsed.value = !collapsed.value;\n }\n }\n return {\n collapsed,\n collapsible,\n isLink,\n isActiveLink,\n hasActiveLink,\n hasChildren,\n toggle\n };\n}\n", "import { onContentUpdated } from 'vitepress';\nimport { computed, shallowRef } from 'vue';\nimport { getHeaders } from '../composables/outline';\nimport { useData } from './data';\nexport function useLocalNav() {\n const { theme, frontmatter } = useData();\n const headers = shallowRef([]);\n const hasLocalNav = computed(() => {\n return headers.value.length > 0;\n });\n onContentUpdated(() => {\n headers.value = getHeaders(frontmatter.value.outline ?? theme.value.outline);\n });\n return {\n headers,\n hasLocalNav\n };\n}\n", "import { getScrollOffset } from 'vitepress';\nimport { onMounted, onUnmounted, onUpdated } from 'vue';\nimport { throttleAndDebounce } from '../support/utils';\nimport { useAside } from './aside';\n// cached list of anchor elements from resolveHeaders\nconst resolvedHeaders = [];\nexport function resolveTitle(theme) {\n return ((typeof theme.outline === 'object' &&\n !Array.isArray(theme.outline) &&\n theme.outline.label) ||\n theme.outlineTitle ||\n 'On this page');\n}\nexport function getHeaders(range) {\n const headers = [\n ...document.querySelectorAll('.VPDoc :where(h1,h2,h3,h4,h5,h6)')\n ]\n .filter((el) => el.id && el.hasChildNodes())\n .map((el) => {\n const level = Number(el.tagName[1]);\n return {\n element: el,\n title: serializeHeader(el),\n link: '#' + el.id,\n level\n };\n });\n return resolveHeaders(headers, range);\n}\nfunction serializeHeader(h) {\n let ret = '';\n for (const node of h.childNodes) {\n if (node.nodeType === 1) {\n if (node.classList.contains('VPBadge') ||\n node.classList.contains('header-anchor') ||\n node.classList.contains('ignore-header')) {\n continue;\n }\n ret += node.textContent;\n }\n else if (node.nodeType === 3) {\n ret += node.textContent;\n }\n }\n return ret.trim();\n}\nexport function resolveHeaders(headers, range) {\n if (range === false) {\n return [];\n }\n const levelsRange = (typeof range === 'object' && !Array.isArray(range)\n ? range.level\n : range) || 2;\n const [high, low] = typeof levelsRange === 'number'\n ? [levelsRange, levelsRange]\n : levelsRange === 'deep'\n ? [2, 6]\n : levelsRange;\n return buildTree(headers, high, low);\n}\nexport function useActiveAnchor(container, marker) {\n const { isAsideEnabled } = useAside();\n const onScroll = throttleAndDebounce(setActiveLink, 100);\n let prevActiveLink = null;\n onMounted(() => {\n requestAnimationFrame(setActiveLink);\n window.addEventListener('scroll', onScroll);\n });\n onUpdated(() => {\n // sidebar update means a route change\n activateLink(location.hash);\n });\n onUnmounted(() => {\n window.removeEventListener('scroll', onScroll);\n });\n function setActiveLink() {\n if (!isAsideEnabled.value) {\n return;\n }\n const scrollY = window.scrollY;\n const innerHeight = window.innerHeight;\n const offsetHeight = document.body.offsetHeight;\n const isBottom = Math.abs(scrollY + innerHeight - offsetHeight) < 1;\n // resolvedHeaders may be repositioned, hidden or fix positioned\n const headers = resolvedHeaders\n .map(({ element, link }) => ({\n link,\n top: getAbsoluteTop(element)\n }))\n .filter(({ top }) => !Number.isNaN(top))\n .sort((a, b) => a.top - b.top);\n // no headers available for active link\n if (!headers.length) {\n activateLink(null);\n return;\n }\n // page top\n if (scrollY < 1) {\n activateLink(null);\n return;\n }\n // page bottom - highlight last link\n if (isBottom) {\n activateLink(headers[headers.length - 1].link);\n return;\n }\n // find the last header above the top of viewport\n let activeLink = null;\n for (const { link, top } of headers) {\n if (top > scrollY + getScrollOffset() + 4) {\n break;\n }\n activeLink = link;\n }\n activateLink(activeLink);\n }\n function activateLink(hash) {\n if (prevActiveLink) {\n prevActiveLink.classList.remove('active');\n }\n if (hash == null) {\n prevActiveLink = null;\n }\n else {\n prevActiveLink = container.value.querySelector(`a[href=\"${decodeURIComponent(hash)}\"]`);\n }\n const activeLink = prevActiveLink;\n if (activeLink) {\n activeLink.classList.add('active');\n marker.value.style.top = activeLink.offsetTop + 39 + 'px';\n marker.value.style.opacity = '1';\n }\n else {\n marker.value.style.top = '33px';\n marker.value.style.opacity = '0';\n }\n }\n}\nfunction getAbsoluteTop(element) {\n let offsetTop = 0;\n while (element !== document.body) {\n if (element === null) {\n // child element is:\n // - not attached to the DOM (display: none)\n // - set to fixed position (not scrollable)\n // - body or html element (null offsetParent)\n return NaN;\n }\n offsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n return offsetTop;\n}\nfunction buildTree(data, min, max) {\n resolvedHeaders.length = 0;\n const result = [];\n const stack = [];\n data.forEach((item) => {\n const node = { ...item, children: [] };\n let parent = stack[stack.length - 1];\n while (parent && parent.level >= node.level) {\n stack.pop();\n parent = stack[stack.length - 1];\n }\n if (node.element.classList.contains('ignore-header') ||\n (parent && 'shouldIgnore' in parent)) {\n stack.push({ level: node.level, shouldIgnore: true });\n return;\n }\n if (node.level > max || node.level < min)\n return;\n resolvedHeaders.push({ element: node.element, link: node.link });\n if (parent)\n parent.children.push(node);\n else\n result.push(node);\n stack.push(node);\n });\n return result;\n}\n"], - "mappings": "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", - "names": ["default", "dir", "theme", "theme"] -} diff --git a/website/src/.vitepress/cache/deps/_metadata.json b/website/src/.vitepress/cache/deps/_metadata.json deleted file mode 100644 index 7f2ca382..00000000 --- a/website/src/.vitepress/cache/deps/_metadata.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "hash": "0c87bf3b", - "configHash": "537ebdcd", - "lockfileHash": "17c814b1", - "browserHash": "7f9e4657", - "optimized": { - "vue": { - "src": "../../../../../node_modules/.pnpm/vue@3.2.45/node_modules/vue/dist/vue.runtime.esm-bundler.js", - "file": "vue.js", - "fileHash": "81e7f501", - "needsInterop": false - }, - "vitepress > @vue/devtools-api": { - "src": "../../../../node_modules/.pnpm/@vue+devtools-api@7.6.1/node_modules/@vue/devtools-api/dist/index.js", - "file": "vitepress___@vue_devtools-api.js", - "fileHash": "f18838d4", - "needsInterop": false - }, - "vitepress > @vueuse/core": { - "src": "../../../../node_modules/.pnpm/@vueuse+core@11.2.0_vue@3.5.12_typescript@5.6.3_/node_modules/@vueuse/core/index.mjs", - "file": "vitepress___@vueuse_core.js", - "fileHash": "005e74d6", - "needsInterop": false - }, - "@theme/index": { - "src": "../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/dist/client/theme-default/index.js", - "file": "@theme_index.js", - "fileHash": "a7aaf44d", - "needsInterop": false - } - }, - "chunks": { - "chunk-PWVUJGW4": { - "file": "chunk-PWVUJGW4.js" - }, - "chunk-6J5AW4SK": { - "file": "chunk-6J5AW4SK.js" - } - } -} \ No newline at end of file diff --git a/website/src/.vitepress/cache/deps/chunk-6J5AW4SK.js b/website/src/.vitepress/cache/deps/chunk-6J5AW4SK.js deleted file mode 100644 index c1956a24..00000000 --- a/website/src/.vitepress/cache/deps/chunk-6J5AW4SK.js +++ /dev/null @@ -1,11547 +0,0 @@ -// ../node_modules/.pnpm/@vue+shared@3.2.45/node_modules/@vue/shared/dist/shared.esm-bundler.js -function makeMap(str, expectsLowerCase) { - const map2 = /* @__PURE__ */ Object.create(null) - const list = str.split(',') - for (let i = 0; i < list.length; i++) { - map2[list[i]] = true - } - return expectsLowerCase - ? val => !!map2[val.toLowerCase()] - : val => !!map2[val] -} -var GLOBALS_WHITE_LISTED = - 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt' -var isGloballyWhitelisted = makeMap(GLOBALS_WHITE_LISTED) -function normalizeStyle(value) { - if (isArray(value)) { - const res = {} - for (let i = 0; i < value.length; i++) { - const item = value[i] - const normalized = isString(item) - ? parseStringStyle(item) - : normalizeStyle(item) - if (normalized) { - for (const key in normalized) { - res[key] = normalized[key] - } - } - } - return res - } else if (isString(value)) { - return value - } else if (isObject(value)) { - return value - } -} -var listDelimiterRE = /;(?![^(]*\))/g -var propertyDelimiterRE = /:([^]+)/ -var styleCommentRE = /\/\*.*?\*\//gs -function parseStringStyle(cssText) { - const ret = {} - cssText - .replace(styleCommentRE, '') - .split(listDelimiterRE) - .forEach(item => { - if (item) { - const tmp = item.split(propertyDelimiterRE) - tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()) - } - }) - return ret -} -function normalizeClass(value) { - let res = '' - if (isString(value)) { - res = value - } else if (isArray(value)) { - for (let i = 0; i < value.length; i++) { - const normalized = normalizeClass(value[i]) - if (normalized) { - res += normalized + ' ' - } - } - } else if (isObject(value)) { - for (const name in value) { - if (value[name]) { - res += name + ' ' - } - } - } - return res.trim() -} -function normalizeProps(props) { - if (!props) return null - let { class: klass, style } = props - if (klass && !isString(klass)) { - props.class = normalizeClass(klass) - } - if (style) { - props.style = normalizeStyle(style) - } - return props -} -var HTML_TAGS = - 'html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot' -var SVG_TAGS = - 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view' -var VOID_TAGS = - 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr' -var isHTMLTag = makeMap(HTML_TAGS) -var isSVGTag = makeMap(SVG_TAGS) -var isVoidTag = makeMap(VOID_TAGS) -var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly` -var isSpecialBooleanAttr = makeMap(specialBooleanAttrs) -var isBooleanAttr = makeMap( - specialBooleanAttrs + - `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` -) -function includeBooleanAttr(value) { - return !!value || value === '' -} -var isKnownHtmlAttr = makeMap( - `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` -) -var isKnownSvgAttr = makeMap( - `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` -) -function looseCompareArrays(a, b) { - if (a.length !== b.length) return false - let equal = true - for (let i = 0; equal && i < a.length; i++) { - equal = looseEqual(a[i], b[i]) - } - return equal -} -function looseEqual(a, b) { - if (a === b) return true - let aValidType = isDate(a) - let bValidType = isDate(b) - if (aValidType || bValidType) { - return aValidType && bValidType ? a.getTime() === b.getTime() : false - } - aValidType = isSymbol(a) - bValidType = isSymbol(b) - if (aValidType || bValidType) { - return a === b - } - aValidType = isArray(a) - bValidType = isArray(b) - if (aValidType || bValidType) { - return aValidType && bValidType ? looseCompareArrays(a, b) : false - } - aValidType = isObject(a) - bValidType = isObject(b) - if (aValidType || bValidType) { - if (!aValidType || !bValidType) { - return false - } - const aKeysCount = Object.keys(a).length - const bKeysCount = Object.keys(b).length - if (aKeysCount !== bKeysCount) { - return false - } - for (const key in a) { - const aHasKey = a.hasOwnProperty(key) - const bHasKey = b.hasOwnProperty(key) - if ( - (aHasKey && !bHasKey) || - (!aHasKey && bHasKey) || - !looseEqual(a[key], b[key]) - ) { - return false - } - } - } - return String(a) === String(b) -} -function looseIndexOf(arr, val) { - return arr.findIndex(item => looseEqual(item, val)) -} -var toDisplayString = val => { - return isString(val) - ? val - : val == null - ? '' - : isArray(val) || - (isObject(val) && - (val.toString === objectToString || !isFunction(val.toString))) - ? JSON.stringify(val, replacer, 2) - : String(val) -} -var replacer = (_key, val) => { - if (val && val.__v_isRef) { - return replacer(_key, val.value) - } else if (isMap(val)) { - return { - [`Map(${val.size})`]: [...val.entries()].reduce( - (entries, [key, val2]) => { - entries[`${key} =>`] = val2 - return entries - }, - {} - ) - } - } else if (isSet(val)) { - return { - [`Set(${val.size})`]: [...val.values()] - } - } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { - return String(val) - } - return val -} -var EMPTY_OBJ = true ? Object.freeze({}) : {} -var EMPTY_ARR = true ? Object.freeze([]) : [] -var NOOP = () => {} -var NO = () => false -var onRE = /^on[^a-z]/ -var isOn = key => onRE.test(key) -var isModelListener = key => key.startsWith('onUpdate:') -var extend = Object.assign -var remove = (arr, el) => { - const i = arr.indexOf(el) - if (i > -1) { - arr.splice(i, 1) - } -} -var hasOwnProperty = Object.prototype.hasOwnProperty -var hasOwn = (val, key) => hasOwnProperty.call(val, key) -var isArray = Array.isArray -var isMap = val => toTypeString(val) === '[object Map]' -var isSet = val => toTypeString(val) === '[object Set]' -var isDate = val => toTypeString(val) === '[object Date]' -var isFunction = val => typeof val === 'function' -var isString = val => typeof val === 'string' -var isSymbol = val => typeof val === 'symbol' -var isObject = val => val !== null && typeof val === 'object' -var isPromise = val => { - return isObject(val) && isFunction(val.then) && isFunction(val.catch) -} -var objectToString = Object.prototype.toString -var toTypeString = value => objectToString.call(value) -var toRawType = value => { - return toTypeString(value).slice(8, -1) -} -var isPlainObject = val => toTypeString(val) === '[object Object]' -var isIntegerKey = key => - isString(key) && - key !== 'NaN' && - key[0] !== '-' && - '' + parseInt(key, 10) === key -var isReservedProp = makeMap( - // the leading comma is intentional so empty string "" is also included - ',key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted' -) -var isBuiltInDirective = makeMap( - 'bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo' -) -var cacheStringFunction = fn => { - const cache = /* @__PURE__ */ Object.create(null) - return str => { - const hit = cache[str] - return hit || (cache[str] = fn(str)) - } -} -var camelizeRE = /-(\w)/g -var camelize = cacheStringFunction(str => { - return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')) -}) -var hyphenateRE = /\B([A-Z])/g -var hyphenate = cacheStringFunction(str => - str.replace(hyphenateRE, '-$1').toLowerCase() -) -var capitalize = cacheStringFunction( - str => str.charAt(0).toUpperCase() + str.slice(1) -) -var toHandlerKey = cacheStringFunction(str => - str ? `on${capitalize(str)}` : `` -) -var hasChanged = (value, oldValue) => !Object.is(value, oldValue) -var invokeArrayFns = (fns, arg) => { - for (let i = 0; i < fns.length; i++) { - fns[i](arg) - } -} -var def = (obj, key, value) => { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - value - }) -} -var toNumber = val => { - const n = parseFloat(val) - return isNaN(n) ? val : n -} -var _globalThis -var getGlobalThis = () => { - return ( - _globalThis || - (_globalThis = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}) - ) -} - -// ../node_modules/.pnpm/@vue+reactivity@3.2.45/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js -function warn(msg, ...args) { - console.warn(`[Vue warn] ${msg}`, ...args) -} -var activeEffectScope -var EffectScope = class { - constructor(detached = false) { - this.detached = detached - this.active = true - this.effects = [] - this.cleanups = [] - this.parent = activeEffectScope - if (!detached && activeEffectScope) { - this.index = - (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( - this - ) - 1 - } - } - run(fn) { - if (this.active) { - const currentEffectScope = activeEffectScope - try { - activeEffectScope = this - return fn() - } finally { - activeEffectScope = currentEffectScope - } - } else if (true) { - warn(`cannot run an inactive effect scope.`) - } - } - /** - * This should only be called on non-detached scopes - * @internal - */ - on() { - activeEffectScope = this - } - /** - * This should only be called on non-detached scopes - * @internal - */ - off() { - activeEffectScope = this.parent - } - stop(fromParent) { - if (this.active) { - let i, l - for (i = 0, l = this.effects.length; i < l; i++) { - this.effects[i].stop() - } - for (i = 0, l = this.cleanups.length; i < l; i++) { - this.cleanups[i]() - } - if (this.scopes) { - for (i = 0, l = this.scopes.length; i < l; i++) { - this.scopes[i].stop(true) - } - } - if (!this.detached && this.parent && !fromParent) { - const last = this.parent.scopes.pop() - if (last && last !== this) { - this.parent.scopes[this.index] = last - last.index = this.index - } - } - this.parent = void 0 - this.active = false - } - } -} -function effectScope(detached) { - return new EffectScope(detached) -} -function recordEffectScope(effect2, scope = activeEffectScope) { - if (scope && scope.active) { - scope.effects.push(effect2) - } -} -function getCurrentScope() { - return activeEffectScope -} -function onScopeDispose(fn) { - if (activeEffectScope) { - activeEffectScope.cleanups.push(fn) - } else if (true) { - warn( - `onScopeDispose() is called when there is no active effect scope to be associated with.` - ) - } -} -var createDep = effects => { - const dep = new Set(effects) - dep.w = 0 - dep.n = 0 - return dep -} -var wasTracked = dep => (dep.w & trackOpBit) > 0 -var newTracked = dep => (dep.n & trackOpBit) > 0 -var initDepMarkers = ({ deps }) => { - if (deps.length) { - for (let i = 0; i < deps.length; i++) { - deps[i].w |= trackOpBit - } - } -} -var finalizeDepMarkers = effect2 => { - const { deps } = effect2 - if (deps.length) { - let ptr = 0 - for (let i = 0; i < deps.length; i++) { - const dep = deps[i] - if (wasTracked(dep) && !newTracked(dep)) { - dep.delete(effect2) - } else { - deps[ptr++] = dep - } - dep.w &= ~trackOpBit - dep.n &= ~trackOpBit - } - deps.length = ptr - } -} -var targetMap = /* @__PURE__ */ new WeakMap() -var effectTrackDepth = 0 -var trackOpBit = 1 -var maxMarkerBits = 30 -var activeEffect -var ITERATE_KEY = Symbol(true ? 'iterate' : '') -var MAP_KEY_ITERATE_KEY = Symbol(true ? 'Map key iterate' : '') -var ReactiveEffect = class { - constructor(fn, scheduler = null, scope) { - this.fn = fn - this.scheduler = scheduler - this.active = true - this.deps = [] - this.parent = void 0 - recordEffectScope(this, scope) - } - run() { - if (!this.active) { - return this.fn() - } - let parent = activeEffect - let lastShouldTrack = shouldTrack - while (parent) { - if (parent === this) { - return - } - parent = parent.parent - } - try { - this.parent = activeEffect - activeEffect = this - shouldTrack = true - trackOpBit = 1 << ++effectTrackDepth - if (effectTrackDepth <= maxMarkerBits) { - initDepMarkers(this) - } else { - cleanupEffect(this) - } - return this.fn() - } finally { - if (effectTrackDepth <= maxMarkerBits) { - finalizeDepMarkers(this) - } - trackOpBit = 1 << --effectTrackDepth - activeEffect = this.parent - shouldTrack = lastShouldTrack - this.parent = void 0 - if (this.deferStop) { - this.stop() - } - } - } - stop() { - if (activeEffect === this) { - this.deferStop = true - } else if (this.active) { - cleanupEffect(this) - if (this.onStop) { - this.onStop() - } - this.active = false - } - } -} -function cleanupEffect(effect2) { - const { deps } = effect2 - if (deps.length) { - for (let i = 0; i < deps.length; i++) { - deps[i].delete(effect2) - } - deps.length = 0 - } -} -function effect(fn, options) { - if (fn.effect) { - fn = fn.effect.fn - } - const _effect = new ReactiveEffect(fn) - if (options) { - extend(_effect, options) - if (options.scope) recordEffectScope(_effect, options.scope) - } - if (!options || !options.lazy) { - _effect.run() - } - const runner = _effect.run.bind(_effect) - runner.effect = _effect - return runner -} -function stop(runner) { - runner.effect.stop() -} -var shouldTrack = true -var trackStack = [] -function pauseTracking() { - trackStack.push(shouldTrack) - shouldTrack = false -} -function resetTracking() { - const last = trackStack.pop() - shouldTrack = last === void 0 ? true : last -} -function track(target, type, key) { - if (shouldTrack && activeEffect) { - let depsMap = targetMap.get(target) - if (!depsMap) { - targetMap.set(target, (depsMap = /* @__PURE__ */ new Map())) - } - let dep = depsMap.get(key) - if (!dep) { - depsMap.set(key, (dep = createDep())) - } - const eventInfo = true - ? { effect: activeEffect, target, type, key } - : void 0 - trackEffects(dep, eventInfo) - } -} -function trackEffects(dep, debuggerEventExtraInfo) { - let shouldTrack2 = false - if (effectTrackDepth <= maxMarkerBits) { - if (!newTracked(dep)) { - dep.n |= trackOpBit - shouldTrack2 = !wasTracked(dep) - } - } else { - shouldTrack2 = !dep.has(activeEffect) - } - if (shouldTrack2) { - dep.add(activeEffect) - activeEffect.deps.push(dep) - if (activeEffect.onTrack) { - activeEffect.onTrack( - Object.assign({ effect: activeEffect }, debuggerEventExtraInfo) - ) - } - } -} -function trigger(target, type, key, newValue, oldValue, oldTarget) { - const depsMap = targetMap.get(target) - if (!depsMap) { - return - } - let deps = [] - if (type === 'clear') { - deps = [...depsMap.values()] - } else if (key === 'length' && isArray(target)) { - const newLength = toNumber(newValue) - depsMap.forEach((dep, key2) => { - if (key2 === 'length' || key2 >= newLength) { - deps.push(dep) - } - }) - } else { - if (key !== void 0) { - deps.push(depsMap.get(key)) - } - switch (type) { - case 'add': - if (!isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)) - if (isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)) - } - } else if (isIntegerKey(key)) { - deps.push(depsMap.get('length')) - } - break - case 'delete': - if (!isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)) - if (isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)) - } - } - break - case 'set': - if (isMap(target)) { - deps.push(depsMap.get(ITERATE_KEY)) - } - break - } - } - const eventInfo = true - ? { target, type, key, newValue, oldValue, oldTarget } - : void 0 - if (deps.length === 1) { - if (deps[0]) { - if (true) { - triggerEffects(deps[0], eventInfo) - } else { - triggerEffects(deps[0]) - } - } - } else { - const effects = [] - for (const dep of deps) { - if (dep) { - effects.push(...dep) - } - } - if (true) { - triggerEffects(createDep(effects), eventInfo) - } else { - triggerEffects(createDep(effects)) - } - } -} -function triggerEffects(dep, debuggerEventExtraInfo) { - const effects = isArray(dep) ? dep : [...dep] - for (const effect2 of effects) { - if (effect2.computed) { - triggerEffect(effect2, debuggerEventExtraInfo) - } - } - for (const effect2 of effects) { - if (!effect2.computed) { - triggerEffect(effect2, debuggerEventExtraInfo) - } - } -} -function triggerEffect(effect2, debuggerEventExtraInfo) { - if (effect2 !== activeEffect || effect2.allowRecurse) { - if (effect2.onTrigger) { - effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo)) - } - if (effect2.scheduler) { - effect2.scheduler() - } else { - effect2.run() - } - } -} -var isNonTrackableKeys = makeMap(`__proto__,__v_isRef,__isVue`) -var builtInSymbols = new Set( - Object.getOwnPropertyNames(Symbol) - .filter(key => key !== 'arguments' && key !== 'caller') - .map(key => Symbol[key]) - .filter(isSymbol) -) -var get = createGetter() -var shallowGet = createGetter(false, true) -var readonlyGet = createGetter(true) -var shallowReadonlyGet = createGetter(true, true) -var arrayInstrumentations = createArrayInstrumentations() -function createArrayInstrumentations() { - const instrumentations = {} - ;['includes', 'indexOf', 'lastIndexOf'].forEach(key => { - instrumentations[key] = function (...args) { - const arr = toRaw(this) - for (let i = 0, l = this.length; i < l; i++) { - track(arr, 'get', i + '') - } - const res = arr[key](...args) - if (res === -1 || res === false) { - return arr[key](...args.map(toRaw)) - } else { - return res - } - } - }) - ;['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => { - instrumentations[key] = function (...args) { - pauseTracking() - const res = toRaw(this)[key].apply(this, args) - resetTracking() - return res - } - }) - return instrumentations -} -function createGetter(isReadonly2 = false, shallow = false) { - return function get2(target, key, receiver) { - if (key === '__v_isReactive') { - return !isReadonly2 - } else if (key === '__v_isReadonly') { - return isReadonly2 - } else if (key === '__v_isShallow') { - return shallow - } else if ( - key === '__v_raw' && - receiver === - (isReadonly2 - ? shallow - ? shallowReadonlyMap - : readonlyMap - : shallow - ? shallowReactiveMap - : reactiveMap - ).get(target) - ) { - return target - } - const targetIsArray = isArray(target) - if (!isReadonly2 && targetIsArray && hasOwn(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver) - } - const res = Reflect.get(target, key, receiver) - if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { - return res - } - if (!isReadonly2) { - track(target, 'get', key) - } - if (shallow) { - return res - } - if (isRef(res)) { - return targetIsArray && isIntegerKey(key) ? res : res.value - } - if (isObject(res)) { - return isReadonly2 ? readonly(res) : reactive(res) - } - return res - } -} -var set = createSetter() -var shallowSet = createSetter(true) -function createSetter(shallow = false) { - return function set2(target, key, value, receiver) { - let oldValue = target[key] - if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { - return false - } - if (!shallow) { - if (!isShallow(value) && !isReadonly(value)) { - oldValue = toRaw(oldValue) - value = toRaw(value) - } - if (!isArray(target) && isRef(oldValue) && !isRef(value)) { - oldValue.value = value - return true - } - } - const hadKey = - isArray(target) && isIntegerKey(key) - ? Number(key) < target.length - : hasOwn(target, key) - const result = Reflect.set(target, key, value, receiver) - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, 'add', key, value) - } else if (hasChanged(value, oldValue)) { - trigger(target, 'set', key, value, oldValue) - } - } - return result - } -} -function deleteProperty(target, key) { - const hadKey = hasOwn(target, key) - const oldValue = target[key] - const result = Reflect.deleteProperty(target, key) - if (result && hadKey) { - trigger(target, 'delete', key, void 0, oldValue) - } - return result -} -function has(target, key) { - const result = Reflect.has(target, key) - if (!isSymbol(key) || !builtInSymbols.has(key)) { - track(target, 'has', key) - } - return result -} -function ownKeys(target) { - track(target, 'iterate', isArray(target) ? 'length' : ITERATE_KEY) - return Reflect.ownKeys(target) -} -var mutableHandlers = { - get, - set, - deleteProperty, - has, - ownKeys -} -var readonlyHandlers = { - get: readonlyGet, - set(target, key) { - if (true) { - warn( - `Set operation on key "${String(key)}" failed: target is readonly.`, - target - ) - } - return true - }, - deleteProperty(target, key) { - if (true) { - warn( - `Delete operation on key "${String(key)}" failed: target is readonly.`, - target - ) - } - return true - } -} -var shallowReactiveHandlers = extend({}, mutableHandlers, { - get: shallowGet, - set: shallowSet -}) -var shallowReadonlyHandlers = extend({}, readonlyHandlers, { - get: shallowReadonlyGet -}) -var toShallow = value => value -var getProto = v => Reflect.getPrototypeOf(v) -function get$1(target, key, isReadonly2 = false, isShallow3 = false) { - target = - target[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] - const rawTarget = toRaw(target) - const rawKey = toRaw(key) - if (!isReadonly2) { - if (key !== rawKey) { - track(rawTarget, 'get', key) - } - track(rawTarget, 'get', rawKey) - } - const { has: has2 } = getProto(rawTarget) - const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive - if (has2.call(rawTarget, key)) { - return wrap(target.get(key)) - } else if (has2.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)) - } else if (target !== rawTarget) { - target.get(key) - } -} -function has$1(key, isReadonly2 = false) { - const target = - this[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] - const rawTarget = toRaw(target) - const rawKey = toRaw(key) - if (!isReadonly2) { - if (key !== rawKey) { - track(rawTarget, 'has', key) - } - track(rawTarget, 'has', rawKey) - } - return key === rawKey - ? target.has(key) - : target.has(key) || target.has(rawKey) -} -function size(target, isReadonly2 = false) { - target = - target[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] - !isReadonly2 && track(toRaw(target), 'iterate', ITERATE_KEY) - return Reflect.get(target, 'size', target) -} -function add(value) { - value = toRaw(value) - const target = toRaw(this) - const proto = getProto(target) - const hadKey = proto.has.call(target, value) - if (!hadKey) { - target.add(value) - trigger(target, 'add', value, value) - } - return this -} -function set$1(key, value) { - value = toRaw(value) - const target = toRaw(this) - const { has: has2, get: get2 } = getProto(target) - let hadKey = has2.call(target, key) - if (!hadKey) { - key = toRaw(key) - hadKey = has2.call(target, key) - } else if (true) { - checkIdentityKeys(target, has2, key) - } - const oldValue = get2.call(target, key) - target.set(key, value) - if (!hadKey) { - trigger(target, 'add', key, value) - } else if (hasChanged(value, oldValue)) { - trigger(target, 'set', key, value, oldValue) - } - return this -} -function deleteEntry(key) { - const target = toRaw(this) - const { has: has2, get: get2 } = getProto(target) - let hadKey = has2.call(target, key) - if (!hadKey) { - key = toRaw(key) - hadKey = has2.call(target, key) - } else if (true) { - checkIdentityKeys(target, has2, key) - } - const oldValue = get2 ? get2.call(target, key) : void 0 - const result = target.delete(key) - if (hadKey) { - trigger(target, 'delete', key, void 0, oldValue) - } - return result -} -function clear() { - const target = toRaw(this) - const hadItems = target.size !== 0 - const oldTarget = true - ? isMap(target) - ? new Map(target) - : new Set(target) - : void 0 - const result = target.clear() - if (hadItems) { - trigger(target, 'clear', void 0, void 0, oldTarget) - } - return result -} -function createForEach(isReadonly2, isShallow3) { - return function forEach(callback, thisArg) { - const observed = this - const target = - observed[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] - const rawTarget = toRaw(target) - const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive - !isReadonly2 && track(rawTarget, 'iterate', ITERATE_KEY) - return target.forEach((value, key) => { - return callback.call(thisArg, wrap(value), wrap(key), observed) - }) - } -} -function createIterableMethod(method, isReadonly2, isShallow3) { - return function (...args) { - const target = - this[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] - const rawTarget = toRaw(target) - const targetIsMap = isMap(rawTarget) - const isPair = - method === 'entries' || (method === Symbol.iterator && targetIsMap) - const isKeyOnly = method === 'keys' && targetIsMap - const innerIterator = target[method](...args) - const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive - !isReadonly2 && - track(rawTarget, 'iterate', isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY) - return { - // iterator protocol - next() { - const { value, done } = innerIterator.next() - return done - ? { value, done } - : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done - } - }, - // iterable protocol - [Symbol.iterator]() { - return this - } - } - } -} -function createReadonlyMethod(type) { - return function (...args) { - if (true) { - const key = args[0] ? `on key "${args[0]}" ` : `` - console.warn( - `${capitalize(type)} operation ${key}failed: target is readonly.`, - toRaw(this) - ) - } - return type === 'delete' ? false : this - } -} -function createInstrumentations() { - const mutableInstrumentations2 = { - get(key) { - return get$1(this, key) - }, - get size() { - return size(this) - }, - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, false) - } - const shallowInstrumentations2 = { - get(key) { - return get$1(this, key, false, true) - }, - get size() { - return size(this) - }, - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, true) - } - const readonlyInstrumentations2 = { - get(key) { - return get$1(this, key, true) - }, - get size() { - return size(this, true) - }, - has(key) { - return has$1.call(this, key, true) - }, - add: createReadonlyMethod( - 'add' - /* TriggerOpTypes.ADD */ - ), - set: createReadonlyMethod( - 'set' - /* TriggerOpTypes.SET */ - ), - delete: createReadonlyMethod( - 'delete' - /* TriggerOpTypes.DELETE */ - ), - clear: createReadonlyMethod( - 'clear' - /* TriggerOpTypes.CLEAR */ - ), - forEach: createForEach(true, false) - } - const shallowReadonlyInstrumentations2 = { - get(key) { - return get$1(this, key, true, true) - }, - get size() { - return size(this, true) - }, - has(key) { - return has$1.call(this, key, true) - }, - add: createReadonlyMethod( - 'add' - /* TriggerOpTypes.ADD */ - ), - set: createReadonlyMethod( - 'set' - /* TriggerOpTypes.SET */ - ), - delete: createReadonlyMethod( - 'delete' - /* TriggerOpTypes.DELETE */ - ), - clear: createReadonlyMethod( - 'clear' - /* TriggerOpTypes.CLEAR */ - ), - forEach: createForEach(true, true) - } - const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator] - iteratorMethods.forEach(method => { - mutableInstrumentations2[method] = createIterableMethod( - method, - false, - false - ) - readonlyInstrumentations2[method] = createIterableMethod( - method, - true, - false - ) - shallowInstrumentations2[method] = createIterableMethod(method, false, true) - shallowReadonlyInstrumentations2[method] = createIterableMethod( - method, - true, - true - ) - }) - return [ - mutableInstrumentations2, - readonlyInstrumentations2, - shallowInstrumentations2, - shallowReadonlyInstrumentations2 - ] -} -var [ - mutableInstrumentations, - readonlyInstrumentations, - shallowInstrumentations, - shallowReadonlyInstrumentations -] = createInstrumentations() -function createInstrumentationGetter(isReadonly2, shallow) { - const instrumentations = shallow - ? isReadonly2 - ? shallowReadonlyInstrumentations - : shallowInstrumentations - : isReadonly2 - ? readonlyInstrumentations - : mutableInstrumentations - return (target, key, receiver) => { - if (key === '__v_isReactive') { - return !isReadonly2 - } else if (key === '__v_isReadonly') { - return isReadonly2 - } else if (key === '__v_raw') { - return target - } - return Reflect.get( - hasOwn(instrumentations, key) && key in target - ? instrumentations - : target, - key, - receiver - ) - } -} -var mutableCollectionHandlers = { - get: createInstrumentationGetter(false, false) -} -var shallowCollectionHandlers = { - get: createInstrumentationGetter(false, true) -} -var readonlyCollectionHandlers = { - get: createInstrumentationGetter(true, false) -} -var shallowReadonlyCollectionHandlers = { - get: createInstrumentationGetter(true, true) -} -function checkIdentityKeys(target, has2, key) { - const rawKey = toRaw(key) - if (rawKey !== key && has2.call(target, rawKey)) { - const type = toRawType(target) - console.warn( - `Reactive ${type} contains both the raw and reactive versions of the same object${ - type === `Map` ? ` as keys` : `` - }, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` - ) - } -} -var reactiveMap = /* @__PURE__ */ new WeakMap() -var shallowReactiveMap = /* @__PURE__ */ new WeakMap() -var readonlyMap = /* @__PURE__ */ new WeakMap() -var shallowReadonlyMap = /* @__PURE__ */ new WeakMap() -function targetTypeMap(rawType) { - switch (rawType) { - case 'Object': - case 'Array': - return 1 - case 'Map': - case 'Set': - case 'WeakMap': - case 'WeakSet': - return 2 - default: - return 0 - } -} -function getTargetType(value) { - return value[ - '__v_skip' - /* ReactiveFlags.SKIP */ - ] || !Object.isExtensible(value) - ? 0 - : targetTypeMap(toRawType(value)) -} -function reactive(target) { - if (isReadonly(target)) { - return target - } - return createReactiveObject( - target, - false, - mutableHandlers, - mutableCollectionHandlers, - reactiveMap - ) -} -function shallowReactive(target) { - return createReactiveObject( - target, - false, - shallowReactiveHandlers, - shallowCollectionHandlers, - shallowReactiveMap - ) -} -function readonly(target) { - return createReactiveObject( - target, - true, - readonlyHandlers, - readonlyCollectionHandlers, - readonlyMap - ) -} -function shallowReadonly(target) { - return createReactiveObject( - target, - true, - shallowReadonlyHandlers, - shallowReadonlyCollectionHandlers, - shallowReadonlyMap - ) -} -function createReactiveObject( - target, - isReadonly2, - baseHandlers, - collectionHandlers, - proxyMap -) { - if (!isObject(target)) { - if (true) { - console.warn(`value cannot be made reactive: ${String(target)}`) - } - return target - } - if ( - target[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] && - !( - isReadonly2 && - target[ - '__v_isReactive' - /* ReactiveFlags.IS_REACTIVE */ - ] - ) - ) { - return target - } - const existingProxy = proxyMap.get(target) - if (existingProxy) { - return existingProxy - } - const targetType = getTargetType(target) - if (targetType === 0) { - return target - } - const proxy = new Proxy( - target, - targetType === 2 ? collectionHandlers : baseHandlers - ) - proxyMap.set(target, proxy) - return proxy -} -function isReactive(value) { - if (isReadonly(value)) { - return isReactive( - value[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] - ) - } - return !!( - value && - value[ - '__v_isReactive' - /* ReactiveFlags.IS_REACTIVE */ - ] - ) -} -function isReadonly(value) { - return !!( - value && - value[ - '__v_isReadonly' - /* ReactiveFlags.IS_READONLY */ - ] - ) -} -function isShallow(value) { - return !!( - value && - value[ - '__v_isShallow' - /* ReactiveFlags.IS_SHALLOW */ - ] - ) -} -function isProxy(value) { - return isReactive(value) || isReadonly(value) -} -function toRaw(observed) { - const raw = - observed && - observed[ - '__v_raw' - /* ReactiveFlags.RAW */ - ] - return raw ? toRaw(raw) : observed -} -function markRaw(value) { - def(value, '__v_skip', true) - return value -} -var toReactive = value => (isObject(value) ? reactive(value) : value) -var toReadonly = value => (isObject(value) ? readonly(value) : value) -function trackRefValue(ref2) { - if (shouldTrack && activeEffect) { - ref2 = toRaw(ref2) - if (true) { - trackEffects(ref2.dep || (ref2.dep = createDep()), { - target: ref2, - type: 'get', - key: 'value' - }) - } else { - trackEffects(ref2.dep || (ref2.dep = createDep())) - } - } -} -function triggerRefValue(ref2, newVal) { - ref2 = toRaw(ref2) - if (ref2.dep) { - if (true) { - triggerEffects(ref2.dep, { - target: ref2, - type: 'set', - key: 'value', - newValue: newVal - }) - } else { - triggerEffects(ref2.dep) - } - } -} -function isRef(r) { - return !!(r && r.__v_isRef === true) -} -function ref(value) { - return createRef(value, false) -} -function shallowRef(value) { - return createRef(value, true) -} -function createRef(rawValue, shallow) { - if (isRef(rawValue)) { - return rawValue - } - return new RefImpl(rawValue, shallow) -} -var RefImpl = class { - constructor(value, __v_isShallow) { - this.__v_isShallow = __v_isShallow - this.dep = void 0 - this.__v_isRef = true - this._rawValue = __v_isShallow ? value : toRaw(value) - this._value = __v_isShallow ? value : toReactive(value) - } - get value() { - trackRefValue(this) - return this._value - } - set value(newVal) { - const useDirectValue = - this.__v_isShallow || isShallow(newVal) || isReadonly(newVal) - newVal = useDirectValue ? newVal : toRaw(newVal) - if (hasChanged(newVal, this._rawValue)) { - this._rawValue = newVal - this._value = useDirectValue ? newVal : toReactive(newVal) - triggerRefValue(this, newVal) - } - } -} -function triggerRef(ref2) { - triggerRefValue(ref2, true ? ref2.value : void 0) -} -function unref(ref2) { - return isRef(ref2) ? ref2.value : ref2 -} -var shallowUnwrapHandlers = { - get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), - set: (target, key, value, receiver) => { - const oldValue = target[key] - if (isRef(oldValue) && !isRef(value)) { - oldValue.value = value - return true - } else { - return Reflect.set(target, key, value, receiver) - } - } -} -function proxyRefs(objectWithRefs) { - return isReactive(objectWithRefs) - ? objectWithRefs - : new Proxy(objectWithRefs, shallowUnwrapHandlers) -} -var CustomRefImpl = class { - constructor(factory) { - this.dep = void 0 - this.__v_isRef = true - const { get: get2, set: set2 } = factory( - () => trackRefValue(this), - () => triggerRefValue(this) - ) - this._get = get2 - this._set = set2 - } - get value() { - return this._get() - } - set value(newVal) { - this._set(newVal) - } -} -function customRef(factory) { - return new CustomRefImpl(factory) -} -function toRefs(object) { - if (!isProxy(object)) { - console.warn(`toRefs() expects a reactive object but received a plain one.`) - } - const ret = isArray(object) ? new Array(object.length) : {} - for (const key in object) { - ret[key] = toRef(object, key) - } - return ret -} -var ObjectRefImpl = class { - constructor(_object, _key, _defaultValue) { - this._object = _object - this._key = _key - this._defaultValue = _defaultValue - this.__v_isRef = true - } - get value() { - const val = this._object[this._key] - return val === void 0 ? this._defaultValue : val - } - set value(newVal) { - this._object[this._key] = newVal - } -} -function toRef(object, key, defaultValue) { - const val = object[key] - return isRef(val) ? val : new ObjectRefImpl(object, key, defaultValue) -} -var _a -var ComputedRefImpl = class { - constructor(getter, _setter, isReadonly2, isSSR) { - this._setter = _setter - this.dep = void 0 - this.__v_isRef = true - this[_a] = false - this._dirty = true - this.effect = new ReactiveEffect(getter, () => { - if (!this._dirty) { - this._dirty = true - triggerRefValue(this) - } - }) - this.effect.computed = this - this.effect.active = this._cacheable = !isSSR - this[ - '__v_isReadonly' - /* ReactiveFlags.IS_READONLY */ - ] = isReadonly2 - } - get value() { - const self2 = toRaw(this) - trackRefValue(self2) - if (self2._dirty || !self2._cacheable) { - self2._dirty = false - self2._value = self2.effect.run() - } - return self2._value - } - set value(newValue) { - this._setter(newValue) - } -} -_a = '__v_isReadonly' -function computed(getterOrOptions, debugOptions, isSSR = false) { - let getter - let setter - const onlyGetter = isFunction(getterOrOptions) - if (onlyGetter) { - getter = getterOrOptions - setter = true - ? () => { - console.warn('Write operation failed: computed value is readonly') - } - : NOOP - } else { - getter = getterOrOptions.get - setter = getterOrOptions.set - } - const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR) - if (debugOptions && !isSSR) { - cRef.effect.onTrack = debugOptions.onTrack - cRef.effect.onTrigger = debugOptions.onTrigger - } - return cRef -} -var _a$1 -var tick = Promise.resolve() -_a$1 = '__v_isReadonly' - -// ../node_modules/.pnpm/@vue+runtime-core@3.2.45/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js -var stack = [] -function pushWarningContext(vnode) { - stack.push(vnode) -} -function popWarningContext() { - stack.pop() -} -function warn2(msg, ...args) { - if (false) return - pauseTracking() - const instance = stack.length ? stack[stack.length - 1].component : null - const appWarnHandler = instance && instance.appContext.config.warnHandler - const trace = getComponentTrace() - if (appWarnHandler) { - callWithErrorHandling(appWarnHandler, instance, 11, [ - msg + args.join(''), - instance && instance.proxy, - trace - .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`) - .join('\n'), - trace - ]) - } else { - const warnArgs = [`[Vue warn]: ${msg}`, ...args] - if ( - trace.length && // avoid spamming console during tests - true - ) { - warnArgs.push( - ` -`, - ...formatTrace(trace) - ) - } - console.warn(...warnArgs) - } - resetTracking() -} -function getComponentTrace() { - let currentVNode = stack[stack.length - 1] - if (!currentVNode) { - return [] - } - const normalizedStack = [] - while (currentVNode) { - const last = normalizedStack[0] - if (last && last.vnode === currentVNode) { - last.recurseCount++ - } else { - normalizedStack.push({ - vnode: currentVNode, - recurseCount: 0 - }) - } - const parentInstance = - currentVNode.component && currentVNode.component.parent - currentVNode = parentInstance && parentInstance.vnode - } - return normalizedStack -} -function formatTrace(trace) { - const logs = [] - trace.forEach((entry, i) => { - logs.push( - ...(i === 0 - ? [] - : [ - ` -` - ]), - ...formatTraceEntry(entry) - ) - }) - return logs -} -function formatTraceEntry({ vnode, recurseCount }) { - const postfix = - recurseCount > 0 ? `... (${recurseCount} recursive calls)` : `` - const isRoot = vnode.component ? vnode.component.parent == null : false - const open = ` at <${formatComponentName( - vnode.component, - vnode.type, - isRoot - )}` - const close = `>` + postfix - return vnode.props - ? [open, ...formatProps(vnode.props), close] - : [open + close] -} -function formatProps(props) { - const res = [] - const keys = Object.keys(props) - keys.slice(0, 3).forEach(key => { - res.push(...formatProp(key, props[key])) - }) - if (keys.length > 3) { - res.push(` ...`) - } - return res -} -function formatProp(key, value, raw) { - if (isString(value)) { - value = JSON.stringify(value) - return raw ? value : [`${key}=${value}`] - } else if ( - typeof value === 'number' || - typeof value === 'boolean' || - value == null - ) { - return raw ? value : [`${key}=${value}`] - } else if (isRef(value)) { - value = formatProp(key, toRaw(value.value), true) - return raw ? value : [`${key}=Ref<`, value, `>`] - } else if (isFunction(value)) { - return [`${key}=fn${value.name ? `<${value.name}>` : ``}`] - } else { - value = toRaw(value) - return raw ? value : [`${key}=`, value] - } -} -var ErrorTypeStrings = { - ['sp']: - /* LifecycleHooks.SERVER_PREFETCH */ - 'serverPrefetch hook', - ['bc']: - /* LifecycleHooks.BEFORE_CREATE */ - 'beforeCreate hook', - ['c']: - /* LifecycleHooks.CREATED */ - 'created hook', - ['bm']: - /* LifecycleHooks.BEFORE_MOUNT */ - 'beforeMount hook', - ['m']: - /* LifecycleHooks.MOUNTED */ - 'mounted hook', - ['bu']: - /* LifecycleHooks.BEFORE_UPDATE */ - 'beforeUpdate hook', - ['u']: - /* LifecycleHooks.UPDATED */ - 'updated', - ['bum']: - /* LifecycleHooks.BEFORE_UNMOUNT */ - 'beforeUnmount hook', - ['um']: - /* LifecycleHooks.UNMOUNTED */ - 'unmounted hook', - ['a']: - /* LifecycleHooks.ACTIVATED */ - 'activated hook', - ['da']: - /* LifecycleHooks.DEACTIVATED */ - 'deactivated hook', - ['ec']: - /* LifecycleHooks.ERROR_CAPTURED */ - 'errorCaptured hook', - ['rtc']: - /* LifecycleHooks.RENDER_TRACKED */ - 'renderTracked hook', - ['rtg']: - /* LifecycleHooks.RENDER_TRIGGERED */ - 'renderTriggered hook', - [0]: - /* ErrorCodes.SETUP_FUNCTION */ - 'setup function', - [1]: - /* ErrorCodes.RENDER_FUNCTION */ - 'render function', - [2]: - /* ErrorCodes.WATCH_GETTER */ - 'watcher getter', - [3]: - /* ErrorCodes.WATCH_CALLBACK */ - 'watcher callback', - [4]: - /* ErrorCodes.WATCH_CLEANUP */ - 'watcher cleanup function', - [5]: - /* ErrorCodes.NATIVE_EVENT_HANDLER */ - 'native event handler', - [6]: - /* ErrorCodes.COMPONENT_EVENT_HANDLER */ - 'component event handler', - [7]: - /* ErrorCodes.VNODE_HOOK */ - 'vnode hook', - [8]: - /* ErrorCodes.DIRECTIVE_HOOK */ - 'directive hook', - [9]: - /* ErrorCodes.TRANSITION_HOOK */ - 'transition hook', - [10]: - /* ErrorCodes.APP_ERROR_HANDLER */ - 'app errorHandler', - [11]: - /* ErrorCodes.APP_WARN_HANDLER */ - 'app warnHandler', - [12]: - /* ErrorCodes.FUNCTION_REF */ - 'ref function', - [13]: - /* ErrorCodes.ASYNC_COMPONENT_LOADER */ - 'async component loader', - [14]: - /* ErrorCodes.SCHEDULER */ - 'scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core' -} -function callWithErrorHandling(fn, instance, type, args) { - let res - try { - res = args ? fn(...args) : fn() - } catch (err) { - handleError(err, instance, type) - } - return res -} -function callWithAsyncErrorHandling(fn, instance, type, args) { - if (isFunction(fn)) { - const res = callWithErrorHandling(fn, instance, type, args) - if (res && isPromise(res)) { - res.catch(err => { - handleError(err, instance, type) - }) - } - return res - } - const values = [] - for (let i = 0; i < fn.length; i++) { - values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)) - } - return values -} -function handleError(err, instance, type, throwInDev = true) { - const contextVNode = instance ? instance.vnode : null - if (instance) { - let cur = instance.parent - const exposedInstance = instance.proxy - const errorInfo = true ? ErrorTypeStrings[type] : type - while (cur) { - const errorCapturedHooks = cur.ec - if (errorCapturedHooks) { - for (let i = 0; i < errorCapturedHooks.length; i++) { - if ( - errorCapturedHooks[i](err, exposedInstance, errorInfo) === false - ) { - return - } - } - } - cur = cur.parent - } - const appErrorHandler = instance.appContext.config.errorHandler - if (appErrorHandler) { - callWithErrorHandling(appErrorHandler, null, 10, [ - err, - exposedInstance, - errorInfo - ]) - return - } - } - logError(err, type, contextVNode, throwInDev) -} -function logError(err, type, contextVNode, throwInDev = true) { - if (true) { - const info = ErrorTypeStrings[type] - if (contextVNode) { - pushWarningContext(contextVNode) - } - warn2(`Unhandled error${info ? ` during execution of ${info}` : ``}`) - if (contextVNode) { - popWarningContext() - } - if (throwInDev) { - throw err - } else { - console.error(err) - } - } else { - console.error(err) - } -} -var isFlushing = false -var isFlushPending = false -var queue = [] -var flushIndex = 0 -var pendingPostFlushCbs = [] -var activePostFlushCbs = null -var postFlushIndex = 0 -var resolvedPromise = Promise.resolve() -var currentFlushPromise = null -var RECURSION_LIMIT = 100 -function nextTick(fn) { - const p2 = currentFlushPromise || resolvedPromise - return fn ? p2.then(this ? fn.bind(this) : fn) : p2 -} -function findInsertionIndex(id) { - let start = flushIndex + 1 - let end = queue.length - while (start < end) { - const middle = (start + end) >>> 1 - const middleJobId = getId(queue[middle]) - middleJobId < id ? (start = middle + 1) : (end = middle) - } - return start -} -function queueJob(job) { - if ( - !queue.length || - !queue.includes( - job, - isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex - ) - ) { - if (job.id == null) { - queue.push(job) - } else { - queue.splice(findInsertionIndex(job.id), 0, job) - } - queueFlush() - } -} -function queueFlush() { - if (!isFlushing && !isFlushPending) { - isFlushPending = true - currentFlushPromise = resolvedPromise.then(flushJobs) - } -} -function invalidateJob(job) { - const i = queue.indexOf(job) - if (i > flushIndex) { - queue.splice(i, 1) - } -} -function queuePostFlushCb(cb) { - if (!isArray(cb)) { - if ( - !activePostFlushCbs || - !activePostFlushCbs.includes( - cb, - cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex - ) - ) { - pendingPostFlushCbs.push(cb) - } - } else { - pendingPostFlushCbs.push(...cb) - } - queueFlush() -} -function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { - if (true) { - seen = seen || /* @__PURE__ */ new Map() - } - for (; i < queue.length; i++) { - const cb = queue[i] - if (cb && cb.pre) { - if (checkRecursiveUpdates(seen, cb)) { - continue - } - queue.splice(i, 1) - i-- - cb() - } - } -} -function flushPostFlushCbs(seen) { - if (pendingPostFlushCbs.length) { - const deduped = [...new Set(pendingPostFlushCbs)] - pendingPostFlushCbs.length = 0 - if (activePostFlushCbs) { - activePostFlushCbs.push(...deduped) - return - } - activePostFlushCbs = deduped - if (true) { - seen = seen || /* @__PURE__ */ new Map() - } - activePostFlushCbs.sort((a, b) => getId(a) - getId(b)) - for ( - postFlushIndex = 0; - postFlushIndex < activePostFlushCbs.length; - postFlushIndex++ - ) { - if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { - continue - } - activePostFlushCbs[postFlushIndex]() - } - activePostFlushCbs = null - postFlushIndex = 0 - } -} -var getId = job => (job.id == null ? Infinity : job.id) -var comparator = (a, b) => { - const diff = getId(a) - getId(b) - if (diff === 0) { - if (a.pre && !b.pre) return -1 - if (b.pre && !a.pre) return 1 - } - return diff -} -function flushJobs(seen) { - isFlushPending = false - isFlushing = true - if (true) { - seen = seen || /* @__PURE__ */ new Map() - } - queue.sort(comparator) - const check = true ? job => checkRecursiveUpdates(seen, job) : NOOP - try { - for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { - const job = queue[flushIndex] - if (job && job.active !== false) { - if (check(job)) { - continue - } - callWithErrorHandling( - job, - null, - 14 - /* ErrorCodes.SCHEDULER */ - ) - } - } - } finally { - flushIndex = 0 - queue.length = 0 - flushPostFlushCbs(seen) - isFlushing = false - currentFlushPromise = null - if (queue.length || pendingPostFlushCbs.length) { - flushJobs(seen) - } - } -} -function checkRecursiveUpdates(seen, fn) { - if (!seen.has(fn)) { - seen.set(fn, 1) - } else { - const count = seen.get(fn) - if (count > RECURSION_LIMIT) { - const instance = fn.ownerInstance - const componentName = instance && getComponentName(instance.type) - warn2( - `Maximum recursive updates exceeded${ - componentName ? ` in component <${componentName}>` : `` - }. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.` - ) - return true - } else { - seen.set(fn, count + 1) - } - } -} -var isHmrUpdating = false -var hmrDirtyComponents = /* @__PURE__ */ new Set() -if (true) { - getGlobalThis().__VUE_HMR_RUNTIME__ = { - createRecord: tryWrap(createRecord), - rerender: tryWrap(rerender), - reload: tryWrap(reload) - } -} -var map = /* @__PURE__ */ new Map() -function registerHMR(instance) { - const id = instance.type.__hmrId - let record = map.get(id) - if (!record) { - createRecord(id, instance.type) - record = map.get(id) - } - record.instances.add(instance) -} -function unregisterHMR(instance) { - map.get(instance.type.__hmrId).instances.delete(instance) -} -function createRecord(id, initialDef) { - if (map.has(id)) { - return false - } - map.set(id, { - initialDef: normalizeClassComponent(initialDef), - instances: /* @__PURE__ */ new Set() - }) - return true -} -function normalizeClassComponent(component) { - return isClassComponent(component) ? component.__vccOpts : component -} -function rerender(id, newRender) { - const record = map.get(id) - if (!record) { - return - } - record.initialDef.render = newRender - ;[...record.instances].forEach(instance => { - if (newRender) { - instance.render = newRender - normalizeClassComponent(instance.type).render = newRender - } - instance.renderCache = [] - isHmrUpdating = true - instance.update() - isHmrUpdating = false - }) -} -function reload(id, newComp) { - const record = map.get(id) - if (!record) return - newComp = normalizeClassComponent(newComp) - updateComponentDef(record.initialDef, newComp) - const instances = [...record.instances] - for (const instance of instances) { - const oldComp = normalizeClassComponent(instance.type) - if (!hmrDirtyComponents.has(oldComp)) { - if (oldComp !== record.initialDef) { - updateComponentDef(oldComp, newComp) - } - hmrDirtyComponents.add(oldComp) - } - instance.appContext.optionsCache.delete(instance.type) - if (instance.ceReload) { - hmrDirtyComponents.add(oldComp) - instance.ceReload(newComp.styles) - hmrDirtyComponents.delete(oldComp) - } else if (instance.parent) { - queueJob(instance.parent.update) - } else if (instance.appContext.reload) { - instance.appContext.reload() - } else if (typeof window !== 'undefined') { - window.location.reload() - } else { - console.warn( - '[HMR] Root or manually mounted instance modified. Full reload required.' - ) - } - } - queuePostFlushCb(() => { - for (const instance of instances) { - hmrDirtyComponents.delete(normalizeClassComponent(instance.type)) - } - }) -} -function updateComponentDef(oldComp, newComp) { - extend(oldComp, newComp) - for (const key in oldComp) { - if (key !== '__file' && !(key in newComp)) { - delete oldComp[key] - } - } -} -function tryWrap(fn) { - return (id, arg) => { - try { - return fn(id, arg) - } catch (e) { - console.error(e) - console.warn( - `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` - ) - } - } -} -var devtools -var buffer = [] -var devtoolsNotInstalled = false -function emit(event, ...args) { - if (devtools) { - devtools.emit(event, ...args) - } else if (!devtoolsNotInstalled) { - buffer.push({ event, args }) - } -} -function setDevtoolsHook(hook, target) { - var _a2, _b - devtools = hook - if (devtools) { - devtools.enabled = true - buffer.forEach(({ event, args }) => devtools.emit(event, ...args)) - buffer = [] - } else if ( - // handle late devtools injection - only do this if we are in an actual - // browser environment to avoid the timer handle stalling test runner exit - // (#4815) - typeof window !== 'undefined' && // some envs mock window but not fully - window.HTMLElement && // also exclude jsdom - !((_b = - (_a2 = window.navigator) === null || _a2 === void 0 - ? void 0 - : _a2.userAgent) === null || _b === void 0 - ? void 0 - : _b.includes('jsdom')) - ) { - const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ = - target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []) - replay.push(newHook => { - setDevtoolsHook(newHook, target) - }) - setTimeout(() => { - if (!devtools) { - target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null - devtoolsNotInstalled = true - buffer = [] - } - }, 3e3) - } else { - devtoolsNotInstalled = true - buffer = [] - } -} -function devtoolsInitApp(app, version2) { - emit('app:init', app, version2, { - Fragment, - Text, - Comment, - Static - }) -} -function devtoolsUnmountApp(app) { - emit('app:unmount', app) -} -var devtoolsComponentAdded = createDevtoolsComponentHook( - 'component:added' - /* DevtoolsHooks.COMPONENT_ADDED */ -) -var devtoolsComponentUpdated = createDevtoolsComponentHook( - 'component:updated' - /* DevtoolsHooks.COMPONENT_UPDATED */ -) -var _devtoolsComponentRemoved = createDevtoolsComponentHook( - 'component:removed' - /* DevtoolsHooks.COMPONENT_REMOVED */ -) -var devtoolsComponentRemoved = component => { - if ( - devtools && - typeof devtools.cleanupBuffer === 'function' && // remove the component if it wasn't buffered - !devtools.cleanupBuffer(component) - ) { - _devtoolsComponentRemoved(component) - } -} -function createDevtoolsComponentHook(hook) { - return component => { - emit( - hook, - component.appContext.app, - component.uid, - component.parent ? component.parent.uid : void 0, - component - ) - } -} -var devtoolsPerfStart = createDevtoolsPerformanceHook( - 'perf:start' - /* DevtoolsHooks.PERFORMANCE_START */ -) -var devtoolsPerfEnd = createDevtoolsPerformanceHook( - 'perf:end' - /* DevtoolsHooks.PERFORMANCE_END */ -) -function createDevtoolsPerformanceHook(hook) { - return (component, type, time) => { - emit(hook, component.appContext.app, component.uid, component, type, time) - } -} -function devtoolsComponentEmit(component, event, params) { - emit('component:emit', component.appContext.app, component, event, params) -} -function emit$1(instance, event, ...rawArgs) { - if (instance.isUnmounted) return - const props = instance.vnode.props || EMPTY_OBJ - if (true) { - const { - emitsOptions, - propsOptions: [propsOptions] - } = instance - if (emitsOptions) { - if (!(event in emitsOptions) && true) { - if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { - warn2( - `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey( - event - )}" prop.` - ) - } - } else { - const validator = emitsOptions[event] - if (isFunction(validator)) { - const isValid = validator(...rawArgs) - if (!isValid) { - warn2( - `Invalid event arguments: event validation failed for event "${event}".` - ) - } - } - } - } - } - let args = rawArgs - const isModelListener2 = event.startsWith('update:') - const modelArg = isModelListener2 && event.slice(7) - if (modelArg && modelArg in props) { - const modifiersKey = `${ - modelArg === 'modelValue' ? 'model' : modelArg - }Modifiers` - const { number, trim } = props[modifiersKey] || EMPTY_OBJ - if (trim) { - args = rawArgs.map(a => (isString(a) ? a.trim() : a)) - } - if (number) { - args = rawArgs.map(toNumber) - } - } - if (true) { - devtoolsComponentEmit(instance, event, args) - } - if (true) { - const lowerCaseEvent = event.toLowerCase() - if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { - warn2( - `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( - instance, - instance.type - )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( - event - )}" instead of "${event}".` - ) - } - } - let handlerName - let handler = - props[(handlerName = toHandlerKey(event))] || // also try camelCase event handler (#2249) - props[(handlerName = toHandlerKey(camelize(event)))] - if (!handler && isModelListener2) { - handler = props[(handlerName = toHandlerKey(hyphenate(event)))] - } - if (handler) { - callWithAsyncErrorHandling(handler, instance, 6, args) - } - const onceHandler = props[handlerName + `Once`] - if (onceHandler) { - if (!instance.emitted) { - instance.emitted = {} - } else if (instance.emitted[handlerName]) { - return - } - instance.emitted[handlerName] = true - callWithAsyncErrorHandling(onceHandler, instance, 6, args) - } -} -function normalizeEmitsOptions(comp, appContext, asMixin = false) { - const cache = appContext.emitsCache - const cached = cache.get(comp) - if (cached !== void 0) { - return cached - } - const raw = comp.emits - let normalized = {} - let hasExtends = false - if (__VUE_OPTIONS_API__ && !isFunction(comp)) { - const extendEmits = raw2 => { - const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true) - if (normalizedFromExtend) { - hasExtends = true - extend(normalized, normalizedFromExtend) - } - } - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendEmits) - } - if (comp.extends) { - extendEmits(comp.extends) - } - if (comp.mixins) { - comp.mixins.forEach(extendEmits) - } - } - if (!raw && !hasExtends) { - if (isObject(comp)) { - cache.set(comp, null) - } - return null - } - if (isArray(raw)) { - raw.forEach(key => (normalized[key] = null)) - } else { - extend(normalized, raw) - } - if (isObject(comp)) { - cache.set(comp, normalized) - } - return normalized -} -function isEmitListener(options, key) { - if (!options || !isOn(key)) { - return false - } - key = key.slice(2).replace(/Once$/, '') - return ( - hasOwn(options, key[0].toLowerCase() + key.slice(1)) || - hasOwn(options, hyphenate(key)) || - hasOwn(options, key) - ) -} -var currentRenderingInstance = null -var currentScopeId = null -function setCurrentRenderingInstance(instance) { - const prev = currentRenderingInstance - currentRenderingInstance = instance - currentScopeId = (instance && instance.type.__scopeId) || null - return prev -} -function pushScopeId(id) { - currentScopeId = id -} -function popScopeId() { - currentScopeId = null -} -var withScopeId = _id => withCtx -function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { - if (!ctx) return fn - if (fn._n) { - return fn - } - const renderFnWithContext = (...args) => { - if (renderFnWithContext._d) { - setBlockTracking(-1) - } - const prevInstance = setCurrentRenderingInstance(ctx) - let res - try { - res = fn(...args) - } finally { - setCurrentRenderingInstance(prevInstance) - if (renderFnWithContext._d) { - setBlockTracking(1) - } - } - if (true) { - devtoolsComponentUpdated(ctx) - } - return res - } - renderFnWithContext._n = true - renderFnWithContext._c = true - renderFnWithContext._d = true - return renderFnWithContext -} -var accessedAttrs = false -function markAttrsAccessed() { - accessedAttrs = true -} -function renderComponentRoot(instance) { - const { - type: Component, - vnode, - proxy, - withProxy, - props, - propsOptions: [propsOptions], - slots, - attrs, - emit: emit2, - render: render2, - renderCache, - data, - setupState, - ctx, - inheritAttrs - } = instance - let result - let fallthroughAttrs - const prev = setCurrentRenderingInstance(instance) - if (true) { - accessedAttrs = false - } - try { - if (vnode.shapeFlag & 4) { - const proxyToUse = withProxy || proxy - result = normalizeVNode( - render2.call( - proxyToUse, - proxyToUse, - renderCache, - props, - setupState, - data, - ctx - ) - ) - fallthroughAttrs = attrs - } else { - const render3 = Component - if (attrs === props) { - markAttrsAccessed() - } - result = normalizeVNode( - render3.length > 1 - ? render3( - props, - true - ? { - get attrs() { - markAttrsAccessed() - return attrs - }, - slots, - emit: emit2 - } - : { attrs, slots, emit: emit2 } - ) - : render3( - props, - null - /* we know it doesn't need it */ - ) - ) - fallthroughAttrs = Component.props - ? attrs - : getFunctionalFallthrough(attrs) - } - } catch (err) { - blockStack.length = 0 - handleError( - err, - instance, - 1 - /* ErrorCodes.RENDER_FUNCTION */ - ) - result = createVNode(Comment) - } - let root = result - let setRoot = void 0 - if (result.patchFlag > 0 && result.patchFlag & 2048) { - ;[root, setRoot] = getChildRoot(result) - } - if (fallthroughAttrs && inheritAttrs !== false) { - const keys = Object.keys(fallthroughAttrs) - const { shapeFlag } = root - if (keys.length) { - if (shapeFlag & (1 | 6)) { - if (propsOptions && keys.some(isModelListener)) { - fallthroughAttrs = filterModelListeners( - fallthroughAttrs, - propsOptions - ) - } - root = cloneVNode(root, fallthroughAttrs) - } else if (!accessedAttrs && root.type !== Comment) { - const allAttrs = Object.keys(attrs) - const eventAttrs = [] - const extraAttrs = [] - for (let i = 0, l = allAttrs.length; i < l; i++) { - const key = allAttrs[i] - if (isOn(key)) { - if (!isModelListener(key)) { - eventAttrs.push(key[2].toLowerCase() + key.slice(3)) - } - } else { - extraAttrs.push(key) - } - } - if (extraAttrs.length) { - warn2( - `Extraneous non-props attributes (${extraAttrs.join( - ', ' - )}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` - ) - } - if (eventAttrs.length) { - warn2( - `Extraneous non-emits event listeners (${eventAttrs.join( - ', ' - )}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` - ) - } - } - } - } - if (vnode.dirs) { - if (!isElementRoot(root)) { - warn2( - `Runtime directive used on component with non-element root node. The directives will not function as intended.` - ) - } - root = cloneVNode(root) - root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs - } - if (vnode.transition) { - if (!isElementRoot(root)) { - warn2( - `Component inside <Transition> renders non-element root node that cannot be animated.` - ) - } - root.transition = vnode.transition - } - if (setRoot) { - setRoot(root) - } else { - result = root - } - setCurrentRenderingInstance(prev) - return result -} -var getChildRoot = vnode => { - const rawChildren = vnode.children - const dynamicChildren = vnode.dynamicChildren - const childRoot = filterSingleRoot(rawChildren) - if (!childRoot) { - return [vnode, void 0] - } - const index = rawChildren.indexOf(childRoot) - const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1 - const setRoot = updatedRoot => { - rawChildren[index] = updatedRoot - if (dynamicChildren) { - if (dynamicIndex > -1) { - dynamicChildren[dynamicIndex] = updatedRoot - } else if (updatedRoot.patchFlag > 0) { - vnode.dynamicChildren = [...dynamicChildren, updatedRoot] - } - } - } - return [normalizeVNode(childRoot), setRoot] -} -function filterSingleRoot(children) { - let singleRoot - for (let i = 0; i < children.length; i++) { - const child = children[i] - if (isVNode(child)) { - if (child.type !== Comment || child.children === 'v-if') { - if (singleRoot) { - return - } else { - singleRoot = child - } - } - } else { - return - } - } - return singleRoot -} -var getFunctionalFallthrough = attrs => { - let res - for (const key in attrs) { - if (key === 'class' || key === 'style' || isOn(key)) { - ;(res || (res = {}))[key] = attrs[key] - } - } - return res -} -var filterModelListeners = (attrs, props) => { - const res = {} - for (const key in attrs) { - if (!isModelListener(key) || !(key.slice(9) in props)) { - res[key] = attrs[key] - } - } - return res -} -var isElementRoot = vnode => { - return vnode.shapeFlag & (6 | 1) || vnode.type === Comment -} -function shouldUpdateComponent(prevVNode, nextVNode, optimized) { - const { props: prevProps, children: prevChildren, component } = prevVNode - const { props: nextProps, children: nextChildren, patchFlag } = nextVNode - const emits = component.emitsOptions - if ((prevChildren || nextChildren) && isHmrUpdating) { - return true - } - if (nextVNode.dirs || nextVNode.transition) { - return true - } - if (optimized && patchFlag >= 0) { - if (patchFlag & 1024) { - return true - } - if (patchFlag & 16) { - if (!prevProps) { - return !!nextProps - } - return hasPropsChanged(prevProps, nextProps, emits) - } else if (patchFlag & 8) { - const dynamicProps = nextVNode.dynamicProps - for (let i = 0; i < dynamicProps.length; i++) { - const key = dynamicProps[i] - if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { - return true - } - } - } - } else { - if (prevChildren || nextChildren) { - if (!nextChildren || !nextChildren.$stable) { - return true - } - } - if (prevProps === nextProps) { - return false - } - if (!prevProps) { - return !!nextProps - } - if (!nextProps) { - return true - } - return hasPropsChanged(prevProps, nextProps, emits) - } - return false -} -function hasPropsChanged(prevProps, nextProps, emitsOptions) { - const nextKeys = Object.keys(nextProps) - if (nextKeys.length !== Object.keys(prevProps).length) { - return true - } - for (let i = 0; i < nextKeys.length; i++) { - const key = nextKeys[i] - if ( - nextProps[key] !== prevProps[key] && - !isEmitListener(emitsOptions, key) - ) { - return true - } - } - return false -} -function updateHOCHostEl({ vnode, parent }, el) { - while (parent && parent.subTree === vnode) { - ;(vnode = parent.vnode).el = el - parent = parent.parent - } -} -var isSuspense = type => type.__isSuspense -var SuspenseImpl = { - name: 'Suspense', - // In order to make Suspense tree-shakable, we need to avoid importing it - // directly in the renderer. The renderer checks for the __isSuspense flag - // on a vnode's type and calls the `process` method, passing in renderer - // internals. - __isSuspense: true, - process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ) { - if (n1 == null) { - mountSuspense( - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ) - } else { - patchSuspense( - n1, - n2, - container, - anchor, - parentComponent, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ) - } - }, - hydrate: hydrateSuspense, - create: createSuspenseBoundary, - normalize: normalizeSuspenseChildren -} -var Suspense = SuspenseImpl -function triggerEvent(vnode, name) { - const eventListener = vnode.props && vnode.props[name] - if (isFunction(eventListener)) { - eventListener() - } -} -function mountSuspense( - vnode, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - rendererInternals -) { - const { - p: patch, - o: { createElement } - } = rendererInternals - const hiddenContainer = createElement('div') - const suspense = (vnode.suspense = createSuspenseBoundary( - vnode, - parentSuspense, - parentComponent, - container, - hiddenContainer, - anchor, - isSVG, - slotScopeIds, - optimized, - rendererInternals - )) - patch( - null, - (suspense.pendingBranch = vnode.ssContent), - hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds - ) - if (suspense.deps > 0) { - triggerEvent(vnode, 'onPending') - triggerEvent(vnode, 'onFallback') - patch( - null, - vnode.ssFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds - ) - setActiveBranch(suspense, vnode.ssFallback) - } else { - suspense.resolve() - } -} -function patchSuspense( - n1, - n2, - container, - anchor, - parentComponent, - isSVG, - slotScopeIds, - optimized, - { p: patch, um: unmount, o: { createElement } } -) { - const suspense = (n2.suspense = n1.suspense) - suspense.vnode = n2 - n2.el = n1.el - const newBranch = n2.ssContent - const newFallback = n2.ssFallback - const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense - if (pendingBranch) { - suspense.pendingBranch = newBranch - if (isSameVNodeType(newBranch, pendingBranch)) { - patch( - pendingBranch, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ) - if (suspense.deps <= 0) { - suspense.resolve() - } else if (isInFallback) { - patch( - activeBranch, - newFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds, - optimized - ) - setActiveBranch(suspense, newFallback) - } - } else { - suspense.pendingId++ - if (isHydrating) { - suspense.isHydrating = false - suspense.activeBranch = pendingBranch - } else { - unmount(pendingBranch, parentComponent, suspense) - } - suspense.deps = 0 - suspense.effects.length = 0 - suspense.hiddenContainer = createElement('div') - if (isInFallback) { - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ) - if (suspense.deps <= 0) { - suspense.resolve() - } else { - patch( - activeBranch, - newFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds, - optimized - ) - setActiveBranch(suspense, newFallback) - } - } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch( - activeBranch, - newBranch, - container, - anchor, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ) - suspense.resolve(true) - } else { - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ) - if (suspense.deps <= 0) { - suspense.resolve() - } - } - } - } else { - if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch( - activeBranch, - newBranch, - container, - anchor, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ) - setActiveBranch(suspense, newBranch) - } else { - triggerEvent(n2, 'onPending') - suspense.pendingBranch = newBranch - suspense.pendingId++ - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ) - if (suspense.deps <= 0) { - suspense.resolve() - } else { - const { timeout, pendingId } = suspense - if (timeout > 0) { - setTimeout(() => { - if (suspense.pendingId === pendingId) { - suspense.fallback(newFallback) - } - }, timeout) - } else if (timeout === 0) { - suspense.fallback(newFallback) - } - } - } - } -} -var hasWarned = false -function createSuspenseBoundary( - vnode, - parent, - parentComponent, - container, - hiddenContainer, - anchor, - isSVG, - slotScopeIds, - optimized, - rendererInternals, - isHydrating = false -) { - if (!hasWarned) { - hasWarned = true - console[console.info ? 'info' : 'log']( - `<Suspense> is an experimental feature and its API will likely change.` - ) - } - const { - p: patch, - m: move, - um: unmount, - n: next, - o: { parentNode, remove: remove2 } - } = rendererInternals - const timeout = toNumber(vnode.props && vnode.props.timeout) - const suspense = { - vnode, - parent, - parentComponent, - isSVG, - container, - hiddenContainer, - anchor, - deps: 0, - pendingId: 0, - timeout: typeof timeout === 'number' ? timeout : -1, - activeBranch: null, - pendingBranch: null, - isInFallback: true, - isHydrating, - isUnmounted: false, - effects: [], - resolve(resume = false) { - if (true) { - if (!resume && !suspense.pendingBranch) { - throw new Error( - `suspense.resolve() is called without a pending branch.` - ) - } - if (suspense.isUnmounted) { - throw new Error( - `suspense.resolve() is called on an already unmounted suspense boundary.` - ) - } - } - const { - vnode: vnode2, - activeBranch, - pendingBranch, - pendingId, - effects, - parentComponent: parentComponent2, - container: container2 - } = suspense - if (suspense.isHydrating) { - suspense.isHydrating = false - } else if (!resume) { - const delayEnter = - activeBranch && - pendingBranch.transition && - pendingBranch.transition.mode === 'out-in' - if (delayEnter) { - activeBranch.transition.afterLeave = () => { - if (pendingId === suspense.pendingId) { - move( - pendingBranch, - container2, - anchor2, - 0 - /* MoveType.ENTER */ - ) - } - } - } - let { anchor: anchor2 } = suspense - if (activeBranch) { - anchor2 = next(activeBranch) - unmount(activeBranch, parentComponent2, suspense, true) - } - if (!delayEnter) { - move( - pendingBranch, - container2, - anchor2, - 0 - /* MoveType.ENTER */ - ) - } - } - setActiveBranch(suspense, pendingBranch) - suspense.pendingBranch = null - suspense.isInFallback = false - let parent2 = suspense.parent - let hasUnresolvedAncestor = false - while (parent2) { - if (parent2.pendingBranch) { - parent2.effects.push(...effects) - hasUnresolvedAncestor = true - break - } - parent2 = parent2.parent - } - if (!hasUnresolvedAncestor) { - queuePostFlushCb(effects) - } - suspense.effects = [] - triggerEvent(vnode2, 'onResolve') - }, - fallback(fallbackVNode) { - if (!suspense.pendingBranch) { - return - } - const { - vnode: vnode2, - activeBranch, - parentComponent: parentComponent2, - container: container2, - isSVG: isSVG2 - } = suspense - triggerEvent(vnode2, 'onFallback') - const anchor2 = next(activeBranch) - const mountFallback = () => { - if (!suspense.isInFallback) { - return - } - patch( - null, - fallbackVNode, - container2, - anchor2, - parentComponent2, - null, - // fallback tree will not have suspense context - isSVG2, - slotScopeIds, - optimized - ) - setActiveBranch(suspense, fallbackVNode) - } - const delayEnter = - fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in' - if (delayEnter) { - activeBranch.transition.afterLeave = mountFallback - } - suspense.isInFallback = true - unmount( - activeBranch, - parentComponent2, - null, - // no suspense so unmount hooks fire now - true - // shouldRemove - ) - if (!delayEnter) { - mountFallback() - } - }, - move(container2, anchor2, type) { - suspense.activeBranch && - move(suspense.activeBranch, container2, anchor2, type) - suspense.container = container2 - }, - next() { - return suspense.activeBranch && next(suspense.activeBranch) - }, - registerDep(instance, setupRenderEffect) { - const isInPendingSuspense = !!suspense.pendingBranch - if (isInPendingSuspense) { - suspense.deps++ - } - const hydratedEl = instance.vnode.el - instance.asyncDep - .catch(err => { - handleError( - err, - instance, - 0 - /* ErrorCodes.SETUP_FUNCTION */ - ) - }) - .then(asyncSetupResult => { - if ( - instance.isUnmounted || - suspense.isUnmounted || - suspense.pendingId !== instance.suspenseId - ) { - return - } - instance.asyncResolved = true - const { vnode: vnode2 } = instance - if (true) { - pushWarningContext(vnode2) - } - handleSetupResult(instance, asyncSetupResult, false) - if (hydratedEl) { - vnode2.el = hydratedEl - } - const placeholder = !hydratedEl && instance.subTree.el - setupRenderEffect( - instance, - vnode2, - // component may have been moved before resolve. - // if this is not a hydration, instance.subTree will be the comment - // placeholder. - parentNode(hydratedEl || instance.subTree.el), - // anchor will not be used if this is hydration, so only need to - // consider the comment placeholder case. - hydratedEl ? null : next(instance.subTree), - suspense, - isSVG, - optimized - ) - if (placeholder) { - remove2(placeholder) - } - updateHOCHostEl(instance, vnode2.el) - if (true) { - popWarningContext() - } - if (isInPendingSuspense && --suspense.deps === 0) { - suspense.resolve() - } - }) - }, - unmount(parentSuspense, doRemove) { - suspense.isUnmounted = true - if (suspense.activeBranch) { - unmount( - suspense.activeBranch, - parentComponent, - parentSuspense, - doRemove - ) - } - if (suspense.pendingBranch) { - unmount( - suspense.pendingBranch, - parentComponent, - parentSuspense, - doRemove - ) - } - } - } - return suspense -} -function hydrateSuspense( - node, - vnode, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - rendererInternals, - hydrateNode -) { - const suspense = (vnode.suspense = createSuspenseBoundary( - vnode, - parentSuspense, - parentComponent, - node.parentNode, - document.createElement('div'), - null, - isSVG, - slotScopeIds, - optimized, - rendererInternals, - true - /* hydrating */ - )) - const result = hydrateNode( - node, - (suspense.pendingBranch = vnode.ssContent), - parentComponent, - suspense, - slotScopeIds, - optimized - ) - if (suspense.deps === 0) { - suspense.resolve() - } - return result -} -function normalizeSuspenseChildren(vnode) { - const { shapeFlag, children } = vnode - const isSlotChildren = shapeFlag & 32 - vnode.ssContent = normalizeSuspenseSlot( - isSlotChildren ? children.default : children - ) - vnode.ssFallback = isSlotChildren - ? normalizeSuspenseSlot(children.fallback) - : createVNode(Comment) -} -function normalizeSuspenseSlot(s) { - let block - if (isFunction(s)) { - const trackBlock = isBlockTreeEnabled && s._c - if (trackBlock) { - s._d = false - openBlock() - } - s = s() - if (trackBlock) { - s._d = true - block = currentBlock - closeBlock() - } - } - if (isArray(s)) { - const singleChild = filterSingleRoot(s) - if (!singleChild) { - warn2(`<Suspense> slots expect a single root node.`) - } - s = singleChild - } - s = normalizeVNode(s) - if (block && !s.dynamicChildren) { - s.dynamicChildren = block.filter(c => c !== s) - } - return s -} -function queueEffectWithSuspense(fn, suspense) { - if (suspense && suspense.pendingBranch) { - if (isArray(fn)) { - suspense.effects.push(...fn) - } else { - suspense.effects.push(fn) - } - } else { - queuePostFlushCb(fn) - } -} -function setActiveBranch(suspense, branch) { - suspense.activeBranch = branch - const { vnode, parentComponent } = suspense - const el = (vnode.el = branch.el) - if (parentComponent && parentComponent.subTree === vnode) { - parentComponent.vnode.el = el - updateHOCHostEl(parentComponent, el) - } -} -function provide(key, value) { - if (!currentInstance) { - if (true) { - warn2(`provide() can only be used inside setup().`) - } - } else { - let provides = currentInstance.provides - const parentProvides = - currentInstance.parent && currentInstance.parent.provides - if (parentProvides === provides) { - provides = currentInstance.provides = Object.create(parentProvides) - } - provides[key] = value - } -} -function inject(key, defaultValue, treatDefaultAsFactory = false) { - const instance = currentInstance || currentRenderingInstance - if (instance) { - const provides = - instance.parent == null - ? instance.vnode.appContext && instance.vnode.appContext.provides - : instance.parent.provides - if (provides && key in provides) { - return provides[key] - } else if (arguments.length > 1) { - return treatDefaultAsFactory && isFunction(defaultValue) - ? defaultValue.call(instance.proxy) - : defaultValue - } else if (true) { - warn2(`injection "${String(key)}" not found.`) - } - } else if (true) { - warn2(`inject() can only be used inside setup() or functional components.`) - } -} -function watchEffect(effect2, options) { - return doWatch(effect2, null, options) -} -function watchPostEffect(effect2, options) { - return doWatch( - effect2, - null, - true - ? Object.assign(Object.assign({}, options), { flush: 'post' }) - : { flush: 'post' } - ) -} -function watchSyncEffect(effect2, options) { - return doWatch( - effect2, - null, - true - ? Object.assign(Object.assign({}, options), { flush: 'sync' }) - : { flush: 'sync' } - ) -} -var INITIAL_WATCHER_VALUE = {} -function watch(source, cb, options) { - if (!isFunction(cb)) { - warn2( - `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` - ) - } - return doWatch(source, cb, options) -} -function doWatch( - source, - cb, - { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ -) { - if (!cb) { - if (immediate !== void 0) { - warn2( - `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` - ) - } - if (deep !== void 0) { - warn2( - `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` - ) - } - } - const warnInvalidSource = s => { - warn2( - `Invalid watch source: `, - s, - `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` - ) - } - const instance = currentInstance - let getter - let forceTrigger = false - let isMultiSource = false - if (isRef(source)) { - getter = () => source.value - forceTrigger = isShallow(source) - } else if (isReactive(source)) { - getter = () => source - deep = true - } else if (isArray(source)) { - isMultiSource = true - forceTrigger = source.some(s => isReactive(s) || isShallow(s)) - getter = () => - source.map(s => { - if (isRef(s)) { - return s.value - } else if (isReactive(s)) { - return traverse(s) - } else if (isFunction(s)) { - return callWithErrorHandling( - s, - instance, - 2 - /* ErrorCodes.WATCH_GETTER */ - ) - } else { - warnInvalidSource(s) - } - }) - } else if (isFunction(source)) { - if (cb) { - getter = () => - callWithErrorHandling( - source, - instance, - 2 - /* ErrorCodes.WATCH_GETTER */ - ) - } else { - getter = () => { - if (instance && instance.isUnmounted) { - return - } - if (cleanup) { - cleanup() - } - return callWithAsyncErrorHandling(source, instance, 3, [onCleanup]) - } - } - } else { - getter = NOOP - warnInvalidSource(source) - } - if (cb && deep) { - const baseGetter = getter - getter = () => traverse(baseGetter()) - } - let cleanup - let onCleanup = fn => { - cleanup = effect2.onStop = () => { - callWithErrorHandling( - fn, - instance, - 4 - /* ErrorCodes.WATCH_CLEANUP */ - ) - } - } - let ssrCleanup - if (isInSSRComponentSetup) { - onCleanup = NOOP - if (!cb) { - getter() - } else if (immediate) { - callWithAsyncErrorHandling(cb, instance, 3, [ - getter(), - isMultiSource ? [] : void 0, - onCleanup - ]) - } - if (flush === 'sync') { - const ctx = useSSRContext() - ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []) - } else { - return NOOP - } - } - let oldValue = isMultiSource - ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) - : INITIAL_WATCHER_VALUE - const job = () => { - if (!effect2.active) { - return - } - if (cb) { - const newValue = effect2.run() - if ( - deep || - forceTrigger || - (isMultiSource - ? newValue.some((v, i) => hasChanged(v, oldValue[i])) - : hasChanged(newValue, oldValue)) || - false - ) { - if (cleanup) { - cleanup() - } - callWithAsyncErrorHandling(cb, instance, 3, [ - newValue, - // pass undefined as the old value when it's changed for the first time - oldValue === INITIAL_WATCHER_VALUE - ? void 0 - : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE - ? [] - : oldValue, - onCleanup - ]) - oldValue = newValue - } - } else { - effect2.run() - } - } - job.allowRecurse = !!cb - let scheduler - if (flush === 'sync') { - scheduler = job - } else if (flush === 'post') { - scheduler = () => queuePostRenderEffect(job, instance && instance.suspense) - } else { - job.pre = true - if (instance) job.id = instance.uid - scheduler = () => queueJob(job) - } - const effect2 = new ReactiveEffect(getter, scheduler) - if (true) { - effect2.onTrack = onTrack - effect2.onTrigger = onTrigger - } - if (cb) { - if (immediate) { - job() - } else { - oldValue = effect2.run() - } - } else if (flush === 'post') { - queuePostRenderEffect( - effect2.run.bind(effect2), - instance && instance.suspense - ) - } else { - effect2.run() - } - const unwatch = () => { - effect2.stop() - if (instance && instance.scope) { - remove(instance.scope.effects, effect2) - } - } - if (ssrCleanup) ssrCleanup.push(unwatch) - return unwatch -} -function instanceWatch(source, value, options) { - const publicThis = this.proxy - const getter = isString(source) - ? source.includes('.') - ? createPathGetter(publicThis, source) - : () => publicThis[source] - : source.bind(publicThis, publicThis) - let cb - if (isFunction(value)) { - cb = value - } else { - cb = value.handler - options = value - } - const cur = currentInstance - setCurrentInstance(this) - const res = doWatch(getter, cb.bind(publicThis), options) - if (cur) { - setCurrentInstance(cur) - } else { - unsetCurrentInstance() - } - return res -} -function createPathGetter(ctx, path) { - const segments = path.split('.') - return () => { - let cur = ctx - for (let i = 0; i < segments.length && cur; i++) { - cur = cur[segments[i]] - } - return cur - } -} -function traverse(value, seen) { - if ( - !isObject(value) || - value[ - '__v_skip' - /* ReactiveFlags.SKIP */ - ] - ) { - return value - } - seen = seen || /* @__PURE__ */ new Set() - if (seen.has(value)) { - return value - } - seen.add(value) - if (isRef(value)) { - traverse(value.value, seen) - } else if (isArray(value)) { - for (let i = 0; i < value.length; i++) { - traverse(value[i], seen) - } - } else if (isSet(value) || isMap(value)) { - value.forEach(v => { - traverse(v, seen) - }) - } else if (isPlainObject(value)) { - for (const key in value) { - traverse(value[key], seen) - } - } - return value -} -function useTransitionState() { - const state = { - isMounted: false, - isLeaving: false, - isUnmounting: false, - leavingVNodes: /* @__PURE__ */ new Map() - } - onMounted(() => { - state.isMounted = true - }) - onBeforeUnmount(() => { - state.isUnmounting = true - }) - return state -} -var TransitionHookValidator = [Function, Array] -var BaseTransitionImpl = { - name: `BaseTransition`, - props: { - mode: String, - appear: Boolean, - persisted: Boolean, - // enter - onBeforeEnter: TransitionHookValidator, - onEnter: TransitionHookValidator, - onAfterEnter: TransitionHookValidator, - onEnterCancelled: TransitionHookValidator, - // leave - onBeforeLeave: TransitionHookValidator, - onLeave: TransitionHookValidator, - onAfterLeave: TransitionHookValidator, - onLeaveCancelled: TransitionHookValidator, - // appear - onBeforeAppear: TransitionHookValidator, - onAppear: TransitionHookValidator, - onAfterAppear: TransitionHookValidator, - onAppearCancelled: TransitionHookValidator - }, - setup(props, { slots }) { - const instance = getCurrentInstance() - const state = useTransitionState() - let prevTransitionKey - return () => { - const children = - slots.default && getTransitionRawChildren(slots.default(), true) - if (!children || !children.length) { - return - } - let child = children[0] - if (children.length > 1) { - let hasFound = false - for (const c of children) { - if (c.type !== Comment) { - if (hasFound) { - warn2( - '<transition> can only be used on a single element or component. Use <transition-group> for lists.' - ) - break - } - child = c - hasFound = true - if (false) break - } - } - } - const rawProps = toRaw(props) - const { mode } = rawProps - if ( - mode && - mode !== 'in-out' && - mode !== 'out-in' && - mode !== 'default' - ) { - warn2(`invalid <transition> mode: ${mode}`) - } - if (state.isLeaving) { - return emptyPlaceholder(child) - } - const innerChild = getKeepAliveChild(child) - if (!innerChild) { - return emptyPlaceholder(child) - } - const enterHooks = resolveTransitionHooks( - innerChild, - rawProps, - state, - instance - ) - setTransitionHooks(innerChild, enterHooks) - const oldChild = instance.subTree - const oldInnerChild = oldChild && getKeepAliveChild(oldChild) - let transitionKeyChanged = false - const { getTransitionKey } = innerChild.type - if (getTransitionKey) { - const key = getTransitionKey() - if (prevTransitionKey === void 0) { - prevTransitionKey = key - } else if (key !== prevTransitionKey) { - prevTransitionKey = key - transitionKeyChanged = true - } - } - if ( - oldInnerChild && - oldInnerChild.type !== Comment && - (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged) - ) { - const leavingHooks = resolveTransitionHooks( - oldInnerChild, - rawProps, - state, - instance - ) - setTransitionHooks(oldInnerChild, leavingHooks) - if (mode === 'out-in') { - state.isLeaving = true - leavingHooks.afterLeave = () => { - state.isLeaving = false - if (instance.update.active !== false) { - instance.update() - } - } - return emptyPlaceholder(child) - } else if (mode === 'in-out' && innerChild.type !== Comment) { - leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { - const leavingVNodesCache = getLeavingNodesForType( - state, - oldInnerChild - ) - leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild - el._leaveCb = () => { - earlyRemove() - el._leaveCb = void 0 - delete enterHooks.delayedLeave - } - enterHooks.delayedLeave = delayedLeave - } - } - } - return child - } - } -} -var BaseTransition = BaseTransitionImpl -function getLeavingNodesForType(state, vnode) { - const { leavingVNodes } = state - let leavingVNodesCache = leavingVNodes.get(vnode.type) - if (!leavingVNodesCache) { - leavingVNodesCache = /* @__PURE__ */ Object.create(null) - leavingVNodes.set(vnode.type, leavingVNodesCache) - } - return leavingVNodesCache -} -function resolveTransitionHooks(vnode, props, state, instance) { - const { - appear, - mode, - persisted = false, - onBeforeEnter, - onEnter, - onAfterEnter, - onEnterCancelled, - onBeforeLeave, - onLeave, - onAfterLeave, - onLeaveCancelled, - onBeforeAppear, - onAppear, - onAfterAppear, - onAppearCancelled - } = props - const key = String(vnode.key) - const leavingVNodesCache = getLeavingNodesForType(state, vnode) - const callHook3 = (hook, args) => { - hook && callWithAsyncErrorHandling(hook, instance, 9, args) - } - const callAsyncHook = (hook, args) => { - const done = args[1] - callHook3(hook, args) - if (isArray(hook)) { - if (hook.every(hook2 => hook2.length <= 1)) done() - } else if (hook.length <= 1) { - done() - } - } - const hooks = { - mode, - persisted, - beforeEnter(el) { - let hook = onBeforeEnter - if (!state.isMounted) { - if (appear) { - hook = onBeforeAppear || onBeforeEnter - } else { - return - } - } - if (el._leaveCb) { - el._leaveCb( - true - /* cancelled */ - ) - } - const leavingVNode = leavingVNodesCache[key] - if ( - leavingVNode && - isSameVNodeType(vnode, leavingVNode) && - leavingVNode.el._leaveCb - ) { - leavingVNode.el._leaveCb() - } - callHook3(hook, [el]) - }, - enter(el) { - let hook = onEnter - let afterHook = onAfterEnter - let cancelHook = onEnterCancelled - if (!state.isMounted) { - if (appear) { - hook = onAppear || onEnter - afterHook = onAfterAppear || onAfterEnter - cancelHook = onAppearCancelled || onEnterCancelled - } else { - return - } - } - let called = false - const done = (el._enterCb = cancelled => { - if (called) return - called = true - if (cancelled) { - callHook3(cancelHook, [el]) - } else { - callHook3(afterHook, [el]) - } - if (hooks.delayedLeave) { - hooks.delayedLeave() - } - el._enterCb = void 0 - }) - if (hook) { - callAsyncHook(hook, [el, done]) - } else { - done() - } - }, - leave(el, remove2) { - const key2 = String(vnode.key) - if (el._enterCb) { - el._enterCb( - true - /* cancelled */ - ) - } - if (state.isUnmounting) { - return remove2() - } - callHook3(onBeforeLeave, [el]) - let called = false - const done = (el._leaveCb = cancelled => { - if (called) return - called = true - remove2() - if (cancelled) { - callHook3(onLeaveCancelled, [el]) - } else { - callHook3(onAfterLeave, [el]) - } - el._leaveCb = void 0 - if (leavingVNodesCache[key2] === vnode) { - delete leavingVNodesCache[key2] - } - }) - leavingVNodesCache[key2] = vnode - if (onLeave) { - callAsyncHook(onLeave, [el, done]) - } else { - done() - } - }, - clone(vnode2) { - return resolveTransitionHooks(vnode2, props, state, instance) - } - } - return hooks -} -function emptyPlaceholder(vnode) { - if (isKeepAlive(vnode)) { - vnode = cloneVNode(vnode) - vnode.children = null - return vnode - } -} -function getKeepAliveChild(vnode) { - return isKeepAlive(vnode) - ? vnode.children - ? vnode.children[0] - : void 0 - : vnode -} -function setTransitionHooks(vnode, hooks) { - if (vnode.shapeFlag & 6 && vnode.component) { - setTransitionHooks(vnode.component.subTree, hooks) - } else if (vnode.shapeFlag & 128) { - vnode.ssContent.transition = hooks.clone(vnode.ssContent) - vnode.ssFallback.transition = hooks.clone(vnode.ssFallback) - } else { - vnode.transition = hooks - } -} -function getTransitionRawChildren(children, keepComment = false, parentKey) { - let ret = [] - let keyedFragmentCount = 0 - for (let i = 0; i < children.length; i++) { - let child = children[i] - const key = - parentKey == null - ? child.key - : String(parentKey) + String(child.key != null ? child.key : i) - if (child.type === Fragment) { - if (child.patchFlag & 128) keyedFragmentCount++ - ret = ret.concat( - getTransitionRawChildren(child.children, keepComment, key) - ) - } else if (keepComment || child.type !== Comment) { - ret.push(key != null ? cloneVNode(child, { key }) : child) - } - } - if (keyedFragmentCount > 1) { - for (let i = 0; i < ret.length; i++) { - ret[i].patchFlag = -2 - } - } - return ret -} -function defineComponent(options) { - return isFunction(options) ? { setup: options, name: options.name } : options -} -var isAsyncWrapper = i => !!i.type.__asyncLoader -function defineAsyncComponent(source) { - if (isFunction(source)) { - source = { loader: source } - } - const { - loader, - loadingComponent, - errorComponent, - delay = 200, - timeout, - // undefined = never times out - suspensible = true, - onError: userOnError - } = source - let pendingRequest = null - let resolvedComp - let retries = 0 - const retry = () => { - retries++ - pendingRequest = null - return load() - } - const load = () => { - let thisRequest - return ( - pendingRequest || - (thisRequest = pendingRequest = - loader() - .catch(err => { - err = err instanceof Error ? err : new Error(String(err)) - if (userOnError) { - return new Promise((resolve2, reject) => { - const userRetry = () => resolve2(retry()) - const userFail = () => reject(err) - userOnError(err, userRetry, userFail, retries + 1) - }) - } else { - throw err - } - }) - .then(comp => { - if (thisRequest !== pendingRequest && pendingRequest) { - return pendingRequest - } - if (!comp) { - warn2( - `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` - ) - } - if ( - comp && - (comp.__esModule || comp[Symbol.toStringTag] === 'Module') - ) { - comp = comp.default - } - if (comp && !isObject(comp) && !isFunction(comp)) { - throw new Error(`Invalid async component load result: ${comp}`) - } - resolvedComp = comp - return comp - })) - ) - } - return defineComponent({ - name: 'AsyncComponentWrapper', - __asyncLoader: load, - get __asyncResolved() { - return resolvedComp - }, - setup() { - const instance = currentInstance - if (resolvedComp) { - return () => createInnerComp(resolvedComp, instance) - } - const onError = err => { - pendingRequest = null - handleError( - err, - instance, - 13, - !errorComponent - /* do not throw in dev if user provided error component */ - ) - } - if ((suspensible && instance.suspense) || isInSSRComponentSetup) { - return load() - .then(comp => { - return () => createInnerComp(comp, instance) - }) - .catch(err => { - onError(err) - return () => - errorComponent - ? createVNode(errorComponent, { - error: err - }) - : null - }) - } - const loaded = ref(false) - const error = ref() - const delayed = ref(!!delay) - if (delay) { - setTimeout(() => { - delayed.value = false - }, delay) - } - if (timeout != null) { - setTimeout(() => { - if (!loaded.value && !error.value) { - const err = new Error( - `Async component timed out after ${timeout}ms.` - ) - onError(err) - error.value = err - } - }, timeout) - } - load() - .then(() => { - loaded.value = true - if (instance.parent && isKeepAlive(instance.parent.vnode)) { - queueJob(instance.parent.update) - } - }) - .catch(err => { - onError(err) - error.value = err - }) - return () => { - if (loaded.value && resolvedComp) { - return createInnerComp(resolvedComp, instance) - } else if (error.value && errorComponent) { - return createVNode(errorComponent, { - error: error.value - }) - } else if (loadingComponent && !delayed.value) { - return createVNode(loadingComponent) - } - } - } - }) -} -function createInnerComp(comp, parent) { - const { ref: ref2, props, children, ce } = parent.vnode - const vnode = createVNode(comp, props, children) - vnode.ref = ref2 - vnode.ce = ce - delete parent.vnode.ce - return vnode -} -var isKeepAlive = vnode => vnode.type.__isKeepAlive -var KeepAliveImpl = { - name: `KeepAlive`, - // Marker for special handling inside the renderer. We are not using a === - // check directly on KeepAlive in the renderer, because importing it directly - // would prevent it from being tree-shaken. - __isKeepAlive: true, - props: { - include: [String, RegExp, Array], - exclude: [String, RegExp, Array], - max: [String, Number] - }, - setup(props, { slots }) { - const instance = getCurrentInstance() - const sharedContext = instance.ctx - if (!sharedContext.renderer) { - return () => { - const children = slots.default && slots.default() - return children && children.length === 1 ? children[0] : children - } - } - const cache = /* @__PURE__ */ new Map() - const keys = /* @__PURE__ */ new Set() - let current = null - if (true) { - instance.__v_cache = cache - } - const parentSuspense = instance.suspense - const { - renderer: { - p: patch, - m: move, - um: _unmount, - o: { createElement } - } - } = sharedContext - const storageContainer = createElement('div') - sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { - const instance2 = vnode.component - move(vnode, container, anchor, 0, parentSuspense) - patch( - instance2.vnode, - vnode, - container, - anchor, - instance2, - parentSuspense, - isSVG, - vnode.slotScopeIds, - optimized - ) - queuePostRenderEffect(() => { - instance2.isDeactivated = false - if (instance2.a) { - invokeArrayFns(instance2.a) - } - const vnodeHook = vnode.props && vnode.props.onVnodeMounted - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance2.parent, vnode) - } - }, parentSuspense) - if (true) { - devtoolsComponentAdded(instance2) - } - } - sharedContext.deactivate = vnode => { - const instance2 = vnode.component - move(vnode, storageContainer, null, 1, parentSuspense) - queuePostRenderEffect(() => { - if (instance2.da) { - invokeArrayFns(instance2.da) - } - const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance2.parent, vnode) - } - instance2.isDeactivated = true - }, parentSuspense) - if (true) { - devtoolsComponentAdded(instance2) - } - } - function unmount(vnode) { - resetShapeFlag(vnode) - _unmount(vnode, instance, parentSuspense, true) - } - function pruneCache(filter) { - cache.forEach((vnode, key) => { - const name = getComponentName(vnode.type) - if (name && (!filter || !filter(name))) { - pruneCacheEntry(key) - } - }) - } - function pruneCacheEntry(key) { - const cached = cache.get(key) - if (!current || cached.type !== current.type) { - unmount(cached) - } else if (current) { - resetShapeFlag(current) - } - cache.delete(key) - keys.delete(key) - } - watch( - () => [props.include, props.exclude], - ([include, exclude]) => { - include && pruneCache(name => matches(include, name)) - exclude && pruneCache(name => !matches(exclude, name)) - }, - // prune post-render after `current` has been updated - { flush: 'post', deep: true } - ) - let pendingCacheKey = null - const cacheSubtree = () => { - if (pendingCacheKey != null) { - cache.set(pendingCacheKey, getInnerChild(instance.subTree)) - } - } - onMounted(cacheSubtree) - onUpdated(cacheSubtree) - onBeforeUnmount(() => { - cache.forEach(cached => { - const { subTree, suspense } = instance - const vnode = getInnerChild(subTree) - if (cached.type === vnode.type) { - resetShapeFlag(vnode) - const da = vnode.component.da - da && queuePostRenderEffect(da, suspense) - return - } - unmount(cached) - }) - }) - return () => { - pendingCacheKey = null - if (!slots.default) { - return null - } - const children = slots.default() - const rawVNode = children[0] - if (children.length > 1) { - if (true) { - warn2(`KeepAlive should contain exactly one component child.`) - } - current = null - return children - } else if ( - !isVNode(rawVNode) || - (!(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) - ) { - current = null - return rawVNode - } - let vnode = getInnerChild(rawVNode) - const comp = vnode.type - const name = getComponentName( - isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp - ) - const { include, exclude, max } = props - if ( - (include && (!name || !matches(include, name))) || - (exclude && name && matches(exclude, name)) - ) { - current = vnode - return rawVNode - } - const key = vnode.key == null ? comp : vnode.key - const cachedVNode = cache.get(key) - if (vnode.el) { - vnode = cloneVNode(vnode) - if (rawVNode.shapeFlag & 128) { - rawVNode.ssContent = vnode - } - } - pendingCacheKey = key - if (cachedVNode) { - vnode.el = cachedVNode.el - vnode.component = cachedVNode.component - if (vnode.transition) { - setTransitionHooks(vnode, vnode.transition) - } - vnode.shapeFlag |= 512 - keys.delete(key) - keys.add(key) - } else { - keys.add(key) - if (max && keys.size > parseInt(max, 10)) { - pruneCacheEntry(keys.values().next().value) - } - } - vnode.shapeFlag |= 256 - current = vnode - return isSuspense(rawVNode.type) ? rawVNode : vnode - } - } -} -var KeepAlive = KeepAliveImpl -function matches(pattern, name) { - if (isArray(pattern)) { - return pattern.some(p2 => matches(p2, name)) - } else if (isString(pattern)) { - return pattern.split(',').includes(name) - } else if (pattern.test) { - return pattern.test(name) - } - return false -} -function onActivated(hook, target) { - registerKeepAliveHook(hook, 'a', target) -} -function onDeactivated(hook, target) { - registerKeepAliveHook(hook, 'da', target) -} -function registerKeepAliveHook(hook, type, target = currentInstance) { - const wrappedHook = - hook.__wdc || - (hook.__wdc = () => { - let current = target - while (current) { - if (current.isDeactivated) { - return - } - current = current.parent - } - return hook() - }) - injectHook(type, wrappedHook, target) - if (target) { - let current = target.parent - while (current && current.parent) { - if (isKeepAlive(current.parent.vnode)) { - injectToKeepAliveRoot(wrappedHook, type, target, current) - } - current = current.parent - } - } -} -function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { - const injected = injectHook( - type, - hook, - keepAliveRoot, - true - /* prepend */ - ) - onUnmounted(() => { - remove(keepAliveRoot[type], injected) - }, target) -} -function resetShapeFlag(vnode) { - vnode.shapeFlag &= ~256 - vnode.shapeFlag &= ~512 -} -function getInnerChild(vnode) { - return vnode.shapeFlag & 128 ? vnode.ssContent : vnode -} -function injectHook(type, hook, target = currentInstance, prepend = false) { - if (target) { - const hooks = target[type] || (target[type] = []) - const wrappedHook = - hook.__weh || - (hook.__weh = (...args) => { - if (target.isUnmounted) { - return - } - pauseTracking() - setCurrentInstance(target) - const res = callWithAsyncErrorHandling(hook, target, type, args) - unsetCurrentInstance() - resetTracking() - return res - }) - if (prepend) { - hooks.unshift(wrappedHook) - } else { - hooks.push(wrappedHook) - } - return wrappedHook - } else if (true) { - const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, '')) - warn2( - `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` - ) - } -} -var createHook = - lifecycle => - (hook, target = currentInstance) => - // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) - (!isInSSRComponentSetup || lifecycle === 'sp') && - injectHook(lifecycle, (...args) => hook(...args), target) -var onBeforeMount = createHook( - 'bm' - /* LifecycleHooks.BEFORE_MOUNT */ -) -var onMounted = createHook( - 'm' - /* LifecycleHooks.MOUNTED */ -) -var onBeforeUpdate = createHook( - 'bu' - /* LifecycleHooks.BEFORE_UPDATE */ -) -var onUpdated = createHook( - 'u' - /* LifecycleHooks.UPDATED */ -) -var onBeforeUnmount = createHook( - 'bum' - /* LifecycleHooks.BEFORE_UNMOUNT */ -) -var onUnmounted = createHook( - 'um' - /* LifecycleHooks.UNMOUNTED */ -) -var onServerPrefetch = createHook( - 'sp' - /* LifecycleHooks.SERVER_PREFETCH */ -) -var onRenderTriggered = createHook( - 'rtg' - /* LifecycleHooks.RENDER_TRIGGERED */ -) -var onRenderTracked = createHook( - 'rtc' - /* LifecycleHooks.RENDER_TRACKED */ -) -function onErrorCaptured(hook, target = currentInstance) { - injectHook('ec', hook, target) -} -function validateDirectiveName(name) { - if (isBuiltInDirective(name)) { - warn2('Do not use built-in directive ids as custom directive id: ' + name) - } -} -function withDirectives(vnode, directives) { - const internalInstance = currentRenderingInstance - if (internalInstance === null) { - warn2(`withDirectives can only be used inside render functions.`) - return vnode - } - const instance = getExposeProxy(internalInstance) || internalInstance.proxy - const bindings = vnode.dirs || (vnode.dirs = []) - for (let i = 0; i < directives.length; i++) { - let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i] - if (dir) { - if (isFunction(dir)) { - dir = { - mounted: dir, - updated: dir - } - } - if (dir.deep) { - traverse(value) - } - bindings.push({ - dir, - instance, - value, - oldValue: void 0, - arg, - modifiers - }) - } - } - return vnode -} -function invokeDirectiveHook(vnode, prevVNode, instance, name) { - const bindings = vnode.dirs - const oldBindings = prevVNode && prevVNode.dirs - for (let i = 0; i < bindings.length; i++) { - const binding = bindings[i] - if (oldBindings) { - binding.oldValue = oldBindings[i].value - } - let hook = binding.dir[name] - if (hook) { - pauseTracking() - callWithAsyncErrorHandling(hook, instance, 8, [ - vnode.el, - binding, - vnode, - prevVNode - ]) - resetTracking() - } - } -} -var COMPONENTS = 'components' -var DIRECTIVES = 'directives' -function resolveComponent(name, maybeSelfReference) { - return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name -} -var NULL_DYNAMIC_COMPONENT = Symbol() -function resolveDynamicComponent(component) { - if (isString(component)) { - return resolveAsset(COMPONENTS, component, false) || component - } else { - return component || NULL_DYNAMIC_COMPONENT - } -} -function resolveDirective(name) { - return resolveAsset(DIRECTIVES, name) -} -function resolveAsset( - type, - name, - warnMissing = true, - maybeSelfReference = false -) { - const instance = currentRenderingInstance || currentInstance - if (instance) { - const Component = instance.type - if (type === COMPONENTS) { - const selfName = getComponentName( - Component, - false - /* do not include inferred name to avoid breaking existing code */ - ) - if ( - selfName && - (selfName === name || - selfName === camelize(name) || - selfName === capitalize(camelize(name))) - ) { - return Component - } - } - const res = - // local registration - // check instance[type] first which is resolved for options API - resolve(instance[type] || Component[type], name) || // global registration - resolve(instance.appContext[type], name) - if (!res && maybeSelfReference) { - return Component - } - if (warnMissing && !res) { - const extra = - type === COMPONENTS - ? ` -If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` - : `` - warn2(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`) - } - return res - } else if (true) { - warn2( - `resolve${capitalize( - type.slice(0, -1) - )} can only be used in render() or setup().` - ) - } -} -function resolve(registry, name) { - return ( - registry && - (registry[name] || - registry[camelize(name)] || - registry[capitalize(camelize(name))]) - ) -} -function renderList(source, renderItem, cache, index) { - let ret - const cached = cache && cache[index] - if (isArray(source) || isString(source)) { - ret = new Array(source.length) - for (let i = 0, l = source.length; i < l; i++) { - ret[i] = renderItem(source[i], i, void 0, cached && cached[i]) - } - } else if (typeof source === 'number') { - if (!Number.isInteger(source)) { - warn2(`The v-for range expect an integer value but got ${source}.`) - } - ret = new Array(source) - for (let i = 0; i < source; i++) { - ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]) - } - } else if (isObject(source)) { - if (source[Symbol.iterator]) { - ret = Array.from(source, (item, i) => - renderItem(item, i, void 0, cached && cached[i]) - ) - } else { - const keys = Object.keys(source) - ret = new Array(keys.length) - for (let i = 0, l = keys.length; i < l; i++) { - const key = keys[i] - ret[i] = renderItem(source[key], key, i, cached && cached[i]) - } - } - } else { - ret = [] - } - if (cache) { - cache[index] = ret - } - return ret -} -function createSlots(slots, dynamicSlots) { - for (let i = 0; i < dynamicSlots.length; i++) { - const slot = dynamicSlots[i] - if (isArray(slot)) { - for (let j = 0; j < slot.length; j++) { - slots[slot[j].name] = slot[j].fn - } - } else if (slot) { - slots[slot.name] = slot.key - ? (...args) => { - const res = slot.fn(...args) - if (res) res.key = slot.key - return res - } - : slot.fn - } - } - return slots -} -function renderSlot(slots, name, props = {}, fallback, noSlotted) { - if ( - currentRenderingInstance.isCE || - (currentRenderingInstance.parent && - isAsyncWrapper(currentRenderingInstance.parent) && - currentRenderingInstance.parent.isCE) - ) { - if (name !== 'default') props.name = name - return createVNode('slot', props, fallback && fallback()) - } - let slot = slots[name] - if (slot && slot.length > 1) { - warn2( - `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` - ) - slot = () => [] - } - if (slot && slot._c) { - slot._d = false - } - openBlock() - const validSlotContent = slot && ensureValidVNode(slot(props)) - const rendered = createBlock( - Fragment, - { - key: - props.key || // slot content array of a dynamic conditional slot may have a branch - // key attached in the `createSlots` helper, respect that - (validSlotContent && validSlotContent.key) || - `_${name}` - }, - validSlotContent || (fallback ? fallback() : []), - validSlotContent && slots._ === 1 ? 64 : -2 - /* PatchFlags.BAIL */ - ) - if (!noSlotted && rendered.scopeId) { - rendered.slotScopeIds = [rendered.scopeId + '-s'] - } - if (slot && slot._c) { - slot._d = true - } - return rendered -} -function ensureValidVNode(vnodes) { - return vnodes.some(child => { - if (!isVNode(child)) return true - if (child.type === Comment) return false - if (child.type === Fragment && !ensureValidVNode(child.children)) - return false - return true - }) - ? vnodes - : null -} -function toHandlers(obj, preserveCaseIfNecessary) { - const ret = {} - if (!isObject(obj)) { - warn2(`v-on with no argument expects an object value.`) - return ret - } - for (const key in obj) { - ret[ - preserveCaseIfNecessary && /[A-Z]/.test(key) - ? `on:${key}` - : toHandlerKey(key) - ] = obj[key] - } - return ret -} -var getPublicInstance = i => { - if (!i) return null - if (isStatefulComponent(i)) return getExposeProxy(i) || i.proxy - return getPublicInstance(i.parent) -} -var publicPropertiesMap = - // Move PURE marker to new line to workaround compiler discarding it - // due to type annotation - extend(/* @__PURE__ */ Object.create(null), { - $: i => i, - $el: i => i.vnode.el, - $data: i => i.data, - $props: i => (true ? shallowReadonly(i.props) : i.props), - $attrs: i => (true ? shallowReadonly(i.attrs) : i.attrs), - $slots: i => (true ? shallowReadonly(i.slots) : i.slots), - $refs: i => (true ? shallowReadonly(i.refs) : i.refs), - $parent: i => getPublicInstance(i.parent), - $root: i => getPublicInstance(i.root), - $emit: i => i.emit, - $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type), - $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)), - $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)), - $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP) - }) -var isReservedPrefix = key => key === '_' || key === '$' -var hasSetupBinding = (state, key) => - state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key) -var PublicInstanceProxyHandlers = { - get({ _: instance }, key) { - const { ctx, setupState, data, props, accessCache, type, appContext } = - instance - if (key === '__isVue') { - return true - } - let normalizedProps - if (key[0] !== '$') { - const n = accessCache[key] - if (n !== void 0) { - switch (n) { - case 1: - return setupState[key] - case 2: - return data[key] - case 4: - return ctx[key] - case 3: - return props[key] - } - } else if (hasSetupBinding(setupState, key)) { - accessCache[key] = 1 - return setupState[key] - } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { - accessCache[key] = 2 - return data[key] - } else if ( - // only cache other properties when instance has declared (thus stable) - // props - (normalizedProps = instance.propsOptions[0]) && - hasOwn(normalizedProps, key) - ) { - accessCache[key] = 3 - return props[key] - } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { - accessCache[key] = 4 - return ctx[key] - } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) { - accessCache[key] = 0 - } - } - const publicGetter = publicPropertiesMap[key] - let cssModule, globalProperties - if (publicGetter) { - if (key === '$attrs') { - track(instance, 'get', key) - markAttrsAccessed() - } - return publicGetter(instance) - } else if ( - // css module (injected by vue-loader) - (cssModule = type.__cssModules) && - (cssModule = cssModule[key]) - ) { - return cssModule - } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { - accessCache[key] = 4 - return ctx[key] - } else if ( - // global properties - ((globalProperties = appContext.config.globalProperties), - hasOwn(globalProperties, key)) - ) { - { - return globalProperties[key] - } - } else if ( - currentRenderingInstance && - (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading - // to infinite warning loop - key.indexOf('__v') !== 0) - ) { - if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { - warn2( - `Property ${JSON.stringify( - key - )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` - ) - } else if (instance === currentRenderingInstance) { - warn2( - `Property ${JSON.stringify( - key - )} was accessed during render but is not defined on instance.` - ) - } - } - }, - set({ _: instance }, key, value) { - const { data, setupState, ctx } = instance - if (hasSetupBinding(setupState, key)) { - setupState[key] = value - return true - } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { - warn2(`Cannot mutate <script setup> binding "${key}" from Options API.`) - return false - } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { - data[key] = value - return true - } else if (hasOwn(instance.props, key)) { - warn2(`Attempting to mutate prop "${key}". Props are readonly.`) - return false - } - if (key[0] === '$' && key.slice(1) in instance) { - warn2( - `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` - ) - return false - } else { - if (key in instance.appContext.config.globalProperties) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - value - }) - } else { - ctx[key] = value - } - } - return true - }, - has( - { _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, - key - ) { - let normalizedProps - return ( - !!accessCache[key] || - (data !== EMPTY_OBJ && hasOwn(data, key)) || - hasSetupBinding(setupState, key) || - ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) || - hasOwn(ctx, key) || - hasOwn(publicPropertiesMap, key) || - hasOwn(appContext.config.globalProperties, key) - ) - }, - defineProperty(target, key, descriptor) { - if (descriptor.get != null) { - target._.accessCache[key] = 0 - } else if (hasOwn(descriptor, 'value')) { - this.set(target, key, descriptor.value, null) - } - return Reflect.defineProperty(target, key, descriptor) - } -} -if (true) { - PublicInstanceProxyHandlers.ownKeys = target => { - warn2( - `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` - ) - return Reflect.ownKeys(target) - } -} -var RuntimeCompiledPublicInstanceProxyHandlers = extend( - {}, - PublicInstanceProxyHandlers, - { - get(target, key) { - if (key === Symbol.unscopables) { - return - } - return PublicInstanceProxyHandlers.get(target, key, target) - }, - has(_, key) { - const has2 = key[0] !== '_' && !isGloballyWhitelisted(key) - if (!has2 && PublicInstanceProxyHandlers.has(_, key)) { - warn2( - `Property ${JSON.stringify( - key - )} should not start with _ which is a reserved prefix for Vue internals.` - ) - } - return has2 - } - } -) -function createDevRenderContext(instance) { - const target = {} - Object.defineProperty(target, `_`, { - configurable: true, - enumerable: false, - get: () => instance - }) - Object.keys(publicPropertiesMap).forEach(key => { - Object.defineProperty(target, key, { - configurable: true, - enumerable: false, - get: () => publicPropertiesMap[key](instance), - // intercepted by the proxy so no need for implementation, - // but needed to prevent set errors - set: NOOP - }) - }) - return target -} -function exposePropsOnRenderContext(instance) { - const { - ctx, - propsOptions: [propsOptions] - } = instance - if (propsOptions) { - Object.keys(propsOptions).forEach(key => { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => instance.props[key], - set: NOOP - }) - }) - } -} -function exposeSetupStateOnRenderContext(instance) { - const { ctx, setupState } = instance - Object.keys(toRaw(setupState)).forEach(key => { - if (!setupState.__isScriptSetup) { - if (isReservedPrefix(key[0])) { - warn2( - `setup() return property ${JSON.stringify( - key - )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` - ) - return - } - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => setupState[key], - set: NOOP - }) - } - }) -} -function createDuplicateChecker() { - const cache = /* @__PURE__ */ Object.create(null) - return (type, key) => { - if (cache[key]) { - warn2(`${type} property "${key}" is already defined in ${cache[key]}.`) - } else { - cache[key] = type - } - } -} -var shouldCacheAccess = true -function applyOptions(instance) { - const options = resolveMergedOptions(instance) - const publicThis = instance.proxy - const ctx = instance.ctx - shouldCacheAccess = false - if (options.beforeCreate) { - callHook( - options.beforeCreate, - instance, - 'bc' - /* LifecycleHooks.BEFORE_CREATE */ - ) - } - const { - // state - data: dataOptions, - computed: computedOptions, - methods, - watch: watchOptions, - provide: provideOptions, - inject: injectOptions, - // lifecycle - created, - beforeMount, - mounted, - beforeUpdate, - updated, - activated, - deactivated, - beforeDestroy, - beforeUnmount, - destroyed, - unmounted, - render: render2, - renderTracked, - renderTriggered, - errorCaptured, - serverPrefetch, - // public API - expose, - inheritAttrs, - // assets - components, - directives, - filters - } = options - const checkDuplicateProperties = true ? createDuplicateChecker() : null - if (true) { - const [propsOptions] = instance.propsOptions - if (propsOptions) { - for (const key in propsOptions) { - checkDuplicateProperties('Props', key) - } - } - } - if (injectOptions) { - resolveInjections( - injectOptions, - ctx, - checkDuplicateProperties, - instance.appContext.config.unwrapInjectedRef - ) - } - if (methods) { - for (const key in methods) { - const methodHandler = methods[key] - if (isFunction(methodHandler)) { - if (true) { - Object.defineProperty(ctx, key, { - value: methodHandler.bind(publicThis), - configurable: true, - enumerable: true, - writable: true - }) - } else { - ctx[key] = methodHandler.bind(publicThis) - } - if (true) { - checkDuplicateProperties('Methods', key) - } - } else if (true) { - warn2( - `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` - ) - } - } - } - if (dataOptions) { - if (!isFunction(dataOptions)) { - warn2( - `The data option must be a function. Plain object usage is no longer supported.` - ) - } - const data = dataOptions.call(publicThis, publicThis) - if (isPromise(data)) { - warn2( - `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` - ) - } - if (!isObject(data)) { - warn2(`data() should return an object.`) - } else { - instance.data = reactive(data) - if (true) { - for (const key in data) { - checkDuplicateProperties('Data', key) - if (!isReservedPrefix(key[0])) { - Object.defineProperty(ctx, key, { - configurable: true, - enumerable: true, - get: () => data[key], - set: NOOP - }) - } - } - } - } - } - shouldCacheAccess = true - if (computedOptions) { - for (const key in computedOptions) { - const opt = computedOptions[key] - const get2 = isFunction(opt) - ? opt.bind(publicThis, publicThis) - : isFunction(opt.get) - ? opt.get.bind(publicThis, publicThis) - : NOOP - if (get2 === NOOP) { - warn2(`Computed property "${key}" has no getter.`) - } - const set2 = - !isFunction(opt) && isFunction(opt.set) - ? opt.set.bind(publicThis) - : true - ? () => { - warn2( - `Write operation failed: computed property "${key}" is readonly.` - ) - } - : NOOP - const c = computed2({ - get: get2, - set: set2 - }) - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => c.value, - set: v => (c.value = v) - }) - if (true) { - checkDuplicateProperties('Computed', key) - } - } - } - if (watchOptions) { - for (const key in watchOptions) { - createWatcher(watchOptions[key], ctx, publicThis, key) - } - } - if (provideOptions) { - const provides = isFunction(provideOptions) - ? provideOptions.call(publicThis) - : provideOptions - Reflect.ownKeys(provides).forEach(key => { - provide(key, provides[key]) - }) - } - if (created) { - callHook( - created, - instance, - 'c' - /* LifecycleHooks.CREATED */ - ) - } - function registerLifecycleHook(register, hook) { - if (isArray(hook)) { - hook.forEach(_hook => register(_hook.bind(publicThis))) - } else if (hook) { - register(hook.bind(publicThis)) - } - } - registerLifecycleHook(onBeforeMount, beforeMount) - registerLifecycleHook(onMounted, mounted) - registerLifecycleHook(onBeforeUpdate, beforeUpdate) - registerLifecycleHook(onUpdated, updated) - registerLifecycleHook(onActivated, activated) - registerLifecycleHook(onDeactivated, deactivated) - registerLifecycleHook(onErrorCaptured, errorCaptured) - registerLifecycleHook(onRenderTracked, renderTracked) - registerLifecycleHook(onRenderTriggered, renderTriggered) - registerLifecycleHook(onBeforeUnmount, beforeUnmount) - registerLifecycleHook(onUnmounted, unmounted) - registerLifecycleHook(onServerPrefetch, serverPrefetch) - if (isArray(expose)) { - if (expose.length) { - const exposed = instance.exposed || (instance.exposed = {}) - expose.forEach(key => { - Object.defineProperty(exposed, key, { - get: () => publicThis[key], - set: val => (publicThis[key] = val) - }) - }) - } else if (!instance.exposed) { - instance.exposed = {} - } - } - if (render2 && instance.render === NOOP) { - instance.render = render2 - } - if (inheritAttrs != null) { - instance.inheritAttrs = inheritAttrs - } - if (components) instance.components = components - if (directives) instance.directives = directives -} -function resolveInjections( - injectOptions, - ctx, - checkDuplicateProperties = NOOP, - unwrapRef = false -) { - if (isArray(injectOptions)) { - injectOptions = normalizeInject(injectOptions) - } - for (const key in injectOptions) { - const opt = injectOptions[key] - let injected - if (isObject(opt)) { - if ('default' in opt) { - injected = inject( - opt.from || key, - opt.default, - true - /* treat default function as factory */ - ) - } else { - injected = inject(opt.from || key) - } - } else { - injected = inject(opt) - } - if (isRef(injected)) { - if (unwrapRef) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => injected.value, - set: v => (injected.value = v) - }) - } else { - if (true) { - warn2( - `injected property "${key}" is a ref and will be auto-unwrapped and no longer needs \`.value\` in the next minor release. To opt-in to the new behavior now, set \`app.config.unwrapInjectedRef = true\` (this config is temporary and will not be needed in the future.)` - ) - } - ctx[key] = injected - } - } else { - ctx[key] = injected - } - if (true) { - checkDuplicateProperties('Inject', key) - } - } -} -function callHook(hook, instance, type) { - callWithAsyncErrorHandling( - isArray(hook) - ? hook.map(h2 => h2.bind(instance.proxy)) - : hook.bind(instance.proxy), - instance, - type - ) -} -function createWatcher(raw, ctx, publicThis, key) { - const getter = key.includes('.') - ? createPathGetter(publicThis, key) - : () => publicThis[key] - if (isString(raw)) { - const handler = ctx[raw] - if (isFunction(handler)) { - watch(getter, handler) - } else if (true) { - warn2(`Invalid watch handler specified by key "${raw}"`, handler) - } - } else if (isFunction(raw)) { - watch(getter, raw.bind(publicThis)) - } else if (isObject(raw)) { - if (isArray(raw)) { - raw.forEach(r => createWatcher(r, ctx, publicThis, key)) - } else { - const handler = isFunction(raw.handler) - ? raw.handler.bind(publicThis) - : ctx[raw.handler] - if (isFunction(handler)) { - watch(getter, handler, raw) - } else if (true) { - warn2( - `Invalid watch handler specified by key "${raw.handler}"`, - handler - ) - } - } - } else if (true) { - warn2(`Invalid watch option: "${key}"`, raw) - } -} -function resolveMergedOptions(instance) { - const base = instance.type - const { mixins, extends: extendsOptions } = base - const { - mixins: globalMixins, - optionsCache: cache, - config: { optionMergeStrategies } - } = instance.appContext - const cached = cache.get(base) - let resolved - if (cached) { - resolved = cached - } else if (!globalMixins.length && !mixins && !extendsOptions) { - { - resolved = base - } - } else { - resolved = {} - if (globalMixins.length) { - globalMixins.forEach(m => - mergeOptions(resolved, m, optionMergeStrategies, true) - ) - } - mergeOptions(resolved, base, optionMergeStrategies) - } - if (isObject(base)) { - cache.set(base, resolved) - } - return resolved -} -function mergeOptions(to, from, strats, asMixin = false) { - const { mixins, extends: extendsOptions } = from - if (extendsOptions) { - mergeOptions(to, extendsOptions, strats, true) - } - if (mixins) { - mixins.forEach(m => mergeOptions(to, m, strats, true)) - } - for (const key in from) { - if (asMixin && key === 'expose') { - warn2( - `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` - ) - } else { - const strat = internalOptionMergeStrats[key] || (strats && strats[key]) - to[key] = strat ? strat(to[key], from[key]) : from[key] - } - } - return to -} -var internalOptionMergeStrats = { - data: mergeDataFn, - props: mergeObjectOptions, - emits: mergeObjectOptions, - // objects - methods: mergeObjectOptions, - computed: mergeObjectOptions, - // lifecycle - beforeCreate: mergeAsArray, - created: mergeAsArray, - beforeMount: mergeAsArray, - mounted: mergeAsArray, - beforeUpdate: mergeAsArray, - updated: mergeAsArray, - beforeDestroy: mergeAsArray, - beforeUnmount: mergeAsArray, - destroyed: mergeAsArray, - unmounted: mergeAsArray, - activated: mergeAsArray, - deactivated: mergeAsArray, - errorCaptured: mergeAsArray, - serverPrefetch: mergeAsArray, - // assets - components: mergeObjectOptions, - directives: mergeObjectOptions, - // watch - watch: mergeWatchOptions, - // provide / inject - provide: mergeDataFn, - inject: mergeInject -} -function mergeDataFn(to, from) { - if (!from) { - return to - } - if (!to) { - return from - } - return function mergedDataFn() { - return extend( - isFunction(to) ? to.call(this, this) : to, - isFunction(from) ? from.call(this, this) : from - ) - } -} -function mergeInject(to, from) { - return mergeObjectOptions(normalizeInject(to), normalizeInject(from)) -} -function normalizeInject(raw) { - if (isArray(raw)) { - const res = {} - for (let i = 0; i < raw.length; i++) { - res[raw[i]] = raw[i] - } - return res - } - return raw -} -function mergeAsArray(to, from) { - return to ? [...new Set([].concat(to, from))] : from -} -function mergeObjectOptions(to, from) { - return to - ? extend(extend(/* @__PURE__ */ Object.create(null), to), from) - : from -} -function mergeWatchOptions(to, from) { - if (!to) return from - if (!from) return to - const merged = extend(/* @__PURE__ */ Object.create(null), to) - for (const key in from) { - merged[key] = mergeAsArray(to[key], from[key]) - } - return merged -} -function initProps(instance, rawProps, isStateful, isSSR = false) { - const props = {} - const attrs = {} - def(attrs, InternalObjectKey, 1) - instance.propsDefaults = /* @__PURE__ */ Object.create(null) - setFullProps(instance, rawProps, props, attrs) - for (const key in instance.propsOptions[0]) { - if (!(key in props)) { - props[key] = void 0 - } - } - if (true) { - validateProps(rawProps || {}, props, instance) - } - if (isStateful) { - instance.props = isSSR ? props : shallowReactive(props) - } else { - if (!instance.type.props) { - instance.props = attrs - } else { - instance.props = props - } - } - instance.attrs = attrs -} -function isInHmrContext(instance) { - while (instance) { - if (instance.type.__hmrId) return true - instance = instance.parent - } -} -function updateProps(instance, rawProps, rawPrevProps, optimized) { - const { - props, - attrs, - vnode: { patchFlag } - } = instance - const rawCurrentProps = toRaw(props) - const [options] = instance.propsOptions - let hasAttrsChanged = false - if ( - // always force full diff in dev - // - #1942 if hmr is enabled with sfc component - // - vite#872 non-sfc component used by sfc component - !isInHmrContext(instance) && - (optimized || patchFlag > 0) && - !(patchFlag & 16) - ) { - if (patchFlag & 8) { - const propsToUpdate = instance.vnode.dynamicProps - for (let i = 0; i < propsToUpdate.length; i++) { - let key = propsToUpdate[i] - if (isEmitListener(instance.emitsOptions, key)) { - continue - } - const value = rawProps[key] - if (options) { - if (hasOwn(attrs, key)) { - if (value !== attrs[key]) { - attrs[key] = value - hasAttrsChanged = true - } - } else { - const camelizedKey = camelize(key) - props[camelizedKey] = resolvePropValue( - options, - rawCurrentProps, - camelizedKey, - value, - instance, - false - /* isAbsent */ - ) - } - } else { - if (value !== attrs[key]) { - attrs[key] = value - hasAttrsChanged = true - } - } - } - } - } else { - if (setFullProps(instance, rawProps, props, attrs)) { - hasAttrsChanged = true - } - let kebabKey - for (const key in rawCurrentProps) { - if ( - !rawProps || // for camelCase - (!hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case - // and converted to camelCase (#955) - ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) - ) { - if (options) { - if ( - rawPrevProps && // for camelCase - (rawPrevProps[key] !== void 0 || // for kebab-case - rawPrevProps[kebabKey] !== void 0) - ) { - props[key] = resolvePropValue( - options, - rawCurrentProps, - key, - void 0, - instance, - true - /* isAbsent */ - ) - } - } else { - delete props[key] - } - } - } - if (attrs !== rawCurrentProps) { - for (const key in attrs) { - if (!rawProps || (!hasOwn(rawProps, key) && true)) { - delete attrs[key] - hasAttrsChanged = true - } - } - } - } - if (hasAttrsChanged) { - trigger(instance, 'set', '$attrs') - } - if (true) { - validateProps(rawProps || {}, props, instance) - } -} -function setFullProps(instance, rawProps, props, attrs) { - const [options, needCastKeys] = instance.propsOptions - let hasAttrsChanged = false - let rawCastValues - if (rawProps) { - for (let key in rawProps) { - if (isReservedProp(key)) { - continue - } - const value = rawProps[key] - let camelKey - if (options && hasOwn(options, (camelKey = camelize(key)))) { - if (!needCastKeys || !needCastKeys.includes(camelKey)) { - props[camelKey] = value - } else { - ;(rawCastValues || (rawCastValues = {}))[camelKey] = value - } - } else if (!isEmitListener(instance.emitsOptions, key)) { - if (!(key in attrs) || value !== attrs[key]) { - attrs[key] = value - hasAttrsChanged = true - } - } - } - } - if (needCastKeys) { - const rawCurrentProps = toRaw(props) - const castValues = rawCastValues || EMPTY_OBJ - for (let i = 0; i < needCastKeys.length; i++) { - const key = needCastKeys[i] - props[key] = resolvePropValue( - options, - rawCurrentProps, - key, - castValues[key], - instance, - !hasOwn(castValues, key) - ) - } - } - return hasAttrsChanged -} -function resolvePropValue(options, props, key, value, instance, isAbsent) { - const opt = options[key] - if (opt != null) { - const hasDefault = hasOwn(opt, 'default') - if (hasDefault && value === void 0) { - const defaultValue = opt.default - if (opt.type !== Function && isFunction(defaultValue)) { - const { propsDefaults } = instance - if (key in propsDefaults) { - value = propsDefaults[key] - } else { - setCurrentInstance(instance) - value = propsDefaults[key] = defaultValue.call(null, props) - unsetCurrentInstance() - } - } else { - value = defaultValue - } - } - if ( - opt[0] - /* BooleanFlags.shouldCast */ - ) { - if (isAbsent && !hasDefault) { - value = false - } else if ( - opt[1] && - /* BooleanFlags.shouldCastTrue */ - (value === '' || value === hyphenate(key)) - ) { - value = true - } - } - } - return value -} -function normalizePropsOptions(comp, appContext, asMixin = false) { - const cache = appContext.propsCache - const cached = cache.get(comp) - if (cached) { - return cached - } - const raw = comp.props - const normalized = {} - const needCastKeys = [] - let hasExtends = false - if (__VUE_OPTIONS_API__ && !isFunction(comp)) { - const extendProps = raw2 => { - hasExtends = true - const [props, keys] = normalizePropsOptions(raw2, appContext, true) - extend(normalized, props) - if (keys) needCastKeys.push(...keys) - } - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendProps) - } - if (comp.extends) { - extendProps(comp.extends) - } - if (comp.mixins) { - comp.mixins.forEach(extendProps) - } - } - if (!raw && !hasExtends) { - if (isObject(comp)) { - cache.set(comp, EMPTY_ARR) - } - return EMPTY_ARR - } - if (isArray(raw)) { - for (let i = 0; i < raw.length; i++) { - if (!isString(raw[i])) { - warn2(`props must be strings when using array syntax.`, raw[i]) - } - const normalizedKey = camelize(raw[i]) - if (validatePropName(normalizedKey)) { - normalized[normalizedKey] = EMPTY_OBJ - } - } - } else if (raw) { - if (!isObject(raw)) { - warn2(`invalid props options`, raw) - } - for (const key in raw) { - const normalizedKey = camelize(key) - if (validatePropName(normalizedKey)) { - const opt = raw[key] - const prop = (normalized[normalizedKey] = - isArray(opt) || isFunction(opt) - ? { type: opt } - : Object.assign({}, opt)) - if (prop) { - const booleanIndex = getTypeIndex(Boolean, prop.type) - const stringIndex = getTypeIndex(String, prop.type) - prop[0] = booleanIndex > -1 - /* BooleanFlags.shouldCast */ - prop[1] = stringIndex < 0 || booleanIndex < stringIndex - /* BooleanFlags.shouldCastTrue */ - if (booleanIndex > -1 || hasOwn(prop, 'default')) { - needCastKeys.push(normalizedKey) - } - } - } - } - } - const res = [normalized, needCastKeys] - if (isObject(comp)) { - cache.set(comp, res) - } - return res -} -function validatePropName(key) { - if (key[0] !== '$') { - return true - } else if (true) { - warn2(`Invalid prop name: "${key}" is a reserved property.`) - } - return false -} -function getType(ctor) { - const match = ctor && ctor.toString().match(/^\s*function (\w+)/) - return match ? match[1] : ctor === null ? 'null' : '' -} -function isSameType(a, b) { - return getType(a) === getType(b) -} -function getTypeIndex(type, expectedTypes) { - if (isArray(expectedTypes)) { - return expectedTypes.findIndex(t => isSameType(t, type)) - } else if (isFunction(expectedTypes)) { - return isSameType(expectedTypes, type) ? 0 : -1 - } - return -1 -} -function validateProps(rawProps, props, instance) { - const resolvedValues = toRaw(props) - const options = instance.propsOptions[0] - for (const key in options) { - let opt = options[key] - if (opt == null) continue - validateProp( - key, - resolvedValues[key], - opt, - !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)) - ) - } -} -function validateProp(name, value, prop, isAbsent) { - const { type, required, validator } = prop - if (required && isAbsent) { - warn2('Missing required prop: "' + name + '"') - return - } - if (value == null && !prop.required) { - return - } - if (type != null && type !== true) { - let isValid = false - const types = isArray(type) ? type : [type] - const expectedTypes = [] - for (let i = 0; i < types.length && !isValid; i++) { - const { valid, expectedType } = assertType(value, types[i]) - expectedTypes.push(expectedType || '') - isValid = valid - } - if (!isValid) { - warn2(getInvalidTypeMessage(name, value, expectedTypes)) - return - } - } - if (validator && !validator(value)) { - warn2( - 'Invalid prop: custom validator check failed for prop "' + name + '".' - ) - } -} -var isSimpleType = makeMap('String,Number,Boolean,Function,Symbol,BigInt') -function assertType(value, type) { - let valid - const expectedType = getType(type) - if (isSimpleType(expectedType)) { - const t = typeof value - valid = t === expectedType.toLowerCase() - if (!valid && t === 'object') { - valid = value instanceof type - } - } else if (expectedType === 'Object') { - valid = isObject(value) - } else if (expectedType === 'Array') { - valid = isArray(value) - } else if (expectedType === 'null') { - valid = value === null - } else { - valid = value instanceof type - } - return { - valid, - expectedType - } -} -function getInvalidTypeMessage(name, value, expectedTypes) { - let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes - .map(capitalize) - .join(' | ')}` - const expectedType = expectedTypes[0] - const receivedType = toRawType(value) - const expectedValue = styleValue(value, expectedType) - const receivedValue = styleValue(value, receivedType) - if ( - expectedTypes.length === 1 && - isExplicable(expectedType) && - !isBoolean(expectedType, receivedType) - ) { - message += ` with value ${expectedValue}` - } - message += `, got ${receivedType} ` - if (isExplicable(receivedType)) { - message += `with value ${receivedValue}.` - } - return message -} -function styleValue(value, type) { - if (type === 'String') { - return `"${value}"` - } else if (type === 'Number') { - return `${Number(value)}` - } else { - return `${value}` - } -} -function isExplicable(type) { - const explicitTypes = ['string', 'number', 'boolean'] - return explicitTypes.some(elem => type.toLowerCase() === elem) -} -function isBoolean(...args) { - return args.some(elem => elem.toLowerCase() === 'boolean') -} -var isInternalKey = key => key[0] === '_' || key === '$stable' -var normalizeSlotValue = value => - isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)] -var normalizeSlot = (key, rawSlot, ctx) => { - if (rawSlot._n) { - return rawSlot - } - const normalized = withCtx((...args) => { - if (currentInstance) { - warn2( - `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` - ) - } - return normalizeSlotValue(rawSlot(...args)) - }, ctx) - normalized._c = false - return normalized -} -var normalizeObjectSlots = (rawSlots, slots, instance) => { - const ctx = rawSlots._ctx - for (const key in rawSlots) { - if (isInternalKey(key)) continue - const value = rawSlots[key] - if (isFunction(value)) { - slots[key] = normalizeSlot(key, value, ctx) - } else if (value != null) { - if (true) { - warn2( - `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` - ) - } - const normalized = normalizeSlotValue(value) - slots[key] = () => normalized - } - } -} -var normalizeVNodeSlots = (instance, children) => { - if (!isKeepAlive(instance.vnode) && true) { - warn2( - `Non-function value encountered for default slot. Prefer function slots for better performance.` - ) - } - const normalized = normalizeSlotValue(children) - instance.slots.default = () => normalized -} -var initSlots = (instance, children) => { - if (instance.vnode.shapeFlag & 32) { - const type = children._ - if (type) { - instance.slots = toRaw(children) - def(children, '_', type) - } else { - normalizeObjectSlots(children, (instance.slots = {})) - } - } else { - instance.slots = {} - if (children) { - normalizeVNodeSlots(instance, children) - } - } - def(instance.slots, InternalObjectKey, 1) -} -var updateSlots = (instance, children, optimized) => { - const { vnode, slots } = instance - let needDeletionCheck = true - let deletionComparisonTarget = EMPTY_OBJ - if (vnode.shapeFlag & 32) { - const type = children._ - if (type) { - if (isHmrUpdating) { - extend(slots, children) - } else if (optimized && type === 1) { - needDeletionCheck = false - } else { - extend(slots, children) - if (!optimized && type === 1) { - delete slots._ - } - } - } else { - needDeletionCheck = !children.$stable - normalizeObjectSlots(children, slots) - } - deletionComparisonTarget = children - } else if (children) { - normalizeVNodeSlots(instance, children) - deletionComparisonTarget = { default: 1 } - } - if (needDeletionCheck) { - for (const key in slots) { - if (!isInternalKey(key) && !(key in deletionComparisonTarget)) { - delete slots[key] - } - } - } -} -function createAppContext() { - return { - app: null, - config: { - isNativeTag: NO, - performance: false, - globalProperties: {}, - optionMergeStrategies: {}, - errorHandler: void 0, - warnHandler: void 0, - compilerOptions: {} - }, - mixins: [], - components: {}, - directives: {}, - provides: /* @__PURE__ */ Object.create(null), - optionsCache: /* @__PURE__ */ new WeakMap(), - propsCache: /* @__PURE__ */ new WeakMap(), - emitsCache: /* @__PURE__ */ new WeakMap() - } -} -var uid = 0 -function createAppAPI(render2, hydrate2) { - return function createApp2(rootComponent, rootProps = null) { - if (!isFunction(rootComponent)) { - rootComponent = Object.assign({}, rootComponent) - } - if (rootProps != null && !isObject(rootProps)) { - warn2(`root props passed to app.mount() must be an object.`) - rootProps = null - } - const context = createAppContext() - const installedPlugins = /* @__PURE__ */ new Set() - let isMounted = false - const app = (context.app = { - _uid: uid++, - _component: rootComponent, - _props: rootProps, - _container: null, - _context: context, - _instance: null, - version, - get config() { - return context.config - }, - set config(v) { - if (true) { - warn2( - `app.config cannot be replaced. Modify individual options instead.` - ) - } - }, - use(plugin, ...options) { - if (installedPlugins.has(plugin)) { - warn2(`Plugin has already been applied to target app.`) - } else if (plugin && isFunction(plugin.install)) { - installedPlugins.add(plugin) - plugin.install(app, ...options) - } else if (isFunction(plugin)) { - installedPlugins.add(plugin) - plugin(app, ...options) - } else if (true) { - warn2( - `A plugin must either be a function or an object with an "install" function.` - ) - } - return app - }, - mixin(mixin) { - if (__VUE_OPTIONS_API__) { - if (!context.mixins.includes(mixin)) { - context.mixins.push(mixin) - } else if (true) { - warn2( - 'Mixin has already been applied to target app' + - (mixin.name ? `: ${mixin.name}` : '') - ) - } - } else if (true) { - warn2('Mixins are only available in builds supporting Options API') - } - return app - }, - component(name, component) { - if (true) { - validateComponentName(name, context.config) - } - if (!component) { - return context.components[name] - } - if (context.components[name]) { - warn2( - `Component "${name}" has already been registered in target app.` - ) - } - context.components[name] = component - return app - }, - directive(name, directive) { - if (true) { - validateDirectiveName(name) - } - if (!directive) { - return context.directives[name] - } - if (context.directives[name]) { - warn2( - `Directive "${name}" has already been registered in target app.` - ) - } - context.directives[name] = directive - return app - }, - mount(rootContainer, isHydrate, isSVG) { - if (!isMounted) { - if (rootContainer.__vue_app__) { - warn2(`There is already an app instance mounted on the host container. - If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.`) - } - const vnode = createVNode(rootComponent, rootProps) - vnode.appContext = context - if (true) { - context.reload = () => { - render2(cloneVNode(vnode), rootContainer, isSVG) - } - } - if (isHydrate && hydrate2) { - hydrate2(vnode, rootContainer) - } else { - render2(vnode, rootContainer, isSVG) - } - isMounted = true - app._container = rootContainer - rootContainer.__vue_app__ = app - if (true) { - app._instance = vnode.component - devtoolsInitApp(app, version) - } - return getExposeProxy(vnode.component) || vnode.component.proxy - } else if (true) { - warn2(`App has already been mounted. -If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\``) - } - }, - unmount() { - if (isMounted) { - render2(null, app._container) - if (true) { - app._instance = null - devtoolsUnmountApp(app) - } - delete app._container.__vue_app__ - } else if (true) { - warn2(`Cannot unmount an app that is not mounted.`) - } - }, - provide(key, value) { - if (key in context.provides) { - warn2( - `App already provides property with key "${String( - key - )}". It will be overwritten with the new value.` - ) - } - context.provides[key] = value - return app - } - }) - return app - } -} -function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { - if (isArray(rawRef)) { - rawRef.forEach((r, i) => - setRef( - r, - oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), - parentSuspense, - vnode, - isUnmount - ) - ) - return - } - if (isAsyncWrapper(vnode) && !isUnmount) { - return - } - const refValue = - vnode.shapeFlag & 4 - ? getExposeProxy(vnode.component) || vnode.component.proxy - : vnode.el - const value = isUnmount ? null : refValue - const { i: owner, r: ref2 } = rawRef - if (!owner) { - warn2( - `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` - ) - return - } - const oldRef = oldRawRef && oldRawRef.r - const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs - const setupState = owner.setupState - if (oldRef != null && oldRef !== ref2) { - if (isString(oldRef)) { - refs[oldRef] = null - if (hasOwn(setupState, oldRef)) { - setupState[oldRef] = null - } - } else if (isRef(oldRef)) { - oldRef.value = null - } - } - if (isFunction(ref2)) { - callWithErrorHandling(ref2, owner, 12, [value, refs]) - } else { - const _isString = isString(ref2) - const _isRef = isRef(ref2) - if (_isString || _isRef) { - const doSet = () => { - if (rawRef.f) { - const existing = _isString - ? hasOwn(setupState, ref2) - ? setupState[ref2] - : refs[ref2] - : ref2.value - if (isUnmount) { - isArray(existing) && remove(existing, refValue) - } else { - if (!isArray(existing)) { - if (_isString) { - refs[ref2] = [refValue] - if (hasOwn(setupState, ref2)) { - setupState[ref2] = refs[ref2] - } - } else { - ref2.value = [refValue] - if (rawRef.k) refs[rawRef.k] = ref2.value - } - } else if (!existing.includes(refValue)) { - existing.push(refValue) - } - } - } else if (_isString) { - refs[ref2] = value - if (hasOwn(setupState, ref2)) { - setupState[ref2] = value - } - } else if (_isRef) { - ref2.value = value - if (rawRef.k) refs[rawRef.k] = value - } else if (true) { - warn2('Invalid template ref type:', ref2, `(${typeof ref2})`) - } - } - if (value) { - doSet.id = -1 - queuePostRenderEffect(doSet, parentSuspense) - } else { - doSet() - } - } else if (true) { - warn2('Invalid template ref type:', ref2, `(${typeof ref2})`) - } - } -} -var hasMismatch = false -var isSVGContainer = container => - /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject' -var isComment = node => node.nodeType === 8 -function createHydrationFunctions(rendererInternals) { - const { - mt: mountComponent, - p: patch, - o: { - patchProp: patchProp2, - createText, - nextSibling, - parentNode, - remove: remove2, - insert, - createComment - } - } = rendererInternals - const hydrate2 = (vnode, container) => { - if (!container.hasChildNodes()) { - warn2( - `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` - ) - patch(null, vnode, container) - flushPostFlushCbs() - container._vnode = vnode - return - } - hasMismatch = false - hydrateNode(container.firstChild, vnode, null, null, null) - flushPostFlushCbs() - container._vnode = vnode - if (hasMismatch && true) { - console.error(`Hydration completed but contains mismatches.`) - } - } - const hydrateNode = ( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized = false - ) => { - const isFragmentStart = isComment(node) && node.data === '[' - const onMismatch = () => - handleMismatch( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - isFragmentStart - ) - const { type, ref: ref2, shapeFlag, patchFlag } = vnode - let domType = node.nodeType - vnode.el = node - if (patchFlag === -2) { - optimized = false - vnode.dynamicChildren = null - } - let nextNode = null - switch (type) { - case Text: - if (domType !== 3) { - if (vnode.children === '') { - insert((vnode.el = createText('')), parentNode(node), node) - nextNode = node - } else { - nextNode = onMismatch() - } - } else { - if (node.data !== vnode.children) { - hasMismatch = true - warn2(`Hydration text mismatch: -- Client: ${JSON.stringify(node.data)} -- Server: ${JSON.stringify(vnode.children)}`) - node.data = vnode.children - } - nextNode = nextSibling(node) - } - break - case Comment: - if (domType !== 8 || isFragmentStart) { - nextNode = onMismatch() - } else { - nextNode = nextSibling(node) - } - break - case Static: - if (isFragmentStart) { - node = nextSibling(node) - domType = node.nodeType - } - if (domType === 1 || domType === 3) { - nextNode = node - const needToAdoptContent = !vnode.children.length - for (let i = 0; i < vnode.staticCount; i++) { - if (needToAdoptContent) - vnode.children += - nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data - if (i === vnode.staticCount - 1) { - vnode.anchor = nextNode - } - nextNode = nextSibling(nextNode) - } - return isFragmentStart ? nextSibling(nextNode) : nextNode - } else { - onMismatch() - } - break - case Fragment: - if (!isFragmentStart) { - nextNode = onMismatch() - } else { - nextNode = hydrateFragment( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) - } - break - default: - if (shapeFlag & 1) { - if ( - domType !== 1 || - vnode.type.toLowerCase() !== node.tagName.toLowerCase() - ) { - nextNode = onMismatch() - } else { - nextNode = hydrateElement( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) - } - } else if (shapeFlag & 6) { - vnode.slotScopeIds = slotScopeIds - const container = parentNode(node) - mountComponent( - vnode, - container, - null, - parentComponent, - parentSuspense, - isSVGContainer(container), - optimized - ) - nextNode = isFragmentStart - ? locateClosingAsyncAnchor(node) - : nextSibling(node) - if ( - nextNode && - isComment(nextNode) && - nextNode.data === 'teleport end' - ) { - nextNode = nextSibling(nextNode) - } - if (isAsyncWrapper(vnode)) { - let subTree - if (isFragmentStart) { - subTree = createVNode(Fragment) - subTree.anchor = nextNode - ? nextNode.previousSibling - : container.lastChild - } else { - subTree = - node.nodeType === 3 ? createTextVNode('') : createVNode('div') - } - subTree.el = node - vnode.component.subTree = subTree - } - } else if (shapeFlag & 64) { - if (domType !== 8) { - nextNode = onMismatch() - } else { - nextNode = vnode.type.hydrate( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized, - rendererInternals, - hydrateChildren - ) - } - } else if (shapeFlag & 128) { - nextNode = vnode.type.hydrate( - node, - vnode, - parentComponent, - parentSuspense, - isSVGContainer(parentNode(node)), - slotScopeIds, - optimized, - rendererInternals, - hydrateNode - ) - } else if (true) { - warn2('Invalid HostVNode type:', type, `(${typeof type})`) - } - } - if (ref2 != null) { - setRef(ref2, null, parentSuspense, vnode) - } - return nextNode - } - const hydrateElement = ( - el, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) => { - optimized = optimized || !!vnode.dynamicChildren - const { type, props, patchFlag, shapeFlag, dirs } = vnode - const forcePatchValue = (type === 'input' && dirs) || type === 'option' - if (true) { - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, 'created') - } - if (props) { - if (forcePatchValue || !optimized || patchFlag & (16 | 32)) { - for (const key in props) { - if ( - (forcePatchValue && key.endsWith('value')) || - (isOn(key) && !isReservedProp(key)) - ) { - patchProp2( - el, - key, - null, - props[key], - false, - void 0, - parentComponent - ) - } - } - } else if (props.onClick) { - patchProp2( - el, - 'onClick', - null, - props.onClick, - false, - void 0, - parentComponent - ) - } - } - let vnodeHooks - if ((vnodeHooks = props && props.onVnodeBeforeMount)) { - invokeVNodeHook(vnodeHooks, parentComponent, vnode) - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount') - } - if ((vnodeHooks = props && props.onVnodeMounted) || dirs) { - queueEffectWithSuspense(() => { - vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode) - dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted') - }, parentSuspense) - } - if ( - shapeFlag & 16 && // skip if element has innerHTML / textContent - !(props && (props.innerHTML || props.textContent)) - ) { - let next = hydrateChildren( - el.firstChild, - vnode, - el, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) - let hasWarned2 = false - while (next) { - hasMismatch = true - if (!hasWarned2) { - warn2( - `Hydration children mismatch in <${vnode.type}>: server rendered element contains more child nodes than client vdom.` - ) - hasWarned2 = true - } - const cur = next - next = next.nextSibling - remove2(cur) - } - } else if (shapeFlag & 8) { - if (el.textContent !== vnode.children) { - hasMismatch = true - warn2(`Hydration text content mismatch in <${vnode.type}>: -- Client: ${el.textContent} -- Server: ${vnode.children}`) - el.textContent = vnode.children - } - } - } - return el.nextSibling - } - const hydrateChildren = ( - node, - parentVNode, - container, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) => { - optimized = optimized || !!parentVNode.dynamicChildren - const children = parentVNode.children - const l = children.length - let hasWarned2 = false - for (let i = 0; i < l; i++) { - const vnode = optimized - ? children[i] - : (children[i] = normalizeVNode(children[i])) - if (node) { - node = hydrateNode( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) - } else if (vnode.type === Text && !vnode.children) { - continue - } else { - hasMismatch = true - if (!hasWarned2) { - warn2( - `Hydration children mismatch in <${container.tagName.toLowerCase()}>: server rendered element contains fewer child nodes than client vdom.` - ) - hasWarned2 = true - } - patch( - null, - vnode, - container, - null, - parentComponent, - parentSuspense, - isSVGContainer(container), - slotScopeIds - ) - } - } - return node - } - const hydrateFragment = ( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) => { - const { slotScopeIds: fragmentSlotScopeIds } = vnode - if (fragmentSlotScopeIds) { - slotScopeIds = slotScopeIds - ? slotScopeIds.concat(fragmentSlotScopeIds) - : fragmentSlotScopeIds - } - const container = parentNode(node) - const next = hydrateChildren( - nextSibling(node), - vnode, - container, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) - if (next && isComment(next) && next.data === ']') { - return nextSibling((vnode.anchor = next)) - } else { - hasMismatch = true - insert((vnode.anchor = createComment(`]`)), container, next) - return next - } - } - const handleMismatch = ( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - isFragment - ) => { - hasMismatch = true - warn2( - `Hydration node mismatch: -- Client vnode:`, - vnode.type, - ` -- Server rendered DOM:`, - node, - node.nodeType === 3 - ? `(text)` - : isComment(node) && node.data === '[' - ? `(start of fragment)` - : `` - ) - vnode.el = null - if (isFragment) { - const end = locateClosingAsyncAnchor(node) - while (true) { - const next2 = nextSibling(node) - if (next2 && next2 !== end) { - remove2(next2) - } else { - break - } - } - } - const next = nextSibling(node) - const container = parentNode(node) - remove2(node) - patch( - null, - vnode, - container, - next, - parentComponent, - parentSuspense, - isSVGContainer(container), - slotScopeIds - ) - return next - } - const locateClosingAsyncAnchor = node => { - let match = 0 - while (node) { - node = nextSibling(node) - if (node && isComment(node)) { - if (node.data === '[') match++ - if (node.data === ']') { - if (match === 0) { - return nextSibling(node) - } else { - match-- - } - } - } - } - return node - } - return [hydrate2, hydrateNode] -} -var supported -var perf -function startMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - perf.mark(`vue-${type}-${instance.uid}`) - } - if (true) { - devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()) - } -} -function endMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - const startTag = `vue-${type}-${instance.uid}` - const endTag = startTag + `:end` - perf.mark(endTag) - perf.measure( - `<${formatComponentName(instance, instance.type)}> ${type}`, - startTag, - endTag - ) - perf.clearMarks(startTag) - perf.clearMarks(endTag) - } - if (true) { - devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()) - } -} -function isSupported() { - if (supported !== void 0) { - return supported - } - if (typeof window !== 'undefined' && window.performance) { - supported = true - perf = window.performance - } else { - supported = false - } - return supported -} -function initFeatureFlags() { - const needWarn = [] - if (typeof __VUE_OPTIONS_API__ !== 'boolean') { - needWarn.push(`__VUE_OPTIONS_API__`) - getGlobalThis().__VUE_OPTIONS_API__ = true - } - if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') { - needWarn.push(`__VUE_PROD_DEVTOOLS__`) - getGlobalThis().__VUE_PROD_DEVTOOLS__ = false - } - if (needWarn.length) { - const multi = needWarn.length > 1 - console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${ - multi ? `are` : `is` - } not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle. - -For more details, see https://link.vuejs.org/feature-flags.`) - } -} -var queuePostRenderEffect = queueEffectWithSuspense -function createRenderer(options) { - return baseCreateRenderer(options) -} -function createHydrationRenderer(options) { - return baseCreateRenderer(options, createHydrationFunctions) -} -function baseCreateRenderer(options, createHydrationFns) { - { - initFeatureFlags() - } - const target = getGlobalThis() - target.__VUE__ = true - if (true) { - setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target) - } - const { - insert: hostInsert, - remove: hostRemove, - patchProp: hostPatchProp, - createElement: hostCreateElement, - createText: hostCreateText, - createComment: hostCreateComment, - setText: hostSetText, - setElementText: hostSetElementText, - parentNode: hostParentNode, - nextSibling: hostNextSibling, - setScopeId: hostSetScopeId = NOOP, - insertStaticContent: hostInsertStaticContent - } = options - const patch = ( - n1, - n2, - container, - anchor = null, - parentComponent = null, - parentSuspense = null, - isSVG = false, - slotScopeIds = null, - optimized = isHmrUpdating ? false : !!n2.dynamicChildren - ) => { - if (n1 === n2) { - return - } - if (n1 && !isSameVNodeType(n1, n2)) { - anchor = getNextHostNode(n1) - unmount(n1, parentComponent, parentSuspense, true) - n1 = null - } - if (n2.patchFlag === -2) { - optimized = false - n2.dynamicChildren = null - } - const { type, ref: ref2, shapeFlag } = n2 - switch (type) { - case Text: - processText(n1, n2, container, anchor) - break - case Comment: - processCommentNode(n1, n2, container, anchor) - break - case Static: - if (n1 == null) { - mountStaticNode(n2, container, anchor, isSVG) - } else if (true) { - patchStaticNode(n1, n2, container, isSVG) - } - break - case Fragment: - processFragment( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - break - default: - if (shapeFlag & 1) { - processElement( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else if (shapeFlag & 6) { - processComponent( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else if (shapeFlag & 64) { - type.process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - internals - ) - } else if (shapeFlag & 128) { - type.process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - internals - ) - } else if (true) { - warn2('Invalid VNode type:', type, `(${typeof type})`) - } - } - if (ref2 != null && parentComponent) { - setRef(ref2, n1 && n1.ref, parentSuspense, n2 || n1, !n2) - } - } - const processText = (n1, n2, container, anchor) => { - if (n1 == null) { - hostInsert((n2.el = hostCreateText(n2.children)), container, anchor) - } else { - const el = (n2.el = n1.el) - if (n2.children !== n1.children) { - hostSetText(el, n2.children) - } - } - } - const processCommentNode = (n1, n2, container, anchor) => { - if (n1 == null) { - hostInsert( - (n2.el = hostCreateComment(n2.children || '')), - container, - anchor - ) - } else { - n2.el = n1.el - } - } - const mountStaticNode = (n2, container, anchor, isSVG) => { - ;[n2.el, n2.anchor] = hostInsertStaticContent( - n2.children, - container, - anchor, - isSVG, - n2.el, - n2.anchor - ) - } - const patchStaticNode = (n1, n2, container, isSVG) => { - if (n2.children !== n1.children) { - const anchor = hostNextSibling(n1.anchor) - removeStaticNode(n1) - ;[n2.el, n2.anchor] = hostInsertStaticContent( - n2.children, - container, - anchor, - isSVG - ) - } else { - n2.el = n1.el - n2.anchor = n1.anchor - } - } - const moveStaticNode = ({ el, anchor }, container, nextSibling) => { - let next - while (el && el !== anchor) { - next = hostNextSibling(el) - hostInsert(el, container, nextSibling) - el = next - } - hostInsert(anchor, container, nextSibling) - } - const removeStaticNode = ({ el, anchor }) => { - let next - while (el && el !== anchor) { - next = hostNextSibling(el) - hostRemove(el) - el = next - } - hostRemove(anchor) - } - const processElement = ( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) => { - isSVG = isSVG || n2.type === 'svg' - if (n1 == null) { - mountElement( - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else { - patchElement( - n1, - n2, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } - } - const mountElement = ( - vnode, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) => { - let el - let vnodeHook - const { type, props, shapeFlag, transition, dirs } = vnode - el = vnode.el = hostCreateElement( - vnode.type, - isSVG, - props && props.is, - props - ) - if (shapeFlag & 8) { - hostSetElementText(el, vnode.children) - } else if (shapeFlag & 16) { - mountChildren( - vnode.children, - el, - null, - parentComponent, - parentSuspense, - isSVG && type !== 'foreignObject', - slotScopeIds, - optimized - ) - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, 'created') - } - if (props) { - for (const key in props) { - if (key !== 'value' && !isReservedProp(key)) { - hostPatchProp( - el, - key, - null, - props[key], - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ) - } - } - if ('value' in props) { - hostPatchProp(el, 'value', null, props.value) - } - if ((vnodeHook = props.onVnodeBeforeMount)) { - invokeVNodeHook(vnodeHook, parentComponent, vnode) - } - } - setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent) - if (true) { - Object.defineProperty(el, '__vnode', { - value: vnode, - enumerable: false - }) - Object.defineProperty(el, '__vueParentComponent', { - value: parentComponent, - enumerable: false - }) - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount') - } - const needCallTransitionHooks = - (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) && - transition && - !transition.persisted - if (needCallTransitionHooks) { - transition.beforeEnter(el) - } - hostInsert(el, container, anchor) - if ( - (vnodeHook = props && props.onVnodeMounted) || - needCallTransitionHooks || - dirs - ) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode) - needCallTransitionHooks && transition.enter(el) - dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted') - }, parentSuspense) - } - } - const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { - if (scopeId) { - hostSetScopeId(el, scopeId) - } - if (slotScopeIds) { - for (let i = 0; i < slotScopeIds.length; i++) { - hostSetScopeId(el, slotScopeIds[i]) - } - } - if (parentComponent) { - let subTree = parentComponent.subTree - if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) { - subTree = filterSingleRoot(subTree.children) || subTree - } - if (vnode === subTree) { - const parentVNode = parentComponent.vnode - setScopeId( - el, - parentVNode, - parentVNode.scopeId, - parentVNode.slotScopeIds, - parentComponent.parent - ) - } - } - } - const mountChildren = ( - children, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - start = 0 - ) => { - for (let i = start; i < children.length; i++) { - const child = (children[i] = optimized - ? cloneIfMounted(children[i]) - : normalizeVNode(children[i])) - patch( - null, - child, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } - } - const patchElement = ( - n1, - n2, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) => { - const el = (n2.el = n1.el) - let { patchFlag, dynamicChildren, dirs } = n2 - patchFlag |= n1.patchFlag & 16 - const oldProps = n1.props || EMPTY_OBJ - const newProps = n2.props || EMPTY_OBJ - let vnodeHook - parentComponent && toggleRecurse(parentComponent, false) - if ((vnodeHook = newProps.onVnodeBeforeUpdate)) { - invokeVNodeHook(vnodeHook, parentComponent, n2, n1) - } - if (dirs) { - invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate') - } - parentComponent && toggleRecurse(parentComponent, true) - if (isHmrUpdating) { - patchFlag = 0 - optimized = false - dynamicChildren = null - } - const areChildrenSVG = isSVG && n2.type !== 'foreignObject' - if (dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - el, - parentComponent, - parentSuspense, - areChildrenSVG, - slotScopeIds - ) - if (parentComponent && parentComponent.type.__hmrId) { - traverseStaticChildren(n1, n2) - } - } else if (!optimized) { - patchChildren( - n1, - n2, - el, - null, - parentComponent, - parentSuspense, - areChildrenSVG, - slotScopeIds, - false - ) - } - if (patchFlag > 0) { - if (patchFlag & 16) { - patchProps( - el, - n2, - oldProps, - newProps, - parentComponent, - parentSuspense, - isSVG - ) - } else { - if (patchFlag & 2) { - if (oldProps.class !== newProps.class) { - hostPatchProp(el, 'class', null, newProps.class, isSVG) - } - } - if (patchFlag & 4) { - hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG) - } - if (patchFlag & 8) { - const propsToUpdate = n2.dynamicProps - for (let i = 0; i < propsToUpdate.length; i++) { - const key = propsToUpdate[i] - const prev = oldProps[key] - const next = newProps[key] - if (next !== prev || key === 'value') { - hostPatchProp( - el, - key, - prev, - next, - isSVG, - n1.children, - parentComponent, - parentSuspense, - unmountChildren - ) - } - } - } - } - if (patchFlag & 1) { - if (n1.children !== n2.children) { - hostSetElementText(el, n2.children) - } - } - } else if (!optimized && dynamicChildren == null) { - patchProps( - el, - n2, - oldProps, - newProps, - parentComponent, - parentSuspense, - isSVG - ) - } - if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1) - dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated') - }, parentSuspense) - } - } - const patchBlockChildren = ( - oldChildren, - newChildren, - fallbackContainer, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds - ) => { - for (let i = 0; i < newChildren.length; i++) { - const oldVNode = oldChildren[i] - const newVNode = newChildren[i] - const container = - // oldVNode may be an errored async setup() component inside Suspense - // which will not have a mounted element - oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent - // of the Fragment itself so it can move its children. - (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement - // which also requires the correct parent container - !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. - oldVNode.shapeFlag & (6 | 64)) - ? hostParentNode(oldVNode.el) - : // In other cases, the parent container is not actually used so we - // just pass the block element here to avoid a DOM parentNode call. - fallbackContainer - patch( - oldVNode, - newVNode, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - true - ) - } - } - const patchProps = ( - el, - vnode, - oldProps, - newProps, - parentComponent, - parentSuspense, - isSVG - ) => { - if (oldProps !== newProps) { - if (oldProps !== EMPTY_OBJ) { - for (const key in oldProps) { - if (!isReservedProp(key) && !(key in newProps)) { - hostPatchProp( - el, - key, - oldProps[key], - null, - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ) - } - } - } - for (const key in newProps) { - if (isReservedProp(key)) continue - const next = newProps[key] - const prev = oldProps[key] - if (next !== prev && key !== 'value') { - hostPatchProp( - el, - key, - prev, - next, - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ) - } - } - if ('value' in newProps) { - hostPatchProp(el, 'value', oldProps.value, newProps.value) - } - } - } - const processFragment = ( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) => { - const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText('')) - const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText('')) - let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2 - if ( - // #5523 dev root fragment may inherit directives - isHmrUpdating || - patchFlag & 2048 - ) { - patchFlag = 0 - optimized = false - dynamicChildren = null - } - if (fragmentSlotScopeIds) { - slotScopeIds = slotScopeIds - ? slotScopeIds.concat(fragmentSlotScopeIds) - : fragmentSlotScopeIds - } - if (n1 == null) { - hostInsert(fragmentStartAnchor, container, anchor) - hostInsert(fragmentEndAnchor, container, anchor) - mountChildren( - n2.children, - container, - fragmentEndAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else { - if ( - patchFlag > 0 && - patchFlag & 64 && - dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result - // of renderSlot() with no valid children - n1.dynamicChildren - ) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - container, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds - ) - if (parentComponent && parentComponent.type.__hmrId) { - traverseStaticChildren(n1, n2) - } else if ( - // #2080 if the stable fragment has a key, it's a <template v-for> that may - // get moved around. Make sure all root level vnodes inherit el. - // #2134 or if it's a component root, it may also get moved around - // as the component is being moved. - n2.key != null || - (parentComponent && n2 === parentComponent.subTree) - ) { - traverseStaticChildren( - n1, - n2, - true - /* shallow */ - ) - } - } else { - patchChildren( - n1, - n2, - container, - fragmentEndAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } - } - } - const processComponent = ( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) => { - n2.slotScopeIds = slotScopeIds - if (n1 == null) { - if (n2.shapeFlag & 512) { - parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized) - } else { - mountComponent( - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - optimized - ) - } - } else { - updateComponent(n1, n2, optimized) - } - } - const mountComponent = ( - initialVNode, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - optimized - ) => { - const instance = (initialVNode.component = createComponentInstance( - initialVNode, - parentComponent, - parentSuspense - )) - if (instance.type.__hmrId) { - registerHMR(instance) - } - if (true) { - pushWarningContext(initialVNode) - startMeasure(instance, `mount`) - } - if (isKeepAlive(initialVNode)) { - instance.ctx.renderer = internals - } - { - if (true) { - startMeasure(instance, `init`) - } - setupComponent(instance) - if (true) { - endMeasure(instance, `init`) - } - } - if (instance.asyncDep) { - parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect) - if (!initialVNode.el) { - const placeholder = (instance.subTree = createVNode(Comment)) - processCommentNode(null, placeholder, container, anchor) - } - return - } - setupRenderEffect( - instance, - initialVNode, - container, - anchor, - parentSuspense, - isSVG, - optimized - ) - if (true) { - popWarningContext() - endMeasure(instance, `mount`) - } - } - const updateComponent = (n1, n2, optimized) => { - const instance = (n2.component = n1.component) - if (shouldUpdateComponent(n1, n2, optimized)) { - if (instance.asyncDep && !instance.asyncResolved) { - if (true) { - pushWarningContext(n2) - } - updateComponentPreRender(instance, n2, optimized) - if (true) { - popWarningContext() - } - return - } else { - instance.next = n2 - invalidateJob(instance.update) - instance.update() - } - } else { - n2.el = n1.el - instance.vnode = n2 - } - } - const setupRenderEffect = ( - instance, - initialVNode, - container, - anchor, - parentSuspense, - isSVG, - optimized - ) => { - const componentUpdateFn = () => { - if (!instance.isMounted) { - let vnodeHook - const { el, props } = initialVNode - const { bm, m, parent } = instance - const isAsyncWrapperVNode = isAsyncWrapper(initialVNode) - toggleRecurse(instance, false) - if (bm) { - invokeArrayFns(bm) - } - if ( - !isAsyncWrapperVNode && - (vnodeHook = props && props.onVnodeBeforeMount) - ) { - invokeVNodeHook(vnodeHook, parent, initialVNode) - } - toggleRecurse(instance, true) - if (el && hydrateNode) { - const hydrateSubTree = () => { - if (true) { - startMeasure(instance, `render`) - } - instance.subTree = renderComponentRoot(instance) - if (true) { - endMeasure(instance, `render`) - } - if (true) { - startMeasure(instance, `hydrate`) - } - hydrateNode(el, instance.subTree, instance, parentSuspense, null) - if (true) { - endMeasure(instance, `hydrate`) - } - } - if (isAsyncWrapperVNode) { - initialVNode.type.__asyncLoader().then( - // note: we are moving the render call into an async callback, - // which means it won't track dependencies - but it's ok because - // a server-rendered async wrapper is already in resolved state - // and it will never need to change. - () => !instance.isUnmounted && hydrateSubTree() - ) - } else { - hydrateSubTree() - } - } else { - if (true) { - startMeasure(instance, `render`) - } - const subTree = (instance.subTree = renderComponentRoot(instance)) - if (true) { - endMeasure(instance, `render`) - } - if (true) { - startMeasure(instance, `patch`) - } - patch( - null, - subTree, - container, - anchor, - instance, - parentSuspense, - isSVG - ) - if (true) { - endMeasure(instance, `patch`) - } - initialVNode.el = subTree.el - } - if (m) { - queuePostRenderEffect(m, parentSuspense) - } - if ( - !isAsyncWrapperVNode && - (vnodeHook = props && props.onVnodeMounted) - ) { - const scopedInitialVNode = initialVNode - queuePostRenderEffect( - () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), - parentSuspense - ) - } - if ( - initialVNode.shapeFlag & 256 || - (parent && - isAsyncWrapper(parent.vnode) && - parent.vnode.shapeFlag & 256) - ) { - instance.a && queuePostRenderEffect(instance.a, parentSuspense) - } - instance.isMounted = true - if (true) { - devtoolsComponentAdded(instance) - } - initialVNode = container = anchor = null - } else { - let { next, bu, u, parent, vnode } = instance - let originNext = next - let vnodeHook - if (true) { - pushWarningContext(next || instance.vnode) - } - toggleRecurse(instance, false) - if (next) { - next.el = vnode.el - updateComponentPreRender(instance, next, optimized) - } else { - next = vnode - } - if (bu) { - invokeArrayFns(bu) - } - if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) { - invokeVNodeHook(vnodeHook, parent, next, vnode) - } - toggleRecurse(instance, true) - if (true) { - startMeasure(instance, `render`) - } - const nextTree = renderComponentRoot(instance) - if (true) { - endMeasure(instance, `render`) - } - const prevTree = instance.subTree - instance.subTree = nextTree - if (true) { - startMeasure(instance, `patch`) - } - patch( - prevTree, - nextTree, - // parent may have changed if it's in a teleport - hostParentNode(prevTree.el), - // anchor may have changed if it's in a fragment - getNextHostNode(prevTree), - instance, - parentSuspense, - isSVG - ) - if (true) { - endMeasure(instance, `patch`) - } - next.el = nextTree.el - if (originNext === null) { - updateHOCHostEl(instance, nextTree.el) - } - if (u) { - queuePostRenderEffect(u, parentSuspense) - } - if ((vnodeHook = next.props && next.props.onVnodeUpdated)) { - queuePostRenderEffect( - () => invokeVNodeHook(vnodeHook, parent, next, vnode), - parentSuspense - ) - } - if (true) { - devtoolsComponentUpdated(instance) - } - if (true) { - popWarningContext() - } - } - } - const effect2 = (instance.effect = new ReactiveEffect( - componentUpdateFn, - () => queueJob(update), - instance.scope - // track it in component's effect scope - )) - const update = (instance.update = () => effect2.run()) - update.id = instance.uid - toggleRecurse(instance, true) - if (true) { - effect2.onTrack = instance.rtc - ? e => invokeArrayFns(instance.rtc, e) - : void 0 - effect2.onTrigger = instance.rtg - ? e => invokeArrayFns(instance.rtg, e) - : void 0 - update.ownerInstance = instance - } - update() - } - const updateComponentPreRender = (instance, nextVNode, optimized) => { - nextVNode.component = instance - const prevProps = instance.vnode.props - instance.vnode = nextVNode - instance.next = null - updateProps(instance, nextVNode.props, prevProps, optimized) - updateSlots(instance, nextVNode.children, optimized) - pauseTracking() - flushPreFlushCbs() - resetTracking() - } - const patchChildren = ( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized = false - ) => { - const c1 = n1 && n1.children - const prevShapeFlag = n1 ? n1.shapeFlag : 0 - const c2 = n2.children - const { patchFlag, shapeFlag } = n2 - if (patchFlag > 0) { - if (patchFlag & 128) { - patchKeyedChildren( - c1, - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - return - } else if (patchFlag & 256) { - patchUnkeyedChildren( - c1, - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - return - } - } - if (shapeFlag & 8) { - if (prevShapeFlag & 16) { - unmountChildren(c1, parentComponent, parentSuspense) - } - if (c2 !== c1) { - hostSetElementText(container, c2) - } - } else { - if (prevShapeFlag & 16) { - if (shapeFlag & 16) { - patchKeyedChildren( - c1, - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else { - unmountChildren(c1, parentComponent, parentSuspense, true) - } - } else { - if (prevShapeFlag & 8) { - hostSetElementText(container, '') - } - if (shapeFlag & 16) { - mountChildren( - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } - } - } - } - const patchUnkeyedChildren = ( - c1, - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) => { - c1 = c1 || EMPTY_ARR - c2 = c2 || EMPTY_ARR - const oldLength = c1.length - const newLength = c2.length - const commonLength = Math.min(oldLength, newLength) - let i - for (i = 0; i < commonLength; i++) { - const nextChild = (c2[i] = optimized - ? cloneIfMounted(c2[i]) - : normalizeVNode(c2[i])) - patch( - c1[i], - nextChild, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } - if (oldLength > newLength) { - unmountChildren( - c1, - parentComponent, - parentSuspense, - true, - false, - commonLength - ) - } else { - mountChildren( - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - commonLength - ) - } - } - const patchKeyedChildren = ( - c1, - c2, - container, - parentAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) => { - let i = 0 - const l2 = c2.length - let e1 = c1.length - 1 - let e2 = l2 - 1 - while (i <= e1 && i <= e2) { - const n1 = c1[i] - const n2 = (c2[i] = optimized - ? cloneIfMounted(c2[i]) - : normalizeVNode(c2[i])) - if (isSameVNodeType(n1, n2)) { - patch( - n1, - n2, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else { - break - } - i++ - } - while (i <= e1 && i <= e2) { - const n1 = c1[e1] - const n2 = (c2[e2] = optimized - ? cloneIfMounted(c2[e2]) - : normalizeVNode(c2[e2])) - if (isSameVNodeType(n1, n2)) { - patch( - n1, - n2, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else { - break - } - e1-- - e2-- - } - if (i > e1) { - if (i <= e2) { - const nextPos = e2 + 1 - const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor - while (i <= e2) { - patch( - null, - (c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i])), - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - i++ - } - } - } else if (i > e2) { - while (i <= e1) { - unmount(c1[i], parentComponent, parentSuspense, true) - i++ - } - } else { - const s1 = i - const s2 = i - const keyToNewIndexMap = /* @__PURE__ */ new Map() - for (i = s2; i <= e2; i++) { - const nextChild = (c2[i] = optimized - ? cloneIfMounted(c2[i]) - : normalizeVNode(c2[i])) - if (nextChild.key != null) { - if (keyToNewIndexMap.has(nextChild.key)) { - warn2( - `Duplicate keys found during update:`, - JSON.stringify(nextChild.key), - `Make sure keys are unique.` - ) - } - keyToNewIndexMap.set(nextChild.key, i) - } - } - let j - let patched = 0 - const toBePatched = e2 - s2 + 1 - let moved = false - let maxNewIndexSoFar = 0 - const newIndexToOldIndexMap = new Array(toBePatched) - for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0 - for (i = s1; i <= e1; i++) { - const prevChild = c1[i] - if (patched >= toBePatched) { - unmount(prevChild, parentComponent, parentSuspense, true) - continue - } - let newIndex - if (prevChild.key != null) { - newIndex = keyToNewIndexMap.get(prevChild.key) - } else { - for (j = s2; j <= e2; j++) { - if ( - newIndexToOldIndexMap[j - s2] === 0 && - isSameVNodeType(prevChild, c2[j]) - ) { - newIndex = j - break - } - } - } - if (newIndex === void 0) { - unmount(prevChild, parentComponent, parentSuspense, true) - } else { - newIndexToOldIndexMap[newIndex - s2] = i + 1 - if (newIndex >= maxNewIndexSoFar) { - maxNewIndexSoFar = newIndex - } else { - moved = true - } - patch( - prevChild, - c2[newIndex], - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - patched++ - } - } - const increasingNewIndexSequence = moved - ? getSequence(newIndexToOldIndexMap) - : EMPTY_ARR - j = increasingNewIndexSequence.length - 1 - for (i = toBePatched - 1; i >= 0; i--) { - const nextIndex = s2 + i - const nextChild = c2[nextIndex] - const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor - if (newIndexToOldIndexMap[i] === 0) { - patch( - null, - nextChild, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } else if (moved) { - if (j < 0 || i !== increasingNewIndexSequence[j]) { - move( - nextChild, - container, - anchor, - 2 - /* MoveType.REORDER */ - ) - } else { - j-- - } - } - } - } - } - const move = (vnode, container, anchor, moveType, parentSuspense = null) => { - const { el, type, transition, children, shapeFlag } = vnode - if (shapeFlag & 6) { - move(vnode.component.subTree, container, anchor, moveType) - return - } - if (shapeFlag & 128) { - vnode.suspense.move(container, anchor, moveType) - return - } - if (shapeFlag & 64) { - type.move(vnode, container, anchor, internals) - return - } - if (type === Fragment) { - hostInsert(el, container, anchor) - for (let i = 0; i < children.length; i++) { - move(children[i], container, anchor, moveType) - } - hostInsert(vnode.anchor, container, anchor) - return - } - if (type === Static) { - moveStaticNode(vnode, container, anchor) - return - } - const needTransition = moveType !== 2 && shapeFlag & 1 && transition - if (needTransition) { - if (moveType === 0) { - transition.beforeEnter(el) - hostInsert(el, container, anchor) - queuePostRenderEffect(() => transition.enter(el), parentSuspense) - } else { - const { leave, delayLeave, afterLeave } = transition - const remove3 = () => hostInsert(el, container, anchor) - const performLeave = () => { - leave(el, () => { - remove3() - afterLeave && afterLeave() - }) - } - if (delayLeave) { - delayLeave(el, remove3, performLeave) - } else { - performLeave() - } - } - } else { - hostInsert(el, container, anchor) - } - } - const unmount = ( - vnode, - parentComponent, - parentSuspense, - doRemove = false, - optimized = false - ) => { - const { - type, - props, - ref: ref2, - children, - dynamicChildren, - shapeFlag, - patchFlag, - dirs - } = vnode - if (ref2 != null) { - setRef(ref2, null, parentSuspense, vnode, true) - } - if (shapeFlag & 256) { - parentComponent.ctx.deactivate(vnode) - return - } - const shouldInvokeDirs = shapeFlag & 1 && dirs - const shouldInvokeVnodeHook = !isAsyncWrapper(vnode) - let vnodeHook - if ( - shouldInvokeVnodeHook && - (vnodeHook = props && props.onVnodeBeforeUnmount) - ) { - invokeVNodeHook(vnodeHook, parentComponent, vnode) - } - if (shapeFlag & 6) { - unmountComponent(vnode.component, parentSuspense, doRemove) - } else { - if (shapeFlag & 128) { - vnode.suspense.unmount(parentSuspense, doRemove) - return - } - if (shouldInvokeDirs) { - invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount') - } - if (shapeFlag & 64) { - vnode.type.remove( - vnode, - parentComponent, - parentSuspense, - optimized, - internals, - doRemove - ) - } else if ( - dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments - (type !== Fragment || (patchFlag > 0 && patchFlag & 64)) - ) { - unmountChildren( - dynamicChildren, - parentComponent, - parentSuspense, - false, - true - ) - } else if ( - (type === Fragment && patchFlag & (128 | 256)) || - (!optimized && shapeFlag & 16) - ) { - unmountChildren(children, parentComponent, parentSuspense) - } - if (doRemove) { - remove2(vnode) - } - } - if ( - (shouldInvokeVnodeHook && - (vnodeHook = props && props.onVnodeUnmounted)) || - shouldInvokeDirs - ) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode) - shouldInvokeDirs && - invokeDirectiveHook(vnode, null, parentComponent, 'unmounted') - }, parentSuspense) - } - } - const remove2 = vnode => { - const { type, el, anchor, transition } = vnode - if (type === Fragment) { - if ( - vnode.patchFlag > 0 && - vnode.patchFlag & 2048 && - transition && - !transition.persisted - ) { - vnode.children.forEach(child => { - if (child.type === Comment) { - hostRemove(child.el) - } else { - remove2(child) - } - }) - } else { - removeFragment(el, anchor) - } - return - } - if (type === Static) { - removeStaticNode(vnode) - return - } - const performRemove = () => { - hostRemove(el) - if (transition && !transition.persisted && transition.afterLeave) { - transition.afterLeave() - } - } - if (vnode.shapeFlag & 1 && transition && !transition.persisted) { - const { leave, delayLeave } = transition - const performLeave = () => leave(el, performRemove) - if (delayLeave) { - delayLeave(vnode.el, performRemove, performLeave) - } else { - performLeave() - } - } else { - performRemove() - } - } - const removeFragment = (cur, end) => { - let next - while (cur !== end) { - next = hostNextSibling(cur) - hostRemove(cur) - cur = next - } - hostRemove(end) - } - const unmountComponent = (instance, parentSuspense, doRemove) => { - if (instance.type.__hmrId) { - unregisterHMR(instance) - } - const { bum, scope, update, subTree, um } = instance - if (bum) { - invokeArrayFns(bum) - } - scope.stop() - if (update) { - update.active = false - unmount(subTree, instance, parentSuspense, doRemove) - } - if (um) { - queuePostRenderEffect(um, parentSuspense) - } - queuePostRenderEffect(() => { - instance.isUnmounted = true - }, parentSuspense) - if ( - parentSuspense && - parentSuspense.pendingBranch && - !parentSuspense.isUnmounted && - instance.asyncDep && - !instance.asyncResolved && - instance.suspenseId === parentSuspense.pendingId - ) { - parentSuspense.deps-- - if (parentSuspense.deps === 0) { - parentSuspense.resolve() - } - } - if (true) { - devtoolsComponentRemoved(instance) - } - } - const unmountChildren = ( - children, - parentComponent, - parentSuspense, - doRemove = false, - optimized = false, - start = 0 - ) => { - for (let i = start; i < children.length; i++) { - unmount(children[i], parentComponent, parentSuspense, doRemove, optimized) - } - } - const getNextHostNode = vnode => { - if (vnode.shapeFlag & 6) { - return getNextHostNode(vnode.component.subTree) - } - if (vnode.shapeFlag & 128) { - return vnode.suspense.next() - } - return hostNextSibling(vnode.anchor || vnode.el) - } - const render2 = (vnode, container, isSVG) => { - if (vnode == null) { - if (container._vnode) { - unmount(container._vnode, null, null, true) - } - } else { - patch(container._vnode || null, vnode, container, null, null, null, isSVG) - } - flushPreFlushCbs() - flushPostFlushCbs() - container._vnode = vnode - } - const internals = { - p: patch, - um: unmount, - m: move, - r: remove2, - mt: mountComponent, - mc: mountChildren, - pc: patchChildren, - pbc: patchBlockChildren, - n: getNextHostNode, - o: options - } - let hydrate2 - let hydrateNode - if (createHydrationFns) { - ;[hydrate2, hydrateNode] = createHydrationFns(internals) - } - return { - render: render2, - hydrate: hydrate2, - createApp: createAppAPI(render2, hydrate2) - } -} -function toggleRecurse({ effect: effect2, update }, allowed) { - effect2.allowRecurse = update.allowRecurse = allowed -} -function traverseStaticChildren(n1, n2, shallow = false) { - const ch1 = n1.children - const ch2 = n2.children - if (isArray(ch1) && isArray(ch2)) { - for (let i = 0; i < ch1.length; i++) { - const c1 = ch1[i] - let c2 = ch2[i] - if (c2.shapeFlag & 1 && !c2.dynamicChildren) { - if (c2.patchFlag <= 0 || c2.patchFlag === 32) { - c2 = ch2[i] = cloneIfMounted(ch2[i]) - c2.el = c1.el - } - if (!shallow) traverseStaticChildren(c1, c2) - } - if (c2.type === Text) { - c2.el = c1.el - } - if (c2.type === Comment && !c2.el) { - c2.el = c1.el - } - } - } -} -function getSequence(arr) { - const p2 = arr.slice() - const result = [0] - let i, j, u, v, c - const len = arr.length - for (i = 0; i < len; i++) { - const arrI = arr[i] - if (arrI !== 0) { - j = result[result.length - 1] - if (arr[j] < arrI) { - p2[i] = j - result.push(i) - continue - } - u = 0 - v = result.length - 1 - while (u < v) { - c = (u + v) >> 1 - if (arr[result[c]] < arrI) { - u = c + 1 - } else { - v = c - } - } - if (arrI < arr[result[u]]) { - if (u > 0) { - p2[i] = result[u - 1] - } - result[u] = i - } - } - } - u = result.length - v = result[u - 1] - while (u-- > 0) { - result[u] = v - v = p2[v] - } - return result -} -var isTeleport = type => type.__isTeleport -var isTeleportDisabled = props => - props && (props.disabled || props.disabled === '') -var isTargetSVG = target => - typeof SVGElement !== 'undefined' && target instanceof SVGElement -var resolveTarget = (props, select) => { - const targetSelector = props && props.to - if (isString(targetSelector)) { - if (!select) { - warn2( - `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` - ) - return null - } else { - const target = select(targetSelector) - if (!target) { - warn2( - `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` - ) - } - return target - } - } else { - if (!targetSelector && !isTeleportDisabled(props)) { - warn2(`Invalid Teleport target: ${targetSelector}`) - } - return targetSelector - } -} -var TeleportImpl = { - __isTeleport: true, - process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - internals - ) { - const { - mc: mountChildren, - pc: patchChildren, - pbc: patchBlockChildren, - o: { insert, querySelector, createText, createComment } - } = internals - const disabled = isTeleportDisabled(n2.props) - let { shapeFlag, children, dynamicChildren } = n2 - if (isHmrUpdating) { - optimized = false - dynamicChildren = null - } - if (n1 == null) { - const placeholder = (n2.el = true - ? createComment('teleport start') - : createText('')) - const mainAnchor = (n2.anchor = true - ? createComment('teleport end') - : createText('')) - insert(placeholder, container, anchor) - insert(mainAnchor, container, anchor) - const target = (n2.target = resolveTarget(n2.props, querySelector)) - const targetAnchor = (n2.targetAnchor = createText('')) - if (target) { - insert(targetAnchor, target) - isSVG = isSVG || isTargetSVG(target) - } else if (!disabled) { - warn2('Invalid Teleport target on mount:', target, `(${typeof target})`) - } - const mount = (container2, anchor2) => { - if (shapeFlag & 16) { - mountChildren( - children, - container2, - anchor2, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ) - } - } - if (disabled) { - mount(container, mainAnchor) - } else if (target) { - mount(target, targetAnchor) - } - } else { - n2.el = n1.el - const mainAnchor = (n2.anchor = n1.anchor) - const target = (n2.target = n1.target) - const targetAnchor = (n2.targetAnchor = n1.targetAnchor) - const wasDisabled = isTeleportDisabled(n1.props) - const currentContainer = wasDisabled ? container : target - const currentAnchor = wasDisabled ? mainAnchor : targetAnchor - isSVG = isSVG || isTargetSVG(target) - if (dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - currentContainer, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds - ) - traverseStaticChildren(n1, n2, true) - } else if (!optimized) { - patchChildren( - n1, - n2, - currentContainer, - currentAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - false - ) - } - if (disabled) { - if (!wasDisabled) { - moveTeleport( - n2, - container, - mainAnchor, - internals, - 1 - /* TeleportMoveTypes.TOGGLE */ - ) - } - } else { - if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { - const nextTarget = (n2.target = resolveTarget( - n2.props, - querySelector - )) - if (nextTarget) { - moveTeleport( - n2, - nextTarget, - null, - internals, - 0 - /* TeleportMoveTypes.TARGET_CHANGE */ - ) - } else if (true) { - warn2( - 'Invalid Teleport target on update:', - target, - `(${typeof target})` - ) - } - } else if (wasDisabled) { - moveTeleport( - n2, - target, - targetAnchor, - internals, - 1 - /* TeleportMoveTypes.TOGGLE */ - ) - } - } - } - updateCssVars(n2) - }, - remove( - vnode, - parentComponent, - parentSuspense, - optimized, - { um: unmount, o: { remove: hostRemove } }, - doRemove - ) { - const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode - if (target) { - hostRemove(targetAnchor) - } - if (doRemove || !isTeleportDisabled(props)) { - hostRemove(anchor) - if (shapeFlag & 16) { - for (let i = 0; i < children.length; i++) { - const child = children[i] - unmount( - child, - parentComponent, - parentSuspense, - true, - !!child.dynamicChildren - ) - } - } - } - }, - move: moveTeleport, - hydrate: hydrateTeleport -} -function moveTeleport( - vnode, - container, - parentAnchor, - { o: { insert }, m: move }, - moveType = 2 -) { - if (moveType === 0) { - insert(vnode.targetAnchor, container, parentAnchor) - } - const { el, anchor, shapeFlag, children, props } = vnode - const isReorder = moveType === 2 - if (isReorder) { - insert(el, container, parentAnchor) - } - if (!isReorder || isTeleportDisabled(props)) { - if (shapeFlag & 16) { - for (let i = 0; i < children.length; i++) { - move( - children[i], - container, - parentAnchor, - 2 - /* MoveType.REORDER */ - ) - } - } - } - if (isReorder) { - insert(anchor, container, parentAnchor) - } -} -function hydrateTeleport( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized, - { o: { nextSibling, parentNode, querySelector } }, - hydrateChildren -) { - const target = (vnode.target = resolveTarget(vnode.props, querySelector)) - if (target) { - const targetNode = target._lpa || target.firstChild - if (vnode.shapeFlag & 16) { - if (isTeleportDisabled(vnode.props)) { - vnode.anchor = hydrateChildren( - nextSibling(node), - vnode, - parentNode(node), - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) - vnode.targetAnchor = targetNode - } else { - vnode.anchor = nextSibling(node) - let targetAnchor = targetNode - while (targetAnchor) { - targetAnchor = nextSibling(targetAnchor) - if ( - targetAnchor && - targetAnchor.nodeType === 8 && - targetAnchor.data === 'teleport anchor' - ) { - vnode.targetAnchor = targetAnchor - target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor) - break - } - } - hydrateChildren( - targetNode, - vnode, - target, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ) - } - } - updateCssVars(vnode) - } - return vnode.anchor && nextSibling(vnode.anchor) -} -var Teleport = TeleportImpl -function updateCssVars(vnode) { - const ctx = vnode.ctx - if (ctx && ctx.ut) { - let node = vnode.children[0].el - while (node !== vnode.targetAnchor) { - if (node.nodeType === 1) node.setAttribute('data-v-owner', ctx.uid) - node = node.nextSibling - } - ctx.ut() - } -} -var Fragment = Symbol(true ? 'Fragment' : void 0) -var Text = Symbol(true ? 'Text' : void 0) -var Comment = Symbol(true ? 'Comment' : void 0) -var Static = Symbol(true ? 'Static' : void 0) -var blockStack = [] -var currentBlock = null -function openBlock(disableTracking = false) { - blockStack.push((currentBlock = disableTracking ? null : [])) -} -function closeBlock() { - blockStack.pop() - currentBlock = blockStack[blockStack.length - 1] || null -} -var isBlockTreeEnabled = 1 -function setBlockTracking(value) { - isBlockTreeEnabled += value -} -function setupBlock(vnode) { - vnode.dynamicChildren = - isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null - closeBlock() - if (isBlockTreeEnabled > 0 && currentBlock) { - currentBlock.push(vnode) - } - return vnode -} -function createElementBlock( - type, - props, - children, - patchFlag, - dynamicProps, - shapeFlag -) { - return setupBlock( - createBaseVNode( - type, - props, - children, - patchFlag, - dynamicProps, - shapeFlag, - true - /* isBlock */ - ) - ) -} -function createBlock(type, props, children, patchFlag, dynamicProps) { - return setupBlock( - createVNode( - type, - props, - children, - patchFlag, - dynamicProps, - true - /* isBlock: prevent a block from tracking itself */ - ) - ) -} -function isVNode(value) { - return value ? value.__v_isVNode === true : false -} -function isSameVNodeType(n1, n2) { - if (n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) { - n1.shapeFlag &= ~256 - n2.shapeFlag &= ~512 - return false - } - return n1.type === n2.type && n1.key === n2.key -} -var vnodeArgsTransformer -function transformVNodeArgs(transformer) { - vnodeArgsTransformer = transformer -} -var createVNodeWithArgsTransform = (...args) => { - return _createVNode( - ...(vnodeArgsTransformer - ? vnodeArgsTransformer(args, currentRenderingInstance) - : args) - ) -} -var InternalObjectKey = `__vInternal` -var normalizeKey = ({ key }) => (key != null ? key : null) -var normalizeRef = ({ ref: ref2, ref_key, ref_for }) => { - return ref2 != null - ? isString(ref2) || isRef(ref2) || isFunction(ref2) - ? { i: currentRenderingInstance, r: ref2, k: ref_key, f: !!ref_for } - : ref2 - : null -} -function createBaseVNode( - type, - props = null, - children = null, - patchFlag = 0, - dynamicProps = null, - shapeFlag = type === Fragment ? 0 : 1, - isBlockNode = false, - needFullChildrenNormalization = false -) { - const vnode = { - __v_isVNode: true, - __v_skip: true, - type, - props, - key: props && normalizeKey(props), - ref: props && normalizeRef(props), - scopeId: currentScopeId, - slotScopeIds: null, - children, - component: null, - suspense: null, - ssContent: null, - ssFallback: null, - dirs: null, - transition: null, - el: null, - anchor: null, - target: null, - targetAnchor: null, - staticCount: 0, - shapeFlag, - patchFlag, - dynamicProps, - dynamicChildren: null, - appContext: null, - ctx: currentRenderingInstance - } - if (needFullChildrenNormalization) { - normalizeChildren(vnode, children) - if (shapeFlag & 128) { - type.normalize(vnode) - } - } else if (children) { - vnode.shapeFlag |= isString(children) ? 8 : 16 - } - if (vnode.key !== vnode.key) { - warn2(`VNode created with invalid key (NaN). VNode type:`, vnode.type) - } - if ( - isBlockTreeEnabled > 0 && // avoid a block node from tracking itself - !isBlockNode && // has current parent block - currentBlock && // presence of a patch flag indicates this node needs patching on updates. - // component nodes also should always be patched, because even if the - // component doesn't need to update, it needs to persist the instance on to - // the next vnode so that it can be properly unmounted later. - (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the - // vnode should not be considered dynamic due to handler caching. - vnode.patchFlag !== 32 - ) { - currentBlock.push(vnode) - } - return vnode -} -var createVNode = true ? createVNodeWithArgsTransform : _createVNode -function _createVNode( - type, - props = null, - children = null, - patchFlag = 0, - dynamicProps = null, - isBlockNode = false -) { - if (!type || type === NULL_DYNAMIC_COMPONENT) { - if (!type) { - warn2(`Invalid vnode type when creating vnode: ${type}.`) - } - type = Comment - } - if (isVNode(type)) { - const cloned = cloneVNode( - type, - props, - true - /* mergeRef: true */ - ) - if (children) { - normalizeChildren(cloned, children) - } - if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { - if (cloned.shapeFlag & 6) { - currentBlock[currentBlock.indexOf(type)] = cloned - } else { - currentBlock.push(cloned) - } - } - cloned.patchFlag |= -2 - return cloned - } - if (isClassComponent(type)) { - type = type.__vccOpts - } - if (props) { - props = guardReactiveProps(props) - let { class: klass, style } = props - if (klass && !isString(klass)) { - props.class = normalizeClass(klass) - } - if (isObject(style)) { - if (isProxy(style) && !isArray(style)) { - style = extend({}, style) - } - props.style = normalizeStyle(style) - } - } - const shapeFlag = isString(type) - ? 1 - : isSuspense(type) - ? 128 - : isTeleport(type) - ? 64 - : isObject(type) - ? 4 - : isFunction(type) - ? 2 - : 0 - if (shapeFlag & 4 && isProxy(type)) { - type = toRaw(type) - warn2( - `Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, - ` -Component that was made reactive: `, - type - ) - } - return createBaseVNode( - type, - props, - children, - patchFlag, - dynamicProps, - shapeFlag, - isBlockNode, - true - ) -} -function guardReactiveProps(props) { - if (!props) return null - return isProxy(props) || InternalObjectKey in props - ? extend({}, props) - : props -} -function cloneVNode(vnode, extraProps, mergeRef = false) { - const { props, ref: ref2, patchFlag, children } = vnode - const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props - const cloned = { - __v_isVNode: true, - __v_skip: true, - type: vnode.type, - props: mergedProps, - key: mergedProps && normalizeKey(mergedProps), - ref: - extraProps && extraProps.ref - ? // #2078 in the case of <component :is="vnode" ref="extra"/> - // if the vnode itself already has a ref, cloneVNode will need to merge - // the refs so the single vnode can be set on multiple refs - mergeRef && ref2 - ? isArray(ref2) - ? ref2.concat(normalizeRef(extraProps)) - : [ref2, normalizeRef(extraProps)] - : normalizeRef(extraProps) - : ref2, - scopeId: vnode.scopeId, - slotScopeIds: vnode.slotScopeIds, - children: - patchFlag === -1 && isArray(children) - ? children.map(deepCloneVNode) - : children, - target: vnode.target, - targetAnchor: vnode.targetAnchor, - staticCount: vnode.staticCount, - shapeFlag: vnode.shapeFlag, - // if the vnode is cloned with extra props, we can no longer assume its - // existing patch flag to be reliable and need to add the FULL_PROPS flag. - // note: preserve flag for fragments since they use the flag for children - // fast paths only. - patchFlag: - extraProps && vnode.type !== Fragment - ? patchFlag === -1 - ? 16 - : patchFlag | 16 - : patchFlag, - dynamicProps: vnode.dynamicProps, - dynamicChildren: vnode.dynamicChildren, - appContext: vnode.appContext, - dirs: vnode.dirs, - transition: vnode.transition, - // These should technically only be non-null on mounted VNodes. However, - // they *should* be copied for kept-alive vnodes. So we just always copy - // them since them being non-null during a mount doesn't affect the logic as - // they will simply be overwritten. - component: vnode.component, - suspense: vnode.suspense, - ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), - ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), - el: vnode.el, - anchor: vnode.anchor, - ctx: vnode.ctx - } - return cloned -} -function deepCloneVNode(vnode) { - const cloned = cloneVNode(vnode) - if (isArray(vnode.children)) { - cloned.children = vnode.children.map(deepCloneVNode) - } - return cloned -} -function createTextVNode(text = ' ', flag = 0) { - return createVNode(Text, null, text, flag) -} -function createStaticVNode(content, numberOfNodes) { - const vnode = createVNode(Static, null, content) - vnode.staticCount = numberOfNodes - return vnode -} -function createCommentVNode(text = '', asBlock = false) { - return asBlock - ? (openBlock(), createBlock(Comment, null, text)) - : createVNode(Comment, null, text) -} -function normalizeVNode(child) { - if (child == null || typeof child === 'boolean') { - return createVNode(Comment) - } else if (isArray(child)) { - return createVNode( - Fragment, - null, - // #3666, avoid reference pollution when reusing vnode - child.slice() - ) - } else if (typeof child === 'object') { - return cloneIfMounted(child) - } else { - return createVNode(Text, null, String(child)) - } -} -function cloneIfMounted(child) { - return (child.el === null && child.patchFlag !== -1) || child.memo - ? child - : cloneVNode(child) -} -function normalizeChildren(vnode, children) { - let type = 0 - const { shapeFlag } = vnode - if (children == null) { - children = null - } else if (isArray(children)) { - type = 16 - } else if (typeof children === 'object') { - if (shapeFlag & (1 | 64)) { - const slot = children.default - if (slot) { - slot._c && (slot._d = false) - normalizeChildren(vnode, slot()) - slot._c && (slot._d = true) - } - return - } else { - type = 32 - const slotFlag = children._ - if (!slotFlag && !(InternalObjectKey in children)) { - children._ctx = currentRenderingInstance - } else if (slotFlag === 3 && currentRenderingInstance) { - if (currentRenderingInstance.slots._ === 1) { - children._ = 1 - } else { - children._ = 2 - vnode.patchFlag |= 1024 - } - } - } - } else if (isFunction(children)) { - children = { default: children, _ctx: currentRenderingInstance } - type = 32 - } else { - children = String(children) - if (shapeFlag & 64) { - type = 16 - children = [createTextVNode(children)] - } else { - type = 8 - } - } - vnode.children = children - vnode.shapeFlag |= type -} -function mergeProps(...args) { - const ret = {} - for (let i = 0; i < args.length; i++) { - const toMerge = args[i] - for (const key in toMerge) { - if (key === 'class') { - if (ret.class !== toMerge.class) { - ret.class = normalizeClass([ret.class, toMerge.class]) - } - } else if (key === 'style') { - ret.style = normalizeStyle([ret.style, toMerge.style]) - } else if (isOn(key)) { - const existing = ret[key] - const incoming = toMerge[key] - if ( - incoming && - existing !== incoming && - !(isArray(existing) && existing.includes(incoming)) - ) { - ret[key] = existing ? [].concat(existing, incoming) : incoming - } - } else if (key !== '') { - ret[key] = toMerge[key] - } - } - } - return ret -} -function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { - callWithAsyncErrorHandling(hook, instance, 7, [vnode, prevVNode]) -} -var emptyAppContext = createAppContext() -var uid$1 = 0 -function createComponentInstance(vnode, parent, suspense) { - const type = vnode.type - const appContext = - (parent ? parent.appContext : vnode.appContext) || emptyAppContext - const instance = { - uid: uid$1++, - vnode, - type, - parent, - appContext, - root: null, - next: null, - subTree: null, - effect: null, - update: null, - scope: new EffectScope( - true - /* detached */ - ), - render: null, - proxy: null, - exposed: null, - exposeProxy: null, - withProxy: null, - provides: parent ? parent.provides : Object.create(appContext.provides), - accessCache: null, - renderCache: [], - // local resolved assets - components: null, - directives: null, - // resolved props and emits options - propsOptions: normalizePropsOptions(type, appContext), - emitsOptions: normalizeEmitsOptions(type, appContext), - // emit - emit: null, - emitted: null, - // props default value - propsDefaults: EMPTY_OBJ, - // inheritAttrs - inheritAttrs: type.inheritAttrs, - // state - ctx: EMPTY_OBJ, - data: EMPTY_OBJ, - props: EMPTY_OBJ, - attrs: EMPTY_OBJ, - slots: EMPTY_OBJ, - refs: EMPTY_OBJ, - setupState: EMPTY_OBJ, - setupContext: null, - // suspense related - suspense, - suspenseId: suspense ? suspense.pendingId : 0, - asyncDep: null, - asyncResolved: false, - // lifecycle hooks - // not using enums here because it results in computed properties - isMounted: false, - isUnmounted: false, - isDeactivated: false, - bc: null, - c: null, - bm: null, - m: null, - bu: null, - u: null, - um: null, - bum: null, - da: null, - a: null, - rtg: null, - rtc: null, - ec: null, - sp: null - } - if (true) { - instance.ctx = createDevRenderContext(instance) - } else { - instance.ctx = { _: instance } - } - instance.root = parent ? parent.root : instance - instance.emit = emit$1.bind(null, instance) - if (vnode.ce) { - vnode.ce(instance) - } - return instance -} -var currentInstance = null -var getCurrentInstance = () => currentInstance || currentRenderingInstance -var setCurrentInstance = instance => { - currentInstance = instance - instance.scope.on() -} -var unsetCurrentInstance = () => { - currentInstance && currentInstance.scope.off() - currentInstance = null -} -var isBuiltInTag = makeMap('slot,component') -function validateComponentName(name, config) { - const appIsNativeTag = config.isNativeTag || NO - if (isBuiltInTag(name) || appIsNativeTag(name)) { - warn2( - 'Do not use built-in or reserved HTML elements as component id: ' + name - ) - } -} -function isStatefulComponent(instance) { - return instance.vnode.shapeFlag & 4 -} -var isInSSRComponentSetup = false -function setupComponent(instance, isSSR = false) { - isInSSRComponentSetup = isSSR - const { props, children } = instance.vnode - const isStateful = isStatefulComponent(instance) - initProps(instance, props, isStateful, isSSR) - initSlots(instance, children) - const setupResult = isStateful - ? setupStatefulComponent(instance, isSSR) - : void 0 - isInSSRComponentSetup = false - return setupResult -} -function setupStatefulComponent(instance, isSSR) { - var _a2 - const Component = instance.type - if (true) { - if (Component.name) { - validateComponentName(Component.name, instance.appContext.config) - } - if (Component.components) { - const names = Object.keys(Component.components) - for (let i = 0; i < names.length; i++) { - validateComponentName(names[i], instance.appContext.config) - } - } - if (Component.directives) { - const names = Object.keys(Component.directives) - for (let i = 0; i < names.length; i++) { - validateDirectiveName(names[i]) - } - } - if (Component.compilerOptions && isRuntimeOnly()) { - warn2( - `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` - ) - } - } - instance.accessCache = /* @__PURE__ */ Object.create(null) - instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)) - if (true) { - exposePropsOnRenderContext(instance) - } - const { setup } = Component - if (setup) { - const setupContext = (instance.setupContext = - setup.length > 1 ? createSetupContext(instance) : null) - setCurrentInstance(instance) - pauseTracking() - const setupResult = callWithErrorHandling(setup, instance, 0, [ - true ? shallowReadonly(instance.props) : instance.props, - setupContext - ]) - resetTracking() - unsetCurrentInstance() - if (isPromise(setupResult)) { - setupResult.then(unsetCurrentInstance, unsetCurrentInstance) - if (isSSR) { - return setupResult - .then(resolvedResult => { - handleSetupResult(instance, resolvedResult, isSSR) - }) - .catch(e => { - handleError( - e, - instance, - 0 - /* ErrorCodes.SETUP_FUNCTION */ - ) - }) - } else { - instance.asyncDep = setupResult - if (!instance.suspense) { - const name = - (_a2 = Component.name) !== null && _a2 !== void 0 - ? _a2 - : 'Anonymous' - warn2( - `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` - ) - } - } - } else { - handleSetupResult(instance, setupResult, isSSR) - } - } else { - finishComponentSetup(instance, isSSR) - } -} -function handleSetupResult(instance, setupResult, isSSR) { - if (isFunction(setupResult)) { - if (instance.type.__ssrInlineRender) { - instance.ssrRender = setupResult - } else { - instance.render = setupResult - } - } else if (isObject(setupResult)) { - if (isVNode(setupResult)) { - warn2( - `setup() should not return VNodes directly - return a render function instead.` - ) - } - if (true) { - instance.devtoolsRawSetupState = setupResult - } - instance.setupState = proxyRefs(setupResult) - if (true) { - exposeSetupStateOnRenderContext(instance) - } - } else if (setupResult !== void 0) { - warn2( - `setup() should return an object. Received: ${ - setupResult === null ? 'null' : typeof setupResult - }` - ) - } - finishComponentSetup(instance, isSSR) -} -var compile -var installWithProxy -function registerRuntimeCompiler(_compile) { - compile = _compile - installWithProxy = i => { - if (i.render._rc) { - i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers) - } - } -} -var isRuntimeOnly = () => !compile -function finishComponentSetup(instance, isSSR, skipOptions) { - const Component = instance.type - if (!instance.render) { - if (!isSSR && compile && !Component.render) { - const template = - Component.template || resolveMergedOptions(instance).template - if (template) { - if (true) { - startMeasure(instance, `compile`) - } - const { isCustomElement, compilerOptions } = instance.appContext.config - const { delimiters, compilerOptions: componentCompilerOptions } = - Component - const finalCompilerOptions = extend( - extend( - { - isCustomElement, - delimiters - }, - compilerOptions - ), - componentCompilerOptions - ) - Component.render = compile(template, finalCompilerOptions) - if (true) { - endMeasure(instance, `compile`) - } - } - } - instance.render = Component.render || NOOP - if (installWithProxy) { - installWithProxy(instance) - } - } - if (__VUE_OPTIONS_API__ && true) { - setCurrentInstance(instance) - pauseTracking() - applyOptions(instance) - resetTracking() - unsetCurrentInstance() - } - if (!Component.render && instance.render === NOOP && !isSSR) { - if (!compile && Component.template) { - warn2( - `Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".` - /* should not happen */ - ) - } else { - warn2(`Component is missing template or render function.`) - } - } -} -function createAttrsProxy(instance) { - return new Proxy( - instance.attrs, - true - ? { - get(target, key) { - markAttrsAccessed() - track(instance, 'get', '$attrs') - return target[key] - }, - set() { - warn2(`setupContext.attrs is readonly.`) - return false - }, - deleteProperty() { - warn2(`setupContext.attrs is readonly.`) - return false - } - } - : { - get(target, key) { - track(instance, 'get', '$attrs') - return target[key] - } - } - ) -} -function createSetupContext(instance) { - const expose = exposed => { - if (instance.exposed) { - warn2(`expose() should be called only once per setup().`) - } - instance.exposed = exposed || {} - } - let attrs - if (true) { - return Object.freeze({ - get attrs() { - return attrs || (attrs = createAttrsProxy(instance)) - }, - get slots() { - return shallowReadonly(instance.slots) - }, - get emit() { - return (event, ...args) => instance.emit(event, ...args) - }, - expose - }) - } else { - return { - get attrs() { - return attrs || (attrs = createAttrsProxy(instance)) - }, - slots: instance.slots, - emit: instance.emit, - expose - } - } -} -function getExposeProxy(instance) { - if (instance.exposed) { - return ( - instance.exposeProxy || - (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { - get(target, key) { - if (key in target) { - return target[key] - } else if (key in publicPropertiesMap) { - return publicPropertiesMap[key](instance) - } - }, - has(target, key) { - return key in target || key in publicPropertiesMap - } - })) - ) - } -} -var classifyRE = /(?:^|[-_])(\w)/g -var classify = str => - str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '') -function getComponentName(Component, includeInferred = true) { - return isFunction(Component) - ? Component.displayName || Component.name - : Component.name || (includeInferred && Component.__name) -} -function formatComponentName(instance, Component, isRoot = false) { - let name = getComponentName(Component) - if (!name && Component.__file) { - const match = Component.__file.match(/([^/\\]+)\.\w+$/) - if (match) { - name = match[1] - } - } - if (!name && instance && instance.parent) { - const inferFromRegistry = registry => { - for (const key in registry) { - if (registry[key] === Component) { - return key - } - } - } - name = - inferFromRegistry( - instance.components || instance.parent.type.components - ) || inferFromRegistry(instance.appContext.components) - } - return name ? classify(name) : isRoot ? `App` : `Anonymous` -} -function isClassComponent(value) { - return isFunction(value) && '__vccOpts' in value -} -var computed2 = (getterOrOptions, debugOptions) => { - return computed(getterOrOptions, debugOptions, isInSSRComponentSetup) -} -var warnRuntimeUsage = method => - warn2( - `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.` - ) -function defineProps() { - if (true) { - warnRuntimeUsage(`defineProps`) - } - return null -} -function defineEmits() { - if (true) { - warnRuntimeUsage(`defineEmits`) - } - return null -} -function defineExpose(exposed) { - if (true) { - warnRuntimeUsage(`defineExpose`) - } -} -function withDefaults(props, defaults) { - if (true) { - warnRuntimeUsage(`withDefaults`) - } - return null -} -function useSlots() { - return getContext().slots -} -function useAttrs() { - return getContext().attrs -} -function getContext() { - const i = getCurrentInstance() - if (!i) { - warn2(`useContext() called without active instance.`) - } - return i.setupContext || (i.setupContext = createSetupContext(i)) -} -function mergeDefaults(raw, defaults) { - const props = isArray(raw) - ? raw.reduce((normalized, p2) => ((normalized[p2] = {}), normalized), {}) - : raw - for (const key in defaults) { - const opt = props[key] - if (opt) { - if (isArray(opt) || isFunction(opt)) { - props[key] = { type: opt, default: defaults[key] } - } else { - opt.default = defaults[key] - } - } else if (opt === null) { - props[key] = { default: defaults[key] } - } else if (true) { - warn2(`props default key "${key}" has no corresponding declaration.`) - } - } - return props -} -function createPropsRestProxy(props, excludedKeys) { - const ret = {} - for (const key in props) { - if (!excludedKeys.includes(key)) { - Object.defineProperty(ret, key, { - enumerable: true, - get: () => props[key] - }) - } - } - return ret -} -function withAsyncContext(getAwaitable) { - const ctx = getCurrentInstance() - if (!ctx) { - warn2( - `withAsyncContext called without active current instance. This is likely a bug.` - ) - } - let awaitable = getAwaitable() - unsetCurrentInstance() - if (isPromise(awaitable)) { - awaitable = awaitable.catch(e => { - setCurrentInstance(ctx) - throw e - }) - } - return [awaitable, () => setCurrentInstance(ctx)] -} -function h(type, propsOrChildren, children) { - const l = arguments.length - if (l === 2) { - if (isObject(propsOrChildren) && !isArray(propsOrChildren)) { - if (isVNode(propsOrChildren)) { - return createVNode(type, null, [propsOrChildren]) - } - return createVNode(type, propsOrChildren) - } else { - return createVNode(type, null, propsOrChildren) - } - } else { - if (l > 3) { - children = Array.prototype.slice.call(arguments, 2) - } else if (l === 3 && isVNode(children)) { - children = [children] - } - return createVNode(type, propsOrChildren, children) - } -} -var ssrContextKey = Symbol(true ? `ssrContext` : ``) -var useSSRContext = () => { - { - const ctx = inject(ssrContextKey) - if (!ctx) { - warn2( - `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` - ) - } - return ctx - } -} -function isShallow2(value) { - return !!( - value && - value[ - '__v_isShallow' - /* ReactiveFlags.IS_SHALLOW */ - ] - ) -} -function initCustomFormatter() { - if (typeof window === 'undefined') { - return - } - const vueStyle = { style: 'color:#3ba776' } - const numberStyle = { style: 'color:#0b1bc9' } - const stringStyle = { style: 'color:#b62e24' } - const keywordStyle = { style: 'color:#9d288c' } - const formatter = { - header(obj) { - if (!isObject(obj)) { - return null - } - if (obj.__isVue) { - return ['div', vueStyle, `VueInstance`] - } else if (isRef(obj)) { - return [ - 'div', - {}, - ['span', vueStyle, genRefFlag(obj)], - '<', - formatValue(obj.value), - `>` - ] - } else if (isReactive(obj)) { - return [ - 'div', - {}, - ['span', vueStyle, isShallow2(obj) ? 'ShallowReactive' : 'Reactive'], - '<', - formatValue(obj), - `>${isReadonly(obj) ? ` (readonly)` : ``}` - ] - } else if (isReadonly(obj)) { - return [ - 'div', - {}, - ['span', vueStyle, isShallow2(obj) ? 'ShallowReadonly' : 'Readonly'], - '<', - formatValue(obj), - '>' - ] - } - return null - }, - hasBody(obj) { - return obj && obj.__isVue - }, - body(obj) { - if (obj && obj.__isVue) { - return ['div', {}, ...formatInstance(obj.$)] - } - } - } - function formatInstance(instance) { - const blocks = [] - if (instance.type.props && instance.props) { - blocks.push(createInstanceBlock('props', toRaw(instance.props))) - } - if (instance.setupState !== EMPTY_OBJ) { - blocks.push(createInstanceBlock('setup', instance.setupState)) - } - if (instance.data !== EMPTY_OBJ) { - blocks.push(createInstanceBlock('data', toRaw(instance.data))) - } - const computed3 = extractKeys(instance, 'computed') - if (computed3) { - blocks.push(createInstanceBlock('computed', computed3)) - } - const injected = extractKeys(instance, 'inject') - if (injected) { - blocks.push(createInstanceBlock('injected', injected)) - } - blocks.push([ - 'div', - {}, - [ - 'span', - { - style: keywordStyle.style + ';opacity:0.66' - }, - '$ (internal): ' - ], - ['object', { object: instance }] - ]) - return blocks - } - function createInstanceBlock(type, target) { - target = extend({}, target) - if (!Object.keys(target).length) { - return ['span', {}] - } - return [ - 'div', - { style: 'line-height:1.25em;margin-bottom:0.6em' }, - [ - 'div', - { - style: 'color:#476582' - }, - type - ], - [ - 'div', - { - style: 'padding-left:1.25em' - }, - ...Object.keys(target).map(key => { - return [ - 'div', - {}, - ['span', keywordStyle, key + ': '], - formatValue(target[key], false) - ] - }) - ] - ] - } - function formatValue(v, asRaw = true) { - if (typeof v === 'number') { - return ['span', numberStyle, v] - } else if (typeof v === 'string') { - return ['span', stringStyle, JSON.stringify(v)] - } else if (typeof v === 'boolean') { - return ['span', keywordStyle, v] - } else if (isObject(v)) { - return ['object', { object: asRaw ? toRaw(v) : v }] - } else { - return ['span', stringStyle, String(v)] - } - } - function extractKeys(instance, type) { - const Comp = instance.type - if (isFunction(Comp)) { - return - } - const extracted = {} - for (const key in instance.ctx) { - if (isKeyOfType(Comp, key, type)) { - extracted[key] = instance.ctx[key] - } - } - return extracted - } - function isKeyOfType(Comp, key, type) { - const opts = Comp[type] - if ( - (isArray(opts) && opts.includes(key)) || - (isObject(opts) && key in opts) - ) { - return true - } - if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { - return true - } - if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) { - return true - } - } - function genRefFlag(v) { - if (isShallow2(v)) { - return `ShallowRef` - } - if (v.effect) { - return `ComputedRef` - } - return `Ref` - } - if (window.devtoolsFormatters) { - window.devtoolsFormatters.push(formatter) - } else { - window.devtoolsFormatters = [formatter] - } -} -function withMemo(memo, render2, cache, index) { - const cached = cache[index] - if (cached && isMemoSame(cached, memo)) { - return cached - } - const ret = render2() - ret.memo = memo.slice() - return (cache[index] = ret) -} -function isMemoSame(cached, memo) { - const prev = cached.memo - if (prev.length != memo.length) { - return false - } - for (let i = 0; i < prev.length; i++) { - if (hasChanged(prev[i], memo[i])) { - return false - } - } - if (isBlockTreeEnabled > 0 && currentBlock) { - currentBlock.push(cached) - } - return true -} -var version = '3.2.45' -var _ssrUtils = { - createComponentInstance, - setupComponent, - renderComponentRoot, - setCurrentRenderingInstance, - isVNode, - normalizeVNode -} -var ssrUtils = _ssrUtils -var resolveFilter = null -var compatUtils = null - -// ../node_modules/.pnpm/@vue+runtime-dom@3.2.45/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js -var svgNS = 'http://www.w3.org/2000/svg' -var doc = typeof document !== 'undefined' ? document : null -var templateContainer = doc && doc.createElement('template') -var nodeOps = { - insert: (child, parent, anchor) => { - parent.insertBefore(child, anchor || null) - }, - remove: child => { - const parent = child.parentNode - if (parent) { - parent.removeChild(child) - } - }, - createElement: (tag, isSVG, is, props) => { - const el = isSVG - ? doc.createElementNS(svgNS, tag) - : doc.createElement(tag, is ? { is } : void 0) - if (tag === 'select' && props && props.multiple != null) { - el.setAttribute('multiple', props.multiple) - } - return el - }, - createText: text => doc.createTextNode(text), - createComment: text => doc.createComment(text), - setText: (node, text) => { - node.nodeValue = text - }, - setElementText: (el, text) => { - el.textContent = text - }, - parentNode: node => node.parentNode, - nextSibling: node => node.nextSibling, - querySelector: selector => doc.querySelector(selector), - setScopeId(el, id) { - el.setAttribute(id, '') - }, - // __UNSAFE__ - // Reason: innerHTML. - // Static content here can only come from compiled templates. - // As long as the user only uses trusted templates, this is safe. - insertStaticContent(content, parent, anchor, isSVG, start, end) { - const before = anchor ? anchor.previousSibling : parent.lastChild - if (start && (start === end || start.nextSibling)) { - while (true) { - parent.insertBefore(start.cloneNode(true), anchor) - if (start === end || !(start = start.nextSibling)) break - } - } else { - templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content - const template = templateContainer.content - if (isSVG) { - const wrapper = template.firstChild - while (wrapper.firstChild) { - template.appendChild(wrapper.firstChild) - } - template.removeChild(wrapper) - } - parent.insertBefore(template, anchor) - } - return [ - // first - before ? before.nextSibling : parent.firstChild, - // last - anchor ? anchor.previousSibling : parent.lastChild - ] - } -} -function patchClass(el, value, isSVG) { - const transitionClasses = el._vtc - if (transitionClasses) { - value = ( - value ? [value, ...transitionClasses] : [...transitionClasses] - ).join(' ') - } - if (value == null) { - el.removeAttribute('class') - } else if (isSVG) { - el.setAttribute('class', value) - } else { - el.className = value - } -} -function patchStyle(el, prev, next) { - const style = el.style - const isCssString = isString(next) - if (next && !isCssString) { - for (const key in next) { - setStyle(style, key, next[key]) - } - if (prev && !isString(prev)) { - for (const key in prev) { - if (next[key] == null) { - setStyle(style, key, '') - } - } - } - } else { - const currentDisplay = style.display - if (isCssString) { - if (prev !== next) { - style.cssText = next - } - } else if (prev) { - el.removeAttribute('style') - } - if ('_vod' in el) { - style.display = currentDisplay - } - } -} -var semicolonRE = /[^\\];\s*$/ -var importantRE = /\s*!important$/ -function setStyle(style, name, val) { - if (isArray(val)) { - val.forEach(v => setStyle(style, name, v)) - } else { - if (val == null) val = '' - if (true) { - if (semicolonRE.test(val)) { - warn2( - `Unexpected semicolon at the end of '${name}' style value: '${val}'` - ) - } - } - if (name.startsWith('--')) { - style.setProperty(name, val) - } else { - const prefixed = autoPrefix(style, name) - if (importantRE.test(val)) { - style.setProperty( - hyphenate(prefixed), - val.replace(importantRE, ''), - 'important' - ) - } else { - style[prefixed] = val - } - } - } -} -var prefixes = ['Webkit', 'Moz', 'ms'] -var prefixCache = {} -function autoPrefix(style, rawName) { - const cached = prefixCache[rawName] - if (cached) { - return cached - } - let name = camelize(rawName) - if (name !== 'filter' && name in style) { - return (prefixCache[rawName] = name) - } - name = capitalize(name) - for (let i = 0; i < prefixes.length; i++) { - const prefixed = prefixes[i] + name - if (prefixed in style) { - return (prefixCache[rawName] = prefixed) - } - } - return rawName -} -var xlinkNS = 'http://www.w3.org/1999/xlink' -function patchAttr(el, key, value, isSVG, instance) { - if (isSVG && key.startsWith('xlink:')) { - if (value == null) { - el.removeAttributeNS(xlinkNS, key.slice(6, key.length)) - } else { - el.setAttributeNS(xlinkNS, key, value) - } - } else { - const isBoolean2 = isSpecialBooleanAttr(key) - if (value == null || (isBoolean2 && !includeBooleanAttr(value))) { - el.removeAttribute(key) - } else { - el.setAttribute(key, isBoolean2 ? '' : value) - } - } -} -function patchDOMProp( - el, - key, - value, - prevChildren, - parentComponent, - parentSuspense, - unmountChildren -) { - if (key === 'innerHTML' || key === 'textContent') { - if (prevChildren) { - unmountChildren(prevChildren, parentComponent, parentSuspense) - } - el[key] = value == null ? '' : value - return - } - if ( - key === 'value' && - el.tagName !== 'PROGRESS' && // custom elements may use _value internally - !el.tagName.includes('-') - ) { - el._value = value - const newValue = value == null ? '' : value - if ( - el.value !== newValue || // #4956: always set for OPTION elements because its value falls back to - // textContent if no value attribute is present. And setting .value for - // OPTION has no side effect - el.tagName === 'OPTION' - ) { - el.value = newValue - } - if (value == null) { - el.removeAttribute(key) - } - return - } - let needRemove = false - if (value === '' || value == null) { - const type = typeof el[key] - if (type === 'boolean') { - value = includeBooleanAttr(value) - } else if (value == null && type === 'string') { - value = '' - needRemove = true - } else if (type === 'number') { - value = 0 - needRemove = true - } - } - try { - el[key] = value - } catch (e) { - if (!needRemove) { - warn2( - `Failed setting prop "${key}" on <${el.tagName.toLowerCase()}>: value ${value} is invalid.`, - e - ) - } - } - needRemove && el.removeAttribute(key) -} -function addEventListener(el, event, handler, options) { - el.addEventListener(event, handler, options) -} -function removeEventListener(el, event, handler, options) { - el.removeEventListener(event, handler, options) -} -function patchEvent(el, rawName, prevValue, nextValue, instance = null) { - const invokers = el._vei || (el._vei = {}) - const existingInvoker = invokers[rawName] - if (nextValue && existingInvoker) { - existingInvoker.value = nextValue - } else { - const [name, options] = parseName(rawName) - if (nextValue) { - const invoker = (invokers[rawName] = createInvoker(nextValue, instance)) - addEventListener(el, name, invoker, options) - } else if (existingInvoker) { - removeEventListener(el, name, existingInvoker, options) - invokers[rawName] = void 0 - } - } -} -var optionsModifierRE = /(?:Once|Passive|Capture)$/ -function parseName(name) { - let options - if (optionsModifierRE.test(name)) { - options = {} - let m - while ((m = name.match(optionsModifierRE))) { - name = name.slice(0, name.length - m[0].length) - options[m[0].toLowerCase()] = true - } - } - const event = name[2] === ':' ? name.slice(3) : hyphenate(name.slice(2)) - return [event, options] -} -var cachedNow = 0 -var p = Promise.resolve() -var getNow = () => - cachedNow || (p.then(() => (cachedNow = 0)), (cachedNow = Date.now())) -function createInvoker(initialValue, instance) { - const invoker = e => { - if (!e._vts) { - e._vts = Date.now() - } else if (e._vts <= invoker.attached) { - return - } - callWithAsyncErrorHandling( - patchStopImmediatePropagation(e, invoker.value), - instance, - 5, - [e] - ) - } - invoker.value = initialValue - invoker.attached = getNow() - return invoker -} -function patchStopImmediatePropagation(e, value) { - if (isArray(value)) { - const originalStop = e.stopImmediatePropagation - e.stopImmediatePropagation = () => { - originalStop.call(e) - e._stopped = true - } - return value.map(fn => e2 => !e2._stopped && fn && fn(e2)) - } else { - return value - } -} -var nativeOnRE = /^on[a-z]/ -var patchProp = ( - el, - key, - prevValue, - nextValue, - isSVG = false, - prevChildren, - parentComponent, - parentSuspense, - unmountChildren -) => { - if (key === 'class') { - patchClass(el, nextValue, isSVG) - } else if (key === 'style') { - patchStyle(el, prevValue, nextValue) - } else if (isOn(key)) { - if (!isModelListener(key)) { - patchEvent(el, key, prevValue, nextValue, parentComponent) - } - } else if ( - key[0] === '.' - ? ((key = key.slice(1)), true) - : key[0] === '^' - ? ((key = key.slice(1)), false) - : shouldSetAsProp(el, key, nextValue, isSVG) - ) { - patchDOMProp( - el, - key, - nextValue, - prevChildren, - parentComponent, - parentSuspense, - unmountChildren - ) - } else { - if (key === 'true-value') { - el._trueValue = nextValue - } else if (key === 'false-value') { - el._falseValue = nextValue - } - patchAttr(el, key, nextValue, isSVG) - } -} -function shouldSetAsProp(el, key, value, isSVG) { - if (isSVG) { - if (key === 'innerHTML' || key === 'textContent') { - return true - } - if (key in el && nativeOnRE.test(key) && isFunction(value)) { - return true - } - return false - } - if (key === 'spellcheck' || key === 'draggable' || key === 'translate') { - return false - } - if (key === 'form') { - return false - } - if (key === 'list' && el.tagName === 'INPUT') { - return false - } - if (key === 'type' && el.tagName === 'TEXTAREA') { - return false - } - if (nativeOnRE.test(key) && isString(value)) { - return false - } - return key in el -} -function defineCustomElement(options, hydrate2) { - const Comp = defineComponent(options) - class VueCustomElement extends VueElement { - constructor(initialProps) { - super(Comp, initialProps, hydrate2) - } - } - VueCustomElement.def = Comp - return VueCustomElement -} -var defineSSRCustomElement = options => { - return defineCustomElement(options, hydrate) -} -var BaseClass = typeof HTMLElement !== 'undefined' ? HTMLElement : class {} -var VueElement = class _VueElement extends BaseClass { - constructor(_def, _props = {}, hydrate2) { - super() - this._def = _def - this._props = _props - this._instance = null - this._connected = false - this._resolved = false - this._numberProps = null - if (this.shadowRoot && hydrate2) { - hydrate2(this._createVNode(), this.shadowRoot) - } else { - if (this.shadowRoot) { - warn2( - `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.` - ) - } - this.attachShadow({ mode: 'open' }) - if (!this._def.__asyncLoader) { - this._resolveProps(this._def) - } - } - } - connectedCallback() { - this._connected = true - if (!this._instance) { - if (this._resolved) { - this._update() - } else { - this._resolveDef() - } - } - } - disconnectedCallback() { - this._connected = false - nextTick(() => { - if (!this._connected) { - render(null, this.shadowRoot) - this._instance = null - } - }) - } - /** - * resolve inner component definition (handle possible async component) - */ - _resolveDef() { - this._resolved = true - for (let i = 0; i < this.attributes.length; i++) { - this._setAttr(this.attributes[i].name) - } - new MutationObserver(mutations => { - for (const m of mutations) { - this._setAttr(m.attributeName) - } - }).observe(this, { attributes: true }) - const resolve2 = (def2, isAsync = false) => { - const { props, styles } = def2 - let numberProps - if (props && !isArray(props)) { - for (const key in props) { - const opt = props[key] - if (opt === Number || (opt && opt.type === Number)) { - if (key in this._props) { - this._props[key] = toNumber(this._props[key]) - } - ;(numberProps || - (numberProps = /* @__PURE__ */ Object.create(null)))[ - camelize(key) - ] = true - } - } - } - this._numberProps = numberProps - if (isAsync) { - this._resolveProps(def2) - } - this._applyStyles(styles) - this._update() - } - const asyncDef = this._def.__asyncLoader - if (asyncDef) { - asyncDef().then(def2 => resolve2(def2, true)) - } else { - resolve2(this._def) - } - } - _resolveProps(def2) { - const { props } = def2 - const declaredPropKeys = isArray(props) ? props : Object.keys(props || {}) - for (const key of Object.keys(this)) { - if (key[0] !== '_' && declaredPropKeys.includes(key)) { - this._setProp(key, this[key], true, false) - } - } - for (const key of declaredPropKeys.map(camelize)) { - Object.defineProperty(this, key, { - get() { - return this._getProp(key) - }, - set(val) { - this._setProp(key, val) - } - }) - } - } - _setAttr(key) { - let value = this.getAttribute(key) - const camelKey = camelize(key) - if (this._numberProps && this._numberProps[camelKey]) { - value = toNumber(value) - } - this._setProp(camelKey, value, false) - } - /** - * @internal - */ - _getProp(key) { - return this._props[key] - } - /** - * @internal - */ - _setProp(key, val, shouldReflect = true, shouldUpdate = true) { - if (val !== this._props[key]) { - this._props[key] = val - if (shouldUpdate && this._instance) { - this._update() - } - if (shouldReflect) { - if (val === true) { - this.setAttribute(hyphenate(key), '') - } else if (typeof val === 'string' || typeof val === 'number') { - this.setAttribute(hyphenate(key), val + '') - } else if (!val) { - this.removeAttribute(hyphenate(key)) - } - } - } - } - _update() { - render(this._createVNode(), this.shadowRoot) - } - _createVNode() { - const vnode = createVNode(this._def, extend({}, this._props)) - if (!this._instance) { - vnode.ce = instance => { - this._instance = instance - instance.isCE = true - if (true) { - instance.ceReload = newStyles => { - if (this._styles) { - this._styles.forEach(s => this.shadowRoot.removeChild(s)) - this._styles.length = 0 - } - this._applyStyles(newStyles) - this._instance = null - this._update() - } - } - const dispatch = (event, args) => { - this.dispatchEvent( - new CustomEvent(event, { - detail: args - }) - ) - } - instance.emit = (event, ...args) => { - dispatch(event, args) - if (hyphenate(event) !== event) { - dispatch(hyphenate(event), args) - } - } - let parent = this - while ((parent = parent && (parent.parentNode || parent.host))) { - if (parent instanceof _VueElement) { - instance.parent = parent._instance - instance.provides = parent._instance.provides - break - } - } - } - } - return vnode - } - _applyStyles(styles) { - if (styles) { - styles.forEach(css => { - const s = document.createElement('style') - s.textContent = css - this.shadowRoot.appendChild(s) - if (true) { - ;(this._styles || (this._styles = [])).push(s) - } - }) - } - } -} -function useCssModule(name = '$style') { - { - const instance = getCurrentInstance() - if (!instance) { - warn2(`useCssModule must be called inside setup()`) - return EMPTY_OBJ - } - const modules = instance.type.__cssModules - if (!modules) { - warn2(`Current instance does not have CSS modules injected.`) - return EMPTY_OBJ - } - const mod = modules[name] - if (!mod) { - warn2(`Current instance does not have CSS module named "${name}".`) - return EMPTY_OBJ - } - return mod - } -} -function useCssVars(getter) { - const instance = getCurrentInstance() - if (!instance) { - warn2(`useCssVars is called without current active component instance.`) - return - } - const updateTeleports = (instance.ut = (vars = getter(instance.proxy)) => { - Array.from( - document.querySelectorAll(`[data-v-owner="${instance.uid}"]`) - ).forEach(node => setVarsOnNode(node, vars)) - }) - const setVars = () => { - const vars = getter(instance.proxy) - setVarsOnVNode(instance.subTree, vars) - updateTeleports(vars) - } - watchPostEffect(setVars) - onMounted(() => { - const ob = new MutationObserver(setVars) - ob.observe(instance.subTree.el.parentNode, { childList: true }) - onUnmounted(() => ob.disconnect()) - }) -} -function setVarsOnVNode(vnode, vars) { - if (vnode.shapeFlag & 128) { - const suspense = vnode.suspense - vnode = suspense.activeBranch - if (suspense.pendingBranch && !suspense.isHydrating) { - suspense.effects.push(() => { - setVarsOnVNode(suspense.activeBranch, vars) - }) - } - } - while (vnode.component) { - vnode = vnode.component.subTree - } - if (vnode.shapeFlag & 1 && vnode.el) { - setVarsOnNode(vnode.el, vars) - } else if (vnode.type === Fragment) { - vnode.children.forEach(c => setVarsOnVNode(c, vars)) - } else if (vnode.type === Static) { - let { el, anchor } = vnode - while (el) { - setVarsOnNode(el, vars) - if (el === anchor) break - el = el.nextSibling - } - } -} -function setVarsOnNode(el, vars) { - if (el.nodeType === 1) { - const style = el.style - for (const key in vars) { - style.setProperty(`--${key}`, vars[key]) - } - } -} -var TRANSITION = 'transition' -var ANIMATION = 'animation' -var Transition = (props, { slots }) => - h(BaseTransition, resolveTransitionProps(props), slots) -Transition.displayName = 'Transition' -var DOMTransitionPropsValidators = { - name: String, - type: String, - css: { - type: Boolean, - default: true - }, - duration: [String, Number, Object], - enterFromClass: String, - enterActiveClass: String, - enterToClass: String, - appearFromClass: String, - appearActiveClass: String, - appearToClass: String, - leaveFromClass: String, - leaveActiveClass: String, - leaveToClass: String -} -var TransitionPropsValidators = (Transition.props = extend( - {}, - BaseTransition.props, - DOMTransitionPropsValidators -)) -var callHook2 = (hook, args = []) => { - if (isArray(hook)) { - hook.forEach(h2 => h2(...args)) - } else if (hook) { - hook(...args) - } -} -var hasExplicitCallback = hook => { - return hook - ? isArray(hook) - ? hook.some(h2 => h2.length > 1) - : hook.length > 1 - : false -} -function resolveTransitionProps(rawProps) { - const baseProps = {} - for (const key in rawProps) { - if (!(key in DOMTransitionPropsValidators)) { - baseProps[key] = rawProps[key] - } - } - if (rawProps.css === false) { - return baseProps - } - const { - name = 'v', - type, - duration, - enterFromClass = `${name}-enter-from`, - enterActiveClass = `${name}-enter-active`, - enterToClass = `${name}-enter-to`, - appearFromClass = enterFromClass, - appearActiveClass = enterActiveClass, - appearToClass = enterToClass, - leaveFromClass = `${name}-leave-from`, - leaveActiveClass = `${name}-leave-active`, - leaveToClass = `${name}-leave-to` - } = rawProps - const durations = normalizeDuration(duration) - const enterDuration = durations && durations[0] - const leaveDuration = durations && durations[1] - const { - onBeforeEnter, - onEnter, - onEnterCancelled, - onLeave, - onLeaveCancelled, - onBeforeAppear = onBeforeEnter, - onAppear = onEnter, - onAppearCancelled = onEnterCancelled - } = baseProps - const finishEnter = (el, isAppear, done) => { - removeTransitionClass(el, isAppear ? appearToClass : enterToClass) - removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass) - done && done() - } - const finishLeave = (el, done) => { - el._isLeaving = false - removeTransitionClass(el, leaveFromClass) - removeTransitionClass(el, leaveToClass) - removeTransitionClass(el, leaveActiveClass) - done && done() - } - const makeEnterHook = isAppear => { - return (el, done) => { - const hook = isAppear ? onAppear : onEnter - const resolve2 = () => finishEnter(el, isAppear, done) - callHook2(hook, [el, resolve2]) - nextFrame(() => { - removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass) - addTransitionClass(el, isAppear ? appearToClass : enterToClass) - if (!hasExplicitCallback(hook)) { - whenTransitionEnds(el, type, enterDuration, resolve2) - } - }) - } - } - return extend(baseProps, { - onBeforeEnter(el) { - callHook2(onBeforeEnter, [el]) - addTransitionClass(el, enterFromClass) - addTransitionClass(el, enterActiveClass) - }, - onBeforeAppear(el) { - callHook2(onBeforeAppear, [el]) - addTransitionClass(el, appearFromClass) - addTransitionClass(el, appearActiveClass) - }, - onEnter: makeEnterHook(false), - onAppear: makeEnterHook(true), - onLeave(el, done) { - el._isLeaving = true - const resolve2 = () => finishLeave(el, done) - addTransitionClass(el, leaveFromClass) - forceReflow() - addTransitionClass(el, leaveActiveClass) - nextFrame(() => { - if (!el._isLeaving) { - return - } - removeTransitionClass(el, leaveFromClass) - addTransitionClass(el, leaveToClass) - if (!hasExplicitCallback(onLeave)) { - whenTransitionEnds(el, type, leaveDuration, resolve2) - } - }) - callHook2(onLeave, [el, resolve2]) - }, - onEnterCancelled(el) { - finishEnter(el, false) - callHook2(onEnterCancelled, [el]) - }, - onAppearCancelled(el) { - finishEnter(el, true) - callHook2(onAppearCancelled, [el]) - }, - onLeaveCancelled(el) { - finishLeave(el) - callHook2(onLeaveCancelled, [el]) - } - }) -} -function normalizeDuration(duration) { - if (duration == null) { - return null - } else if (isObject(duration)) { - return [NumberOf(duration.enter), NumberOf(duration.leave)] - } else { - const n = NumberOf(duration) - return [n, n] - } -} -function NumberOf(val) { - const res = toNumber(val) - if (true) validateDuration(res) - return res -} -function validateDuration(val) { - if (typeof val !== 'number') { - warn2( - `<transition> explicit duration is not a valid number - got ${JSON.stringify( - val - )}.` - ) - } else if (isNaN(val)) { - warn2( - `<transition> explicit duration is NaN - the duration expression might be incorrect.` - ) - } -} -function addTransitionClass(el, cls) { - cls.split(/\s+/).forEach(c => c && el.classList.add(c)) - ;(el._vtc || (el._vtc = /* @__PURE__ */ new Set())).add(cls) -} -function removeTransitionClass(el, cls) { - cls.split(/\s+/).forEach(c => c && el.classList.remove(c)) - const { _vtc } = el - if (_vtc) { - _vtc.delete(cls) - if (!_vtc.size) { - el._vtc = void 0 - } - } -} -function nextFrame(cb) { - requestAnimationFrame(() => { - requestAnimationFrame(cb) - }) -} -var endId = 0 -function whenTransitionEnds(el, expectedType, explicitTimeout, resolve2) { - const id = (el._endId = ++endId) - const resolveIfNotStale = () => { - if (id === el._endId) { - resolve2() - } - } - if (explicitTimeout) { - return setTimeout(resolveIfNotStale, explicitTimeout) - } - const { type, timeout, propCount } = getTransitionInfo(el, expectedType) - if (!type) { - return resolve2() - } - const endEvent = type + 'end' - let ended = 0 - const end = () => { - el.removeEventListener(endEvent, onEnd) - resolveIfNotStale() - } - const onEnd = e => { - if (e.target === el && ++ended >= propCount) { - end() - } - } - setTimeout(() => { - if (ended < propCount) { - end() - } - }, timeout + 1) - el.addEventListener(endEvent, onEnd) -} -function getTransitionInfo(el, expectedType) { - const styles = window.getComputedStyle(el) - const getStyleProperties = key => (styles[key] || '').split(', ') - const transitionDelays = getStyleProperties(`${TRANSITION}Delay`) - const transitionDurations = getStyleProperties(`${TRANSITION}Duration`) - const transitionTimeout = getTimeout(transitionDelays, transitionDurations) - const animationDelays = getStyleProperties(`${ANIMATION}Delay`) - const animationDurations = getStyleProperties(`${ANIMATION}Duration`) - const animationTimeout = getTimeout(animationDelays, animationDurations) - let type = null - let timeout = 0 - let propCount = 0 - if (expectedType === TRANSITION) { - if (transitionTimeout > 0) { - type = TRANSITION - timeout = transitionTimeout - propCount = transitionDurations.length - } - } else if (expectedType === ANIMATION) { - if (animationTimeout > 0) { - type = ANIMATION - timeout = animationTimeout - propCount = animationDurations.length - } - } else { - timeout = Math.max(transitionTimeout, animationTimeout) - type = - timeout > 0 - ? transitionTimeout > animationTimeout - ? TRANSITION - : ANIMATION - : null - propCount = type - ? type === TRANSITION - ? transitionDurations.length - : animationDurations.length - : 0 - } - const hasTransform = - type === TRANSITION && - /\b(transform|all)(,|$)/.test( - getStyleProperties(`${TRANSITION}Property`).toString() - ) - return { - type, - timeout, - propCount, - hasTransform - } -} -function getTimeout(delays, durations) { - while (delays.length < durations.length) { - delays = delays.concat(delays) - } - return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))) -} -function toMs(s) { - return Number(s.slice(0, -1).replace(',', '.')) * 1e3 -} -function forceReflow() { - return document.body.offsetHeight -} -var positionMap = /* @__PURE__ */ new WeakMap() -var newPositionMap = /* @__PURE__ */ new WeakMap() -var TransitionGroupImpl = { - name: 'TransitionGroup', - props: extend({}, TransitionPropsValidators, { - tag: String, - moveClass: String - }), - setup(props, { slots }) { - const instance = getCurrentInstance() - const state = useTransitionState() - let prevChildren - let children - onUpdated(() => { - if (!prevChildren.length) { - return - } - const moveClass = props.moveClass || `${props.name || 'v'}-move` - if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) { - return - } - prevChildren.forEach(callPendingCbs) - prevChildren.forEach(recordPosition) - const movedChildren = prevChildren.filter(applyTranslation) - forceReflow() - movedChildren.forEach(c => { - const el = c.el - const style = el.style - addTransitionClass(el, moveClass) - style.transform = style.webkitTransform = style.transitionDuration = '' - const cb = (el._moveCb = e => { - if (e && e.target !== el) { - return - } - if (!e || /transform$/.test(e.propertyName)) { - el.removeEventListener('transitionend', cb) - el._moveCb = null - removeTransitionClass(el, moveClass) - } - }) - el.addEventListener('transitionend', cb) - }) - }) - return () => { - const rawProps = toRaw(props) - const cssTransitionProps = resolveTransitionProps(rawProps) - let tag = rawProps.tag || Fragment - prevChildren = children - children = slots.default ? getTransitionRawChildren(slots.default()) : [] - for (let i = 0; i < children.length; i++) { - const child = children[i] - if (child.key != null) { - setTransitionHooks( - child, - resolveTransitionHooks(child, cssTransitionProps, state, instance) - ) - } else if (true) { - warn2(`<TransitionGroup> children must be keyed.`) - } - } - if (prevChildren) { - for (let i = 0; i < prevChildren.length; i++) { - const child = prevChildren[i] - setTransitionHooks( - child, - resolveTransitionHooks(child, cssTransitionProps, state, instance) - ) - positionMap.set(child, child.el.getBoundingClientRect()) - } - } - return createVNode(tag, null, children) - } - } -} -var TransitionGroup = TransitionGroupImpl -function callPendingCbs(c) { - const el = c.el - if (el._moveCb) { - el._moveCb() - } - if (el._enterCb) { - el._enterCb() - } -} -function recordPosition(c) { - newPositionMap.set(c, c.el.getBoundingClientRect()) -} -function applyTranslation(c) { - const oldPos = positionMap.get(c) - const newPos = newPositionMap.get(c) - const dx = oldPos.left - newPos.left - const dy = oldPos.top - newPos.top - if (dx || dy) { - const s = c.el.style - s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)` - s.transitionDuration = '0s' - return c - } -} -function hasCSSTransform(el, root, moveClass) { - const clone = el.cloneNode() - if (el._vtc) { - el._vtc.forEach(cls => { - cls.split(/\s+/).forEach(c => c && clone.classList.remove(c)) - }) - } - moveClass.split(/\s+/).forEach(c => c && clone.classList.add(c)) - clone.style.display = 'none' - const container = root.nodeType === 1 ? root : root.parentNode - container.appendChild(clone) - const { hasTransform } = getTransitionInfo(clone) - container.removeChild(clone) - return hasTransform -} -var getModelAssigner = vnode => { - const fn = vnode.props['onUpdate:modelValue'] || false - return isArray(fn) ? value => invokeArrayFns(fn, value) : fn -} -function onCompositionStart(e) { - e.target.composing = true -} -function onCompositionEnd(e) { - const target = e.target - if (target.composing) { - target.composing = false - target.dispatchEvent(new Event('input')) - } -} -var vModelText = { - created(el, { modifiers: { lazy, trim, number } }, vnode) { - el._assign = getModelAssigner(vnode) - const castToNumber = - number || (vnode.props && vnode.props.type === 'number') - addEventListener(el, lazy ? 'change' : 'input', e => { - if (e.target.composing) return - let domValue = el.value - if (trim) { - domValue = domValue.trim() - } - if (castToNumber) { - domValue = toNumber(domValue) - } - el._assign(domValue) - }) - if (trim) { - addEventListener(el, 'change', () => { - el.value = el.value.trim() - }) - } - if (!lazy) { - addEventListener(el, 'compositionstart', onCompositionStart) - addEventListener(el, 'compositionend', onCompositionEnd) - addEventListener(el, 'change', onCompositionEnd) - } - }, - // set value on mounted so it's after min/max for type="range" - mounted(el, { value }) { - el.value = value == null ? '' : value - }, - beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) { - el._assign = getModelAssigner(vnode) - if (el.composing) return - if (document.activeElement === el && el.type !== 'range') { - if (lazy) { - return - } - if (trim && el.value.trim() === value) { - return - } - if ((number || el.type === 'number') && toNumber(el.value) === value) { - return - } - } - const newValue = value == null ? '' : value - if (el.value !== newValue) { - el.value = newValue - } - } -} -var vModelCheckbox = { - // #4096 array checkboxes need to be deep traversed - deep: true, - created(el, _, vnode) { - el._assign = getModelAssigner(vnode) - addEventListener(el, 'change', () => { - const modelValue = el._modelValue - const elementValue = getValue(el) - const checked = el.checked - const assign = el._assign - if (isArray(modelValue)) { - const index = looseIndexOf(modelValue, elementValue) - const found = index !== -1 - if (checked && !found) { - assign(modelValue.concat(elementValue)) - } else if (!checked && found) { - const filtered = [...modelValue] - filtered.splice(index, 1) - assign(filtered) - } - } else if (isSet(modelValue)) { - const cloned = new Set(modelValue) - if (checked) { - cloned.add(elementValue) - } else { - cloned.delete(elementValue) - } - assign(cloned) - } else { - assign(getCheckboxValue(el, checked)) - } - }) - }, - // set initial checked on mount to wait for true-value/false-value - mounted: setChecked, - beforeUpdate(el, binding, vnode) { - el._assign = getModelAssigner(vnode) - setChecked(el, binding, vnode) - } -} -function setChecked(el, { value, oldValue }, vnode) { - el._modelValue = value - if (isArray(value)) { - el.checked = looseIndexOf(value, vnode.props.value) > -1 - } else if (isSet(value)) { - el.checked = value.has(vnode.props.value) - } else if (value !== oldValue) { - el.checked = looseEqual(value, getCheckboxValue(el, true)) - } -} -var vModelRadio = { - created(el, { value }, vnode) { - el.checked = looseEqual(value, vnode.props.value) - el._assign = getModelAssigner(vnode) - addEventListener(el, 'change', () => { - el._assign(getValue(el)) - }) - }, - beforeUpdate(el, { value, oldValue }, vnode) { - el._assign = getModelAssigner(vnode) - if (value !== oldValue) { - el.checked = looseEqual(value, vnode.props.value) - } - } -} -var vModelSelect = { - // <select multiple> value need to be deep traversed - deep: true, - created(el, { value, modifiers: { number } }, vnode) { - const isSetModel = isSet(value) - addEventListener(el, 'change', () => { - const selectedVal = Array.prototype.filter - .call(el.options, o => o.selected) - .map(o => (number ? toNumber(getValue(o)) : getValue(o))) - el._assign( - el.multiple - ? isSetModel - ? new Set(selectedVal) - : selectedVal - : selectedVal[0] - ) - }) - el._assign = getModelAssigner(vnode) - }, - // set value in mounted & updated because <select> relies on its children - // <option>s. - mounted(el, { value }) { - setSelected(el, value) - }, - beforeUpdate(el, _binding, vnode) { - el._assign = getModelAssigner(vnode) - }, - updated(el, { value }) { - setSelected(el, value) - } -} -function setSelected(el, value) { - const isMultiple = el.multiple - if (isMultiple && !isArray(value) && !isSet(value)) { - warn2( - `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString - .call(value) - .slice(8, -1)}.` - ) - return - } - for (let i = 0, l = el.options.length; i < l; i++) { - const option = el.options[i] - const optionValue = getValue(option) - if (isMultiple) { - if (isArray(value)) { - option.selected = looseIndexOf(value, optionValue) > -1 - } else { - option.selected = value.has(optionValue) - } - } else { - if (looseEqual(getValue(option), value)) { - if (el.selectedIndex !== i) el.selectedIndex = i - return - } - } - } - if (!isMultiple && el.selectedIndex !== -1) { - el.selectedIndex = -1 - } -} -function getValue(el) { - return '_value' in el ? el._value : el.value -} -function getCheckboxValue(el, checked) { - const key = checked ? '_trueValue' : '_falseValue' - return key in el ? el[key] : checked -} -var vModelDynamic = { - created(el, binding, vnode) { - callModelHook(el, binding, vnode, null, 'created') - }, - mounted(el, binding, vnode) { - callModelHook(el, binding, vnode, null, 'mounted') - }, - beforeUpdate(el, binding, vnode, prevVNode) { - callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate') - }, - updated(el, binding, vnode, prevVNode) { - callModelHook(el, binding, vnode, prevVNode, 'updated') - } -} -function resolveDynamicModel(tagName, type) { - switch (tagName) { - case 'SELECT': - return vModelSelect - case 'TEXTAREA': - return vModelText - default: - switch (type) { - case 'checkbox': - return vModelCheckbox - case 'radio': - return vModelRadio - default: - return vModelText - } - } -} -function callModelHook(el, binding, vnode, prevVNode, hook) { - const modelToUse = resolveDynamicModel( - el.tagName, - vnode.props && vnode.props.type - ) - const fn = modelToUse[hook] - fn && fn(el, binding, vnode, prevVNode) -} -function initVModelForSSR() { - vModelText.getSSRProps = ({ value }) => ({ value }) - vModelRadio.getSSRProps = ({ value }, vnode) => { - if (vnode.props && looseEqual(vnode.props.value, value)) { - return { checked: true } - } - } - vModelCheckbox.getSSRProps = ({ value }, vnode) => { - if (isArray(value)) { - if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) { - return { checked: true } - } - } else if (isSet(value)) { - if (vnode.props && value.has(vnode.props.value)) { - return { checked: true } - } - } else if (value) { - return { checked: true } - } - } - vModelDynamic.getSSRProps = (binding, vnode) => { - if (typeof vnode.type !== 'string') { - return - } - const modelToUse = resolveDynamicModel( - // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase - vnode.type.toUpperCase(), - vnode.props && vnode.props.type - ) - if (modelToUse.getSSRProps) { - return modelToUse.getSSRProps(binding, vnode) - } - } -} -var systemModifiers = ['ctrl', 'shift', 'alt', 'meta'] -var modifierGuards = { - 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, modifiers) => - systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m)) -} -var withModifiers = (fn, modifiers) => { - return (event, ...args) => { - for (let i = 0; i < modifiers.length; i++) { - const guard = modifierGuards[modifiers[i]] - if (guard && guard(event, modifiers)) return - } - return fn(event, ...args) - } -} -var keyNames = { - esc: 'escape', - space: ' ', - up: 'arrow-up', - left: 'arrow-left', - right: 'arrow-right', - down: 'arrow-down', - delete: 'backspace' -} -var withKeys = (fn, modifiers) => { - return event => { - if (!('key' in event)) { - return - } - const eventKey = hyphenate(event.key) - if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) { - return fn(event) - } - } -} -var vShow = { - beforeMount(el, { value }, { transition }) { - el._vod = el.style.display === 'none' ? '' : el.style.display - if (transition && value) { - transition.beforeEnter(el) - } else { - setDisplay(el, value) - } - }, - mounted(el, { value }, { transition }) { - if (transition && value) { - transition.enter(el) - } - }, - updated(el, { value, oldValue }, { transition }) { - if (!value === !oldValue) return - if (transition) { - if (value) { - transition.beforeEnter(el) - setDisplay(el, true) - transition.enter(el) - } else { - transition.leave(el, () => { - setDisplay(el, false) - }) - } - } else { - setDisplay(el, value) - } - }, - beforeUnmount(el, { value }) { - setDisplay(el, value) - } -} -function setDisplay(el, value) { - el.style.display = value ? el._vod : 'none' -} -function initVShowForSSR() { - vShow.getSSRProps = ({ value }) => { - if (!value) { - return { style: { display: 'none' } } - } - } -} -var rendererOptions = extend({ patchProp }, nodeOps) -var renderer -var enabledHydration = false -function ensureRenderer() { - return renderer || (renderer = createRenderer(rendererOptions)) -} -function ensureHydrationRenderer() { - renderer = enabledHydration - ? renderer - : createHydrationRenderer(rendererOptions) - enabledHydration = true - return renderer -} -var render = (...args) => { - ensureRenderer().render(...args) -} -var hydrate = (...args) => { - ensureHydrationRenderer().hydrate(...args) -} -var createApp = (...args) => { - const app = ensureRenderer().createApp(...args) - if (true) { - injectNativeTagCheck(app) - injectCompilerOptionsCheck(app) - } - const { mount } = app - app.mount = containerOrSelector => { - const container = normalizeContainer(containerOrSelector) - if (!container) return - const component = app._component - if (!isFunction(component) && !component.render && !component.template) { - component.template = container.innerHTML - } - container.innerHTML = '' - const proxy = mount(container, false, container instanceof SVGElement) - if (container instanceof Element) { - container.removeAttribute('v-cloak') - container.setAttribute('data-v-app', '') - } - return proxy - } - return app -} -var createSSRApp = (...args) => { - const app = ensureHydrationRenderer().createApp(...args) - if (true) { - injectNativeTagCheck(app) - injectCompilerOptionsCheck(app) - } - const { mount } = app - app.mount = containerOrSelector => { - const container = normalizeContainer(containerOrSelector) - if (container) { - return mount(container, true, container instanceof SVGElement) - } - } - return app -} -function injectNativeTagCheck(app) { - Object.defineProperty(app.config, 'isNativeTag', { - value: tag => isHTMLTag(tag) || isSVGTag(tag), - writable: false - }) -} -function injectCompilerOptionsCheck(app) { - if (isRuntimeOnly()) { - const isCustomElement = app.config.isCustomElement - Object.defineProperty(app.config, 'isCustomElement', { - get() { - return isCustomElement - }, - set() { - warn2( - `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` - ) - } - }) - const compilerOptions = app.config.compilerOptions - const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. -- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. -- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader -- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom` - Object.defineProperty(app.config, 'compilerOptions', { - get() { - warn2(msg) - return compilerOptions - }, - set() { - warn2(msg) - } - }) - } -} -function normalizeContainer(container) { - if (isString(container)) { - const res = document.querySelector(container) - if (!res) { - warn2( - `Failed to mount app: mount target selector "${container}" returned null.` - ) - } - return res - } - if ( - window.ShadowRoot && - container instanceof window.ShadowRoot && - container.mode === 'closed' - ) { - warn2( - `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` - ) - } - return container -} -var ssrDirectiveInitialized = false -var initDirectivesForSSR = () => { - if (!ssrDirectiveInitialized) { - ssrDirectiveInitialized = true - initVModelForSSR() - initVShowForSSR() - } -} - -// ../node_modules/.pnpm/vue@3.2.45/node_modules/vue/dist/vue.runtime.esm-bundler.js -function initDev() { - { - initCustomFormatter() - } -} -if (true) { - initDev() -} -var compile2 = () => { - if (true) { - warn2( - `Runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".` - /* should not happen */ - ) - } -} - -export { - normalizeStyle, - normalizeClass, - normalizeProps, - toDisplayString, - camelize, - capitalize, - toHandlerKey, - EffectScope, - effectScope, - getCurrentScope, - onScopeDispose, - ReactiveEffect, - effect, - stop, - reactive, - shallowReactive, - readonly, - shallowReadonly, - isReactive, - isReadonly, - isShallow, - isProxy, - toRaw, - markRaw, - isRef, - ref, - shallowRef, - triggerRef, - unref, - proxyRefs, - customRef, - toRefs, - toRef, - warn2 as warn, - callWithErrorHandling, - callWithAsyncErrorHandling, - handleError, - nextTick, - queuePostFlushCb, - devtools, - setDevtoolsHook, - pushScopeId, - popScopeId, - withScopeId, - withCtx, - Suspense, - provide, - inject, - watchEffect, - watchPostEffect, - watchSyncEffect, - watch, - useTransitionState, - BaseTransition, - resolveTransitionHooks, - setTransitionHooks, - getTransitionRawChildren, - defineComponent, - defineAsyncComponent, - KeepAlive, - onActivated, - onDeactivated, - onBeforeMount, - onMounted, - onBeforeUpdate, - onUpdated, - onBeforeUnmount, - onUnmounted, - onServerPrefetch, - onRenderTriggered, - onRenderTracked, - onErrorCaptured, - withDirectives, - resolveComponent, - resolveDynamicComponent, - resolveDirective, - renderList, - createSlots, - renderSlot, - toHandlers, - createRenderer, - createHydrationRenderer, - Teleport, - Fragment, - Text, - Comment, - Static, - openBlock, - setBlockTracking, - createElementBlock, - createBlock, - isVNode, - transformVNodeArgs, - createBaseVNode, - createVNode, - guardReactiveProps, - cloneVNode, - createTextVNode, - createStaticVNode, - createCommentVNode, - mergeProps, - getCurrentInstance, - registerRuntimeCompiler, - isRuntimeOnly, - computed2 as computed, - defineProps, - defineEmits, - defineExpose, - withDefaults, - useSlots, - useAttrs, - mergeDefaults, - createPropsRestProxy, - withAsyncContext, - h, - ssrContextKey, - useSSRContext, - initCustomFormatter, - withMemo, - isMemoSame, - version, - ssrUtils, - resolveFilter, - compatUtils, - defineCustomElement, - defineSSRCustomElement, - VueElement, - useCssModule, - useCssVars, - Transition, - TransitionGroup, - vModelText, - vModelCheckbox, - vModelRadio, - vModelSelect, - vModelDynamic, - withModifiers, - withKeys, - vShow, - render, - hydrate, - createApp, - createSSRApp, - initDirectivesForSSR, - compile2 as compile -} -//# sourceMappingURL=chunk-6J5AW4SK.js.map diff --git a/website/src/.vitepress/cache/deps/chunk-6J5AW4SK.js.map b/website/src/.vitepress/cache/deps/chunk-6J5AW4SK.js.map deleted file mode 100644 index 63250c8c..00000000 --- a/website/src/.vitepress/cache/deps/chunk-6J5AW4SK.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/.pnpm/@vue+shared@3.2.45/node_modules/@vue/shared/dist/shared.esm-bundler.js", "../../../../../node_modules/.pnpm/@vue+reactivity@3.2.45/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js", "../../../../../node_modules/.pnpm/@vue+runtime-core@3.2.45/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js", "../../../../../node_modules/.pnpm/@vue+runtime-dom@3.2.45/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js", "../../../../../node_modules/.pnpm/vue@3.2.45/node_modules/vue/dist/vue.runtime.esm-bundler.js"], - "sourcesContent": ["/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\n\n/**\n * dev only flag -> name mapping\n */\nconst PatchFlagNames = {\n [1 /* PatchFlags.TEXT */]: `TEXT`,\n [2 /* PatchFlags.CLASS */]: `CLASS`,\n [4 /* PatchFlags.STYLE */]: `STYLE`,\n [8 /* PatchFlags.PROPS */]: `PROPS`,\n [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,\n [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\n [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\n [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\n [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\n [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,\n [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\n [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\n [-1 /* PatchFlags.HOISTED */]: `HOISTED`,\n [-2 /* PatchFlags.BAIL */]: `BAIL`\n};\n\n/**\n * Dev only\n */\nconst slotFlagsText = {\n [1 /* SlotFlags.STABLE */]: 'STABLE',\n [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',\n [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n // Split the content into individual lines but capture the newline sequence\n // that separated each line. This is important because the actual sequence is\n // needed to properly take into account the full line length for offset\n // comparison\n let lines = source.split(/(\\r?\\n)/);\n // Separate the lines and newline sequences into separate arrays for easier referencing\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count +=\n lines[i].length +\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\n const lineLength = lines[j].length;\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\n if (j === i) {\n // push underline\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else if (isString(value)) {\n return value;\n }\n else if (isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*.*?\\*\\//gs;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText\n .replace(styleCommentRE, '')\n .split(listDelimiterRE)\n .forEach(item => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = '';\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === 'number') {\n // only render valid values\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = '';\n if (isString(value)) {\n res = value;\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + ' ';\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\n 'option,output,progress,select,textarea,details,dialog,menu,' +\n 'summary,template,blockquote,iframe,tfoot';\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\n 'text,textPath,title,tspan,unknown,use,view';\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\n `loop,open,required,reversed,scoped,seamless,` +\n `checked,muted,multiple,selected`);\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\n */\nfunction includeBooleanAttr(value) {\n return !!value || value === '';\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return (attrValidationCache[name] = !isUnsafe);\n}\nconst propsToAttrMap = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n};\n/**\n * Known attributes, this is used for stringification of runtime static nodes\n * so that we don't stringify bindings that cannot be set from HTML.\n * Don't also forget to allow `data-*` and `aria-*`!\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n */\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\n `value,width,wrap`);\n/**\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\n `color-interpolation-filters,color-profile,color-rendering,` +\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = '' + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = '';\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escaped = '"';\n break;\n case 38: // &\n escaped = '&';\n break;\n case 39: // '\n escaped = ''';\n break;\n case 60: // <\n escaped = '<';\n break;\n case 62: // >\n escaped = '>';\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\n// https://www.w3.org/TR/html52/syntax.html#comments\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, '');\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if ((aHasKey && !bHasKey) ||\n (!aHasKey && bHasKey) ||\n !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex(item => looseEqual(item, val));\n}\n\n/**\n * For converting {{ interpolation }} values to displayed strings.\n * @private\n */\nconst toDisplayString = (val) => {\n return isString(val)\n ? val\n : val == null\n ? ''\n : isArray(val) ||\n (isObject(val) &&\n (val.toString === objectToString || !isFunction(val.toString)))\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n};\nconst replacer = (_key, val) => {\n // can't use isRef here since @vue/shared has no deps\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n }\n else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\n entries[`${key} =>`] = val;\n return entries;\n }, {})\n };\n }\n else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n }\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\n ? Object.freeze({})\n : {};\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\nconst NOOP = () => { };\n/**\n * Always return false.\n */\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith('onUpdate:');\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === '[object Map]';\nconst isSet = (val) => toTypeString(val) === '[object Set]';\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isSymbol = (val) => typeof val === 'symbol';\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n // extract \"RawType\" from strings like \"[object RawType]\"\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\nconst isIntegerKey = (key) => isString(key) &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isReservedProp = /*#__PURE__*/ makeMap(\n// the leading comma is intentional so empty string \"\" is also included\n',key,ref,ref_for,ref_key,' +\n 'onVnodeBeforeMount,onVnodeMounted,' +\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\n/**\n * @private\n */\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\nconst hyphenateRE = /\\B([A-Z])/g;\n/**\n * @private\n */\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\n/**\n * @private\n */\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\n/**\n * @private\n */\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\n// compare whether a value has changed, accounting for NaN.\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name)\n ? `__props.${name}`\n : `__props[${JSON.stringify(name)}]`;\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n", "import { extend, isArray, toNumber, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n run(fn) {\n if (this.active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this.active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`onScopeDispose() is called when there is no active effect scope` +\n ` to be associated with.`);\n }\n}\n\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit; // set was tracked\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n }\n else {\n deps[ptr++] = dep;\n }\n // clear bits\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\n\nconst targetMap = new WeakMap();\n// The number of effects currently being tracked recursively.\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\n/**\n * The bitwise track markers support at most 30 levels of recursion.\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\n * When recursion depth is greater, fall back to using a full cleanup.\n */\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = undefined;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n }\n else {\n cleanupEffect(this);\n }\n return this.fn();\n }\n finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = undefined;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n // stopped while running itself - defer the cleanup\n if (activeEffect === this) {\n this.deferStop = true;\n }\n else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const { deps } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === undefined ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, (depsMap = new Map()));\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, (dep = createDep()));\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { effect: activeEffect, target, type, key }\n : undefined;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit; // set newly tracked\n shouldTrack = !wasTracked(dep);\n }\n }\n else {\n // Full cleanup mode.\n shouldTrack = !dep.has(activeEffect);\n }\n if (shouldTrack) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\n activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n // never been tracked\n return;\n }\n let deps = [];\n if (type === \"clear\" /* TriggerOpTypes.CLEAR */) {\n // collection being cleared\n // trigger all effects for target\n deps = [...depsMap.values()];\n }\n else if (key === 'length' && isArray(target)) {\n const newLength = toNumber(newValue);\n depsMap.forEach((dep, key) => {\n if (key === 'length' || key >= newLength) {\n deps.push(dep);\n }\n });\n }\n else {\n // schedule runs for SET | ADD | DELETE\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n // also run for iteration key on ADD | DELETE | Map.SET\n switch (type) {\n case \"add\" /* TriggerOpTypes.ADD */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n else if (isIntegerKey(key)) {\n // new index added to array -> length changes\n deps.push(depsMap.get('length'));\n }\n break;\n case \"delete\" /* TriggerOpTypes.DELETE */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\" /* TriggerOpTypes.SET */:\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { target, type, key, newValue, oldValue, oldTarget }\n : undefined;\n if (deps.length === 1) {\n if (deps[0]) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(deps[0], eventInfo);\n }\n else {\n triggerEffects(deps[0]);\n }\n }\n }\n else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(createDep(effects), eventInfo);\n }\n else {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n // spread into array for stabilization\n const effects = isArray(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\n }\n if (effect.scheduler) {\n effect.scheduler();\n }\n else {\n effect.run();\n }\n }\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n/*#__PURE__*/\nObject.getOwnPropertyNames(Symbol)\n // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\n // but accessing them on Symbol leads to TypeError because Symbol is a strict mode\n // function\n .filter(key => key !== 'arguments' && key !== 'caller')\n .map(key => Symbol[key])\n .filter(isSymbol));\nconst get = /*#__PURE__*/ createGetter();\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n instrumentations[key] = function (...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\" /* TrackOpTypes.GET */, i + '');\n }\n // we run the method using the original args first (which may be reactive)\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n // if that didn't work, run it again using raw values.\n return arr[key](...args.map(toRaw));\n }\n else {\n return res;\n }\n };\n });\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\n instrumentations[key] = function (...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get(target, key, receiver) {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */) {\n return shallow;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */ &&\n receiver ===\n (isReadonly\n ? shallow\n ? shallowReadonlyMap\n : readonlyMap\n : shallow\n ? shallowReactiveMap\n : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\" /* TrackOpTypes.GET */, key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n // ref unwrapping - skip unwrap for Array + integer key.\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n // Convert returned value into a proxy as well. we do the isObject check\n // here to avoid invalid value warning. Also need to lazy access readonly\n // and reactive here to avoid circular dependency.\n return isReadonly ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set = /*#__PURE__*/ createSetter();\nconst shallowSet = /*#__PURE__*/ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key)\n ? Number(key) < target.length\n : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n // don't trigger if target is something up in the prototype chain of original\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\" /* TrackOpTypes.HAS */, key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get,\n set,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\n// Props handlers are special in the sense that it should not unwrap top-level\n// refs (in order to allow refs to be explicitly passed down), but should\n// retain the reactivity of the normal readonly object.\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\n get: shallowReadonlyGet\n});\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\n // of the value\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, key);\n }\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n }\n else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n }\n else if (target !== rawTarget) {\n // #3602 readonly(reactive(Map))\n // ensure that the nested reactive `Map` can do tracking for itself\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, key);\n }\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, rawKey);\n }\n return key === rawKey\n ? target.has(key)\n : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n !isReadonly && track(toRaw(target), \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return Reflect.get(target, 'size', target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : undefined;\n // forward the operation before queueing reactions\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = (process.env.NODE_ENV !== 'production')\n ? isMap(target)\n ? new Map(target)\n : new Set(target)\n : undefined;\n // forward the operation before queueing reactions\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return target.forEach((value, key) => {\n // important: make sure the callback is\n // 1. invoked with the reactive map as `this` and 3rd arg\n // 2. the value received should be a corresponding reactive/readonly.\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function (...args) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\n const isKeyOnly = method === 'keys' && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly &&\n track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n // return a wrapped iterator which returns observed versions of the\n // values emitted from the real iterator\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done\n ? { value, done }\n : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function (...args) {\n if ((process.env.NODE_ENV !== 'production')) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" /* TriggerOpTypes.DELETE */ ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\n iteratorMethods.forEach(method => {\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow\n ? isReadonly\n ? shallowReadonlyInstrumentations\n : shallowInstrumentations\n : isReadonly\n ? readonlyInstrumentations\n : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */) {\n return target;\n }\n return Reflect.get(hasOwn(instrumentations, key) && key in target\n ? instrumentations\n : target, key, receiver);\n };\n}\nconst mutableCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\n `which can lead to inconsistencies. ` +\n `Avoid differentiating between the raw and reactive versions ` +\n `of an object and only use the reactive version if possible.`);\n }\n}\n\nconst reactiveMap = new WeakMap();\nconst shallowReactiveMap = new WeakMap();\nconst readonlyMap = new WeakMap();\nconst shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case 'Object':\n case 'Array':\n return 1 /* TargetType.COMMON */;\n case 'Map':\n case 'Set':\n case 'WeakMap':\n case 'WeakSet':\n return 2 /* TargetType.COLLECTION */;\n default:\n return 0 /* TargetType.INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)\n ? 0 /* TargetType.INVALID */\n : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\n/**\n * Creates a readonly copy of the original object. Note the returned copy is not\n * made reactive, but `readonly` can be called on an already reactive object.\n */\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n // target is already a Proxy, return it.\n // exception: calling readonly() on a reactive object\n if (target[\"__v_raw\" /* ReactiveFlags.RAW */] &&\n !(isReadonly && target[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */])) {\n return target;\n }\n // target already has corresponding Proxy\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n // only specific value types can be observed.\n const targetType = getTargetType(target);\n if (targetType === 0 /* TargetType.INVALID */) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n if ((process.env.NODE_ENV !== 'production')) {\n trackEffects(ref.dep || (ref.dep = createDep()), {\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n trackEffects(ref.dep || (ref.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(ref.dep, {\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value',\n newValue: newVal\n });\n }\n else {\n triggerEffects(ref.dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = undefined;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref) {\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs)\n ? objectWithRefs\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = undefined;\n this.__v_isRef = true;\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === undefined ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n}\nfunction toRef(object, key, defaultValue) {\n const val = object[key];\n return isRef(val)\n ? val\n : new ObjectRefImpl(object, key, defaultValue);\n}\n\nvar _a;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = undefined;\n this.__v_isRef = true;\n this[_a] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */] = isReadonly;\n }\n get value() {\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\n_a = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = (process.env.NODE_ENV !== 'production')\n ? () => {\n console.warn('Write operation failed: computed value is readonly');\n }\n : NOOP;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if ((process.env.NODE_ENV !== 'production') && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nvar _a$1;\nconst tick = /*#__PURE__*/ Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = (fn) => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = undefined;\n this._dirty = true;\n this.__v_isRef = true;\n this[_a$1] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n }\n else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n // chained upstream computeds are notified synchronously to ensure\n // value invalidation in case of sync access; normal effects are\n // deferred to be triggered in scheduler.\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(true /* computedTrigger */);\n }\n }\n }\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return (this._value = this.effect.run());\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n return toRaw(this)._get();\n }\n}\n_a$1 = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n", "import { pauseTracking, resetTracking, isRef, toRaw, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, EffectScope, markRaw, proxyRefs, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (isString(a) ? a.trim() : a));\n }\n if (number) {\n args = rawArgs.map(toNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled `<slot>`, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside <Transition> renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = toNumber(vnode.props && vnode.props.timeout);\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = currentInstance;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n }\n else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource\n ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)\n : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE\n ? undefined\n : (isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE)\n ? []\n : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn('<transition> can only be used on a single element or component. ' +\n 'Use <transition-group> for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of <transition><keep-alive/></transition>, we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of <template v-for>\n const key = parentKey == null\n ? child.key\n : String(parentKey) + String(child.key != null ? child.key : i);\n // handle fragment children case, e.g. v-for\n if (child.type === Fragment) {\n if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)\n keyedFragmentCount++;\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n }\n // comment placeholders should be skipped, e.g. v-if\n else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n // #1126 if a transition children list contains multiple sub fragments, these\n // fragments will be merged into a flat children array. Since each v-for\n // fragment may contain different static bindings inside, we need to de-op\n // these children to force full diffs to ensure correct behavior.\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2 /* PatchFlags.BAIL */;\n }\n }\n return ret;\n}\n\n// implementation, close to no-op\nfunction defineComponent(options) {\n return isFunction(options) ? { setup: options, name: options.name } : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\n suspensible = true, onError: userOnError } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return (pendingRequest ||\n (thisRequest = pendingRequest =\n loader()\n .catch(err => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n }\n else {\n throw err;\n }\n })\n .then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if ((process.env.NODE_ENV !== 'production') && !comp) {\n warn(`Async component loader resolved to undefined. ` +\n `If you are using retry(), make sure to return its return value.`);\n }\n // interop module default\n if (comp &&\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n comp = comp.default;\n }\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n })));\n };\n return defineComponent({\n name: 'AsyncComponentWrapper',\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n // already resolved\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\n };\n // suspense-controlled or SSR.\n if ((suspensible && instance.suspense) ||\n (isInSSRComponentSetup)) {\n return load()\n .then(comp => {\n return () => createInnerComp(comp, instance);\n })\n .catch(err => {\n onError(err);\n return () => errorComponent\n ? createVNode(errorComponent, {\n error: err\n })\n : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(`Async component timed out after ${timeout}ms.`);\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load()\n .then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n // parent is keep-alive, force update so the loaded component's\n // name is taken into account\n queueJob(instance.parent.update);\n }\n })\n .catch(err => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n }\n else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n }\n else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n // ensure inner component inherits the async wrapper's ref owner\n vnode.ref = ref;\n // pass the custom element callback on to the inner comp\n // and remove it from the async wrapper\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n // KeepAlive communicates with the instantiated renderer via the\n // ctx where the renderer passes in its internals,\n // and the KeepAlive instance exposes activate/deactivate implementations.\n // The whole point of this is to avoid importing KeepAlive directly in the\n // renderer to facilitate tree-shaking.\n const sharedContext = instance.ctx;\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\n // for KeepAlive, we just need to render its children\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = new Map();\n const keys = new Set();\n let current = null;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\n const storageContainer = createElement('div');\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n const instance = vnode.component;\n move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);\n // in case props have changed\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\n queuePostRenderEffect(() => {\n instance.isDeactivated = false;\n if (instance.a) {\n invokeArrayFns(instance.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance = vnode.component;\n move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance.da) {\n invokeArrayFns(instance.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n instance.isDeactivated = true;\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n function unmount(vnode) {\n // reset the shapeFlag so it can be properly unmounted\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || cached.type !== current.type) {\n unmount(cached);\n }\n else if (current) {\n // current active instance should no longer be kept-alive.\n // we can't unmount it now but it might be later, so reset its flag now.\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n // prune cache on include/exclude prop change\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\n include && pruneCache(name => matches(include, name));\n exclude && pruneCache(name => !matches(exclude, name));\n }, \n // prune post-render after `current` has been updated\n { flush: 'post', deep: true });\n // cache sub tree after render\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n // fix #1621, the pendingCacheKey could be 0\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach(cached => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type) {\n // current instance will be unmounted as part of keep-alive's unmount\n resetShapeFlag(vnode);\n // but invoke its deactivated hook here\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n }\n else if (!isVNode(rawVNode) ||\n (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&\n !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n // for async components, name check should be based in its loaded\n // inner component if available\n const name = getComponentName(isAsyncWrapper(vnode)\n ? vnode.type.__asyncResolved || {}\n : comp);\n const { include, exclude, max } = props;\n if ((include && (!name || !matches(include, name))) ||\n (exclude && name && matches(exclude, name))) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n // clone vnode if it's reused because we are going to mutate it\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n rawVNode.ssContent = vnode;\n }\n }\n // #1513 it's possible for the returned vnode to be cloned due to attr\n // fallthrough or scopeId, so the vnode here may not be the final vnode\n // that is mounted. Instead of caching it directly, we store the pending\n // key and cache `instance.subTree` (the normalized vnode) in\n // beforeMount/beforeUpdate hooks.\n pendingCacheKey = key;\n if (cachedVNode) {\n // copy over mounted state\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n // recursively update transition hooks on subTree\n setTransitionHooks(vnode, vnode.transition);\n }\n // avoid vnode being mounted as fresh\n vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // make this key the freshest\n keys.delete(key);\n keys.add(key);\n }\n else {\n keys.add(key);\n // prune oldest entry\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n // avoid vnode being unmounted\n vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n }\n else if (isString(pattern)) {\n return pattern.split(',').includes(name);\n }\n else if (pattern.test) {\n return pattern.test(name);\n }\n /* istanbul ignore next */\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\" /* LifecycleHooks.ACTIVATED */, target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\" /* LifecycleHooks.DEACTIVATED */, target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n // cache the deactivate branch check wrapper for injected hooks so the same\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\n // deactivation check\".\n const wrappedHook = hook.__wdc ||\n (hook.__wdc = () => {\n // only fire the hook if the target instance is NOT in a deactivated branch.\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n // In addition to registering it on the target instance, we walk up the parent\n // chain and register it on all ancestor instances that are keep-alive roots.\n // This avoids the need to walk the entire component tree when invoking these\n // hooks, and more importantly, avoids the need to track child components in\n // arrays.\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n // injectHook wraps the original for error handling, so make sure to remove\n // the wrapped version.\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n // bitwise operations to remove keep alive flags\n vnode.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n vnode.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n // cache the error handling wrapper for injected hooks so the same hook\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\n // handling\".\n const wrappedHook = hook.__weh ||\n (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n // Set currentInstance during hook invocation.\n // This assumes the hook does not synchronously trigger other hooks, which\n // can only be false when the user does something really funky.\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n }\n else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\n warn(`${apiName} is called when there is no active component instance to be ` +\n `associated with. ` +\n `Lifecycle injection APIs can only be used during execution of setup().` +\n (` If you are using async setup(), make sure to register lifecycle ` +\n `hooks before the first await statement.`\n ));\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* LifecycleHooks.SERVER_PREFETCH */) &&\n injectHook(lifecycle, (...args) => hook(...args), target);\nconst onBeforeMount = createHook(\"bm\" /* LifecycleHooks.BEFORE_MOUNT */);\nconst onMounted = createHook(\"m\" /* LifecycleHooks.MOUNTED */);\nconst onBeforeUpdate = createHook(\"bu\" /* LifecycleHooks.BEFORE_UPDATE */);\nconst onUpdated = createHook(\"u\" /* LifecycleHooks.UPDATED */);\nconst onBeforeUnmount = createHook(\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */);\nconst onUnmounted = createHook(\"um\" /* LifecycleHooks.UNMOUNTED */);\nconst onServerPrefetch = createHook(\"sp\" /* LifecycleHooks.SERVER_PREFETCH */);\nconst onRenderTriggered = createHook(\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */);\nconst onRenderTracked = createHook(\"rtc\" /* LifecycleHooks.RENDER_TRACKED */);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);\n}\n\n/**\nRuntime helper for applying directives to a vnode. Example usage:\n\nconst comp = resolveComponent('comp')\nconst foo = resolveDirective('foo')\nconst bar = resolveDirective('bar')\n\nreturn withDirectives(h(comp), [\n [foo, this.x],\n [bar, this.y]\n])\n*/\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn('Do not use built-in directive ids as custom directive id: ' + name);\n }\n}\n/**\n * Adds directives to a VNode.\n */\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) ||\n internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst COMPONENTS = 'components';\nconst DIRECTIVES = 'directives';\n/**\n * @private\n */\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\n/**\n * @private\n */\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n }\n else {\n // invalid types will fallthrough to createVNode and raise warning\n return (component || NULL_DYNAMIC_COMPONENT);\n }\n}\n/**\n * @private\n */\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\n// implementation\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n // explicit self name has highest priority\n if (type === COMPONENTS) {\n const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);\n if (selfName &&\n (selfName === name ||\n selfName === camelize(name) ||\n selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = \n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) ||\n // global registration\n resolve(instance.appContext[type], name);\n if (!res && maybeSelfReference) {\n // fallback to implicit self-reference\n return Component;\n }\n if ((process.env.NODE_ENV !== 'production') && warnMissing && !res) {\n const extra = type === COMPONENTS\n ? `\\nIf this is a native custom element, make sure to exclude it from ` +\n `component resolution via compilerOptions.isCustomElement.`\n : ``;\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`resolve${capitalize(type.slice(0, -1))} ` +\n `can only be used in render() or setup().`);\n }\n}\nfunction resolve(registry, name) {\n return (registry &&\n (registry[name] ||\n registry[camelize(name)] ||\n registry[capitalize(camelize(name))]));\n}\n\n/**\n * Actual implementation\n */\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = (cache && cache[index]);\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);\n }\n }\n else if (typeof source === 'number') {\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);\n }\n }\n else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));\n }\n else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n }\n else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\n/**\n * Compiler runtime helper for creating dynamic slots object\n * @private\n */\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n }\n else if (slot) {\n // conditional single slot generated by <template v-if=\"...\" #foo>\n slots[slot.name] = slot.key\n ? (...args) => {\n const res = slot.fn(...args);\n // attach branch key so each conditional branch is considered a\n // different fragment\n if (res)\n res.key = slot.key;\n return res;\n }\n : slot.fn;\n }\n }\n return slots;\n}\n\n/**\n * Compiler runtime helper for rendering `<slot/>`\n * @private\n */\nfunction renderSlot(slots, name, props = {}, \n// this is not a user-facing function, so the fallback is always generated by\n// the compiler and guaranteed to be a function returning an array\nfallback, noSlotted) {\n if (currentRenderingInstance.isCE ||\n (currentRenderingInstance.parent &&\n isAsyncWrapper(currentRenderingInstance.parent) &&\n currentRenderingInstance.parent.isCE)) {\n if (name !== 'default')\n props.name = name;\n return createVNode('slot', props, fallback && fallback());\n }\n let slot = slots[name];\n if ((process.env.NODE_ENV !== 'production') && slot && slot.length > 1) {\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\n `function. You need to mark this component with $dynamic-slots in the ` +\n `parent template.`);\n slot = () => [];\n }\n // a compiled slot disables block tracking by default to avoid manual\n // invocation interfering with template-based block tracking, but in\n // `renderSlot` we can be sure that it's template-based so we can force\n // enable it.\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(Fragment, {\n key: props.key ||\n // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n (validSlotContent && validSlotContent.key) ||\n `_${name}`\n }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */\n ? 64 /* PatchFlags.STABLE_FRAGMENT */\n : -2 /* PatchFlags.BAIL */);\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + '-s'];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment &&\n !ensureValidVNode(child.children))\n return false;\n return true;\n })\n ? vnodes\n : null;\n}\n\n/**\n * For prefixing keys in v-on=\"obj\" with \"on\"\n * @private\n */\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if ((process.env.NODE_ENV !== 'production') && !isObject(obj)) {\n warn(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key)\n ? `on:${key}`\n : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\n/**\n * #2437 In Vue 3, functional components do not have a public instance proxy but\n * they exist in the internal parent chain. For code that relies on traversing\n * public $parent chains, skip functional ones and go to the parent instead.\n */\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = \n// Move PURE marker to new line to workaround compiler discarding it\n// due to type annotation\n/*#__PURE__*/ extend(Object.create(null), {\n $: i => i,\n $el: i => i.vnode.el,\n $data: i => i.data,\n $props: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.props) : i.props),\n $attrs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.attrs) : i.attrs),\n $slots: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.slots) : i.slots),\n $refs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.refs) : i.refs),\n $parent: i => getPublicInstance(i.parent),\n $root: i => getPublicInstance(i.root),\n $emit: i => i.emit,\n $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type),\n $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP)\n});\nconst isReservedPrefix = (key) => key === '_' || key === '$';\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n // for internal formatters to know that this is a Vue instance\n if ((process.env.NODE_ENV !== 'production') && key === '__isVue') {\n return true;\n }\n // data / props / ctx\n // This getter gets called for every property access on the render context\n // during render and is a major hotspot. The most expensive part of this\n // is the multiple hasOwn() calls. It's much faster to do a simple property\n // access on a plain object, so we use an accessCache object (with null\n // prototype) to memoize what access type a key corresponds to.\n let normalizedProps;\n if (key[0] !== '$') {\n const n = accessCache[key];\n if (n !== undefined) {\n switch (n) {\n case 1 /* AccessTypes.SETUP */:\n return setupState[key];\n case 2 /* AccessTypes.DATA */:\n return data[key];\n case 4 /* AccessTypes.CONTEXT */:\n return ctx[key];\n case 3 /* AccessTypes.PROPS */:\n return props[key];\n // default: just fallthrough\n }\n }\n else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* AccessTypes.SETUP */;\n return setupState[key];\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* AccessTypes.DATA */;\n return data[key];\n }\n else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) &&\n hasOwn(normalizedProps, key)) {\n accessCache[key] = 3 /* AccessTypes.PROPS */;\n return props[key];\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* AccessTypes.OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n // public $xxx properties\n if (publicGetter) {\n if (key === '$attrs') {\n track(instance, \"get\" /* TrackOpTypes.GET */, key);\n (process.env.NODE_ENV !== 'production') && markAttrsAccessed();\n }\n return publicGetter(instance);\n }\n else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) &&\n (cssModule = cssModule[key])) {\n return cssModule;\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n // user may set custom properties to `this` that start with `$`\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (\n // global properties\n ((globalProperties = appContext.config.globalProperties),\n hasOwn(globalProperties, key))) {\n {\n return globalProperties[key];\n }\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n currentRenderingInstance &&\n (!isString(key) ||\n // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf('__v') !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\n }\n else if (instance === currentRenderingInstance) {\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\n `but is not defined on instance.`);\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n setupState.__isScriptSetup &&\n hasOwn(setupState, key)) {\n warn(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n }\n else if (hasOwn(instance.props, key)) {\n (process.env.NODE_ENV !== 'production') && warn(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === '$' && key.slice(1) in instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to mutate public property \"${key}\". ` +\n `Properties starting with $ are reserved and readonly.`);\n return false;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n }\n else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n let normalizedProps;\n return (!!accessCache[key] ||\n (data !== EMPTY_OBJ && hasOwn(data, key)) ||\n hasSetupBinding(setupState, key) ||\n ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||\n hasOwn(ctx, key) ||\n hasOwn(publicPropertiesMap, key) ||\n hasOwn(appContext.config.globalProperties, key));\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n // invalidate key cache of a getter based property #5417\n target._.accessCache[key] = 0;\n }\n else if (hasOwn(descriptor, 'value')) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif ((process.env.NODE_ENV !== 'production') && !false) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\n `The keys will be empty in production mode to avoid performance overhead.`);\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n // fast path for unscopables when using `with` block\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== '_' && !isGloballyWhitelisted(key);\n if ((process.env.NODE_ENV !== 'production') && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\n }\n return has;\n }\n});\n// dev only\n// In dev mode, the proxy target exposes the same properties as seen on `this`\n// for easier console inspection. In prod mode it will be an empty object so\n// these properties definitions can be skipped.\nfunction createDevRenderContext(instance) {\n const target = {};\n // expose internal instance for proxy handlers\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n // expose public properties\n Object.keys(publicPropertiesMap).forEach(key => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\n// dev only\nfunction exposePropsOnRenderContext(instance) {\n const { ctx, propsOptions: [propsOptions] } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach(key => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\n// dev only\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach(key => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\n `which are reserved prefixes for Vue internals.`);\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nfunction createDuplicateChecker() {\n const cache = Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n }\n else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n // do not cache property access on public proxy during state initialization\n shouldCacheAccess = false;\n // call beforeCreate first before accessing other options since\n // the hook may mutate resolved options (#2791)\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\" /* LifecycleHooks.BEFORE_CREATE */);\n }\n const { \n // state\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \n // lifecycle\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \n // public API\n expose, inheritAttrs, \n // assets\n components, directives, filters } = options;\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\n if ((process.env.NODE_ENV !== 'production')) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* OptionTypes.PROPS */, key);\n }\n }\n }\n // options initialization order (to be consistent with Vue 2):\n // - props (already done outside of this function)\n // - inject\n // - methods\n // - data (deferred since it relies on `this` access)\n // - computed\n // - watch (deferred since it relies on `this` access)\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n // In dev mode, we use the `createRenderContext` function to define\n // methods to the proxy target, and those are read-only but\n // reconfigurable, so it needs to be redefined here\n if ((process.env.NODE_ENV !== 'production')) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n }\n else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Methods\" /* OptionTypes.METHODS */, key);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\n `Did you reference the function correctly?`);\n }\n }\n }\n if (dataOptions) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\n warn(`The data option must be a function. ` +\n `Plain object usage is no longer supported.`);\n }\n const data = dataOptions.call(publicThis, publicThis);\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\n `intend to perform data fetching before component renders, use ` +\n `async setup() + <Suspense>.`);\n }\n if (!isObject(data)) {\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\n }\n else {\n instance.data = reactive(data);\n if ((process.env.NODE_ENV !== 'production')) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* OptionTypes.DATA */, key);\n // expose data on ctx during dev\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n // state initialization complete at this point - start caching access\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt)\n ? opt.bind(publicThis, publicThis)\n : isFunction(opt.get)\n ? opt.get.bind(publicThis, publicThis)\n : NOOP;\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\n warn(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set)\n ? opt.set.bind(publicThis)\n : (process.env.NODE_ENV !== 'production')\n ? () => {\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\n }\n : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: v => (c.value = v)\n });\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Computed\" /* OptionTypes.COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions)\n ? provideOptions.call(publicThis)\n : provideOptions;\n Reflect.ownKeys(provides).forEach(key => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\" /* LifecycleHooks.CREATED */);\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach(_hook => register(_hook.bind(publicThis)));\n }\n else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach(key => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: val => (publicThis[key] = val)\n });\n });\n }\n else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n // options that are handled when creating the instance but also need to be\n // applied from mixins\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n // asset options.\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if ('default' in opt) {\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\n }\n else {\n injected = inject(opt.from || key);\n }\n }\n else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n // TODO remove the check in 3.3\n if (unwrapRef) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: v => (injected.value = v)\n });\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\n `and no longer needs \\`.value\\` in the next minor release. ` +\n `To opt-in to the new behavior now, ` +\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\n `temporary and will not be needed in the future.)`);\n }\n ctx[key] = injected;\n }\n }\n else {\n ctx[key] = injected;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Inject\" /* OptionTypes.INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(isArray(hook)\n ? hook.map(h => h.bind(instance.proxy))\n : hook.bind(instance.proxy), instance, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes('.')\n ? createPathGetter(publicThis, key)\n : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n }\n else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n }\n else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\n }\n else {\n const handler = isFunction(raw.handler)\n ? raw.handler.bind(publicThis)\n : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch option: \"${key}\"`, raw);\n }\n}\n/**\n * Resolve merged options and cache it on the component.\n * This is done only once per-component since the merging does not involve\n * instances.\n */\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n }\n else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n }\n else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\n }\n for (const key in from) {\n if (asMixin && key === 'expose') {\n (process.env.NODE_ENV !== 'production') &&\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\n `It should only be declared in the base component itself.`);\n }\n else {\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeObjectOptions,\n emits: mergeObjectOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(extend(Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\nisSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance.propsDefaults = Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n // ensure all declared prop keys are present\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = undefined;\n }\n }\n // validation\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n // stateful\n instance.props = isSSR ? props : shallowReactive(props);\n }\n else {\n if (!instance.type.props) {\n // functional w/ optional props, props === attrs\n instance.props = attrs;\n }\n else {\n // functional w/ declared props\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId)\n return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const { props, attrs, vnode: { patchFlag } } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !((process.env.NODE_ENV !== 'production') && isInHmrContext(instance)) &&\n (optimized || patchFlag > 0) &&\n !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // Compiler-generated props & no keys change, just set the updated\n // the props.\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n // skip if the prop key is a declared emit event listener\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n // PROPS flag guarantees rawProps to be non-null\n const value = rawProps[key];\n if (options) {\n // attr / props separation was done on init and will be consistent\n // in this code path, so just check if attrs have it.\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\n }\n }\n else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n }\n else {\n // full props update.\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n // in case of dynamic props, check if we need to delete keys from\n // the props object\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps ||\n // for camelCase\n (!hasOwn(rawProps, key) &&\n // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\n if (options) {\n if (rawPrevProps &&\n // for camelCase\n (rawPrevProps[key] !== undefined ||\n // for kebab-case\n rawPrevProps[kebabKey] !== undefined)) {\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\n }\n }\n else {\n delete props[key];\n }\n }\n }\n // in the case of functional component w/o props declaration, props and\n // attrs point to the same object so it should already have been updated.\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps ||\n (!hasOwn(rawProps, key) &&\n (!false ))) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n // trigger updates for $attrs in case it's used in component slots\n if (hasAttrsChanged) {\n trigger(instance, \"set\" /* TriggerOpTypes.SET */, '$attrs');\n }\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n // key, ref are reserved and never passed down\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n // prop option names are camelized during normalization, so to support\n // kebab -> camel conversion here we need to camelize the key.\n let camelKey;\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n }\n else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n }\n else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, 'default');\n // default values\n if (hasDefault && value === undefined) {\n const defaultValue = opt.default;\n if (opt.type !== Function && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n }\n else {\n setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(null, props);\n unsetCurrentInstance();\n }\n }\n else {\n value = defaultValue;\n }\n }\n // boolean casting\n if (opt[0 /* BooleanFlags.shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n }\n else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&\n (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\n warn(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n }\n else if (raw) {\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\n warn(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = (normalized[normalizedKey] =\n isArray(opt) || isFunction(opt) ? { type: opt } : Object.assign({}, opt));\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;\n prop[1 /* BooleanFlags.shouldCastTrue */] =\n stringIndex < 0 || booleanIndex < stringIndex;\n // if the prop needs boolean casting or default value\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== '$') {\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\n// use function string name to check type constructors\n// so that it works across vms / iframes.\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ctor === null ? 'null' : '';\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex(t => isSameType(t, type));\n }\n else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\n/**\n * dev only\n */\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\n }\n}\n/**\n * dev only\n */\nfunction validateProp(name, value, prop, isAbsent) {\n const { type, required, validator } = prop;\n // required!\n if (required && isAbsent) {\n warn('Missing required prop: \"' + name + '\"');\n return;\n }\n // missing but optional\n if (value == null && !prop.required) {\n return;\n }\n // type check\n if (type != null && type !== true) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n // value is valid as long as one of the specified types match\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || '');\n isValid = valid;\n }\n if (!isValid) {\n warn(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n // custom validator\n if (validator && !validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\n/**\n * dev only\n */\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n }\n else if (expectedType === 'Object') {\n valid = isObject(value);\n }\n else if (expectedType === 'Array') {\n valid = isArray(value);\n }\n else if (expectedType === 'null') {\n valid = value === null;\n }\n else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\n/**\n * dev only\n */\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\n/**\n * dev only\n */\nfunction styleValue(value, type) {\n if (type === 'String') {\n return `\"${value}\"`;\n }\n else if (type === 'Number') {\n return `${Number(value)}`;\n }\n else {\n return `${value}`;\n }\n}\n/**\n * dev only\n */\nfunction isExplicable(type) {\n const explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(elem => type.toLowerCase() === elem);\n}\n/**\n * dev only\n */\nfunction isBoolean(...args) {\n return args.some(elem => elem.toLowerCase() === 'boolean');\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\nconst normalizeSlotValue = (value) => isArray(value)\n ? value.map(normalizeVNode)\n : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n // already normalized - #5353\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\n `this will not track dependencies used in the slot. ` +\n `Invoke the slot function inside the render function instead.`);\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key))\n continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n }\n else if (value != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n !(false )) {\n warn(`Non-function value encountered for slot \"${key}\". ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if ((process.env.NODE_ENV !== 'production') &&\n !isKeepAlive(instance.vnode) &&\n !(false )) {\n warn(`Non-function value encountered for default slot. ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // users can get the shallow readonly version of the slots object through `this.$slots`,\n // we should avoid the proxy object polluting the slots of the internal instance\n instance.slots = toRaw(children);\n // make compiler marker non-enumerable\n def(children, '_', type);\n }\n else {\n normalizeObjectSlots(children, (instance.slots = {}));\n }\n }\n else {\n instance.slots = {};\n if (children) {\n normalizeVNodeSlots(instance, children);\n }\n }\n def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // compiled slots.\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // Parent was HMR updated so slot content may have changed.\n // force update slots and mark instance for hmr as well\n extend(slots, children);\n }\n else if (optimized && type === 1 /* SlotFlags.STABLE */) {\n // compiled AND stable.\n // no need to update, and skip stale slots removal.\n needDeletionCheck = false;\n }\n else {\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\n // normalization.\n extend(slots, children);\n // #2893\n // when rendering the optimized slots by manually written render function,\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\n // i.e. let the `renderSlot` create the bailed Fragment\n if (!optimized && type === 1 /* SlotFlags.STABLE */) {\n delete slots._;\n }\n }\n }\n else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n }\n else if (children) {\n // non slot object children (direct value) passed to a component\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n // delete stale slots\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n delete slots[key];\n }\n }\n }\n};\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: undefined,\n warnHandler: undefined,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: Object.create(null),\n optionsCache: new WeakMap(),\n propsCache: new WeakMap(),\n emitsCache: new WeakMap()\n };\n}\nlet uid = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = Object.assign({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = new Set();\n let isMounted = false;\n const app = (context.app = {\n _uid: uid++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`app.config cannot be replaced. Modify individual options instead.`);\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\n }\n else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n }\n else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`A plugin must either be a function or an object with an \"install\" ` +\n `function.`);\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixin has already been applied to target app' +\n (mixin.name ? `: ${mixin.name}` : ''));\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixins are only available in builds supporting Options API');\n }\n return app;\n },\n component(name, component) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\n warn(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\n warn(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, isSVG) {\n if (!isMounted) {\n // #5571\n if ((process.env.NODE_ENV !== 'production') && rootContainer.__vue_app__) {\n warn(`There is already an app instance mounted on the host container.\\n` +\n ` If you want to mount another app on the same host container,` +\n ` you need to unmount the previous app by calling \\`app.unmount()\\` first.`);\n }\n const vnode = createVNode(rootComponent, rootProps);\n // store app context on the root VNode.\n // this will be set on the root instance on initial mount.\n vnode.appContext = context;\n // HMR root reload\n if ((process.env.NODE_ENV !== 'production')) {\n context.reload = () => {\n render(cloneVNode(vnode), rootContainer, isSVG);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n }\n else {\n render(vnode, rootContainer, isSVG);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`App has already been mounted.\\n` +\n `If you want to remount the same app, move your app creation logic ` +\n `into a factory function and create fresh app instances for each ` +\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\n }\n },\n unmount() {\n if (isMounted) {\n render(null, app._container);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\n warn(`App already provides property with key \"${String(key)}\". ` +\n `It will be overwritten with the new value.`);\n }\n context.provides[key] = value;\n return app;\n }\n });\n return app;\n };\n}\n\n/**\n * Function for handling a template ref\n */\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n // when mounting async components, nothing needs to be done,\n // because the template ref is forwarded to inner component\n return;\n }\n const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */\n ? getExposeProxy(vnode.component) || vnode.component.proxy\n : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if ((process.env.NODE_ENV !== 'production') && !owner) {\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\n `A vnode with ref must be created inside the render function.`);\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\n const setupState = owner.setupState;\n // dynamic ref changed. unset old ref\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (hasOwn(setupState, oldRef)) {\n setupState[oldRef] = null;\n }\n }\n else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);\n }\n else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString\n ? hasOwn(setupState, ref)\n ? setupState[ref]\n : refs[ref]\n : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n }\n else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (hasOwn(setupState, ref)) {\n setupState[ref] = refs[ref];\n }\n }\n else {\n ref.value = [refValue];\n if (rawRef.k)\n refs[rawRef.k] = ref.value;\n }\n }\n else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n }\n else if (_isString) {\n refs[ref] = value;\n if (hasOwn(setupState, ref)) {\n setupState[ref] = value;\n }\n }\n else if (_isRef) {\n ref.value = value;\n if (rawRef.k)\n refs[rawRef.k] = value;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n }\n else {\n doSet();\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\nconst isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;\n// Note: hydration is DOM-specific\n// But we have to place it in core due to tight coupling with core - splitting\n// it out creates a ton of unnecessary complexity.\n// Hydration also depends on some renderer internal logic which needs to be\n// passed in via arguments.\nfunction createHydrationFunctions(rendererInternals) {\n const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to hydrate existing markup but container is empty. ` +\n `Performing full mount instead.`);\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hasMismatch = false;\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n if (hasMismatch && !false) {\n // this error should show up in production\n console.error(`Hydration completed but contains mismatches.`);\n }\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n const isFragmentStart = isComment(node) && node.data === '[';\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3 /* DOMNodeTypes.TEXT */) {\n // #5728 empty text node inside a slot can cause hydration failure\n // because the server rendered HTML won't contain a text node\n if (vnode.children === '') {\n insert((vnode.el = createText('')), parentNode(node), node);\n nextNode = node;\n }\n else {\n nextNode = onMismatch();\n }\n }\n else {\n if (node.data !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text mismatch:` +\n `\\n- Client: ${JSON.stringify(node.data)}` +\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n // entire template is static but SSRed as a fragment\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {\n // determine anchor, adopt content\n nextNode = node;\n // if the static vnode has its content stripped during build,\n // adopt it from the server-rendered HTML.\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children +=\n nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */\n ? nextNode.outerHTML\n : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n }\n else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||\n vnode.type.toLowerCase() !==\n node.tagName.toLowerCase()) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n // when setting up the render effect, if the initial vnode already\n // has .el set, the component will perform hydration instead of mount\n // on its sub-tree.\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\n // component may be async, so in the case of fragments we cannot rely\n // on component's rendered output to determine the end of the fragment\n // instead, we do a lookahead to find the end anchor node.\n nextNode = isFragmentStart\n ? locateClosingAsyncAnchor(node)\n : nextSibling(node);\n // #4293 teleport as component root\n if (nextNode &&\n isComment(nextNode) &&\n nextNode.data === 'teleport end') {\n nextNode = nextSibling(nextNode);\n }\n // #3787\n // if component is async, it may get moved / unmounted before its\n // inner component is loaded, so we need to give it a placeholder\n // vnode that matches its adopted DOM.\n if (isAsyncWrapper(vnode)) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode\n ? nextNode.previousSibling\n : container.lastChild;\n }\n else {\n subTree =\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n if (domType !== 8 /* DOMNodeTypes.COMMENT */) {\n nextNode = onMismatch();\n }\n else {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\n }\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\n // #4006 for form elements with non-string v-model value bindings\n // e.g. <option :value=\"obj\">, <input type=\"checkbox\" :true-value=\"1\">\n const forcePatchValue = (type === 'input' && dirs) || type === 'option';\n // skip props & children if this is hoisted static nodes\n // #5405 in dev, always hydrate children for HMR\n if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* PatchFlags.HOISTED */) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n if (forcePatchValue ||\n !optimized ||\n patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {\n for (const key in props) {\n if ((forcePatchValue && key.endsWith('value')) ||\n (isOn(key) && !isReservedProp(key))) {\n patchProp(el, key, null, props[key], false, undefined, parentComponent);\n }\n }\n }\n else if (props.onClick) {\n // Fast path for click listeners (which is most often) to avoid\n // iterating through props.\n patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);\n }\n }\n // vnode / directive hooks\n let vnodeHooks;\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n // children\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&\n // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);\n let hasWarned = false;\n while (next) {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\n `server rendered element contains more child nodes than client vdom.`);\n hasWarned = true;\n }\n // The SSRed DOM contains more nodes than it should. Remove them.\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n }\n else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n if (el.textContent !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\n `- Client: ${el.textContent}\\n` +\n `- Server: ${vnode.children}`);\n el.textContent = vnode.children;\n }\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized\n ? children[i]\n : (children[i] = normalizeVNode(children[i]));\n if (node) {\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n else if (vnode.type === Text && !vnode.children) {\n continue;\n }\n else {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\n `server rendered element contains fewer child nodes than client vdom.`);\n hasWarned = true;\n }\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);\n if (next && isComment(next) && next.data === ']') {\n return nextSibling((vnode.anchor = next));\n }\n else {\n // fragment didn't hydrate successfully, since we didn't get a end anchor\n // back. This should have led to node/children mismatch warnings.\n hasMismatch = true;\n // since the anchor is missing, we need to create one and insert it\n insert((vnode.anchor = createComment(`]`)), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */\n ? `(text)`\n : isComment(node) && node.data === '['\n ? `(start of fragment)`\n : ``);\n vnode.el = null;\n if (isFragment) {\n // remove excessive fragment nodes\n const end = locateClosingAsyncAnchor(node);\n while (true) {\n const next = nextSibling(node);\n if (next && next !== end) {\n remove(next);\n }\n else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n return next;\n };\n const locateClosingAsyncAnchor = (node) => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === '[')\n match++;\n if (node.data === ']') {\n if (match === 0) {\n return nextSibling(node);\n }\n else {\n match--;\n }\n }\n }\n }\n return node;\n };\n return [hydrate, hydrateNode];\n}\n\n/* eslint-disable no-restricted-globals */\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\n\n/**\n * This is only called in esm-bundler builds.\n * It is called when a renderer is created, in `baseCreateRenderer` so that\n * importing runtime-core is side-effects free.\n *\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if ((process.env.NODE_ENV !== 'production') && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, ` +\n `which expects these compile-time feature flags to be globally injected ` +\n `via the bundler config in order to get better tree-shaking in the ` +\n `production bundle.\\n\\n` +\n `For more details, see https://link.vuejs.org/feature-flags.`);\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense\n ;\n/**\n * The createRenderer function accepts two generic arguments:\n * HostNode and HostElement, corresponding to Node and Element types in the\n * host environment. For example, for runtime-dom, HostNode would be the DOM\n * `Node` interface and HostElement would be the DOM `Element` interface.\n *\n * Custom renderers can pass in the platform specific types like this:\n *\n * ``` js\n * const { render, createApp } = createRenderer<Node, Element>({\n * patchProp,\n * ...nodeOps\n * })\n * ```\n */\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\n// Separate API for creating hydration-enabled renderer.\n// Hydration logic is only used when calling this function, making it\n// tree-shakable.\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\n// implementation\nfunction baseCreateRenderer(options, createHydrationFns) {\n // compile-time feature flags check\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;\n // Note: functions inside this closure should use `const xxx = () => {}`\n // style in order to prevent being inlined by minifiers.\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = (process.env.NODE_ENV !== 'production') && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n // patching & not same type, unmount old tree\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, isSVG);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n patchStaticNode(n1, n2, container, isSVG);\n }\n break;\n case Fragment:\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid VNode type:', type, `(${typeof type})`);\n }\n }\n // set ref\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\n }\n else {\n const el = (n2.el = n1.el);\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\n }\n else {\n // there's no support for dynamic comments\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, isSVG) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n };\n /**\n * Dev / HMR only\n */\n const patchStaticNode = (n1, n2, container, isSVG) => {\n // static nodes are only patched during dev for HMR\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n // remove existing\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\n }\n else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n isSVG = isSVG || n2.type === 'svg';\n if (n1 == null) {\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { type, props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n // mount children first, since some props may rely on child content\n // being already rendered, e.g. `<select value>`\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(el, vnode.children);\n }\n else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n for (const key in props) {\n if (key !== 'value' && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n /**\n * Special case for setting value on DOM elements:\n * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)\n * - it needs to be forced (#1471)\n * #2353 proposes adding another renderer option to configure this, but\n * the properties affects are so finite it is worth special casing it\n * here to reduce the complexity. (Special casing it also should not\n * affect non-DOM renderers)\n */\n if ('value' in props) {\n hostPatchProp(el, 'value', null, props.value);\n }\n if ((vnodeHook = props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n // scopeId\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n Object.defineProperty(el, '__vnode', {\n value: vnode,\n enumerable: false\n });\n Object.defineProperty(el, '__vueParentComponent', {\n value: parentComponent,\n enumerable: false\n });\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\n // #1689 For inside suspense + suspense resolved case, just call it\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\n transition &&\n !transition.persisted;\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) ||\n needCallTransitionHooks ||\n dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if ((process.env.NODE_ENV !== 'production') &&\n subTree.patchFlag > 0 &&\n subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n subTree =\n filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = (children[i] = optimized\n ? cloneIfMounted(children[i])\n : normalizeVNode(children[i]));\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const el = (n2.el = n1.el);\n let { patchFlag, dynamicChildren, dirs } = n2;\n // #1426 take the old vnode's patch flag into account since user may clone a\n // compiler-generated vnode, which de-opts to FULL_PROPS\n patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n // disable recurse in beforeUpdate hooks\n parentComponent && toggleRecurse(parentComponent, false);\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // HMR updated, force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\n if (dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n }\n else if (!optimized) {\n // full diff\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n }\n if (patchFlag > 0) {\n // the presence of a patchFlag means this element's render code was\n // generated by the compiler and can take the fast path.\n // in this path old node and new node are guaranteed to have the same shape\n // (i.e. at the exact same position in the source template)\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n // element props contain dynamic keys, full diff needed\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n else {\n // class\n // this flag is matched when the element has dynamic class bindings.\n if (patchFlag & 2 /* PatchFlags.CLASS */) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\n }\n }\n // style\n // this flag is matched when the element has dynamic style bindings\n if (patchFlag & 4 /* PatchFlags.STYLE */) {\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\n }\n // props\n // This flag is matched when the element has dynamic prop/attr bindings\n // other than class and style. The keys of dynamic prop/attrs are saved for\n // faster iteration.\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\n // bail out and go through a full diff because we need to unset the old key\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // if the flag is present then dynamicProps must be non-null\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n // #1471 force patch value\n if (next !== prev || key === 'value') {\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n }\n // text\n // This flag is matched when the element has only dynamic text children.\n if (patchFlag & 1 /* PatchFlags.TEXT */) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n }\n else if (!optimized && dynamicChildren == null) {\n // unoptimized, full diff\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\n }, parentSuspense);\n }\n };\n // The fast path for blocks.\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n // Determine the container (parent element) for the patch.\n const container = \n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el &&\n // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment ||\n // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) ||\n // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))\n ? hostParentNode(oldVNode.el)\n : // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer;\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n for (const key in newProps) {\n // empty string is not valid prop\n if (isReservedProp(key))\n continue;\n const next = newProps[key];\n const prev = oldProps[key];\n // defer patching value\n if (next !== prev && key !== 'value') {\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if ('value' in newProps) {\n hostPatchProp(el, 'value', oldProps.value, newProps.value);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if ((process.env.NODE_ENV !== 'production') &&\n // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {\n // HMR updated / Dev root fragment (w/ comments), force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n // check if this is a slot fragment with :slotted scope ids\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n // a fragment can only have array children\n // since they are either generated by the compiler, or implicitly created\n // from arrays.\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n if (patchFlag > 0 &&\n patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&\n dynamicChildren &&\n // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n // a stable fragment (template root or <template v-for>) doesn't need to\n // patch children order, but it may contain dynamicChildren.\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null ||\n (parentComponent && n2 === parentComponent.subTree)) {\n traverseStaticChildren(n1, n2, true /* shallow */);\n }\n }\n else {\n // keyed / unkeyed, or manual fragments.\n // for keyed & unkeyed, since they are compiler generated from v-for,\n // each child is guaranteed to be a block so the fragment will never\n // have dynamicChildren.\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n }\n else {\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n }\n }\n else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n // inject renderer internals for keepAlive\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n // resolve props and slots for setup context\n {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `init`);\n }\n }\n // setup() is async. This component relies on async logic to be resolved\n // before proceeding\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n // Give it a placeholder if this is not hydration\n // TODO handle self-defined fallback\n if (!initialVNode.el) {\n const placeholder = (instance.subTree = createVNode(Comment));\n processCommentNode(null, placeholder, container, anchor);\n }\n return;\n }\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = (n2.component = n1.component);\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep &&\n !instance.asyncResolved) {\n // async & still pending - just update props and slots\n // since the component's reactive effect for render isn't set-up yet\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n return;\n }\n else {\n // normal update\n instance.next = n2;\n // in case the child component is also queued, remove it to avoid\n // double updating the same child component in the same flush.\n invalidateJob(instance.update);\n // instance.update is the reactive effect.\n instance.update();\n }\n }\n else {\n // no update needed. just copy over properties\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n // beforeMount hook\n if (bm) {\n invokeArrayFns(bm);\n }\n // onVnodeBeforeMount\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n // vnode has adopted host node - perform hydration instead of mount.\n const hydrateSubTree = () => {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(el, instance.subTree, instance, parentSuspense, null);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n // note: we are moving the render call into an async callback,\n // which means it won't track dependencies - but it's ok because\n // a server-rendered async wrapper is already in resolved state\n // and it will never need to change.\n () => !instance.isUnmounted && hydrateSubTree());\n }\n else {\n hydrateSubTree();\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const subTree = (instance.subTree = renderComponentRoot(instance));\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n // mounted hook\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n // onVnodeMounted\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n }\n // activated hook for keep-alive roots.\n // #1742 activated hook must be accessed after first render\n // since the hook may be injected by a child keep-alive\n if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||\n (parent &&\n isAsyncWrapper(parent.vnode) &&\n parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n // #2458: deference mount-only object parameters to prevent memleaks\n initialVNode = container = anchor = null;\n }\n else {\n // updateComponent\n // This is triggered by mutation of component's own state (next: null)\n // OR parent calling processComponent (next: VNode)\n let { next, bu, u, parent, vnode } = instance;\n let originNext = next;\n let vnodeHook;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(next || instance.vnode);\n }\n // Disallow component effect recursion during pre-lifecycle hooks.\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n else {\n next = vnode;\n }\n // beforeUpdate hook\n if (bu) {\n invokeArrayFns(bu);\n }\n // onVnodeBeforeUpdate\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n // render\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(prevTree, nextTree, \n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el), \n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n // self-triggered update. In case of HOC, update parent component\n // vnode el. HOC is indicated by parent instance's subTree pointing\n // to child component's vnode\n updateHOCHostEl(instance, nextTree.el);\n }\n // updated hook\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n // onVnodeUpdated\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n }\n };\n // create reactive effect for rendering\n const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope\n ));\n const update = (instance.update = () => effect.run());\n update.id = instance.uid;\n // allowRecurse\n // #1801, #2043 component render effects should allow recursive updates\n toggleRecurse(instance, true);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = instance.rtc\n ? e => invokeArrayFns(instance.rtc, e)\n : void 0;\n effect.onTrigger = instance.rtg\n ? e => invokeArrayFns(instance.rtg, e)\n : void 0;\n update.ownerInstance = instance;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n // props update may have triggered pre-flush watchers.\n // flush them before the render update.\n flushPreFlushCbs();\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n // fast path\n if (patchFlag > 0) {\n if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {\n // this could be either fully-keyed or mixed (some keyed some not)\n // presence of patchFlag means children are guaranteed to be arrays\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {\n // unkeyed\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n }\n // children has 3 possibilities: text, array or no children.\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n // text children fast path\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n }\n else {\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // prev children was array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // two arrays, cannot assume anything, do full diff\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n // no new children, just unmount old\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n }\n else {\n // prev children was text OR null\n // new children is array OR null\n if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(container, '');\n }\n // mount new if array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n if (oldLength > newLength) {\n // remove old\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n }\n else {\n // mount new\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n }\n };\n // can be all-keyed or mixed\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1; // prev ending index\n let e2 = l2 - 1; // next ending index\n // 1. sync from start\n // (a b) c\n // (a b) d e\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n i++;\n }\n // 2. sync from end\n // a (b c)\n // d e (b c)\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = (c2[e2] = optimized\n ? cloneIfMounted(c2[e2])\n : normalizeVNode(c2[e2]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n e1--;\n e2--;\n }\n // 3. common sequence + mount\n // (a b)\n // (a b) c\n // i = 2, e1 = 1, e2 = 2\n // (a b)\n // c (a b)\n // i = 0, e1 = -1, e2 = 0\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(null, (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n i++;\n }\n }\n }\n // 4. common sequence + unmount\n // (a b) c\n // (a b)\n // i = 2, e1 = 2, e2 = 1\n // a (b c)\n // (b c)\n // i = 0, e1 = 0, e2 = -1\n else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n }\n // 5. unknown sequence\n // [i ... e1 + 1]: a b [c d e] f g\n // [i ... e2 + 1]: a b [e d c h] f g\n // i = 2, e1 = 4, e2 = 5\n else {\n const s1 = i; // prev starting index\n const s2 = i; // next starting index\n // 5.1 build key:index map for newChildren\n const keyToNewIndexMap = new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (nextChild.key != null) {\n if ((process.env.NODE_ENV !== 'production') && keyToNewIndexMap.has(nextChild.key)) {\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n // 5.2 loop through old children left to be patched and try to patch\n // matching nodes & remove nodes that are no longer present\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n // used to track whether any node has moved\n let maxNewIndexSoFar = 0;\n // works as Map<newIndex, oldIndex>\n // Note that oldIndex is offset by +1\n // and oldIndex = 0 is a special value indicating the new node has\n // no corresponding old node.\n // used for determining longest stable subsequence\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++)\n newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n // all new children have been patched so this can only be a removal\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n }\n else {\n // key-less node, try to locate a key-less node of the same type\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 &&\n isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === undefined) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n }\n else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n }\n else {\n moved = true;\n }\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n patched++;\n }\n }\n // 5.3 move and mount\n // generate longest stable subsequence only when nodes have moved\n const increasingNewIndexSequence = moved\n ? getSequence(newIndexToOldIndexMap)\n : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n // looping backwards so that we can use last patched node as anchor\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n // mount new\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (moved) {\n // move if:\n // There is no stable subsequence (e.g. a reverse)\n // OR current node is not among the stable sequence\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2 /* MoveType.REORDER */);\n }\n else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n // single nodes\n const needTransition = moveType !== 2 /* MoveType.REORDER */ &&\n shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition;\n if (needTransition) {\n if (moveType === 0 /* MoveType.ENTER */) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n }\n else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove, performLeave);\n }\n else {\n performLeave();\n }\n }\n }\n else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n // unset ref\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode, true);\n }\n if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n }\n else {\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n }\n else if (dynamicChildren &&\n // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment ||\n (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {\n // fast path for block nodes: only need to unmount dynamic children.\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n }\n else if ((type === Fragment &&\n patchFlag &\n (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||\n (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if ((shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeUnmounted)) ||\n shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs &&\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\n }, parentSuspense);\n }\n };\n const remove = vnode => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if ((process.env.NODE_ENV !== 'production') &&\n vnode.patchFlag > 0 &&\n vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&\n transition &&\n !transition.persisted) {\n vnode.children.forEach(child => {\n if (child.type === Comment) {\n hostRemove(child.el);\n }\n else {\n remove(child);\n }\n });\n }\n else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition &&\n !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n }\n else {\n performLeave();\n }\n }\n else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n // For fragments, directly remove all contained DOM nodes.\n // (fragment child nodes cannot have transition)\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, update, subTree, um } = instance;\n // beforeUnmount hook\n if (bum) {\n invokeArrayFns(bum);\n }\n // stop effects in component scope\n scope.stop();\n // update may be null if a component is unmounted before its async\n // setup has resolved.\n if (update) {\n // so that scheduler will no longer invoke it\n update.active = false;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n // unmounted hook\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n // A component with async dep inside a pending suspense is unmounted before\n // its async dep resolves. This should remove the dep from the suspense, and\n // cause the suspense to resolve immediately if that was the last dep.\n if (parentSuspense &&\n parentSuspense.pendingBranch &&\n !parentSuspense.isUnmounted &&\n instance.asyncDep &&\n !instance.asyncResolved &&\n instance.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = vnode => {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n return vnode.suspense.next();\n }\n return hostNextSibling((vnode.anchor || vnode.el));\n };\n const render = (vnode, container, isSVG) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n }\n else {\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n }\n flushPreFlushCbs();\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(internals);\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\n/**\n * #1156\n * When a component is HMR-enabled, we need to make sure that all static nodes\n * inside a block also inherit the DOM element from the previous tree so that\n * HMR updates (which are full updates) can retrieve the element for patching.\n *\n * #2080\n * Inside keyed `template` fragment static children, if a fragment is moved,\n * the children will always be moved. Therefore, in order to ensure correct move\n * position, el should be inherited from previous nodes.\n */\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n // this is only called in the optimized path so array children are\n // guaranteed to be vnodes\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow)\n traverseStaticChildren(c1, c2);\n }\n // #6852 also inherit for text nodes\n if (c2.type === Text) {\n c2.el = c1.el;\n }\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\n // would have received .el during block patch)\n if ((process.env.NODE_ENV !== 'production') && c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n }\n }\n}\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current renderer does not support string target for Teleports. ` +\n `(missing querySelector renderer option)`);\n return null;\n }\n else {\n const target = select(targetSelector);\n if (!target) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\n `Note the target element must exist before the component is mounted - ` +\n `i.e. the target cannot be rendered by the component itself, and ` +\n `ideally should be outside of the entire Vue component tree.`);\n }\n return target;\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !targetSelector && !isTeleportDisabled(props)) {\n warn(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n // #3302\n // HMR updated, force full diff\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n // insert anchors in the main view\n const placeholder = (n2.el = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport start')\n : createText(''));\n const mainAnchor = (n2.anchor = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport end')\n : createText(''));\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const target = (n2.target = resolveTarget(n2.props, querySelector));\n const targetAnchor = (n2.targetAnchor = createText(''));\n if (target) {\n insert(targetAnchor, target);\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\n isSVG = isSVG || isTargetSVG(target);\n }\n else if ((process.env.NODE_ENV !== 'production') && !disabled) {\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\n }\n const mount = (container, anchor) => {\n // Teleport *always* has Array children. This is enforced in both the\n // compiler and vnode children normalization.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n }\n else if (target) {\n mount(target, targetAnchor);\n }\n }\n else {\n // update content\n n2.el = n1.el;\n const mainAnchor = (n2.anchor = n1.anchor);\n const target = (n2.target = n1.target);\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n isSVG = isSVG || isTargetSVG(target);\n if (dynamicChildren) {\n // fast path when the teleport happens to be a block root\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);\n // even in block tree mode we need to make sure all root-level nodes\n // in the teleport inherit previous DOM references so that they can\n // be moved in future patches.\n traverseStaticChildren(n1, n2, true);\n }\n else if (!optimized) {\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);\n }\n if (disabled) {\n if (!wasDisabled) {\n // enabled -> disabled\n // move into main container\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n else {\n // target changed\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\n if (nextTarget) {\n moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\n }\n }\n else if (wasDisabled) {\n // disabled -> enabled\n // move into teleport target\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n }\n updateCssVars(n2);\n },\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n if (target) {\n hostRemove(targetAnchor);\n }\n // an unmounted teleport should always remove its children if not disabled\n if (doRemove || !isTeleportDisabled(props)) {\n hostRemove(anchor);\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);\n }\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {\n // move target anchor if this is a target change.\n if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n // if this is a re-order and teleport is enabled (content is in target)\n // do not move children. So the opposite is: only move children if this\n // is not a reorder, or the teleport is disabled\n if (!isReorder || isTeleportDisabled(props)) {\n // Teleport has either Array children or no children.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);\n }\n }\n }\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\n if (target) {\n // if multiple teleports rendered to the same target element, we need to\n // pick up from where the last teleport finished instead of the first node\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n if (isTeleportDisabled(vnode.props)) {\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);\n vnode.targetAnchor = targetNode;\n }\n else {\n vnode.anchor = nextSibling(node);\n // lookahead until we find the target anchor\n // we cannot rely on return value of hydrateChildren() because there\n // could be nested teleports\n let targetAnchor = targetNode;\n while (targetAnchor) {\n targetAnchor = nextSibling(targetAnchor);\n if (targetAnchor &&\n targetAnchor.nodeType === 8 &&\n targetAnchor.data === 'teleport anchor') {\n vnode.targetAnchor = targetAnchor;\n target._lpa =\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n updateCssVars(vnode);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\n// Force-casted public typing for h and TSX props inference\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n // presence of .ut method indicates owner component uses css vars.\n // code path here can assume browser environment.\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node = vnode.children[0].el;\n while (node !== vnode.targetAnchor) {\n if (node.nodeType === 1)\n node.setAttribute('data-v-owner', ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\n\nconst Fragment = Symbol((process.env.NODE_ENV !== 'production') ? 'Fragment' : undefined);\nconst Text = Symbol((process.env.NODE_ENV !== 'production') ? 'Text' : undefined);\nconst Comment = Symbol((process.env.NODE_ENV !== 'production') ? 'Comment' : undefined);\nconst Static = Symbol((process.env.NODE_ENV !== 'production') ? 'Static' : undefined);\n// Since v-if and v-for are the two possible ways node structure can dynamically\n// change, once we consider v-if branches and each v-for fragment a block, we\n// can divide a template into nested blocks, and within each block the node\n// structure would be stable. This allows us to skip most children diffing\n// and only worry about the dynamic nodes (indicated by patch flags).\nconst blockStack = [];\nlet currentBlock = null;\n/**\n * Open a block.\n * This must be called before `createBlock`. It cannot be part of `createBlock`\n * because the children of the block are evaluated before `createBlock` itself\n * is called. The generated code typically looks like this:\n *\n * ```js\n * function render() {\n * return (openBlock(),createBlock('div', null, [...]))\n * }\n * ```\n * disableTracking is true when creating a v-for fragment block, since a v-for\n * fragment always diffs its children.\n *\n * @private\n */\nfunction openBlock(disableTracking = false) {\n blockStack.push((currentBlock = disableTracking ? null : []));\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\n// Whether we should be tracking dynamic child nodes inside a block.\n// Only tracks when this value is > 0\n// We are not using a simple boolean because this value may need to be\n// incremented/decremented by nested usage of v-once (see below)\nlet isBlockTreeEnabled = 1;\n/**\n * Block tracking sometimes needs to be disabled, for example during the\n * creation of a tree that needs to be cached by v-once. The compiler generates\n * code like this:\n *\n * ``` js\n * _cache[1] || (\n * setBlockTracking(-1),\n * _cache[1] = createVNode(...),\n * setBlockTracking(1),\n * _cache[1]\n * )\n * ```\n *\n * @private\n */\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n // save current block children on the block vnode\n vnode.dynamicChildren =\n isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n // close block\n closeBlock();\n // a block is always going to be patched, so track it as a child of its\n // parent block\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\n/**\n * @private\n */\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));\n}\n/**\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\n * A block root keeps track of dynamic nodes within the block in the\n * `dynamicChildren` array.\n *\n * @private\n */\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if ((process.env.NODE_ENV !== 'production') &&\n n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&\n hmrDirtyComponents.has(n2.type)) {\n // #7042, ensure the vnode being unmounted during HMR\n // bitwise operations to remove keep alive flags\n n1.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n n2.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // HMR only: if the component has been hot-updated, force a reload.\n return false;\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\n/**\n * Internal API for registering an arguments transform for createVNode\n * used for creating stubs in the test-utils\n * It is *internal* but needs to be exposed for test-utils to pick up proper\n * typings\n */\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(...(vnodeArgsTransformer\n ? vnodeArgsTransformer(args, currentRenderingInstance)\n : args));\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n return (ref != null\n ? isString(ref) || isRef(ref) || isFunction(ref)\n ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }\n : ref\n : null);\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n // normalize suspense children\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.normalize(vnode);\n }\n }\n else if (children) {\n // compiled element vnode - if children is passed, only possible types are\n // string or Array.\n vnode.shapeFlag |= isString(children)\n ? 8 /* ShapeFlags.TEXT_CHILDREN */\n : 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n // validate key\n if ((process.env.NODE_ENV !== 'production') && vnode.key !== vnode.key) {\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n // track vnode for block tree\n if (isBlockTreeEnabled > 0 &&\n // avoid a block node from tracking itself\n !isBlockNode &&\n // has current parent block\n currentBlock &&\n // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&\n // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = ((process.env.NODE_ENV !== 'production') ? createVNodeWithArgsTransform : _createVNode);\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if ((process.env.NODE_ENV !== 'production') && !type) {\n warn(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n // createVNode receiving an existing vnode. This happens in cases like\n // <component :is=\"vnode\"/>\n // #2078 make sure to merge refs during the clone instead of overwriting it\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n }\n else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2 /* PatchFlags.BAIL */;\n return cloned;\n }\n // class component normalization.\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n // class & style normalization.\n if (props) {\n // for reactive or proxy objects, we need to clone it to enable mutation.\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n // reactive state objects need to be cloned since they are likely to be\n // mutated\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n // encode the vnode type information into a bitmap\n const shapeFlag = isString(type)\n ? 1 /* ShapeFlags.ELEMENT */\n : isSuspense(type)\n ? 128 /* ShapeFlags.SUSPENSE */\n : isTeleport(type)\n ? 64 /* ShapeFlags.TELEPORT */\n : isObject(type)\n ? 4 /* ShapeFlags.STATEFUL_COMPONENT */\n : isFunction(type)\n ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */\n : 0;\n if ((process.env.NODE_ENV !== 'production') && shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {\n type = toRaw(type);\n warn(`Vue received a Component which was made a reactive object. This can ` +\n `lead to unnecessary performance overhead, and should be avoided by ` +\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\n }\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props\n ? extend({}, props)\n : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n // This is intentionally NOT using spread or extend to avoid the runtime\n // key enumeration cost.\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref\n ? isArray(ref)\n ? ref.concat(normalizeRef(extraProps))\n : [ref, normalizeRef(extraProps)]\n : normalizeRef(extraProps)\n : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: (process.env.NODE_ENV !== 'production') && patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)\n ? children.map(deepCloneVNode)\n : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment\n ? patchFlag === -1 // hoisted node\n ? 16 /* PatchFlags.FULL_PROPS */\n : patchFlag | 16 /* PatchFlags.FULL_PROPS */\n : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx\n };\n return cloned;\n}\n/**\n * Dev only, for HMR of hoisted vnodes reused in v-for\n * https://github.com/vitejs/vite/issues/2022\n */\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\n/**\n * @private\n */\nfunction createTextVNode(text = ' ', flag = 0) {\n return createVNode(Text, null, text, flag);\n}\n/**\n * @private\n */\nfunction createStaticVNode(content, numberOfNodes) {\n // A static vnode can contain multiple stringified elements, and the number\n // of elements is necessary for hydration.\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\n/**\n * @private\n */\nfunction createCommentVNode(text = '', \n// when used as the v-else branch, the comment node must be created as a\n// block to ensure correct updates.\nasBlock = false) {\n return asBlock\n ? (openBlock(), createBlock(Comment, null, text))\n : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === 'boolean') {\n // empty placeholder\n return createVNode(Comment);\n }\n else if (isArray(child)) {\n // fragment\n return createVNode(Fragment, null, \n // #3666, avoid reference pollution when reusing vnode\n child.slice());\n }\n else if (typeof child === 'object') {\n // already vnode, this should be the most common since compiled templates\n // always produce all-vnode children arrays\n return cloneIfMounted(child);\n }\n else {\n // strings and numbers\n return createVNode(Text, null, String(child));\n }\n}\n// optimized normalization for template-compiled render fns\nfunction cloneIfMounted(child) {\n return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||\n child.memo\n ? child\n : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n }\n else if (isArray(children)) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n else if (typeof children === 'object') {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {\n // Normalize slot to plain children for plain element and Teleport\n const slot = children.default;\n if (slot) {\n // _c marker is added by withCtx() indicating this is a compiled slot\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n }\n else {\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n }\n else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {\n // a child component receives forwarded slots from the parent.\n // its slot type is determined by its parent's slot type.\n if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {\n children._ = 1 /* SlotFlags.STABLE */;\n }\n else {\n children._ = 2 /* SlotFlags.DYNAMIC */;\n vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;\n }\n }\n }\n }\n else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n }\n else {\n children = String(children);\n // force teleport children to array so it can be moved around\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n children = [createTextVNode(children)];\n }\n else {\n type = 8 /* ShapeFlags.TEXT_CHILDREN */;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === 'class') {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n }\n else if (key === 'style') {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n }\n else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming &&\n existing !== incoming &&\n !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing\n ? [].concat(existing, incoming)\n : incoming;\n }\n }\n else if (key !== '') {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n // inherit parent app context - or - if root, adopt from root vnode\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid$1++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n next: null,\n subTree: null,\n effect: null,\n update: null,\n scope: new EffectScope(true /* detached */),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ctx = createDevRenderContext(instance);\n }\n else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit$1.bind(null, instance);\n // apply custom element special handling\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance) => {\n currentInstance = instance;\n instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n currentInstance = null;\n};\nconst isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');\nfunction validateComponentName(name, config) {\n const appIsNativeTag = config.isNativeTag || NO;\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isInSSRComponentSetup = isSSR;\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children);\n const setupResult = isStateful\n ? setupStatefulComponent(instance, isSSR)\n : undefined;\n isInSSRComponentSetup = false;\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if ((process.env.NODE_ENV !== 'production')) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn(`\"compilerOptions\" is only supported when using a build of Vue that ` +\n `includes the runtime compiler. Since you are using a runtime-only ` +\n `build, the options should be passed via your build tool config instead.`);\n }\n }\n // 0. create render proxy property access cache\n instance.accessCache = Object.create(null);\n // 1. create public instance / render proxy\n // also mark it raw so it's never observed\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if ((process.env.NODE_ENV !== 'production')) {\n exposePropsOnRenderContext(instance);\n }\n // 2. call setup()\n const { setup } = Component;\n if (setup) {\n const setupContext = (instance.setupContext =\n setup.length > 1 ? createSetupContext(instance) : null);\n setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [(process.env.NODE_ENV !== 'production') ? shallowReadonly(instance.props) : instance.props, setupContext]);\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n // return the promise so server-renderer can wait on it\n return setupResult\n .then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n })\n .catch(e => {\n handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n });\n }\n else {\n // async setup returned Promise.\n // bail here and wait for re-entry.\n instance.asyncDep = setupResult;\n if ((process.env.NODE_ENV !== 'production') && !instance.suspense) {\n const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';\n warn(`Component <${name}>: setup function returned a promise, but no ` +\n `<Suspense> boundary was found in the parent component tree. ` +\n `A component with async setup() must be nested in a <Suspense> ` +\n `in order to be rendered.`);\n }\n }\n }\n else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n }\n else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n // setup returned an inline render function\n if (instance.type.__ssrInlineRender) {\n // when the function's name is `ssrRender` (compiled by SFC inline mode),\n // set it as ssrRender instead.\n instance.ssrRender = setupResult;\n }\n else {\n instance.render = setupResult;\n }\n }\n else if (isObject(setupResult)) {\n if ((process.env.NODE_ENV !== 'production') && isVNode(setupResult)) {\n warn(`setup() should not return VNodes directly - ` +\n `return a render function instead.`);\n }\n // setup returned bindings.\n // assuming a render function compiled from template is present.\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if ((process.env.NODE_ENV !== 'production')) {\n exposeSetupStateOnRenderContext(instance);\n }\n }\n else if ((process.env.NODE_ENV !== 'production') && setupResult !== undefined) {\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\n/**\n * For runtime-dom to register the compiler.\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\n */\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = i => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\n// dev only\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n // template / render function normalization\n // could be already set when returned from setup()\n if (!instance.render) {\n // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation\n // is done by server-renderer\n if (!isSSR && compile && !Component.render) {\n const template = Component.template ||\n resolveMergedOptions(instance).template;\n if (template) {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(extend({\n isCustomElement,\n delimiters\n }, compilerOptions), componentCompilerOptions);\n Component.render = compile(template, finalCompilerOptions);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = (Component.render || NOOP);\n // for runtime-compiled render functions using `with` blocks, the render\n // proxy used needs a different `has` handler which is more performant and\n // also only allows a whitelist of globals to fallthrough.\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n // support for 2.x options\n if (__VUE_OPTIONS_API__ && !(false )) {\n setCurrentInstance(instance);\n pauseTracking();\n applyOptions(instance);\n resetTracking();\n unsetCurrentInstance();\n }\n // warn missing template/render\n // the runtime compilation of template in SSR is done by server-render\n if ((process.env.NODE_ENV !== 'production') && !Component.render && instance.render === NOOP && !isSSR) {\n /* istanbul ignore if */\n if (!compile && Component.template) {\n warn(`Component provided template option but ` +\n `runtime compilation is not supported in this build of Vue.` +\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\n ) /* should not happen */);\n }\n else {\n warn(`Component is missing template or render function.`);\n }\n }\n}\nfunction createAttrsProxy(instance) {\n return new Proxy(instance.attrs, (process.env.NODE_ENV !== 'production')\n ? {\n get(target, key) {\n markAttrsAccessed();\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n },\n set() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n }\n }\n : {\n get(target, key) {\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = exposed => {\n if ((process.env.NODE_ENV !== 'production') && instance.exposed) {\n warn(`expose() should be called only once per setup().`);\n }\n instance.exposed = exposed || {};\n };\n let attrs;\n if ((process.env.NODE_ENV !== 'production')) {\n // We use getters in dev in case libs like test-utils overwrite instance\n // properties (overwrites should not be done in prod)\n return Object.freeze({\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n get slots() {\n return shallowReadonly(instance.slots);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n }\n else {\n return {\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return (instance.exposeProxy ||\n (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n })));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component)\n ? Component.displayName || Component.name\n : Component.name || (includeInferred && Component.__name);\n}\n/* istanbul ignore next */\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n // try to infer the name based on reverse resolution\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name =\n inferFromRegistry(instance.components ||\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && '__vccOpts' in value;\n}\n\nconst computed = ((getterOrOptions, debugOptions) => {\n // @ts-ignore\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n});\n\n// dev only\nconst warnRuntimeUsage = (method) => warn(`${method}() is a compiler-hint helper that is only usable inside ` +\n `<script setup> of a single file component. Its arguments should be ` +\n `compiled away and passing it at runtime has no effect.`);\n// implementation\nfunction defineProps() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\n// implementation\nfunction defineEmits() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\n/**\n * Vue `<script setup>` compiler macro for declaring a component's exposed\n * instance properties when it is accessed by a parent component via template\n * refs.\n *\n * `<script setup>` components are closed by default - i.e. variables inside\n * the `<script setup>` scope is not exposed to parent unless explicitly exposed\n * via `defineExpose`.\n *\n * This is only usable inside `<script setup>`, is compiled away in the\n * output and should **not** be actually called at runtime.\n */\nfunction defineExpose(exposed) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\n/**\n * Vue `<script setup>` compiler macro for providing props default values when\n * using type-based `defineProps` declaration.\n *\n * Example usage:\n * ```ts\n * withDefaults(defineProps<{\n * size?: number\n * labels?: string[]\n * }>(), {\n * size: 3,\n * labels: () => ['default label']\n * })\n * ```\n *\n * This is only usable inside `<script setup>`, is compiled away in the output\n * and should **not** be actually called at runtime.\n */\nfunction withDefaults(props, defaults) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !i) {\n warn(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n const props = isArray(raw)\n ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})\n : raw;\n for (const key in defaults) {\n const opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n props[key] = { type: opt, default: defaults[key] };\n }\n else {\n opt.default = defaults[key];\n }\n }\n else if (opt === null) {\n props[key] = { default: defaults[key] };\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`props default key \"${key}\" has no corresponding declaration.`);\n }\n }\n return props;\n}\n/**\n * Used to create a proxy for the rest element when destructuring props with\n * defineProps().\n * @internal\n */\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\n/**\n * `<script setup>` helper for persisting the current instance context over\n * async/await flows.\n *\n * `@vue/compiler-sfc` converts the following:\n *\n * ```ts\n * const x = await foo()\n * ```\n *\n * into:\n *\n * ```ts\n * let __temp, __restore\n * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)\n * ```\n * @internal\n */\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !ctx) {\n warn(`withAsyncContext called without active current instance. ` +\n `This is likely a bug.`);\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch(e => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\n// Actual implementation\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n // single vnode without props\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n // props without children\n return createVNode(type, propsOrChildren);\n }\n else {\n // omit props\n return createVNode(type, null, propsOrChildren);\n }\n }\n else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n }\n else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nconst ssrContextKey = Symbol((process.env.NODE_ENV !== 'production') ? `ssrContext` : ``);\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Server rendering context not provided. Make sure to only call ` +\n `useSSRContext() conditionally in the server build.`);\n }\n return ctx;\n }\n};\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\n\nfunction initCustomFormatter() {\n /* eslint-disable no-restricted-globals */\n if (!(process.env.NODE_ENV !== 'production') || typeof window === 'undefined') {\n return;\n }\n const vueStyle = { style: 'color:#3ba776' };\n const numberStyle = { style: 'color:#0b1bc9' };\n const stringStyle = { style: 'color:#b62e24' };\n const keywordStyle = { style: 'color:#9d288c' };\n // custom formatter for Chrome\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n const formatter = {\n header(obj) {\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return ['div', vueStyle, `VueInstance`];\n }\n else if (isRef(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, genRefFlag(obj)],\n '<',\n formatValue(obj.value),\n `>`\n ];\n }\n else if (isReactive(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],\n '<',\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n }\n else if (isReadonly(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],\n '<',\n formatValue(obj),\n '>'\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n 'div',\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock('props', toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('setup', instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('data', toRaw(instance.data)));\n }\n const computed = extractKeys(instance, 'computed');\n if (computed) {\n blocks.push(createInstanceBlock('computed', computed));\n }\n const injected = extractKeys(instance, 'inject');\n if (injected) {\n blocks.push(createInstanceBlock('injected', injected));\n }\n blocks.push([\n 'div',\n {},\n [\n 'span',\n {\n style: keywordStyle.style + ';opacity:0.66'\n },\n '$ (internal): '\n ],\n ['object', { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return ['span', {}];\n }\n return [\n 'div',\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\n [\n 'div',\n {\n style: 'color:#476582'\n },\n type\n ],\n [\n 'div',\n {\n style: 'padding-left:1.25em'\n },\n ...Object.keys(target).map(key => {\n return [\n 'div',\n {},\n ['span', keywordStyle, key + ': '],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === 'number') {\n return ['span', numberStyle, v];\n }\n else if (typeof v === 'string') {\n return ['span', stringStyle, JSON.stringify(v)];\n }\n else if (typeof v === 'boolean') {\n return ['span', keywordStyle, v];\n }\n else if (isObject(v)) {\n return ['object', { object: asRaw ? toRaw(v) : v }];\n }\n else {\n return ['span', stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if ((isArray(opts) && opts.includes(key)) ||\n (isObject(opts) && key in opts)) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n }\n else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n // shallow clone\n ret.memo = memo.slice();\n return (cache[index] = ret);\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n // make sure to let parent block track it when returning cached\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\n// Core API ------------------------------------------------------------------\nconst version = \"3.2.45\";\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode,\n normalizeVNode\n};\n/**\n * SSR utils for \\@vue/server-renderer. Only exposed in ssr-possible builds.\n * @internal\n */\nconst ssrUtils = (_ssrUtils );\n/**\n * @internal only exposed in compat builds\n */\nconst resolveFilter = null;\n/**\n * @internal only exposed in compat builds.\n */\nconst compatUtils = (null);\n\nexport { BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n", "import { warn, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, createVNode, getCurrentInstance, watchPostEffect, onMounted, onUnmounted, Fragment, Static, h, BaseTransition, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, createRenderer, isRuntimeOnly, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { isString, isArray, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isOn, isModelListener, isFunction, camelize as camelize$1, toNumber, extend, EMPTY_OBJ, isObject, invokeArrayFns, looseIndexOf, isSet, looseEqual, isHTMLTag, isSVGTag } from '@vue/shared';\n\nconst svgNS = 'http://www.w3.org/2000/svg';\nconst doc = (typeof document !== 'undefined' ? document : null);\nconst templateContainer = doc && /*#__PURE__*/ doc.createElement('template');\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: child => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, isSVG, is, props) => {\n const el = isSVG\n ? doc.createElementNS(svgNS, tag)\n : doc.createElement(tag, is ? { is } : undefined);\n if (tag === 'select' && props && props.multiple != null) {\n el.setAttribute('multiple', props.multiple);\n }\n return el;\n },\n createText: text => doc.createTextNode(text),\n createComment: text => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: node => node.parentNode,\n nextSibling: node => node.nextSibling,\n querySelector: selector => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, '');\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, isSVG, start, end) {\n // <parent> before | first ... last | anchor </parent>\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n // #5308 can only take cached path if:\n // - has a single root node\n // - nextSibling info is still available\n if (start && (start === end || start.nextSibling)) {\n // cached\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling))\n break;\n }\n }\n else {\n // fresh insert\n templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;\n const template = templateContainer.content;\n if (isSVG) {\n // remove outer svg wrapper\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\n// compiler should normalize class + :class bindings on the same element\n// into a single binding ['staticClass', dynamic]\nfunction patchClass(el, value, isSVG) {\n // directly setting className should be faster than setAttribute in theory\n // if this is an element during a transition, take the temporary transition\n // classes into account.\n const transitionClasses = el._vtc;\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' ');\n }\n if (value == null) {\n el.removeAttribute('class');\n }\n else if (isSVG) {\n el.setAttribute('class', value);\n }\n else {\n el.className = value;\n }\n}\n\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n if (next && !isCssString) {\n for (const key in next) {\n setStyle(style, key, next[key]);\n }\n if (prev && !isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, '');\n }\n }\n }\n }\n else {\n const currentDisplay = style.display;\n if (isCssString) {\n if (prev !== next) {\n style.cssText = next;\n }\n }\n else if (prev) {\n el.removeAttribute('style');\n }\n // indicates that the `display` of the element is controlled by `v-show`,\n // so we always keep the current `display` value regardless of the `style`\n // value, thus handing over control to `v-show`.\n if ('_vod' in el) {\n style.display = currentDisplay;\n }\n }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach(v => setStyle(style, name, v));\n }\n else {\n if (val == null)\n val = '';\n if ((process.env.NODE_ENV !== 'production')) {\n if (semicolonRE.test(val)) {\n warn(`Unexpected semicolon at the end of '${name}' style value: '${val}'`);\n }\n }\n if (name.startsWith('--')) {\n // custom property definition\n style.setProperty(name, val);\n }\n else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n // !important\n style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important');\n }\n else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = ['Webkit', 'Moz', 'ms'];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== 'filter' && name in style) {\n return (prefixCache[rawName] = name);\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return (prefixCache[rawName] = prefixed);\n }\n }\n return rawName;\n}\n\nconst xlinkNS = 'http://www.w3.org/1999/xlink';\nfunction patchAttr(el, key, value, isSVG, instance) {\n if (isSVG && key.startsWith('xlink:')) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n }\n else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n }\n else {\n // note we are only checking boolean attributes that don't have a\n // corresponding dom prop of the same name here.\n const isBoolean = isSpecialBooleanAttr(key);\n if (value == null || (isBoolean && !includeBooleanAttr(value))) {\n el.removeAttribute(key);\n }\n else {\n el.setAttribute(key, isBoolean ? '' : value);\n }\n }\n}\n\n// __UNSAFE__\n// functions. The user is responsible for using them with only trusted content.\nfunction patchDOMProp(el, key, value, \n// the following args are passed only due to potential innerHTML/textContent\n// overriding existing VNodes, in which case the old tree must be properly\n// unmounted.\nprevChildren, parentComponent, parentSuspense, unmountChildren) {\n if (key === 'innerHTML' || key === 'textContent') {\n if (prevChildren) {\n unmountChildren(prevChildren, parentComponent, parentSuspense);\n }\n el[key] = value == null ? '' : value;\n return;\n }\n if (key === 'value' &&\n el.tagName !== 'PROGRESS' &&\n // custom elements may use _value internally\n !el.tagName.includes('-')) {\n // store value as _value as well since\n // non-string values will be stringified.\n el._value = value;\n const newValue = value == null ? '' : value;\n if (el.value !== newValue ||\n // #4956: always set for OPTION elements because its value falls back to\n // textContent if no value attribute is present. And setting .value for\n // OPTION has no side effect\n el.tagName === 'OPTION') {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n return;\n }\n let needRemove = false;\n if (value === '' || value == null) {\n const type = typeof el[key];\n if (type === 'boolean') {\n // e.g. <select multiple> compiles to { multiple: '' }\n value = includeBooleanAttr(value);\n }\n else if (value == null && type === 'string') {\n // e.g. <div :id=\"null\">\n value = '';\n needRemove = true;\n }\n else if (type === 'number') {\n // e.g. <img :width=\"null\">\n value = 0;\n needRemove = true;\n }\n }\n // some properties perform value validation and throw,\n // some properties has getter, no setter, will error in 'use strict'\n // eg. <select :type=\"null\"></select> <select :willValidate=\"null\"></select>\n try {\n el[key] = value;\n }\n catch (e) {\n // do not warn if value is auto-coerced from nullish values\n if ((process.env.NODE_ENV !== 'production') && !needRemove) {\n warn(`Failed setting prop \"${key}\" on <${el.tagName.toLowerCase()}>: ` +\n `value ${value} is invalid.`, e);\n }\n }\n needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n // vei = vue event invokers\n const invokers = el._vei || (el._vei = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n // patch\n existingInvoker.value = nextValue;\n }\n else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n // add\n const invoker = (invokers[rawName] = createInvoker(nextValue, instance));\n addEventListener(el, name, invoker, options);\n }\n else if (existingInvoker) {\n // remove\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = undefined;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while ((m = name.match(optionsModifierRE))) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === ':' ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\n// To avoid the overhead of repeatedly calling Date.now(), we cache\n// and use the same timestamp for all event listeners attached in the same tick.\nlet cachedNow = 0;\nconst p = /*#__PURE__*/ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => (cachedNow = 0)), (cachedNow = Date.now()));\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n // async edge case vuejs/vue#6566\n // inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // this no longer happens for templates in Vue 3, but could still be\n // theoretically possible for hand-written render functions.\n // the solution: we save the timestamp when a handler is attached,\n // and also attach the timestamp to any event that was handled by vue\n // for the first time (to avoid inconsistent event timestamp implementations\n // or events fired from iframes, e.g. #2513)\n // The handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (!e._vts) {\n e._vts = Date.now();\n }\n else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* ErrorCodes.NATIVE_EVENT_HANDLER */, [e]);\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map(fn => (e) => !e._stopped && fn && fn(e));\n }\n else {\n return value;\n }\n}\n\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n if (key === 'class') {\n patchClass(el, nextValue, isSVG);\n }\n else if (key === 'style') {\n patchStyle(el, prevValue, nextValue);\n }\n else if (isOn(key)) {\n // ignore v-model listeners\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n }\n else if (key[0] === '.'\n ? ((key = key.slice(1)), true)\n : key[0] === '^'\n ? ((key = key.slice(1)), false)\n : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\n }\n else {\n // special case for <input v-model type=\"checkbox\"> with\n // :true-value & :false-value\n // store value as dom properties since non-string values will be\n // stringified.\n if (key === 'true-value') {\n el._trueValue = nextValue;\n }\n else if (key === 'false-value') {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n // most keys must be set as attribute on svg elements to work\n // ...except innerHTML & textContent\n if (key === 'innerHTML' || key === 'textContent') {\n return true;\n }\n // or native onclick with function values\n if (key in el && nativeOnRE.test(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n // these are enumerated attrs, however their corresponding DOM properties\n // are actually booleans - this leads to setting it with a string \"false\"\n // value leading it to be coerced to `true`, so we need to always treat\n // them as attributes.\n // Note that `contentEditable` doesn't have this problem: its DOM\n // property is also enumerated string values.\n if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {\n return false;\n }\n // #1787, #2840 form property on form elements is readonly and must be set as\n // attribute.\n if (key === 'form') {\n return false;\n }\n // #1526 <input list> must be set as attribute\n if (key === 'list' && el.tagName === 'INPUT') {\n return false;\n }\n // #2766 <textarea type> must be set as attribute\n if (key === 'type' && el.tagName === 'TEXTAREA') {\n return false;\n }\n // native onclick with string value, must be set as attribute\n if (nativeOnRE.test(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\nfunction defineCustomElement(options, hydrate) {\n const Comp = defineComponent(options);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, hydrate);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\nconst defineSSRCustomElement = ((options) => {\n // @ts-ignore\n return defineCustomElement(options, hydrate);\n});\nconst BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {\n});\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, hydrate) {\n super();\n this._def = _def;\n this._props = _props;\n /**\n * @internal\n */\n this._instance = null;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n if (this.shadowRoot && hydrate) {\n hydrate(this._createVNode(), this.shadowRoot);\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && this.shadowRoot) {\n warn(`Custom element has pre-rendered declarative shadow root but is not ` +\n `defined as hydratable. Use \\`defineSSRCustomElement\\`.`);\n }\n this.attachShadow({ mode: 'open' });\n if (!this._def.__asyncLoader) {\n // for sync component defs we can immediately resolve props\n this._resolveProps(this._def);\n }\n }\n }\n connectedCallback() {\n this._connected = true;\n if (!this._instance) {\n if (this._resolved) {\n this._update();\n }\n else {\n this._resolveDef();\n }\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n render(null, this.shadowRoot);\n this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n this._resolved = true;\n // set initial attrs\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n // watch future attr changes\n new MutationObserver(mutations => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n }).observe(this, { attributes: true });\n const resolve = (def, isAsync = false) => {\n const { props, styles } = def;\n // cast Number-type props set before resolve\n let numberProps;\n if (props && !isArray(props)) {\n for (const key in props) {\n const opt = props[key];\n if (opt === Number || (opt && opt.type === Number)) {\n if (key in this._props) {\n this._props[key] = toNumber(this._props[key]);\n }\n (numberProps || (numberProps = Object.create(null)))[camelize$1(key)] = true;\n }\n }\n }\n this._numberProps = numberProps;\n if (isAsync) {\n // defining getter/setters on prototype\n // for sync defs, this already happened in the constructor\n this._resolveProps(def);\n }\n // apply CSS\n this._applyStyles(styles);\n // initial render\n this._update();\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n asyncDef().then(def => resolve(def, true));\n }\n else {\n resolve(this._def);\n }\n }\n _resolveProps(def) {\n const { props } = def;\n const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n // check if there are props set pre-upgrade or connect\n for (const key of Object.keys(this)) {\n if (key[0] !== '_' && declaredPropKeys.includes(key)) {\n this._setProp(key, this[key], true, false);\n }\n }\n // defining getter/setters on prototype\n for (const key of declaredPropKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val);\n }\n });\n }\n }\n _setAttr(key) {\n let value = this.getAttribute(key);\n const camelKey = camelize$1(key);\n if (this._numberProps && this._numberProps[camelKey]) {\n value = toNumber(value);\n }\n this._setProp(camelKey, value, false);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n if (val !== this._props[key]) {\n this._props[key] = val;\n if (shouldUpdate && this._instance) {\n this._update();\n }\n // reflect\n if (shouldReflect) {\n if (val === true) {\n this.setAttribute(hyphenate(key), '');\n }\n else if (typeof val === 'string' || typeof val === 'number') {\n this.setAttribute(hyphenate(key), val + '');\n }\n else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n }\n }\n }\n _update() {\n render(this._createVNode(), this.shadowRoot);\n }\n _createVNode() {\n const vnode = createVNode(this._def, extend({}, this._props));\n if (!this._instance) {\n vnode.ce = instance => {\n this._instance = instance;\n instance.isCE = true;\n // HMR\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ceReload = newStyles => {\n // always reset styles\n if (this._styles) {\n this._styles.forEach(s => this.shadowRoot.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n this._instance = null;\n this._update();\n };\n }\n const dispatch = (event, args) => {\n this.dispatchEvent(new CustomEvent(event, {\n detail: args\n }));\n };\n // intercept emit\n instance.emit = (event, ...args) => {\n // dispatch both the raw and hyphenated versions of an event\n // to match Vue behavior\n dispatch(event, args);\n if (hyphenate(event) !== event) {\n dispatch(hyphenate(event), args);\n }\n };\n // locate nearest Vue custom element parent for provide/inject\n let parent = this;\n while ((parent =\n parent && (parent.parentNode || parent.host))) {\n if (parent instanceof VueElement) {\n instance.parent = parent._instance;\n instance.provides = parent._instance.provides;\n break;\n }\n }\n };\n }\n return vnode;\n }\n _applyStyles(styles) {\n if (styles) {\n styles.forEach(css => {\n const s = document.createElement('style');\n s.textContent = css;\n this.shadowRoot.appendChild(s);\n // record for HMR\n if ((process.env.NODE_ENV !== 'production')) {\n (this._styles || (this._styles = [])).push(s);\n }\n });\n }\n }\n}\n\nfunction useCssModule(name = '$style') {\n /* istanbul ignore else */\n {\n const instance = getCurrentInstance();\n if (!instance) {\n (process.env.NODE_ENV !== 'production') && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n (process.env.NODE_ENV !== 'production') && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\n/**\n * Runtime helper for SFC's CSS variable injection feature.\n * @private\n */\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n /* istanbul ignore next */\n if (!instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const updateTeleports = (instance.ut = (vars = getter(instance.proxy)) => {\n Array.from(document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)).forEach(node => setVarsOnNode(node, vars));\n });\n const setVars = () => {\n const vars = getter(instance.proxy);\n setVarsOnVNode(instance.subTree, vars);\n updateTeleports(vars);\n };\n watchPostEffect(setVars);\n onMounted(() => {\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n // drill down HOCs until it's a non-component vnode\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n }\n else if (vnode.type === Fragment) {\n vnode.children.forEach(c => setVarsOnVNode(c, vars));\n }\n else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor)\n break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n for (const key in vars) {\n style.setProperty(`--${key}`, vars[key]);\n }\n }\n}\n\nconst TRANSITION = 'transition';\nconst ANIMATION = 'animation';\n// DOM Transition is a higher-order-component based on the platform-agnostic\n// base Transition component, with DOM-specific logic.\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = 'Transition';\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = (Transition.props =\n /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators));\n/**\n * #3227 Incoming hooks may be merged into arrays when wrapping Transition\n * with custom HOCs.\n */\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach(h => h(...args));\n }\n else if (hook) {\n hook(...args);\n }\n};\n/**\n * Check if a hook expects a callback (2nd arg), which means the user\n * intends to explicitly control the end of the transition.\n */\nconst hasExplicitCallback = (hook) => {\n return hook\n ? isArray(hook)\n ? hook.some(h => h.length > 1)\n : hook.length > 1\n : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\n const finishEnter = (el, isAppear, done) => {\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n // force reflow so *-leave-from classes immediately take effect (#2593)\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n nextFrame(() => {\n if (!el._isLeaving) {\n // cancelled\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n }\n else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n }\n else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if ((process.env.NODE_ENV !== 'production'))\n validateDuration(res);\n return res;\n}\nfunction validateDuration(val) {\n if (typeof val !== 'number') {\n warn(`<transition> explicit duration is not a valid number - ` +\n `got ${JSON.stringify(val)}.`);\n }\n else if (isNaN(val)) {\n warn(`<transition> explicit duration is NaN - ` +\n 'the duration expression might be incorrect.');\n }\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.add(c));\n (el._vtc ||\n (el._vtc = new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.remove(c));\n const { _vtc } = el;\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el._vtc = undefined;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = (el._endId = ++endId);\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + 'end';\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n const getStyleProperties = (key) => (styles[key] || '').split(', ');\n const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n }\n else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n }\n else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type =\n timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n const hasTransform = type === TRANSITION &&\n /\\b(transform|all)(,|$)/.test(getStyleProperties(`${TRANSITION}Property`).toString());\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer\n// numbers in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down\n// (i.e. acting as a floor function) causing unexpected behaviors\nfunction toMs(s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n// synchronously force layout to put elements into a certain state\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nconst positionMap = new WeakMap();\nconst newPositionMap = new WeakMap();\nconst TransitionGroupImpl = {\n name: 'TransitionGroup',\n props: /*#__PURE__*/ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n // children is guaranteed to exist after initial render\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || 'v'}-move`;\n if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {\n return;\n }\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n // force reflow to put everything in position\n forceReflow();\n movedChildren.forEach(c => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = '';\n const cb = (el._moveCb = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener('transitionend', cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n el.addEventListener('transitionend', cb);\n });\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = children;\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n if (prevChildren) {\n for (let i = 0; i < prevChildren.length; i++) {\n const child = prevChildren[i];\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n positionMap.set(child, child.el.getBoundingClientRect());\n }\n }\n return createVNode(tag, null, children);\n };\n }\n};\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el._moveCb) {\n el._moveCb();\n }\n if (el._enterCb) {\n el._enterCb();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = '0s';\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n const clone = el.cloneNode();\n if (el._vtc) {\n el._vtc.forEach(cls => {\n cls.split(/\\s+/).forEach(c => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach(c => c && clone.classList.add(c));\n clone.style.display = 'none';\n const container = (root.nodeType === 1 ? root : root.parentNode);\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props['onUpdate:modelValue'] ||\n (false );\n return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event('input'));\n }\n}\n// We are exporting the v-model runtime directly as vnode hooks so that it can\n// be tree-shaken in case v-model is never used.\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n const castToNumber = number || (vnode.props && vnode.props.type === 'number');\n addEventListener(el, lazy ? 'change' : 'input', e => {\n if (e.target.composing)\n return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = toNumber(domValue);\n }\n el._assign(domValue);\n });\n if (trim) {\n addEventListener(el, 'change', () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, 'compositionstart', onCompositionStart);\n addEventListener(el, 'compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n addEventListener(el, 'change', onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? '' : value;\n },\n beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n // avoid clearing unresolved text. #2302\n if (el.composing)\n return;\n if (document.activeElement === el && el.type !== 'range') {\n if (lazy) {\n return;\n }\n if (trim && el.value.trim() === value) {\n return;\n }\n if ((number || el.type === 'number') && toNumber(el.value) === value) {\n return;\n }\n }\n const newValue = value == null ? '' : value;\n if (el.value !== newValue) {\n el.value = newValue;\n }\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el._assign;\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n }\n else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n }\n else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n }\n else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n }\n else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el._assign = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n if (isArray(value)) {\n el.checked = looseIndexOf(value, vnode.props.value) > -1;\n }\n else if (isSet(value)) {\n el.checked = value.has(vnode.props.value);\n }\n else if (value !== oldValue) {\n el.checked = looseEqual(value, getCheckboxValue(el, true));\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n el._assign(getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el._assign = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, 'change', () => {\n const selectedVal = Array.prototype.filter\n .call(el.options, (o) => o.selected)\n .map((o) => number ? toNumber(getValue(o)) : getValue(o));\n el._assign(el.multiple\n ? isSetModel\n ? new Set(selectedVal)\n : selectedVal\n : selectedVal[0]);\n });\n el._assign = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el._assign = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n setSelected(el, value);\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n if (isMultiple && !isArray(value) && !isSet(value)) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`<select multiple v-model> expects an Array or Set value for its binding, ` +\n `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArray(value)) {\n option.selected = looseIndexOf(value, optionValue) > -1;\n }\n else {\n option.selected = value.has(optionValue);\n }\n }\n else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i)\n el.selectedIndex = i;\n return;\n }\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\n// retrieve raw value set via :value bindings\nfunction getValue(el) {\n return '_value' in el ? el._value : el.value;\n}\n// retrieve raw value for true-value and false-value set via :true-value or :false-value bindings\nfunction getCheckboxValue(el, checked) {\n const key = checked ? '_trueValue' : '_falseValue';\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'created');\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'mounted');\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'updated');\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case 'SELECT':\n return vModelSelect;\n case 'TEXTAREA':\n return vModelText;\n default:\n switch (type) {\n case 'checkbox':\n return vModelCheckbox;\n case 'radio':\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n }\n else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n }\n else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== 'string') {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(), vnode.props && vnode.props.type);\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];\nconst modifierGuards = {\n stop: e => e.stopPropagation(),\n prevent: e => e.preventDefault(),\n self: e => e.target !== e.currentTarget,\n ctrl: e => !e.ctrlKey,\n shift: e => !e.shiftKey,\n alt: e => !e.altKey,\n meta: e => !e.metaKey,\n left: e => 'button' in e && e.button !== 0,\n middle: e => 'button' in e && e.button !== 1,\n right: e => 'button' in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))\n};\n/**\n * @private\n */\nconst withModifiers = (fn, modifiers) => {\n return (event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers))\n return;\n }\n return fn(event, ...args);\n };\n};\n// Kept for 2.x compat.\n// Note: IE11 compat for `spacebar` and `del` is removed for now.\nconst keyNames = {\n esc: 'escape',\n space: ' ',\n up: 'arrow-up',\n left: 'arrow-left',\n right: 'arrow-right',\n down: 'arrow-down',\n delete: 'backspace'\n};\n/**\n * @private\n */\nconst withKeys = (fn, modifiers) => {\n return (event) => {\n if (!('key' in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {\n return fn(event);\n }\n };\n};\n\nconst vShow = {\n beforeMount(el, { value }, { transition }) {\n el._vod = el.style.display === 'none' ? '' : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n }\n else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue)\n return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n }\n else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n }\n else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nfunction setDisplay(el, value) {\n el.style.display = value ? el._vod : 'none';\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: 'none' } };\n }\n };\n}\n\nconst rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);\n// lazy create the renderer - this makes core renderer logic tree-shakable\n// in case the user only imports reactivity utilities from Vue.\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return (renderer ||\n (renderer = createRenderer(rendererOptions)));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration\n ? renderer\n : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\n// use explicit type casts here to avoid import() calls in rolled-up d.ts\nconst render = ((...args) => {\n ensureRenderer().render(...args);\n});\nconst hydrate = ((...args) => {\n ensureHydrationRenderer().hydrate(...args);\n});\nconst createApp = ((...args) => {\n const app = ensureRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container)\n return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n // __UNSAFE__\n // Reason: potential execution of JS expressions in in-DOM template.\n // The user must make sure the in-DOM template is trusted. If it's\n // rendered by the server, the template should not contain any user data.\n component.template = container.innerHTML;\n }\n // clear content before mounting\n container.innerHTML = '';\n const proxy = mount(container, false, container instanceof SVGElement);\n if (container instanceof Element) {\n container.removeAttribute('v-cloak');\n container.setAttribute('data-v-app', '');\n }\n return proxy;\n };\n return app;\n});\nconst createSSRApp = ((...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, container instanceof SVGElement);\n }\n };\n return app;\n});\nfunction injectNativeTagCheck(app) {\n // Inject `isNativeTag`\n // this is used for component name validation (dev only)\n Object.defineProperty(app.config, 'isNativeTag', {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag),\n writable: false\n });\n}\n// dev only\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, 'isCustomElement', {\n get() {\n return isCustomElement;\n },\n set() {\n warn(`The \\`isCustomElement\\` config option is deprecated. Use ` +\n `\\`compilerOptions.isCustomElement\\` instead.`);\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using ` +\n `a build of Vue.js that includes the runtime compiler (aka \"full build\"). ` +\n `Since you are using the runtime-only build, \\`compilerOptions\\` ` +\n `must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\\n` +\n `- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\\n` +\n `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\\n` +\n `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`;\n Object.defineProperty(app.config, 'compilerOptions', {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if ((process.env.NODE_ENV !== 'production') && !res) {\n warn(`Failed to mount app: mount target selector \"${container}\" returned null.`);\n }\n return res;\n }\n if ((process.env.NODE_ENV !== 'production') &&\n window.ShadowRoot &&\n container instanceof window.ShadowRoot &&\n container.mode === 'closed') {\n warn(`mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`);\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\n/**\n * @internal\n */\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n }\n ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n", "import { initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\n\nfunction initDev() {\n {\n initCustomFormatter();\n }\n}\n\n// This entry exports the runtime only, and is built as\nif ((process.env.NODE_ENV !== 'production')) {\n initDev();\n}\nconst compile = () => {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Runtime compilation is not supported in this build of Vue.` +\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\n ) /* should not happen */);\n }\n};\n\nexport { compile };\n"], - "mappings": "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", - "names": ["map", "val", "effect", "shouldTrack", "key", "effect", "isReadonly", "get", "set", "isShallow", "has", "mutableInstrumentations", "shallowInstrumentations", "readonlyInstrumentations", "shallowReadonlyInstrumentations", "ref", "self", "warn", "p", "_a", "version", "isModelListener", "raw", "emit", "render", "remove", "vnode", "parentComponent", "container", "anchor", "parent", "isSVG", "effect", "callHook", "hook", "key", "resolve", "ref", "instance", "has", "get", "set", "computed", "h", "hydrate", "createApp", "patchProp", "hasWarned", "next", "isShallow", "warn", "isBoolean", "e", "hydrate", "resolve", "def", "callHook", "h", "compile", "warn"] -} diff --git a/website/src/.vitepress/cache/deps/chunk-PWVUJGW4.js b/website/src/.vitepress/cache/deps/chunk-PWVUJGW4.js deleted file mode 100644 index 44c0a45c..00000000 --- a/website/src/.vitepress/cache/deps/chunk-PWVUJGW4.js +++ /dev/null @@ -1,10000 +0,0 @@ -import { - Fragment, - TransitionGroup, - computed, - customRef, - defineComponent, - effectScope, - getCurrentInstance, - getCurrentScope, - h, - inject, - isReactive, - isReadonly, - isRef, - markRaw, - nextTick, - onBeforeMount, - onBeforeUnmount, - onBeforeUpdate, - onMounted, - onScopeDispose, - onUnmounted, - onUpdated, - provide, - reactive, - readonly, - ref, - shallowReactive, - shallowRef, - toRaw, - toRef, - toRefs, - unref, - version, - watch, - watchEffect -} from './chunk-6J5AW4SK.js' - -// node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/lib/vue-demi.mjs -var isVue2 = false -var isVue3 = true -function set(target, key, val) { - if (Array.isArray(target)) { - target.length = Math.max(target.length, key) - target.splice(key, 1, val) - return val - } - target[key] = val - return val -} -function del(target, key) { - if (Array.isArray(target)) { - target.splice(key, 1) - return - } - delete target[key] -} - -// node_modules/.pnpm/@vueuse+shared@11.2.0_vue@3.5.12_typescript@5.6.3_/node_modules/@vueuse/shared/index.mjs -function computedEager(fn, options) { - var _a - const result = shallowRef() - watchEffect( - () => { - result.value = fn() - }, - { - ...options, - flush: - (_a = options == null ? void 0 : options.flush) != null ? _a : 'sync' - } - ) - return readonly(result) -} -function computedWithControl(source, fn) { - let v = void 0 - let track - let trigger - const dirty = ref(true) - const update = () => { - dirty.value = true - trigger() - } - watch(source, update, { flush: 'sync' }) - const get2 = typeof fn === 'function' ? fn : fn.get - const set3 = typeof fn === 'function' ? void 0 : fn.set - const result = customRef((_track, _trigger) => { - track = _track - trigger = _trigger - return { - get() { - if (dirty.value) { - v = get2(v) - dirty.value = false - } - track() - return v - }, - set(v2) { - set3 == null ? void 0 : set3(v2) - } - } - }) - if (Object.isExtensible(result)) result.trigger = update - return result -} -function tryOnScopeDispose(fn) { - if (getCurrentScope()) { - onScopeDispose(fn) - return true - } - return false -} -function createEventHook() { - const fns = /* @__PURE__ */ new Set() - const off = fn => { - fns.delete(fn) - } - const on = fn => { - fns.add(fn) - const offFn = () => off(fn) - tryOnScopeDispose(offFn) - return { - off: offFn - } - } - const trigger = (...args) => { - return Promise.all(Array.from(fns).map(fn => fn(...args))) - } - return { - on, - off, - trigger - } -} -function createGlobalState(stateFactory) { - let initialized = false - let state - const scope = effectScope(true) - return (...args) => { - if (!initialized) { - state = scope.run(() => stateFactory(...args)) - initialized = true - } - return state - } -} -var localProvidedStateMap = /* @__PURE__ */ new WeakMap() -var injectLocal = (...args) => { - var _a - const key = args[0] - const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy - if (instance == null) throw new Error('injectLocal must be called in setup') - if ( - localProvidedStateMap.has(instance) && - key in localProvidedStateMap.get(instance) - ) - return localProvidedStateMap.get(instance)[key] - return inject(...args) -} -var provideLocal = (key, value) => { - var _a - const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy - if (instance == null) throw new Error('provideLocal must be called in setup') - if (!localProvidedStateMap.has(instance)) - localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null)) - const localProvidedState = localProvidedStateMap.get(instance) - localProvidedState[key] = value - provide(key, value) -} -function createInjectionState(composable, options) { - const key = - (options == null ? void 0 : options.injectionKey) || - Symbol(composable.name || 'InjectionState') - const defaultValue = options == null ? void 0 : options.defaultValue - const useProvidingState = (...args) => { - const state = composable(...args) - provideLocal(key, state) - return state - } - const useInjectedState = () => injectLocal(key, defaultValue) - return [useProvidingState, useInjectedState] -} -function createSharedComposable(composable) { - let subscribers = 0 - let state - let scope - const dispose = () => { - subscribers -= 1 - if (scope && subscribers <= 0) { - scope.stop() - state = void 0 - scope = void 0 - } - } - return (...args) => { - subscribers += 1 - if (!scope) { - scope = effectScope(true) - state = scope.run(() => composable(...args)) - } - tryOnScopeDispose(dispose) - return state - } -} -function extendRef(ref2, extend, { enumerable = false, unwrap = true } = {}) { - if (!isVue3 && !version.startsWith('2.7.')) { - if (true) - throw new Error('[VueUse] extendRef only works in Vue 2.7 or above.') - return - } - for (const [key, value] of Object.entries(extend)) { - if (key === 'value') continue - if (isRef(value) && unwrap) { - Object.defineProperty(ref2, key, { - get() { - return value.value - }, - set(v) { - value.value = v - }, - enumerable - }) - } else { - Object.defineProperty(ref2, key, { value, enumerable }) - } - } - return ref2 -} -function get(obj, key) { - if (key == null) return unref(obj) - return unref(obj)[key] -} -function isDefined(v) { - return unref(v) != null -} -function makeDestructurable(obj, arr) { - if (typeof Symbol !== 'undefined') { - const clone = { ...obj } - Object.defineProperty(clone, Symbol.iterator, { - enumerable: false, - value() { - let index = 0 - return { - next: () => ({ - value: arr[index++], - done: index > arr.length - }) - } - } - }) - return clone - } else { - return Object.assign([...arr], obj) - } -} -function toValue(r) { - return typeof r === 'function' ? r() : unref(r) -} -var resolveUnref = toValue -function reactify(fn, options) { - const unrefFn = - (options == null ? void 0 : options.computedGetter) === false - ? unref - : toValue - return function (...args) { - return computed(() => - fn.apply( - this, - args.map(i => unrefFn(i)) - ) - ) - } -} -function reactifyObject(obj, optionsOrKeys = {}) { - let keys2 = [] - let options - if (Array.isArray(optionsOrKeys)) { - keys2 = optionsOrKeys - } else { - options = optionsOrKeys - const { includeOwnProperties = true } = optionsOrKeys - keys2.push(...Object.keys(obj)) - if (includeOwnProperties) keys2.push(...Object.getOwnPropertyNames(obj)) - } - return Object.fromEntries( - keys2.map(key => { - const value = obj[key] - return [ - key, - typeof value === 'function' ? reactify(value.bind(obj), options) : value - ] - }) - ) -} -function toReactive(objectRef) { - if (!isRef(objectRef)) return reactive(objectRef) - const proxy = new Proxy( - {}, - { - get(_, p, receiver) { - return unref(Reflect.get(objectRef.value, p, receiver)) - }, - set(_, p, value) { - if (isRef(objectRef.value[p]) && !isRef(value)) - objectRef.value[p].value = value - else objectRef.value[p] = value - return true - }, - deleteProperty(_, p) { - return Reflect.deleteProperty(objectRef.value, p) - }, - has(_, p) { - return Reflect.has(objectRef.value, p) - }, - ownKeys() { - return Object.keys(objectRef.value) - }, - getOwnPropertyDescriptor() { - return { - enumerable: true, - configurable: true - } - } - } - ) - return reactive(proxy) -} -function reactiveComputed(fn) { - return toReactive(computed(fn)) -} -function reactiveOmit(obj, ...keys2) { - const flatKeys = keys2.flat() - const predicate = flatKeys[0] - return reactiveComputed(() => - typeof predicate === 'function' - ? Object.fromEntries( - Object.entries(toRefs(obj)).filter( - ([k, v]) => !predicate(toValue(v), k) - ) - ) - : Object.fromEntries( - Object.entries(toRefs(obj)).filter(e => !flatKeys.includes(e[0])) - ) - ) -} -var directiveHooks = { - mounted: isVue3 ? 'mounted' : 'inserted', - updated: isVue3 ? 'updated' : 'componentUpdated', - unmounted: isVue3 ? 'unmounted' : 'unbind' -} -var isClient = typeof window !== 'undefined' && typeof document !== 'undefined' -var isWorker = - typeof WorkerGlobalScope !== 'undefined' && - globalThis instanceof WorkerGlobalScope -var isDef = val => typeof val !== 'undefined' -var notNullish = val => val != null -var assert = (condition, ...infos) => { - if (!condition) console.warn(...infos) -} -var toString = Object.prototype.toString -var isObject = val => toString.call(val) === '[object Object]' -var now = () => Date.now() -var timestamp = () => +Date.now() -var clamp = (n, min, max) => Math.min(max, Math.max(min, n)) -var noop = () => {} -var rand = (min, max) => { - min = Math.ceil(min) - max = Math.floor(max) - return Math.floor(Math.random() * (max - min + 1)) + min -} -var hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key) -var isIOS = getIsIOS() -function getIsIOS() { - var _a, _b - return ( - isClient && - ((_a = window == null ? void 0 : window.navigator) == null - ? void 0 - : _a.userAgent) && - (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || - (((_b = window == null ? void 0 : window.navigator) == null - ? void 0 - : _b.maxTouchPoints) > 2 && - /iPad|Macintosh/.test( - window == null ? void 0 : window.navigator.userAgent - ))) - ) -} -function createFilterWrapper(filter, fn) { - function wrapper(...args) { - return new Promise((resolve, reject) => { - Promise.resolve( - filter(() => fn.apply(this, args), { fn, thisArg: this, args }) - ) - .then(resolve) - .catch(reject) - }) - } - return wrapper -} -var bypassFilter = invoke2 => { - return invoke2() -} -function debounceFilter(ms, options = {}) { - let timer - let maxTimer - let lastRejector = noop - const _clearTimeout = timer2 => { - clearTimeout(timer2) - lastRejector() - lastRejector = noop - } - const filter = invoke2 => { - const duration = toValue(ms) - const maxDuration = toValue(options.maxWait) - if (timer) _clearTimeout(timer) - if (duration <= 0 || (maxDuration !== void 0 && maxDuration <= 0)) { - if (maxTimer) { - _clearTimeout(maxTimer) - maxTimer = null - } - return Promise.resolve(invoke2()) - } - return new Promise((resolve, reject) => { - lastRejector = options.rejectOnCancel ? reject : resolve - if (maxDuration && !maxTimer) { - maxTimer = setTimeout(() => { - if (timer) _clearTimeout(timer) - maxTimer = null - resolve(invoke2()) - }, maxDuration) - } - timer = setTimeout(() => { - if (maxTimer) _clearTimeout(maxTimer) - maxTimer = null - resolve(invoke2()) - }, duration) - }) - } - return filter -} -function throttleFilter(...args) { - let lastExec = 0 - let timer - let isLeading = true - let lastRejector = noop - let lastValue - let ms - let trailing - let leading - let rejectOnCancel - if (!isRef(args[0]) && typeof args[0] === 'object') - ({ - delay: ms, - trailing = true, - leading = true, - rejectOnCancel = false - } = args[0]) - else [ms, trailing = true, leading = true, rejectOnCancel = false] = args - const clear = () => { - if (timer) { - clearTimeout(timer) - timer = void 0 - lastRejector() - lastRejector = noop - } - } - const filter = _invoke => { - const duration = toValue(ms) - const elapsed = Date.now() - lastExec - const invoke2 = () => { - return (lastValue = _invoke()) - } - clear() - if (duration <= 0) { - lastExec = Date.now() - return invoke2() - } - if (elapsed > duration && (leading || !isLeading)) { - lastExec = Date.now() - invoke2() - } else if (trailing) { - lastValue = new Promise((resolve, reject) => { - lastRejector = rejectOnCancel ? reject : resolve - timer = setTimeout(() => { - lastExec = Date.now() - isLeading = true - resolve(invoke2()) - clear() - }, Math.max(0, duration - elapsed)) - }) - } - if (!leading && !timer) - timer = setTimeout(() => (isLeading = true), duration) - isLeading = false - return lastValue - } - return filter -} -function pausableFilter(extendFilter = bypassFilter) { - const isActive = ref(true) - function pause() { - isActive.value = false - } - function resume() { - isActive.value = true - } - const eventFilter = (...args) => { - if (isActive.value) extendFilter(...args) - } - return { isActive: readonly(isActive), pause, resume, eventFilter } -} -function cacheStringFunction(fn) { - const cache = /* @__PURE__ */ Object.create(null) - return str => { - const hit = cache[str] - return hit || (cache[str] = fn(str)) - } -} -var hyphenateRE = /\B([A-Z])/g -var hyphenate = cacheStringFunction(str => - str.replace(hyphenateRE, '-$1').toLowerCase() -) -var camelizeRE = /-(\w)/g -var camelize = cacheStringFunction(str => { - return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')) -}) -function promiseTimeout(ms, throwOnTimeout = false, reason = 'Timeout') { - return new Promise((resolve, reject) => { - if (throwOnTimeout) setTimeout(() => reject(reason), ms) - else setTimeout(resolve, ms) - }) -} -function identity(arg) { - return arg -} -function createSingletonPromise(fn) { - let _promise - function wrapper() { - if (!_promise) _promise = fn() - return _promise - } - wrapper.reset = async () => { - const _prev = _promise - _promise = void 0 - if (_prev) await _prev - } - return wrapper -} -function invoke(fn) { - return fn() -} -function containsProp(obj, ...props) { - return props.some(k => k in obj) -} -function increaseWithUnit(target, delta) { - var _a - if (typeof target === 'number') return target + delta - const value = - ((_a = target.match(/^-?\d+\.?\d*/)) == null ? void 0 : _a[0]) || '' - const unit = target.slice(value.length) - const result = Number.parseFloat(value) + delta - if (Number.isNaN(result)) return target - return result + unit -} -function objectPick(obj, keys2, omitUndefined = false) { - return keys2.reduce((n, k) => { - if (k in obj) { - if (!omitUndefined || obj[k] !== void 0) n[k] = obj[k] - } - return n - }, {}) -} -function objectOmit(obj, keys2, omitUndefined = false) { - return Object.fromEntries( - Object.entries(obj).filter(([key, value]) => { - return (!omitUndefined || value !== void 0) && !keys2.includes(key) - }) - ) -} -function objectEntries(obj) { - return Object.entries(obj) -} -function getLifeCycleTarget(target) { - return target || getCurrentInstance() -} -function toRef2(...args) { - if (args.length !== 1) return toRef(...args) - const r = args[0] - return typeof r === 'function' - ? readonly(customRef(() => ({ get: r, set: noop }))) - : ref(r) -} -var resolveRef = toRef2 -function reactivePick(obj, ...keys2) { - const flatKeys = keys2.flat() - const predicate = flatKeys[0] - return reactiveComputed(() => - typeof predicate === 'function' - ? Object.fromEntries( - Object.entries(toRefs(obj)).filter(([k, v]) => - predicate(toValue(v), k) - ) - ) - : Object.fromEntries(flatKeys.map(k => [k, toRef2(obj, k)])) - ) -} -function refAutoReset(defaultValue, afterMs = 1e4) { - return customRef((track, trigger) => { - let value = toValue(defaultValue) - let timer - const resetAfter = () => - setTimeout(() => { - value = toValue(defaultValue) - trigger() - }, toValue(afterMs)) - tryOnScopeDispose(() => { - clearTimeout(timer) - }) - return { - get() { - track() - return value - }, - set(newValue) { - value = newValue - trigger() - clearTimeout(timer) - timer = resetAfter() - } - } - }) -} -function useDebounceFn(fn, ms = 200, options = {}) { - return createFilterWrapper(debounceFilter(ms, options), fn) -} -function refDebounced(value, ms = 200, options = {}) { - const debounced = ref(value.value) - const updater = useDebounceFn( - () => { - debounced.value = value.value - }, - ms, - options - ) - watch(value, () => updater()) - return debounced -} -function refDefault(source, defaultValue) { - return computed({ - get() { - var _a - return (_a = source.value) != null ? _a : defaultValue - }, - set(value) { - source.value = value - } - }) -} -function useThrottleFn( - fn, - ms = 200, - trailing = false, - leading = true, - rejectOnCancel = false -) { - return createFilterWrapper( - throttleFilter(ms, trailing, leading, rejectOnCancel), - fn - ) -} -function refThrottled(value, delay = 200, trailing = true, leading = true) { - if (delay <= 0) return value - const throttled = ref(value.value) - const updater = useThrottleFn( - () => { - throttled.value = value.value - }, - delay, - trailing, - leading - ) - watch(value, () => updater()) - return throttled -} -function refWithControl(initial, options = {}) { - let source = initial - let track - let trigger - const ref2 = customRef((_track, _trigger) => { - track = _track - trigger = _trigger - return { - get() { - return get2() - }, - set(v) { - set3(v) - } - } - }) - function get2(tracking = true) { - if (tracking) track() - return source - } - function set3(value, triggering = true) { - var _a, _b - if (value === source) return - const old = source - if ( - ((_a = options.onBeforeChange) == null - ? void 0 - : _a.call(options, value, old)) === false - ) - return - source = value - ;(_b = options.onChanged) == null ? void 0 : _b.call(options, value, old) - if (triggering) trigger() - } - const untrackedGet = () => get2(false) - const silentSet = v => set3(v, false) - const peek = () => get2(false) - const lay = v => set3(v, false) - return extendRef( - ref2, - { - get: get2, - set: set3, - untrackedGet, - silentSet, - peek, - lay - }, - { enumerable: true } - ) -} -var controlledRef = refWithControl -function set2(...args) { - if (args.length === 2) { - const [ref2, value] = args - ref2.value = value - } - if (args.length === 3) { - if (isVue2) { - set(...args) - } else { - const [target, key, value] = args - target[key] = value - } - } -} -function watchWithFilter(source, cb, options = {}) { - const { eventFilter = bypassFilter, ...watchOptions } = options - return watch(source, createFilterWrapper(eventFilter, cb), watchOptions) -} -function watchPausable(source, cb, options = {}) { - const { eventFilter: filter, ...watchOptions } = options - const { eventFilter, pause, resume, isActive } = pausableFilter(filter) - const stop = watchWithFilter(source, cb, { - ...watchOptions, - eventFilter - }) - return { stop, pause, resume, isActive } -} -function syncRef(left, right, ...[options]) { - const { - flush = 'sync', - deep = false, - immediate = true, - direction = 'both', - transform = {} - } = options || {} - const watchers = [] - const transformLTR = ('ltr' in transform && transform.ltr) || (v => v) - const transformRTL = ('rtl' in transform && transform.rtl) || (v => v) - if (direction === 'both' || direction === 'ltr') { - watchers.push( - watchPausable( - left, - newValue => { - watchers.forEach(w => w.pause()) - right.value = transformLTR(newValue) - watchers.forEach(w => w.resume()) - }, - { flush, deep, immediate } - ) - ) - } - if (direction === 'both' || direction === 'rtl') { - watchers.push( - watchPausable( - right, - newValue => { - watchers.forEach(w => w.pause()) - left.value = transformRTL(newValue) - watchers.forEach(w => w.resume()) - }, - { flush, deep, immediate } - ) - ) - } - const stop = () => { - watchers.forEach(w => w.stop()) - } - return stop -} -function syncRefs(source, targets, options = {}) { - const { flush = 'sync', deep = false, immediate = true } = options - if (!Array.isArray(targets)) targets = [targets] - return watch( - source, - newValue => targets.forEach(target => (target.value = newValue)), - { flush, deep, immediate } - ) -} -function toRefs2(objectRef, options = {}) { - if (!isRef(objectRef)) return toRefs(objectRef) - const result = Array.isArray(objectRef.value) - ? Array.from({ length: objectRef.value.length }) - : {} - for (const key in objectRef.value) { - result[key] = customRef(() => ({ - get() { - return objectRef.value[key] - }, - set(v) { - var _a - const replaceRef = - (_a = toValue(options.replaceRef)) != null ? _a : true - if (replaceRef) { - if (Array.isArray(objectRef.value)) { - const copy = [...objectRef.value] - copy[key] = v - objectRef.value = copy - } else { - const newObject = { ...objectRef.value, [key]: v } - Object.setPrototypeOf( - newObject, - Object.getPrototypeOf(objectRef.value) - ) - objectRef.value = newObject - } - } else { - objectRef.value[key] = v - } - } - })) - } - return result -} -function tryOnBeforeMount(fn, sync = true, target) { - const instance = getLifeCycleTarget(target) - if (instance) onBeforeMount(fn, target) - else if (sync) fn() - else nextTick(fn) -} -function tryOnBeforeUnmount(fn, target) { - const instance = getLifeCycleTarget(target) - if (instance) onBeforeUnmount(fn, target) -} -function tryOnMounted(fn, sync = true, target) { - const instance = getLifeCycleTarget() - if (instance) onMounted(fn, target) - else if (sync) fn() - else nextTick(fn) -} -function tryOnUnmounted(fn, target) { - const instance = getLifeCycleTarget(target) - if (instance) onUnmounted(fn, target) -} -function createUntil(r, isNot = false) { - function toMatch( - condition, - { flush = 'sync', deep = false, timeout, throwOnTimeout } = {} - ) { - let stop = null - const watcher = new Promise(resolve => { - stop = watch( - r, - v => { - if (condition(v) !== isNot) { - if (stop) stop() - else nextTick(() => (stop == null ? void 0 : stop())) - resolve(v) - } - }, - { - flush, - deep, - immediate: true - } - ) - }) - const promises = [watcher] - if (timeout != null) { - promises.push( - promiseTimeout(timeout, throwOnTimeout) - .then(() => toValue(r)) - .finally(() => (stop == null ? void 0 : stop())) - ) - } - return Promise.race(promises) - } - function toBe(value, options) { - if (!isRef(value)) return toMatch(v => v === value, options) - const { - flush = 'sync', - deep = false, - timeout, - throwOnTimeout - } = options != null ? options : {} - let stop = null - const watcher = new Promise(resolve => { - stop = watch( - [r, value], - ([v1, v2]) => { - if (isNot !== (v1 === v2)) { - if (stop) stop() - else nextTick(() => (stop == null ? void 0 : stop())) - resolve(v1) - } - }, - { - flush, - deep, - immediate: true - } - ) - }) - const promises = [watcher] - if (timeout != null) { - promises.push( - promiseTimeout(timeout, throwOnTimeout) - .then(() => toValue(r)) - .finally(() => { - stop == null ? void 0 : stop() - return toValue(r) - }) - ) - } - return Promise.race(promises) - } - function toBeTruthy(options) { - return toMatch(v => Boolean(v), options) - } - function toBeNull(options) { - return toBe(null, options) - } - function toBeUndefined(options) { - return toBe(void 0, options) - } - function toBeNaN(options) { - return toMatch(Number.isNaN, options) - } - function toContains(value, options) { - return toMatch(v => { - const array = Array.from(v) - return array.includes(value) || array.includes(toValue(value)) - }, options) - } - function changed(options) { - return changedTimes(1, options) - } - function changedTimes(n = 1, options) { - let count = -1 - return toMatch(() => { - count += 1 - return count >= n - }, options) - } - if (Array.isArray(toValue(r))) { - const instance = { - toMatch, - toContains, - changed, - changedTimes, - get not() { - return createUntil(r, !isNot) - } - } - return instance - } else { - const instance = { - toMatch, - toBe, - toBeTruthy, - toBeNull, - toBeNaN, - toBeUndefined, - changed, - changedTimes, - get not() { - return createUntil(r, !isNot) - } - } - return instance - } -} -function until(r) { - return createUntil(r) -} -function defaultComparator(value, othVal) { - return value === othVal -} -function useArrayDifference(...args) { - var _a - const list = args[0] - const values = args[1] - let compareFn = (_a = args[2]) != null ? _a : defaultComparator - if (typeof compareFn === 'string') { - const key = compareFn - compareFn = (value, othVal) => value[key] === othVal[key] - } - return computed(() => - toValue(list).filter( - x => toValue(values).findIndex(y => compareFn(x, y)) === -1 - ) - ) -} -function useArrayEvery(list, fn) { - return computed(() => - toValue(list).every((element, index, array) => - fn(toValue(element), index, array) - ) - ) -} -function useArrayFilter(list, fn) { - return computed(() => - toValue(list) - .map(i => toValue(i)) - .filter(fn) - ) -} -function useArrayFind(list, fn) { - return computed(() => - toValue( - toValue(list).find((element, index, array) => - fn(toValue(element), index, array) - ) - ) - ) -} -function useArrayFindIndex(list, fn) { - return computed(() => - toValue(list).findIndex((element, index, array) => - fn(toValue(element), index, array) - ) - ) -} -function findLast(arr, cb) { - let index = arr.length - while (index-- > 0) { - if (cb(arr[index], index, arr)) return arr[index] - } - return void 0 -} -function useArrayFindLast(list, fn) { - return computed(() => - toValue( - !Array.prototype.findLast - ? findLast(toValue(list), (element, index, array) => - fn(toValue(element), index, array) - ) - : toValue(list).findLast((element, index, array) => - fn(toValue(element), index, array) - ) - ) - ) -} -function isArrayIncludesOptions(obj) { - return isObject(obj) && containsProp(obj, 'formIndex', 'comparator') -} -function useArrayIncludes(...args) { - var _a - const list = args[0] - const value = args[1] - let comparator = args[2] - let formIndex = 0 - if (isArrayIncludesOptions(comparator)) { - formIndex = (_a = comparator.fromIndex) != null ? _a : 0 - comparator = comparator.comparator - } - if (typeof comparator === 'string') { - const key = comparator - comparator = (element, value2) => element[key] === toValue(value2) - } - comparator = - comparator != null - ? comparator - : (element, value2) => element === toValue(value2) - return computed(() => - toValue(list) - .slice(formIndex) - .some((element, index, array) => - comparator(toValue(element), toValue(value), index, toValue(array)) - ) - ) -} -function useArrayJoin(list, separator) { - return computed(() => - toValue(list) - .map(i => toValue(i)) - .join(toValue(separator)) - ) -} -function useArrayMap(list, fn) { - return computed(() => - toValue(list) - .map(i => toValue(i)) - .map(fn) - ) -} -function useArrayReduce(list, reducer, ...args) { - const reduceCallback = (sum, value, index) => - reducer(toValue(sum), toValue(value), index) - return computed(() => { - const resolved = toValue(list) - return args.length - ? resolved.reduce( - reduceCallback, - typeof args[0] === 'function' ? toValue(args[0]()) : toValue(args[0]) - ) - : resolved.reduce(reduceCallback) - }) -} -function useArraySome(list, fn) { - return computed(() => - toValue(list).some((element, index, array) => - fn(toValue(element), index, array) - ) - ) -} -function uniq(array) { - return Array.from(new Set(array)) -} -function uniqueElementsBy(array, fn) { - return array.reduce((acc, v) => { - if (!acc.some(x => fn(v, x, array))) acc.push(v) - return acc - }, []) -} -function useArrayUnique(list, compareFn) { - return computed(() => { - const resolvedList = toValue(list).map(element => toValue(element)) - return compareFn - ? uniqueElementsBy(resolvedList, compareFn) - : uniq(resolvedList) - }) -} -function useCounter(initialValue = 0, options = {}) { - let _initialValue = unref(initialValue) - const count = ref(initialValue) - const { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } = - options - const inc = (delta = 1) => - (count.value = Math.max(Math.min(max, count.value + delta), min)) - const dec = (delta = 1) => - (count.value = Math.min(Math.max(min, count.value - delta), max)) - const get2 = () => count.value - const set3 = val => (count.value = Math.max(min, Math.min(max, val))) - const reset = (val = _initialValue) => { - _initialValue = val - return set3(val) - } - return { count, inc, dec, get: get2, set: set3, reset } -} -var REGEX_PARSE = - /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[T\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/i -var REGEX_FORMAT = - /[YMDHhms]o|\[([^\]]+)\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g -function defaultMeridiem(hours, minutes, isLowercase, hasPeriod) { - let m = hours < 12 ? 'AM' : 'PM' - if (hasPeriod) m = m.split('').reduce((acc, curr) => (acc += `${curr}.`), '') - return isLowercase ? m.toLowerCase() : m -} -function formatOrdinal(num) { - const suffixes = ['th', 'st', 'nd', 'rd'] - const v = num % 100 - return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]) -} -function formatDate(date, formatStr, options = {}) { - var _a - const years = date.getFullYear() - const month = date.getMonth() - const days = date.getDate() - const hours = date.getHours() - const minutes = date.getMinutes() - const seconds = date.getSeconds() - const milliseconds = date.getMilliseconds() - const day = date.getDay() - const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem - const matches = { - Yo: () => formatOrdinal(years), - YY: () => String(years).slice(-2), - YYYY: () => years, - M: () => month + 1, - Mo: () => formatOrdinal(month + 1), - MM: () => `${month + 1}`.padStart(2, '0'), - MMM: () => - date.toLocaleDateString(toValue(options.locales), { month: 'short' }), - MMMM: () => - date.toLocaleDateString(toValue(options.locales), { month: 'long' }), - D: () => String(days), - Do: () => formatOrdinal(days), - DD: () => `${days}`.padStart(2, '0'), - H: () => String(hours), - Ho: () => formatOrdinal(hours), - HH: () => `${hours}`.padStart(2, '0'), - h: () => `${hours % 12 || 12}`.padStart(1, '0'), - ho: () => formatOrdinal(hours % 12 || 12), - hh: () => `${hours % 12 || 12}`.padStart(2, '0'), - m: () => String(minutes), - mo: () => formatOrdinal(minutes), - mm: () => `${minutes}`.padStart(2, '0'), - s: () => String(seconds), - so: () => formatOrdinal(seconds), - ss: () => `${seconds}`.padStart(2, '0'), - SSS: () => `${milliseconds}`.padStart(3, '0'), - d: () => day, - dd: () => - date.toLocaleDateString(toValue(options.locales), { weekday: 'narrow' }), - ddd: () => - date.toLocaleDateString(toValue(options.locales), { weekday: 'short' }), - dddd: () => - date.toLocaleDateString(toValue(options.locales), { weekday: 'long' }), - A: () => meridiem(hours, minutes), - AA: () => meridiem(hours, minutes, false, true), - a: () => meridiem(hours, minutes, true), - aa: () => meridiem(hours, minutes, true, true) - } - return formatStr.replace(REGEX_FORMAT, (match, $1) => { - var _a2, _b - return (_b = - $1 != null - ? $1 - : (_a2 = matches[match]) == null - ? void 0 - : _a2.call(matches)) != null - ? _b - : match - }) -} -function normalizeDate(date) { - if (date === null) return new Date(Number.NaN) - if (date === void 0) return /* @__PURE__ */ new Date() - if (date instanceof Date) return new Date(date) - if (typeof date === 'string' && !/Z$/i.test(date)) { - const d = date.match(REGEX_PARSE) - if (d) { - const m = d[2] - 1 || 0 - const ms = (d[7] || '0').substring(0, 3) - return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms) - } - } - return new Date(date) -} -function useDateFormat(date, formatStr = 'HH:mm:ss', options = {}) { - return computed(() => - formatDate(normalizeDate(toValue(date)), toValue(formatStr), options) - ) -} -function useIntervalFn(cb, interval = 1e3, options = {}) { - const { immediate = true, immediateCallback = false } = options - let timer = null - const isActive = ref(false) - function clean() { - if (timer) { - clearInterval(timer) - timer = null - } - } - function pause() { - isActive.value = false - clean() - } - function resume() { - const intervalValue = toValue(interval) - if (intervalValue <= 0) return - isActive.value = true - if (immediateCallback) cb() - clean() - if (isActive.value) timer = setInterval(cb, intervalValue) - } - if (immediate && isClient) resume() - if (isRef(interval) || typeof interval === 'function') { - const stopWatch = watch(interval, () => { - if (isActive.value && isClient) resume() - }) - tryOnScopeDispose(stopWatch) - } - tryOnScopeDispose(pause) - return { - isActive, - pause, - resume - } -} -function useInterval(interval = 1e3, options = {}) { - const { - controls: exposeControls = false, - immediate = true, - callback - } = options - const counter = ref(0) - const update = () => (counter.value += 1) - const reset = () => { - counter.value = 0 - } - const controls = useIntervalFn( - callback - ? () => { - update() - callback(counter.value) - } - : update, - interval, - { immediate } - ) - if (exposeControls) { - return { - counter, - reset, - ...controls - } - } else { - return counter - } -} -function useLastChanged(source, options = {}) { - var _a - const ms = ref((_a = options.initialValue) != null ? _a : null) - watch(source, () => (ms.value = timestamp()), options) - return ms -} -function useTimeoutFn(cb, interval, options = {}) { - const { immediate = true } = options - const isPending = ref(false) - let timer = null - function clear() { - if (timer) { - clearTimeout(timer) - timer = null - } - } - function stop() { - isPending.value = false - clear() - } - function start(...args) { - clear() - isPending.value = true - timer = setTimeout(() => { - isPending.value = false - timer = null - cb(...args) - }, toValue(interval)) - } - if (immediate) { - isPending.value = true - if (isClient) start() - } - tryOnScopeDispose(stop) - return { - isPending: readonly(isPending), - start, - stop - } -} -function useTimeout(interval = 1e3, options = {}) { - const { controls: exposeControls = false, callback } = options - const controls = useTimeoutFn( - callback != null ? callback : noop, - interval, - options - ) - const ready = computed(() => !controls.isPending.value) - if (exposeControls) { - return { - ready, - ...controls - } - } else { - return ready - } -} -function useToNumber(value, options = {}) { - const { method = 'parseFloat', radix, nanToZero } = options - return computed(() => { - let resolved = toValue(value) - if (typeof resolved === 'string') resolved = Number[method](resolved, radix) - if (nanToZero && Number.isNaN(resolved)) resolved = 0 - return resolved - }) -} -function useToString(value) { - return computed(() => `${toValue(value)}`) -} -function useToggle(initialValue = false, options = {}) { - const { truthyValue = true, falsyValue = false } = options - const valueIsRef = isRef(initialValue) - const _value = ref(initialValue) - function toggle(value) { - if (arguments.length) { - _value.value = value - return _value.value - } else { - const truthy = toValue(truthyValue) - _value.value = _value.value === truthy ? toValue(falsyValue) : truthy - return _value.value - } - } - if (valueIsRef) return toggle - else return [_value, toggle] -} -function watchArray(source, cb, options) { - let oldList = (options == null ? void 0 : options.immediate) - ? [] - : [ - ...(source instanceof Function - ? source() - : Array.isArray(source) - ? source - : toValue(source)) - ] - return watch( - source, - (newList, _, onCleanup) => { - const oldListRemains = Array.from({ length: oldList.length }) - const added = [] - for (const obj of newList) { - let found = false - for (let i = 0; i < oldList.length; i++) { - if (!oldListRemains[i] && obj === oldList[i]) { - oldListRemains[i] = true - found = true - break - } - } - if (!found) added.push(obj) - } - const removed = oldList.filter((_2, i) => !oldListRemains[i]) - cb(newList, oldList, added, removed, onCleanup) - oldList = [...newList] - }, - options - ) -} -function watchAtMost(source, cb, options) { - const { count, ...watchOptions } = options - const current = ref(0) - const stop = watchWithFilter( - source, - (...args) => { - current.value += 1 - if (current.value >= toValue(count)) nextTick(() => stop()) - cb(...args) - }, - watchOptions - ) - return { count: current, stop } -} -function watchDebounced(source, cb, options = {}) { - const { debounce = 0, maxWait = void 0, ...watchOptions } = options - return watchWithFilter(source, cb, { - ...watchOptions, - eventFilter: debounceFilter(debounce, { maxWait }) - }) -} -function watchDeep(source, cb, options) { - return watch(source, cb, { - ...options, - deep: true - }) -} -function watchIgnorable(source, cb, options = {}) { - const { eventFilter = bypassFilter, ...watchOptions } = options - const filteredCb = createFilterWrapper(eventFilter, cb) - let ignoreUpdates - let ignorePrevAsyncUpdates - let stop - if (watchOptions.flush === 'sync') { - const ignore = ref(false) - ignorePrevAsyncUpdates = () => {} - ignoreUpdates = updater => { - ignore.value = true - updater() - ignore.value = false - } - stop = watch( - source, - (...args) => { - if (!ignore.value) filteredCb(...args) - }, - watchOptions - ) - } else { - const disposables = [] - const ignoreCounter = ref(0) - const syncCounter = ref(0) - ignorePrevAsyncUpdates = () => { - ignoreCounter.value = syncCounter.value - } - disposables.push( - watch( - source, - () => { - syncCounter.value++ - }, - { ...watchOptions, flush: 'sync' } - ) - ) - ignoreUpdates = updater => { - const syncCounterPrev = syncCounter.value - updater() - ignoreCounter.value += syncCounter.value - syncCounterPrev - } - disposables.push( - watch( - source, - (...args) => { - const ignore = - ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value - ignoreCounter.value = 0 - syncCounter.value = 0 - if (ignore) return - filteredCb(...args) - }, - watchOptions - ) - ) - stop = () => { - disposables.forEach(fn => fn()) - } - } - return { stop, ignoreUpdates, ignorePrevAsyncUpdates } -} -function watchImmediate(source, cb, options) { - return watch(source, cb, { - ...options, - immediate: true - }) -} -function watchOnce(source, cb, options) { - const stop = watch( - source, - (...args) => { - nextTick(() => stop()) - return cb(...args) - }, - options - ) - return stop -} -function watchThrottled(source, cb, options = {}) { - const { - throttle = 0, - trailing = true, - leading = true, - ...watchOptions - } = options - return watchWithFilter(source, cb, { - ...watchOptions, - eventFilter: throttleFilter(throttle, trailing, leading) - }) -} -function watchTriggerable(source, cb, options = {}) { - let cleanupFn - function onEffect() { - if (!cleanupFn) return - const fn = cleanupFn - cleanupFn = void 0 - fn() - } - function onCleanup(callback) { - cleanupFn = callback - } - const _cb = (value, oldValue) => { - onEffect() - return cb(value, oldValue, onCleanup) - } - const res = watchIgnorable(source, _cb, options) - const { ignoreUpdates } = res - const trigger = () => { - let res2 - ignoreUpdates(() => { - res2 = _cb(getWatchSources(source), getOldValue(source)) - }) - return res2 - } - return { - ...res, - trigger - } -} -function getWatchSources(sources) { - if (isReactive(sources)) return sources - if (Array.isArray(sources)) return sources.map(item => toValue(item)) - return toValue(sources) -} -function getOldValue(source) { - return Array.isArray(source) ? source.map(() => void 0) : void 0 -} -function whenever(source, cb, options) { - const stop = watch( - source, - (v, ov, onInvalidate) => { - if (v) { - if (options == null ? void 0 : options.once) nextTick(() => stop()) - cb(v, ov, onInvalidate) - } - }, - { - ...options, - once: false - } - ) - return stop -} - -// node_modules/.pnpm/@vueuse+core@11.2.0_vue@3.5.12_typescript@5.6.3_/node_modules/@vueuse/core/index.mjs -function computedAsync(evaluationCallback, initialState, optionsOrRef) { - let options - if (isRef(optionsOrRef)) { - options = { - evaluating: optionsOrRef - } - } else { - options = optionsOrRef || {} - } - const { - lazy = false, - evaluating = void 0, - shallow = true, - onError = noop - } = options - const started = ref(!lazy) - const current = shallow ? shallowRef(initialState) : ref(initialState) - let counter = 0 - watchEffect(async onInvalidate => { - if (!started.value) return - counter++ - const counterAtBeginning = counter - let hasFinished = false - if (evaluating) { - Promise.resolve().then(() => { - evaluating.value = true - }) - } - try { - const result = await evaluationCallback(cancelCallback => { - onInvalidate(() => { - if (evaluating) evaluating.value = false - if (!hasFinished) cancelCallback() - }) - }) - if (counterAtBeginning === counter) current.value = result - } catch (e) { - onError(e) - } finally { - if (evaluating && counterAtBeginning === counter) evaluating.value = false - hasFinished = true - } - }) - if (lazy) { - return computed(() => { - started.value = true - return current.value - }) - } else { - return current - } -} -function computedInject(key, options, defaultSource, treatDefaultAsFactory) { - let source = inject(key) - if (defaultSource) source = inject(key, defaultSource) - if (treatDefaultAsFactory) - source = inject(key, defaultSource, treatDefaultAsFactory) - if (typeof options === 'function') { - return computed(ctx => options(source, ctx)) - } else { - return computed({ - get: ctx => options.get(source, ctx), - set: options.set - }) - } -} -function createReusableTemplate(options = {}) { - if (!isVue3 && !version.startsWith('2.7.')) { - if (true) - throw new Error( - '[VueUse] createReusableTemplate only works in Vue 2.7 or above.' - ) - return - } - const { inheritAttrs = true } = options - const render = shallowRef() - const define = defineComponent({ - setup(_, { slots }) { - return () => { - render.value = slots.default - } - } - }) - const reuse = defineComponent({ - inheritAttrs, - setup(_, { attrs, slots }) { - return () => { - var _a - if (!render.value && true) - throw new Error( - '[VueUse] Failed to find the definition of reusable template' - ) - const vnode = - (_a = render.value) == null - ? void 0 - : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots }) - return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 - ? vnode[0] - : vnode - } - } - }) - return makeDestructurable({ define, reuse }, [define, reuse]) -} -function keysToCamelKebabCase(obj) { - const newObj = {} - for (const key in obj) newObj[camelize(key)] = obj[key] - return newObj -} -function createTemplatePromise(options = {}) { - if (!isVue3) { - if (true) - throw new Error( - '[VueUse] createTemplatePromise only works in Vue 3 or above.' - ) - return - } - let index = 0 - const instances = ref([]) - function create(...args) { - const props = shallowReactive({ - key: index++, - args, - promise: void 0, - resolve: () => {}, - reject: () => {}, - isResolving: false, - options - }) - instances.value.push(props) - props.promise = new Promise((_resolve, _reject) => { - props.resolve = v => { - props.isResolving = true - return _resolve(v) - } - props.reject = _reject - }).finally(() => { - props.promise = void 0 - const index2 = instances.value.indexOf(props) - if (index2 !== -1) instances.value.splice(index2, 1) - }) - return props.promise - } - function start(...args) { - if (options.singleton && instances.value.length > 0) - return instances.value[0].promise - return create(...args) - } - const component = defineComponent((_, { slots }) => { - const renderList = () => - instances.value.map(props => { - var _a - return h( - Fragment, - { key: props.key }, - (_a = slots.default) == null ? void 0 : _a.call(slots, props) - ) - }) - if (options.transition) - return () => h(TransitionGroup, options.transition, renderList) - return renderList - }) - component.start = start - return component -} -function createUnrefFn(fn) { - return function (...args) { - return fn.apply( - this, - args.map(i => toValue(i)) - ) - } -} -var defaultWindow = isClient ? window : void 0 -var defaultDocument = isClient ? window.document : void 0 -var defaultNavigator = isClient ? window.navigator : void 0 -var defaultLocation = isClient ? window.location : void 0 -function unrefElement(elRef) { - var _a - const plain = toValue(elRef) - return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain -} -function useEventListener(...args) { - let target - let events2 - let listeners - let options - if (typeof args[0] === 'string' || Array.isArray(args[0])) { - ;[events2, listeners, options] = args - target = defaultWindow - } else { - ;[target, events2, listeners, options] = args - } - if (!target) return noop - if (!Array.isArray(events2)) events2 = [events2] - if (!Array.isArray(listeners)) listeners = [listeners] - const cleanups = [] - const cleanup = () => { - cleanups.forEach(fn => fn()) - cleanups.length = 0 - } - const register = (el, event, listener, options2) => { - el.addEventListener(event, listener, options2) - return () => el.removeEventListener(event, listener, options2) - } - const stopWatch = watch( - () => [unrefElement(target), toValue(options)], - ([el, options2]) => { - cleanup() - if (!el) return - const optionsClone = isObject(options2) ? { ...options2 } : options2 - cleanups.push( - ...events2.flatMap(event => { - return listeners.map(listener => - register(el, event, listener, optionsClone) - ) - }) - ) - }, - { immediate: true, flush: 'post' } - ) - const stop = () => { - stopWatch() - cleanup() - } - tryOnScopeDispose(stop) - return stop -} -var _iOSWorkaround = false -function onClickOutside(target, handler, options = {}) { - const { - window: window2 = defaultWindow, - ignore = [], - capture = true, - detectIframe = false - } = options - if (!window2) return noop - if (isIOS && !_iOSWorkaround) { - _iOSWorkaround = true - Array.from(window2.document.body.children).forEach(el => - el.addEventListener('click', noop) - ) - window2.document.documentElement.addEventListener('click', noop) - } - let shouldListen = true - const shouldIgnore = event => { - return toValue(ignore).some(target2 => { - if (typeof target2 === 'string') { - return Array.from(window2.document.querySelectorAll(target2)).some( - el => el === event.target || event.composedPath().includes(el) - ) - } else { - const el = unrefElement(target2) - return el && (event.target === el || event.composedPath().includes(el)) - } - }) - } - const listener = event => { - const el = unrefElement(target) - if (!el || el === event.target || event.composedPath().includes(el)) return - if (event.detail === 0) shouldListen = !shouldIgnore(event) - if (!shouldListen) { - shouldListen = true - return - } - handler(event) - } - let isProcessingClick = false - const cleanup = [ - useEventListener( - window2, - 'click', - event => { - if (!isProcessingClick) { - isProcessingClick = true - setTimeout(() => { - isProcessingClick = false - }, 0) - listener(event) - } - }, - { passive: true, capture } - ), - useEventListener( - window2, - 'pointerdown', - e => { - const el = unrefElement(target) - shouldListen = - !shouldIgnore(e) && !!(el && !e.composedPath().includes(el)) - }, - { passive: true } - ), - detectIframe && - useEventListener(window2, 'blur', event => { - setTimeout(() => { - var _a - const el = unrefElement(target) - if ( - ((_a = window2.document.activeElement) == null - ? void 0 - : _a.tagName) === 'IFRAME' && - !(el == null ? void 0 : el.contains(window2.document.activeElement)) - ) { - handler(event) - } - }, 0) - }) - ].filter(Boolean) - const stop = () => cleanup.forEach(fn => fn()) - return stop -} -function createKeyPredicate(keyFilter) { - if (typeof keyFilter === 'function') return keyFilter - else if (typeof keyFilter === 'string') - return event => event.key === keyFilter - else if (Array.isArray(keyFilter)) - return event => keyFilter.includes(event.key) - return () => true -} -function onKeyStroke(...args) { - let key - let handler - let options = {} - if (args.length === 3) { - key = args[0] - handler = args[1] - options = args[2] - } else if (args.length === 2) { - if (typeof args[1] === 'object') { - key = true - handler = args[0] - options = args[1] - } else { - key = args[0] - handler = args[1] - } - } else { - key = true - handler = args[0] - } - const { - target = defaultWindow, - eventName = 'keydown', - passive = false, - dedupe = false - } = options - const predicate = createKeyPredicate(key) - const listener = e => { - if (e.repeat && toValue(dedupe)) return - if (predicate(e)) handler(e) - } - return useEventListener(target, eventName, listener, passive) -} -function onKeyDown(key, handler, options = {}) { - return onKeyStroke(key, handler, { ...options, eventName: 'keydown' }) -} -function onKeyPressed(key, handler, options = {}) { - return onKeyStroke(key, handler, { ...options, eventName: 'keypress' }) -} -function onKeyUp(key, handler, options = {}) { - return onKeyStroke(key, handler, { ...options, eventName: 'keyup' }) -} -var DEFAULT_DELAY = 500 -var DEFAULT_THRESHOLD = 10 -function onLongPress(target, handler, options) { - var _a, _b - const elementRef = computed(() => unrefElement(target)) - let timeout - let posStart - let startTimestamp - let hasLongPressed = false - function clear() { - if (timeout) { - clearTimeout(timeout) - timeout = void 0 - } - posStart = void 0 - startTimestamp = void 0 - hasLongPressed = false - } - function onRelease(ev) { - var _a2, _b2, _c - const [_startTimestamp, _posStart, _hasLongPressed] = [ - startTimestamp, - posStart, - hasLongPressed - ] - clear() - if ( - !(options == null ? void 0 : options.onMouseUp) || - !_posStart || - !_startTimestamp - ) - return - if ( - ((_a2 = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _a2.self) && - ev.target !== elementRef.value - ) - return - if ( - (_b2 = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _b2.prevent - ) - ev.preventDefault() - if ( - (_c = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _c.stop - ) - ev.stopPropagation() - const dx = ev.x - _posStart.x - const dy = ev.y - _posStart.y - const distance = Math.sqrt(dx * dx + dy * dy) - options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed) - } - function onDown(ev) { - var _a2, _b2, _c, _d - if ( - ((_a2 = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _a2.self) && - ev.target !== elementRef.value - ) - return - clear() - if ( - (_b2 = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _b2.prevent - ) - ev.preventDefault() - if ( - (_c = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _c.stop - ) - ev.stopPropagation() - posStart = { - x: ev.x, - y: ev.y - } - startTimestamp = ev.timeStamp - timeout = setTimeout( - () => { - hasLongPressed = true - handler(ev) - }, - (_d = options == null ? void 0 : options.delay) != null - ? _d - : DEFAULT_DELAY - ) - } - function onMove(ev) { - var _a2, _b2, _c, _d - if ( - ((_a2 = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _a2.self) && - ev.target !== elementRef.value - ) - return - if ( - !posStart || - (options == null ? void 0 : options.distanceThreshold) === false - ) - return - if ( - (_b2 = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _b2.prevent - ) - ev.preventDefault() - if ( - (_c = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _c.stop - ) - ev.stopPropagation() - const dx = ev.x - posStart.x - const dy = ev.y - posStart.y - const distance = Math.sqrt(dx * dx + dy * dy) - if ( - distance >= - ((_d = options == null ? void 0 : options.distanceThreshold) != null - ? _d - : DEFAULT_THRESHOLD) - ) - clear() - } - const listenerOptions = { - capture: - (_a = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _a.capture, - once: - (_b = options == null ? void 0 : options.modifiers) == null - ? void 0 - : _b.once - } - const cleanup = [ - useEventListener(elementRef, 'pointerdown', onDown, listenerOptions), - useEventListener(elementRef, 'pointermove', onMove, listenerOptions), - useEventListener( - elementRef, - ['pointerup', 'pointerleave'], - onRelease, - listenerOptions - ) - ] - const stop = () => cleanup.forEach(fn => fn()) - return stop -} -function isFocusedElementEditable() { - const { activeElement, body } = document - if (!activeElement) return false - if (activeElement === body) return false - switch (activeElement.tagName) { - case 'INPUT': - case 'TEXTAREA': - return true - } - return activeElement.hasAttribute('contenteditable') -} -function isTypedCharValid({ keyCode, metaKey, ctrlKey, altKey }) { - if (metaKey || ctrlKey || altKey) return false - if (keyCode >= 48 && keyCode <= 57) return true - if (keyCode >= 65 && keyCode <= 90) return true - if (keyCode >= 97 && keyCode <= 122) return true - return false -} -function onStartTyping(callback, options = {}) { - const { document: document2 = defaultDocument } = options - const keydown = event => { - if (!isFocusedElementEditable() && isTypedCharValid(event)) { - callback(event) - } - } - if (document2) - useEventListener(document2, 'keydown', keydown, { passive: true }) -} -function templateRef(key, initialValue = null) { - const instance = getCurrentInstance() - let _trigger = () => {} - const element = customRef((track, trigger) => { - _trigger = trigger - return { - get() { - var _a, _b - track() - return (_b = - (_a = instance == null ? void 0 : instance.proxy) == null - ? void 0 - : _a.$refs[key]) != null - ? _b - : initialValue - }, - set() {} - } - }) - tryOnMounted(_trigger) - onUpdated(_trigger) - return element -} -function useMounted() { - const isMounted = ref(false) - const instance = getCurrentInstance() - if (instance) { - onMounted( - () => { - isMounted.value = true - }, - isVue2 ? void 0 : instance - ) - } - return isMounted -} -function useSupported(callback) { - const isMounted = useMounted() - return computed(() => { - isMounted.value - return Boolean(callback()) - }) -} -function useMutationObserver(target, callback, options = {}) { - const { window: window2 = defaultWindow, ...mutationOptions } = options - let observer - const isSupported = useSupported( - () => window2 && 'MutationObserver' in window2 - ) - const cleanup = () => { - if (observer) { - observer.disconnect() - observer = void 0 - } - } - const targets = computed(() => { - const value = toValue(target) - const items = (Array.isArray(value) ? value : [value]) - .map(unrefElement) - .filter(notNullish) - return new Set(items) - }) - const stopWatch = watch( - () => targets.value, - targets2 => { - cleanup() - if (isSupported.value && targets2.size) { - observer = new MutationObserver(callback) - targets2.forEach(el => observer.observe(el, mutationOptions)) - } - }, - { immediate: true, flush: 'post' } - ) - const takeRecords = () => { - return observer == null ? void 0 : observer.takeRecords() - } - const stop = () => { - stopWatch() - cleanup() - } - tryOnScopeDispose(stop) - return { - isSupported, - stop, - takeRecords - } -} -function useActiveElement(options = {}) { - var _a - const { - window: window2 = defaultWindow, - deep = true, - triggerOnRemoval = false - } = options - const document2 = - (_a = options.document) != null - ? _a - : window2 == null - ? void 0 - : window2.document - const getDeepActiveElement = () => { - var _a2 - let element = document2 == null ? void 0 : document2.activeElement - if (deep) { - while (element == null ? void 0 : element.shadowRoot) - element = - (_a2 = element == null ? void 0 : element.shadowRoot) == null - ? void 0 - : _a2.activeElement - } - return element - } - const activeElement = ref() - const trigger = () => { - activeElement.value = getDeepActiveElement() - } - if (window2) { - useEventListener( - window2, - 'blur', - event => { - if (event.relatedTarget !== null) return - trigger() - }, - true - ) - useEventListener(window2, 'focus', trigger, true) - } - if (triggerOnRemoval) { - useMutationObserver( - document2, - mutations => { - mutations - .filter(m => m.removedNodes.length) - .map(n => Array.from(n.removedNodes)) - .flat() - .forEach(node => { - if (node === activeElement.value) trigger() - }) - }, - { - childList: true, - subtree: true - } - ) - } - trigger() - return activeElement -} -function useRafFn(fn, options = {}) { - const { - immediate = true, - fpsLimit = void 0, - window: window2 = defaultWindow - } = options - const isActive = ref(false) - const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null - let previousFrameTimestamp = 0 - let rafId = null - function loop(timestamp2) { - if (!isActive.value || !window2) return - if (!previousFrameTimestamp) previousFrameTimestamp = timestamp2 - const delta = timestamp2 - previousFrameTimestamp - if (intervalLimit && delta < intervalLimit) { - rafId = window2.requestAnimationFrame(loop) - return - } - previousFrameTimestamp = timestamp2 - fn({ delta, timestamp: timestamp2 }) - rafId = window2.requestAnimationFrame(loop) - } - function resume() { - if (!isActive.value && window2) { - isActive.value = true - previousFrameTimestamp = 0 - rafId = window2.requestAnimationFrame(loop) - } - } - function pause() { - isActive.value = false - if (rafId != null && window2) { - window2.cancelAnimationFrame(rafId) - rafId = null - } - } - if (immediate) resume() - tryOnScopeDispose(pause) - return { - isActive: readonly(isActive), - pause, - resume - } -} -function useAnimate(target, keyframes, options) { - let config - let animateOptions - if (isObject(options)) { - config = options - animateOptions = objectOmit(options, [ - 'window', - 'immediate', - 'commitStyles', - 'persist', - 'onReady', - 'onError' - ]) - } else { - config = { duration: options } - animateOptions = options - } - const { - window: window2 = defaultWindow, - immediate = true, - commitStyles, - persist, - playbackRate: _playbackRate = 1, - onReady, - onError = e => { - console.error(e) - } - } = config - const isSupported = useSupported( - () => window2 && HTMLElement && 'animate' in HTMLElement.prototype - ) - const animate = shallowRef(void 0) - const store = shallowReactive({ - startTime: null, - currentTime: null, - timeline: null, - playbackRate: _playbackRate, - pending: false, - playState: immediate ? 'idle' : 'paused', - replaceState: 'active' - }) - const pending = computed(() => store.pending) - const playState = computed(() => store.playState) - const replaceState = computed(() => store.replaceState) - const startTime = computed({ - get() { - return store.startTime - }, - set(value) { - store.startTime = value - if (animate.value) animate.value.startTime = value - } - }) - const currentTime = computed({ - get() { - return store.currentTime - }, - set(value) { - store.currentTime = value - if (animate.value) { - animate.value.currentTime = value - syncResume() - } - } - }) - const timeline = computed({ - get() { - return store.timeline - }, - set(value) { - store.timeline = value - if (animate.value) animate.value.timeline = value - } - }) - const playbackRate = computed({ - get() { - return store.playbackRate - }, - set(value) { - store.playbackRate = value - if (animate.value) animate.value.playbackRate = value - } - }) - const play = () => { - if (animate.value) { - try { - animate.value.play() - syncResume() - } catch (e) { - syncPause() - onError(e) - } - } else { - update() - } - } - const pause = () => { - var _a - try { - ;(_a = animate.value) == null ? void 0 : _a.pause() - syncPause() - } catch (e) { - onError(e) - } - } - const reverse = () => { - var _a - if (!animate.value) update() - try { - ;(_a = animate.value) == null ? void 0 : _a.reverse() - syncResume() - } catch (e) { - syncPause() - onError(e) - } - } - const finish = () => { - var _a - try { - ;(_a = animate.value) == null ? void 0 : _a.finish() - syncPause() - } catch (e) { - onError(e) - } - } - const cancel = () => { - var _a - try { - ;(_a = animate.value) == null ? void 0 : _a.cancel() - syncPause() - } catch (e) { - onError(e) - } - } - watch( - () => unrefElement(target), - el => { - if (el) update() - } - ) - watch( - () => keyframes, - value => { - if (animate.value) update() - if (!unrefElement(target) && animate.value) { - animate.value.effect = new KeyframeEffect( - unrefElement(target), - toValue(value), - animateOptions - ) - } - }, - { deep: true } - ) - tryOnMounted(() => update(true), false) - tryOnScopeDispose(cancel) - function update(init) { - const el = unrefElement(target) - if (!isSupported.value || !el) return - if (!animate.value) - animate.value = el.animate(toValue(keyframes), animateOptions) - if (persist) animate.value.persist() - if (_playbackRate !== 1) animate.value.playbackRate = _playbackRate - if (init && !immediate) animate.value.pause() - else syncResume() - onReady == null ? void 0 : onReady(animate.value) - } - useEventListener(animate, ['cancel', 'finish', 'remove'], syncPause) - useEventListener(animate, 'finish', () => { - var _a - if (commitStyles) (_a = animate.value) == null ? void 0 : _a.commitStyles() - }) - const { resume: resumeRef, pause: pauseRef } = useRafFn( - () => { - if (!animate.value) return - store.pending = animate.value.pending - store.playState = animate.value.playState - store.replaceState = animate.value.replaceState - store.startTime = animate.value.startTime - store.currentTime = animate.value.currentTime - store.timeline = animate.value.timeline - store.playbackRate = animate.value.playbackRate - }, - { immediate: false } - ) - function syncResume() { - if (isSupported.value) resumeRef() - } - function syncPause() { - if (isSupported.value && window2) window2.requestAnimationFrame(pauseRef) - } - return { - isSupported, - animate, - // actions - play, - pause, - reverse, - finish, - cancel, - // state - pending, - playState, - replaceState, - startTime, - currentTime, - timeline, - playbackRate - } -} -function useAsyncQueue(tasks, options) { - const { - interrupt = true, - onError = noop, - onFinished = noop, - signal - } = options || {} - const promiseState = { - aborted: 'aborted', - fulfilled: 'fulfilled', - pending: 'pending', - rejected: 'rejected' - } - const initialResult = Array.from( - Array.from({ length: tasks.length }), - () => ({ state: promiseState.pending, data: null }) - ) - const result = reactive(initialResult) - const activeIndex = ref(-1) - if (!tasks || tasks.length === 0) { - onFinished() - return { - activeIndex, - result - } - } - function updateResult(state, res) { - activeIndex.value++ - result[activeIndex.value].data = res - result[activeIndex.value].state = state - } - tasks.reduce((prev, curr) => { - return prev - .then(prevRes => { - var _a - if (signal == null ? void 0 : signal.aborted) { - updateResult(promiseState.aborted, new Error('aborted')) - return - } - if ( - ((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === - promiseState.rejected && - interrupt - ) { - onFinished() - return - } - const done = curr(prevRes).then(currentRes => { - updateResult(promiseState.fulfilled, currentRes) - if (activeIndex.value === tasks.length - 1) onFinished() - return currentRes - }) - if (!signal) return done - return Promise.race([done, whenAborted(signal)]) - }) - .catch(e => { - if (signal == null ? void 0 : signal.aborted) { - updateResult(promiseState.aborted, e) - return e - } - updateResult(promiseState.rejected, e) - onError() - return e - }) - }, Promise.resolve()) - return { - activeIndex, - result - } -} -function whenAborted(signal) { - return new Promise((resolve, reject) => { - const error = new Error('aborted') - if (signal.aborted) reject(error) - else signal.addEventListener('abort', () => reject(error), { once: true }) - }) -} -function useAsyncState(promise, initialState, options) { - const { - immediate = true, - delay = 0, - onError = noop, - onSuccess = noop, - resetOnExecute = true, - shallow = true, - throwError - } = options != null ? options : {} - const state = shallow ? shallowRef(initialState) : ref(initialState) - const isReady = ref(false) - const isLoading = ref(false) - const error = shallowRef(void 0) - async function execute(delay2 = 0, ...args) { - if (resetOnExecute) state.value = initialState - error.value = void 0 - isReady.value = false - isLoading.value = true - if (delay2 > 0) await promiseTimeout(delay2) - const _promise = typeof promise === 'function' ? promise(...args) : promise - try { - const data = await _promise - state.value = data - isReady.value = true - onSuccess(data) - } catch (e) { - error.value = e - onError(e) - if (throwError) throw e - } finally { - isLoading.value = false - } - return state.value - } - if (immediate) execute(delay) - const shell = { - state, - isReady, - isLoading, - error, - execute - } - function waitUntilIsLoaded() { - return new Promise((resolve, reject) => { - until(isLoading) - .toBe(false) - .then(() => resolve(shell)) - .catch(reject) - }) - } - return { - ...shell, - then(onFulfilled, onRejected) { - return waitUntilIsLoaded().then(onFulfilled, onRejected) - } - } -} -var defaults = { - array: v => JSON.stringify(v), - object: v => JSON.stringify(v), - set: v => JSON.stringify(Array.from(v)), - map: v => JSON.stringify(Object.fromEntries(v)), - null: () => '' -} -function getDefaultSerialization(target) { - if (!target) return defaults.null - if (target instanceof Map) return defaults.map - else if (target instanceof Set) return defaults.set - else if (Array.isArray(target)) return defaults.array - else return defaults.object -} -function useBase64(target, options) { - const base64 = ref('') - const promise = ref() - function execute() { - if (!isClient) return - promise.value = new Promise((resolve, reject) => { - try { - const _target = toValue(target) - if (_target == null) { - resolve('') - } else if (typeof _target === 'string') { - resolve(blobToBase64(new Blob([_target], { type: 'text/plain' }))) - } else if (_target instanceof Blob) { - resolve(blobToBase64(_target)) - } else if (_target instanceof ArrayBuffer) { - resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target)))) - } else if (_target instanceof HTMLCanvasElement) { - resolve( - _target.toDataURL( - options == null ? void 0 : options.type, - options == null ? void 0 : options.quality - ) - ) - } else if (_target instanceof HTMLImageElement) { - const img = _target.cloneNode(false) - img.crossOrigin = 'Anonymous' - imgLoaded(img) - .then(() => { - const canvas = document.createElement('canvas') - const ctx = canvas.getContext('2d') - canvas.width = img.width - canvas.height = img.height - ctx.drawImage(img, 0, 0, canvas.width, canvas.height) - resolve( - canvas.toDataURL( - options == null ? void 0 : options.type, - options == null ? void 0 : options.quality - ) - ) - }) - .catch(reject) - } else if (typeof _target === 'object') { - const _serializeFn = - (options == null ? void 0 : options.serializer) || - getDefaultSerialization(_target) - const serialized = _serializeFn(_target) - return resolve( - blobToBase64(new Blob([serialized], { type: 'application/json' })) - ) - } else { - reject(new Error('target is unsupported types')) - } - } catch (error) { - reject(error) - } - }) - promise.value.then(res => (base64.value = res)) - return promise.value - } - if (isRef(target) || typeof target === 'function') - watch(target, execute, { immediate: true }) - else execute() - return { - base64, - promise, - execute - } -} -function imgLoaded(img) { - return new Promise((resolve, reject) => { - if (!img.complete) { - img.onload = () => { - resolve() - } - img.onerror = reject - } else { - resolve() - } - }) -} -function blobToBase64(blob) { - return new Promise((resolve, reject) => { - const fr = new FileReader() - fr.onload = e => { - resolve(e.target.result) - } - fr.onerror = reject - fr.readAsDataURL(blob) - }) -} -function useBattery(options = {}) { - const { navigator = defaultNavigator } = options - const events2 = [ - 'chargingchange', - 'chargingtimechange', - 'dischargingtimechange', - 'levelchange' - ] - const isSupported = useSupported( - () => - navigator && - 'getBattery' in navigator && - typeof navigator.getBattery === 'function' - ) - const charging = ref(false) - const chargingTime = ref(0) - const dischargingTime = ref(0) - const level = ref(1) - let battery - function updateBatteryInfo() { - charging.value = this.charging - chargingTime.value = this.chargingTime || 0 - dischargingTime.value = this.dischargingTime || 0 - level.value = this.level - } - if (isSupported.value) { - navigator.getBattery().then(_battery => { - battery = _battery - updateBatteryInfo.call(battery) - useEventListener(battery, events2, updateBatteryInfo, { passive: true }) - }) - } - return { - isSupported, - charging, - chargingTime, - dischargingTime, - level - } -} -function useBluetooth(options) { - let { acceptAllDevices = false } = options || {} - const { - filters = void 0, - optionalServices = void 0, - navigator = defaultNavigator - } = options || {} - const isSupported = useSupported(() => navigator && 'bluetooth' in navigator) - const device = shallowRef(void 0) - const error = shallowRef(null) - watch(device, () => { - connectToBluetoothGATTServer() - }) - async function requestDevice() { - if (!isSupported.value) return - error.value = null - if (filters && filters.length > 0) acceptAllDevices = false - try { - device.value = await (navigator == null - ? void 0 - : navigator.bluetooth.requestDevice({ - acceptAllDevices, - filters, - optionalServices - })) - } catch (err) { - error.value = err - } - } - const server = ref() - const isConnected = computed(() => { - var _a - return ((_a = server.value) == null ? void 0 : _a.connected) || false - }) - async function connectToBluetoothGATTServer() { - error.value = null - if (device.value && device.value.gatt) { - device.value.addEventListener('gattserverdisconnected', () => {}) - try { - server.value = await device.value.gatt.connect() - } catch (err) { - error.value = err - } - } - } - tryOnMounted(() => { - var _a - if (device.value) (_a = device.value.gatt) == null ? void 0 : _a.connect() - }) - tryOnScopeDispose(() => { - var _a - if (device.value) - (_a = device.value.gatt) == null ? void 0 : _a.disconnect() - }) - return { - isSupported, - isConnected, - // Device: - device, - requestDevice, - // Server: - server, - // Errors: - error - } -} -function useMediaQuery(query, options = {}) { - const { window: window2 = defaultWindow } = options - const isSupported = useSupported( - () => - window2 && - 'matchMedia' in window2 && - typeof window2.matchMedia === 'function' - ) - let mediaQuery - const matches = ref(false) - const handler = event => { - matches.value = event.matches - } - const cleanup = () => { - if (!mediaQuery) return - if ('removeEventListener' in mediaQuery) - mediaQuery.removeEventListener('change', handler) - else mediaQuery.removeListener(handler) - } - const stopWatch = watchEffect(() => { - if (!isSupported.value) return - cleanup() - mediaQuery = window2.matchMedia(toValue(query)) - if ('addEventListener' in mediaQuery) - mediaQuery.addEventListener('change', handler) - else mediaQuery.addListener(handler) - matches.value = mediaQuery.matches - }) - tryOnScopeDispose(() => { - stopWatch() - cleanup() - mediaQuery = void 0 - }) - return matches -} -var breakpointsTailwind = { - sm: 640, - md: 768, - lg: 1024, - xl: 1280, - '2xl': 1536 -} -var breakpointsBootstrapV5 = { - xs: 0, - sm: 576, - md: 768, - lg: 992, - xl: 1200, - xxl: 1400 -} -var breakpointsVuetifyV2 = { - xs: 0, - sm: 600, - md: 960, - lg: 1264, - xl: 1904 -} -var breakpointsVuetifyV3 = { - xs: 0, - sm: 600, - md: 960, - lg: 1280, - xl: 1920, - xxl: 2560 -} -var breakpointsVuetify = breakpointsVuetifyV2 -var breakpointsAntDesign = { - xs: 480, - sm: 576, - md: 768, - lg: 992, - xl: 1200, - xxl: 1600 -} -var breakpointsQuasar = { - xs: 0, - sm: 600, - md: 1024, - lg: 1440, - xl: 1920 -} -var breakpointsSematic = { - mobileS: 320, - mobileM: 375, - mobileL: 425, - tablet: 768, - laptop: 1024, - laptopL: 1440, - desktop4K: 2560 -} -var breakpointsMasterCss = { - '3xs': 360, - '2xs': 480, - xs: 600, - sm: 768, - md: 1024, - lg: 1280, - xl: 1440, - '2xl': 1600, - '3xl': 1920, - '4xl': 2560 -} -var breakpointsPrimeFlex = { - sm: 576, - md: 768, - lg: 992, - xl: 1200 -} -var breakpointsElement = { - xs: 0, - sm: 768, - md: 992, - lg: 1200, - xl: 1920 -} -function useBreakpoints(breakpoints, options = {}) { - function getValue2(k, delta) { - let v = toValue(breakpoints[toValue(k)]) - if (delta != null) v = increaseWithUnit(v, delta) - if (typeof v === 'number') v = `${v}px` - return v - } - const { window: window2 = defaultWindow, strategy = 'min-width' } = options - function match(query) { - if (!window2) return false - return window2.matchMedia(query).matches - } - const greaterOrEqual = k => { - return useMediaQuery(() => `(min-width: ${getValue2(k)})`, options) - } - const smallerOrEqual = k => { - return useMediaQuery(() => `(max-width: ${getValue2(k)})`, options) - } - const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => { - Object.defineProperty(shortcuts, k, { - get: () => - strategy === 'min-width' ? greaterOrEqual(k) : smallerOrEqual(k), - enumerable: true, - configurable: true - }) - return shortcuts - }, {}) - function current() { - const points = Object.keys(breakpoints).map(i => [i, greaterOrEqual(i)]) - return computed(() => points.filter(([, v]) => v.value).map(([k]) => k)) - } - return Object.assign(shortcutMethods, { - greaterOrEqual, - smallerOrEqual, - greater(k) { - return useMediaQuery(() => `(min-width: ${getValue2(k, 0.1)})`, options) - }, - smaller(k) { - return useMediaQuery(() => `(max-width: ${getValue2(k, -0.1)})`, options) - }, - between(a, b) { - return useMediaQuery( - () => - `(min-width: ${getValue2(a)}) and (max-width: ${getValue2(b, -0.1)})`, - options - ) - }, - isGreater(k) { - return match(`(min-width: ${getValue2(k, 0.1)})`) - }, - isGreaterOrEqual(k) { - return match(`(min-width: ${getValue2(k)})`) - }, - isSmaller(k) { - return match(`(max-width: ${getValue2(k, -0.1)})`) - }, - isSmallerOrEqual(k) { - return match(`(max-width: ${getValue2(k)})`) - }, - isInBetween(a, b) { - return match( - `(min-width: ${getValue2(a)}) and (max-width: ${getValue2(b, -0.1)})` - ) - }, - current, - active() { - const bps = current() - return computed(() => (bps.value.length === 0 ? '' : bps.value.at(-1))) - } - }) -} -function useBroadcastChannel(options) { - const { name, window: window2 = defaultWindow } = options - const isSupported = useSupported( - () => window2 && 'BroadcastChannel' in window2 - ) - const isClosed = ref(false) - const channel = ref() - const data = ref() - const error = shallowRef(null) - const post = data2 => { - if (channel.value) channel.value.postMessage(data2) - } - const close = () => { - if (channel.value) channel.value.close() - isClosed.value = true - } - if (isSupported.value) { - tryOnMounted(() => { - error.value = null - channel.value = new BroadcastChannel(name) - channel.value.addEventListener( - 'message', - e => { - data.value = e.data - }, - { passive: true } - ) - channel.value.addEventListener( - 'messageerror', - e => { - error.value = e - }, - { passive: true } - ) - channel.value.addEventListener('close', () => { - isClosed.value = true - }) - }) - } - tryOnScopeDispose(() => { - close() - }) - return { - isSupported, - channel, - data, - post, - close, - error, - isClosed - } -} -var WRITABLE_PROPERTIES = [ - 'hash', - 'host', - 'hostname', - 'href', - 'pathname', - 'port', - 'protocol', - 'search' -] -function useBrowserLocation(options = {}) { - const { window: window2 = defaultWindow } = options - const refs = Object.fromEntries(WRITABLE_PROPERTIES.map(key => [key, ref()])) - for (const [key, ref2] of objectEntries(refs)) { - watch(ref2, value => { - if ( - !(window2 == null ? void 0 : window2.location) || - window2.location[key] === value - ) - return - window2.location[key] = value - }) - } - const buildState = trigger => { - var _a - const { state: state2, length } = - (window2 == null ? void 0 : window2.history) || {} - const { origin } = (window2 == null ? void 0 : window2.location) || {} - for (const key of WRITABLE_PROPERTIES) - refs[key].value = - (_a = window2 == null ? void 0 : window2.location) == null - ? void 0 - : _a[key] - return reactive({ - trigger, - state: state2, - length, - origin, - ...refs - }) - } - const state = ref(buildState('load')) - if (window2) { - useEventListener( - window2, - 'popstate', - () => (state.value = buildState('popstate')), - { passive: true } - ) - useEventListener( - window2, - 'hashchange', - () => (state.value = buildState('hashchange')), - { passive: true } - ) - } - return state -} -function useCached(refValue, comparator = (a, b) => a === b, watchOptions) { - const cachedValue = ref(refValue.value) - watch( - () => refValue.value, - value => { - if (!comparator(value, cachedValue.value)) cachedValue.value = value - }, - watchOptions - ) - return cachedValue -} -function usePermission(permissionDesc, options = {}) { - const { controls = false, navigator = defaultNavigator } = options - const isSupported = useSupported( - () => navigator && 'permissions' in navigator - ) - const permissionStatus = shallowRef() - const desc = - typeof permissionDesc === 'string' - ? { name: permissionDesc } - : permissionDesc - const state = shallowRef() - const update = () => { - var _a, _b - state.value = - (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null - ? _b - : 'prompt' - } - useEventListener(permissionStatus, 'change', update) - const query = createSingletonPromise(async () => { - if (!isSupported.value) return - if (!permissionStatus.value) { - try { - permissionStatus.value = await navigator.permissions.query(desc) - } catch (e) { - permissionStatus.value = void 0 - } finally { - update() - } - } - if (controls) return toRaw(permissionStatus.value) - }) - query() - if (controls) { - return { - state, - isSupported, - query - } - } else { - return state - } -} -function useClipboard(options = {}) { - const { - navigator = defaultNavigator, - read = false, - source, - copiedDuring = 1500, - legacy = false - } = options - const isClipboardApiSupported = useSupported( - () => navigator && 'clipboard' in navigator - ) - const permissionRead = usePermission('clipboard-read') - const permissionWrite = usePermission('clipboard-write') - const isSupported = computed(() => isClipboardApiSupported.value || legacy) - const text = ref('') - const copied = ref(false) - const timeout = useTimeoutFn(() => (copied.value = false), copiedDuring) - function updateText() { - if (isClipboardApiSupported.value && isAllowed(permissionRead.value)) { - navigator.clipboard.readText().then(value => { - text.value = value - }) - } else { - text.value = legacyRead() - } - } - if (isSupported.value && read) useEventListener(['copy', 'cut'], updateText) - async function copy(value = toValue(source)) { - if (isSupported.value && value != null) { - if (isClipboardApiSupported.value && isAllowed(permissionWrite.value)) - await navigator.clipboard.writeText(value) - else legacyCopy(value) - text.value = value - copied.value = true - timeout.start() - } - } - function legacyCopy(value) { - const ta = document.createElement('textarea') - ta.value = value != null ? value : '' - ta.style.position = 'absolute' - ta.style.opacity = '0' - document.body.appendChild(ta) - ta.select() - document.execCommand('copy') - ta.remove() - } - function legacyRead() { - var _a, _b, _c - return (_c = - (_b = - (_a = document == null ? void 0 : document.getSelection) == null - ? void 0 - : _a.call(document)) == null - ? void 0 - : _b.toString()) != null - ? _c - : '' - } - function isAllowed(status) { - return status === 'granted' || status === 'prompt' - } - return { - isSupported, - text, - copied, - copy - } -} -function useClipboardItems(options = {}) { - const { - navigator = defaultNavigator, - read = false, - source, - copiedDuring = 1500 - } = options - const isSupported = useSupported(() => navigator && 'clipboard' in navigator) - const content = ref([]) - const copied = ref(false) - const timeout = useTimeoutFn(() => (copied.value = false), copiedDuring) - function updateContent() { - if (isSupported.value) { - navigator.clipboard.read().then(items => { - content.value = items - }) - } - } - if (isSupported.value && read) - useEventListener(['copy', 'cut'], updateContent) - async function copy(value = toValue(source)) { - if (isSupported.value && value != null) { - await navigator.clipboard.write(value) - content.value = value - copied.value = true - timeout.start() - } - } - return { - isSupported, - content, - copied, - copy - } -} -function cloneFnJSON(source) { - return JSON.parse(JSON.stringify(source)) -} -function useCloned(source, options = {}) { - const cloned = ref({}) - const { - manual, - clone = cloneFnJSON, - // watch options - deep = true, - immediate = true - } = options - function sync() { - cloned.value = clone(toValue(source)) - } - if (!manual && (isRef(source) || typeof source === 'function')) { - watch(source, sync, { - ...options, - deep, - immediate - }) - } else { - sync() - } - return { cloned, sync } -} -var _global = - typeof globalThis !== 'undefined' - ? globalThis - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : typeof self !== 'undefined' - ? self - : {} -var globalKey = '__vueuse_ssr_handlers__' -var handlers = getHandlers() -function getHandlers() { - if (!(globalKey in _global)) _global[globalKey] = _global[globalKey] || {} - return _global[globalKey] -} -function getSSRHandler(key, fallback) { - return handlers[key] || fallback -} -function setSSRHandler(key, fn) { - handlers[key] = fn -} -function usePreferredDark(options) { - return useMediaQuery('(prefers-color-scheme: dark)', options) -} -function guessSerializerType(rawInit) { - return rawInit == null - ? 'any' - : rawInit instanceof Set - ? 'set' - : rawInit instanceof Map - ? 'map' - : rawInit instanceof Date - ? 'date' - : typeof rawInit === 'boolean' - ? 'boolean' - : typeof rawInit === 'string' - ? 'string' - : typeof rawInit === 'object' - ? 'object' - : !Number.isNaN(rawInit) - ? 'number' - : 'any' -} -var StorageSerializers = { - boolean: { - read: v => v === 'true', - write: v => String(v) - }, - object: { - read: v => JSON.parse(v), - write: v => JSON.stringify(v) - }, - number: { - read: v => Number.parseFloat(v), - write: v => String(v) - }, - any: { - read: v => v, - write: v => String(v) - }, - string: { - read: v => v, - write: v => String(v) - }, - map: { - read: v => new Map(JSON.parse(v)), - write: v => JSON.stringify(Array.from(v.entries())) - }, - set: { - read: v => new Set(JSON.parse(v)), - write: v => JSON.stringify(Array.from(v)) - }, - date: { - read: v => new Date(v), - write: v => v.toISOString() - } -} -var customStorageEventName = 'vueuse-storage' -function useStorage(key, defaults2, storage, options = {}) { - var _a - const { - flush = 'pre', - deep = true, - listenToStorageChanges = true, - writeDefaults = true, - mergeDefaults = false, - shallow, - window: window2 = defaultWindow, - eventFilter, - onError = e => { - console.error(e) - }, - initOnMounted - } = options - const data = (shallow ? shallowRef : ref)( - typeof defaults2 === 'function' ? defaults2() : defaults2 - ) - if (!storage) { - try { - storage = getSSRHandler('getDefaultStorage', () => { - var _a2 - return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage - })() - } catch (e) { - onError(e) - } - } - if (!storage) return data - const rawInit = toValue(defaults2) - const type = guessSerializerType(rawInit) - const serializer = - (_a = options.serializer) != null ? _a : StorageSerializers[type] - const { pause: pauseWatch, resume: resumeWatch } = watchPausable( - data, - () => write(data.value), - { flush, deep, eventFilter } - ) - if (window2 && listenToStorageChanges) { - tryOnMounted(() => { - if (storage instanceof Storage) - useEventListener(window2, 'storage', update) - else - useEventListener(window2, customStorageEventName, updateFromCustomEvent) - if (initOnMounted) update() - }) - } - if (!initOnMounted) update() - function dispatchWriteEvent(oldValue, newValue) { - if (window2) { - const payload = { - key, - oldValue, - newValue, - storageArea: storage - } - window2.dispatchEvent( - storage instanceof Storage - ? new StorageEvent('storage', payload) - : new CustomEvent(customStorageEventName, { - detail: payload - }) - ) - } - } - function write(v) { - try { - const oldValue = storage.getItem(key) - if (v == null) { - dispatchWriteEvent(oldValue, null) - storage.removeItem(key) - } else { - const serialized = serializer.write(v) - if (oldValue !== serialized) { - storage.setItem(key, serialized) - dispatchWriteEvent(oldValue, serialized) - } - } - } catch (e) { - onError(e) - } - } - function read(event) { - const rawValue = event ? event.newValue : storage.getItem(key) - if (rawValue == null) { - if (writeDefaults && rawInit != null) - storage.setItem(key, serializer.write(rawInit)) - return rawInit - } else if (!event && mergeDefaults) { - const value = serializer.read(rawValue) - if (typeof mergeDefaults === 'function') - return mergeDefaults(value, rawInit) - else if (type === 'object' && !Array.isArray(value)) - return { ...rawInit, ...value } - return value - } else if (typeof rawValue !== 'string') { - return rawValue - } else { - return serializer.read(rawValue) - } - } - function update(event) { - if (event && event.storageArea !== storage) return - if (event && event.key == null) { - data.value = rawInit - return - } - if (event && event.key !== key) return - pauseWatch() - try { - if ( - (event == null ? void 0 : event.newValue) !== - serializer.write(data.value) - ) - data.value = read(event) - } catch (e) { - onError(e) - } finally { - if (event) nextTick(resumeWatch) - else resumeWatch() - } - } - function updateFromCustomEvent(event) { - update(event.detail) - } - return data -} -var CSS_DISABLE_TRANS = - '*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}' -function useColorMode(options = {}) { - const { - selector = 'html', - attribute = 'class', - initialValue = 'auto', - window: window2 = defaultWindow, - storage, - storageKey = 'vueuse-color-scheme', - listenToStorageChanges = true, - storageRef, - emitAuto, - disableTransition = true - } = options - const modes = { - auto: '', - light: 'light', - dark: 'dark', - ...(options.modes || {}) - } - const preferredDark = usePreferredDark({ window: window2 }) - const system = computed(() => (preferredDark.value ? 'dark' : 'light')) - const store = - storageRef || - (storageKey == null - ? toRef2(initialValue) - : useStorage(storageKey, initialValue, storage, { - window: window2, - listenToStorageChanges - })) - const state = computed(() => - store.value === 'auto' ? system.value : store.value - ) - const updateHTMLAttrs = getSSRHandler( - 'updateHTMLAttrs', - (selector2, attribute2, value) => { - const el = - typeof selector2 === 'string' - ? window2 == null - ? void 0 - : window2.document.querySelector(selector2) - : unrefElement(selector2) - if (!el) return - const classesToAdd = /* @__PURE__ */ new Set() - const classesToRemove = /* @__PURE__ */ new Set() - let attributeToChange = null - if (attribute2 === 'class') { - const current = value.split(/\s/g) - Object.values(modes) - .flatMap(i => (i || '').split(/\s/g)) - .filter(Boolean) - .forEach(v => { - if (current.includes(v)) classesToAdd.add(v) - else classesToRemove.add(v) - }) - } else { - attributeToChange = { key: attribute2, value } - } - if ( - classesToAdd.size === 0 && - classesToRemove.size === 0 && - attributeToChange === null - ) - return - let style - if (disableTransition) { - style = window2.document.createElement('style') - style.appendChild(document.createTextNode(CSS_DISABLE_TRANS)) - window2.document.head.appendChild(style) - } - for (const c of classesToAdd) { - el.classList.add(c) - } - for (const c of classesToRemove) { - el.classList.remove(c) - } - if (attributeToChange) { - el.setAttribute(attributeToChange.key, attributeToChange.value) - } - if (disableTransition) { - window2.getComputedStyle(style).opacity - document.head.removeChild(style) - } - } - ) - function defaultOnChanged(mode) { - var _a - updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode) - } - function onChanged(mode) { - if (options.onChanged) options.onChanged(mode, defaultOnChanged) - else defaultOnChanged(mode) - } - watch(state, onChanged, { flush: 'post', immediate: true }) - tryOnMounted(() => onChanged(state.value)) - const auto = computed({ - get() { - return emitAuto ? store.value : state.value - }, - set(v) { - store.value = v - } - }) - try { - return Object.assign(auto, { store, system, state }) - } catch (e) { - return auto - } -} -function useConfirmDialog(revealed = ref(false)) { - const confirmHook = createEventHook() - const cancelHook = createEventHook() - const revealHook = createEventHook() - let _resolve = noop - const reveal = data => { - revealHook.trigger(data) - revealed.value = true - return new Promise(resolve => { - _resolve = resolve - }) - } - const confirm = data => { - revealed.value = false - confirmHook.trigger(data) - _resolve({ data, isCanceled: false }) - } - const cancel = data => { - revealed.value = false - cancelHook.trigger(data) - _resolve({ data, isCanceled: true }) - } - return { - isRevealed: computed(() => revealed.value), - reveal, - confirm, - cancel, - onReveal: revealHook.on, - onConfirm: confirmHook.on, - onCancel: cancelHook.on - } -} -function useCssVar(prop, target, options = {}) { - const { - window: window2 = defaultWindow, - initialValue, - observe = false - } = options - const variable = ref(initialValue) - const elRef = computed(() => { - var _a - return ( - unrefElement(target) || - ((_a = window2 == null ? void 0 : window2.document) == null - ? void 0 - : _a.documentElement) - ) - }) - function updateCssVar() { - var _a - const key = toValue(prop) - const el = toValue(elRef) - if (el && window2 && key) { - const value = - (_a = window2.getComputedStyle(el).getPropertyValue(key)) == null - ? void 0 - : _a.trim() - variable.value = value || initialValue - } - } - if (observe) { - useMutationObserver(elRef, updateCssVar, { - attributeFilter: ['style', 'class'], - window: window2 - }) - } - watch( - [elRef, () => toValue(prop)], - (_, old) => { - if (old[0] && old[1]) old[0].style.removeProperty(old[1]) - updateCssVar() - }, - { immediate: true } - ) - watch(variable, val => { - var _a - const raw_prop = toValue(prop) - if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) { - if (val == null) elRef.value.style.removeProperty(raw_prop) - else elRef.value.style.setProperty(raw_prop, val) - } - }) - return variable -} -function useCurrentElement(rootComponent) { - const vm = getCurrentInstance() - const currentElement = computedWithControl( - () => null, - () => (rootComponent ? unrefElement(rootComponent) : vm.proxy.$el) - ) - onUpdated(currentElement.trigger) - onMounted(currentElement.trigger) - return currentElement -} -function useCycleList(list, options) { - const state = shallowRef(getInitialValue()) - const listRef = toRef2(list) - const index = computed({ - get() { - var _a - const targetList = listRef.value - let index2 = (options == null ? void 0 : options.getIndexOf) - ? options.getIndexOf(state.value, targetList) - : targetList.indexOf(state.value) - if (index2 < 0) - index2 = - (_a = options == null ? void 0 : options.fallbackIndex) != null - ? _a - : 0 - return index2 - }, - set(v) { - set3(v) - } - }) - function set3(i) { - const targetList = listRef.value - const length = targetList.length - const index2 = ((i % length) + length) % length - const value = targetList[index2] - state.value = value - return value - } - function shift(delta = 1) { - return set3(index.value + delta) - } - function next(n = 1) { - return shift(n) - } - function prev(n = 1) { - return shift(-n) - } - function getInitialValue() { - var _a, _b - return (_b = toValue( - (_a = options == null ? void 0 : options.initialValue) != null - ? _a - : toValue(list)[0] - )) != null - ? _b - : void 0 - } - watch(listRef, () => set3(index.value)) - return { - state, - index, - next, - prev, - go: set3 - } -} -function useDark(options = {}) { - const { - valueDark = 'dark', - valueLight = '', - window: window2 = defaultWindow - } = options - const mode = useColorMode({ - ...options, - onChanged: (mode2, defaultHandler) => { - var _a - if (options.onChanged) - (_a = options.onChanged) == null - ? void 0 - : _a.call(options, mode2 === 'dark', defaultHandler, mode2) - else defaultHandler(mode2) - }, - modes: { - dark: valueDark, - light: valueLight - } - }) - const system = computed(() => { - if (mode.system) { - return mode.system.value - } else { - const preferredDark = usePreferredDark({ window: window2 }) - return preferredDark.value ? 'dark' : 'light' - } - }) - const isDark = computed({ - get() { - return mode.value === 'dark' - }, - set(v) { - const modeVal = v ? 'dark' : 'light' - if (system.value === modeVal) mode.value = 'auto' - else mode.value = modeVal - } - }) - return isDark -} -function fnBypass(v) { - return v -} -function fnSetSource(source, value) { - return (source.value = value) -} -function defaultDump(clone) { - return clone ? (typeof clone === 'function' ? clone : cloneFnJSON) : fnBypass -} -function defaultParse(clone) { - return clone ? (typeof clone === 'function' ? clone : cloneFnJSON) : fnBypass -} -function useManualRefHistory(source, options = {}) { - const { - clone = false, - dump = defaultDump(clone), - parse = defaultParse(clone), - setSource = fnSetSource - } = options - function _createHistoryRecord() { - return markRaw({ - snapshot: dump(source.value), - timestamp: timestamp() - }) - } - const last = ref(_createHistoryRecord()) - const undoStack = ref([]) - const redoStack = ref([]) - const _setSource = record => { - setSource(source, parse(record.snapshot)) - last.value = record - } - const commit = () => { - undoStack.value.unshift(last.value) - last.value = _createHistoryRecord() - if (options.capacity && undoStack.value.length > options.capacity) - undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY) - if (redoStack.value.length) - redoStack.value.splice(0, redoStack.value.length) - } - const clear = () => { - undoStack.value.splice(0, undoStack.value.length) - redoStack.value.splice(0, redoStack.value.length) - } - const undo = () => { - const state = undoStack.value.shift() - if (state) { - redoStack.value.unshift(last.value) - _setSource(state) - } - } - const redo = () => { - const state = redoStack.value.shift() - if (state) { - undoStack.value.unshift(last.value) - _setSource(state) - } - } - const reset = () => { - _setSource(last.value) - } - const history = computed(() => [last.value, ...undoStack.value]) - const canUndo = computed(() => undoStack.value.length > 0) - const canRedo = computed(() => redoStack.value.length > 0) - return { - source, - undoStack, - redoStack, - last, - history, - canUndo, - canRedo, - clear, - commit, - reset, - undo, - redo - } -} -function useRefHistory(source, options = {}) { - const { deep = false, flush = 'pre', eventFilter } = options - const { - eventFilter: composedFilter, - pause, - resume: resumeTracking, - isActive: isTracking - } = pausableFilter(eventFilter) - const { ignoreUpdates, ignorePrevAsyncUpdates, stop } = watchIgnorable( - source, - commit, - { deep, flush, eventFilter: composedFilter } - ) - function setSource(source2, value) { - ignorePrevAsyncUpdates() - ignoreUpdates(() => { - source2.value = value - }) - } - const manualHistory = useManualRefHistory(source, { - ...options, - clone: options.clone || deep, - setSource - }) - const { clear, commit: manualCommit } = manualHistory - function commit() { - ignorePrevAsyncUpdates() - manualCommit() - } - function resume(commitNow) { - resumeTracking() - if (commitNow) commit() - } - function batch(fn) { - let canceled = false - const cancel = () => (canceled = true) - ignoreUpdates(() => { - fn(cancel) - }) - if (!canceled) commit() - } - function dispose() { - stop() - clear() - } - return { - ...manualHistory, - isTracking, - pause, - resume, - commit, - batch, - dispose - } -} -function useDebouncedRefHistory(source, options = {}) { - const filter = options.debounce ? debounceFilter(options.debounce) : void 0 - const history = useRefHistory(source, { ...options, eventFilter: filter }) - return { - ...history - } -} -function useDeviceMotion(options = {}) { - const { window: window2 = defaultWindow, eventFilter = bypassFilter } = - options - const acceleration = ref({ x: null, y: null, z: null }) - const rotationRate = ref({ alpha: null, beta: null, gamma: null }) - const interval = ref(0) - const accelerationIncludingGravity = ref({ - x: null, - y: null, - z: null - }) - if (window2) { - const onDeviceMotion = createFilterWrapper(eventFilter, event => { - acceleration.value = event.acceleration - accelerationIncludingGravity.value = event.accelerationIncludingGravity - rotationRate.value = event.rotationRate - interval.value = event.interval - }) - useEventListener(window2, 'devicemotion', onDeviceMotion) - } - return { - acceleration, - accelerationIncludingGravity, - rotationRate, - interval - } -} -function useDeviceOrientation(options = {}) { - const { window: window2 = defaultWindow } = options - const isSupported = useSupported( - () => window2 && 'DeviceOrientationEvent' in window2 - ) - const isAbsolute = ref(false) - const alpha = ref(null) - const beta = ref(null) - const gamma = ref(null) - if (window2 && isSupported.value) { - useEventListener(window2, 'deviceorientation', event => { - isAbsolute.value = event.absolute - alpha.value = event.alpha - beta.value = event.beta - gamma.value = event.gamma - }) - } - return { - isSupported, - isAbsolute, - alpha, - beta, - gamma - } -} -function useDevicePixelRatio(options = {}) { - const { window: window2 = defaultWindow } = options - const pixelRatio = ref(1) - if (window2) { - let observe2 = function () { - pixelRatio.value = window2.devicePixelRatio - cleanup2() - media = window2.matchMedia(`(resolution: ${pixelRatio.value}dppx)`) - media.addEventListener('change', observe2, { once: true }) - }, - cleanup2 = function () { - media == null ? void 0 : media.removeEventListener('change', observe2) - } - let media - observe2() - tryOnScopeDispose(cleanup2) - } - return { pixelRatio } -} -function useDevicesList(options = {}) { - const { - navigator = defaultNavigator, - requestPermissions = false, - constraints = { audio: true, video: true }, - onUpdated: onUpdated2 - } = options - const devices = ref([]) - const videoInputs = computed(() => - devices.value.filter(i => i.kind === 'videoinput') - ) - const audioInputs = computed(() => - devices.value.filter(i => i.kind === 'audioinput') - ) - const audioOutputs = computed(() => - devices.value.filter(i => i.kind === 'audiooutput') - ) - const isSupported = useSupported( - () => - navigator && - navigator.mediaDevices && - navigator.mediaDevices.enumerateDevices - ) - const permissionGranted = ref(false) - let stream - async function update() { - if (!isSupported.value) return - devices.value = await navigator.mediaDevices.enumerateDevices() - onUpdated2 == null ? void 0 : onUpdated2(devices.value) - if (stream) { - stream.getTracks().forEach(t => t.stop()) - stream = null - } - } - async function ensurePermissions() { - if (!isSupported.value) return false - if (permissionGranted.value) return true - const { state, query } = usePermission('camera', { controls: true }) - await query() - if (state.value !== 'granted') { - let granted = true - try { - stream = await navigator.mediaDevices.getUserMedia(constraints) - } catch (e) { - stream = null - granted = false - } - update() - permissionGranted.value = granted - } else { - permissionGranted.value = true - } - return permissionGranted.value - } - if (isSupported.value) { - if (requestPermissions) ensurePermissions() - useEventListener(navigator.mediaDevices, 'devicechange', update) - update() - } - return { - devices, - ensurePermissions, - permissionGranted, - videoInputs, - audioInputs, - audioOutputs, - isSupported - } -} -function useDisplayMedia(options = {}) { - var _a - const enabled = ref((_a = options.enabled) != null ? _a : false) - const video = options.video - const audio = options.audio - const { navigator = defaultNavigator } = options - const isSupported = useSupported(() => { - var _a2 - return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null - ? void 0 - : _a2.getDisplayMedia - }) - const constraint = { audio, video } - const stream = shallowRef() - async function _start() { - var _a2 - if (!isSupported.value || stream.value) return - stream.value = await navigator.mediaDevices.getDisplayMedia(constraint) - ;(_a2 = stream.value) == null - ? void 0 - : _a2.getTracks().forEach(t => t.addEventListener('ended', stop)) - return stream.value - } - async function _stop() { - var _a2 - ;(_a2 = stream.value) == null - ? void 0 - : _a2.getTracks().forEach(t => t.stop()) - stream.value = void 0 - } - function stop() { - _stop() - enabled.value = false - } - async function start() { - await _start() - if (stream.value) enabled.value = true - return stream.value - } - watch( - enabled, - v => { - if (v) _start() - else _stop() - }, - { immediate: true } - ) - return { - isSupported, - stream, - start, - stop, - enabled - } -} -function useDocumentVisibility(options = {}) { - const { document: document2 = defaultDocument } = options - if (!document2) return ref('visible') - const visibility = ref(document2.visibilityState) - useEventListener(document2, 'visibilitychange', () => { - visibility.value = document2.visibilityState - }) - return visibility -} -function useDraggable(target, options = {}) { - var _a, _b - const { - pointerTypes, - preventDefault: preventDefault2, - stopPropagation, - exact, - onMove, - onEnd, - onStart, - initialValue, - axis = 'both', - draggingElement = defaultWindow, - containerElement, - handle: draggingHandle = target, - buttons = [0] - } = options - const position = ref( - (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 } - ) - const pressedDelta = ref() - const filterEvent = e => { - if (pointerTypes) return pointerTypes.includes(e.pointerType) - return true - } - const handleEvent = e => { - if (toValue(preventDefault2)) e.preventDefault() - if (toValue(stopPropagation)) e.stopPropagation() - } - const start = e => { - var _a2 - if (!toValue(buttons).includes(e.button)) return - if (toValue(options.disabled) || !filterEvent(e)) return - if (toValue(exact) && e.target !== toValue(target)) return - const container = toValue(containerElement) - const containerRect = - (_a2 = container == null ? void 0 : container.getBoundingClientRect) == - null - ? void 0 - : _a2.call(container) - const targetRect = toValue(target).getBoundingClientRect() - const pos = { - x: - e.clientX - - (container - ? targetRect.left - containerRect.left + container.scrollLeft - : targetRect.left), - y: - e.clientY - - (container - ? targetRect.top - containerRect.top + container.scrollTop - : targetRect.top) - } - if ((onStart == null ? void 0 : onStart(pos, e)) === false) return - pressedDelta.value = pos - handleEvent(e) - } - const move = e => { - if (toValue(options.disabled) || !filterEvent(e)) return - if (!pressedDelta.value) return - const container = toValue(containerElement) - const targetRect = toValue(target).getBoundingClientRect() - let { x, y } = position.value - if (axis === 'x' || axis === 'both') { - x = e.clientX - pressedDelta.value.x - if (container) - x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width) - } - if (axis === 'y' || axis === 'both') { - y = e.clientY - pressedDelta.value.y - if (container) - y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height) - } - position.value = { - x, - y - } - onMove == null ? void 0 : onMove(position.value, e) - handleEvent(e) - } - const end = e => { - if (toValue(options.disabled) || !filterEvent(e)) return - if (!pressedDelta.value) return - pressedDelta.value = void 0 - onEnd == null ? void 0 : onEnd(position.value, e) - handleEvent(e) - } - if (isClient) { - const config = { capture: (_b = options.capture) != null ? _b : true } - useEventListener(draggingHandle, 'pointerdown', start, config) - useEventListener(draggingElement, 'pointermove', move, config) - useEventListener(draggingElement, 'pointerup', end, config) - } - return { - ...toRefs2(position), - position, - isDragging: computed(() => !!pressedDelta.value), - style: computed( - () => `left:${position.value.x}px;top:${position.value.y}px;` - ) - } -} -function useDropZone(target, options = {}) { - var _a, _b - const isOverDropZone = ref(false) - const files = shallowRef(null) - let counter = 0 - let isValid = true - if (isClient) { - const _options = - typeof options === 'function' ? { onDrop: options } : options - const multiple = (_a = _options.multiple) != null ? _a : true - const preventDefaultForUnhandled = - (_b = _options.preventDefaultForUnhandled) != null ? _b : false - const getFiles = event => { - var _a2, _b2 - const list = Array.from( - (_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null - ? _b2 - : [] - ) - return list.length === 0 ? null : multiple ? list : [list[0]] - } - const checkDataTypes = types => { - if (_options.dataTypes) { - const dataTypes = unref(_options.dataTypes) - return typeof dataTypes === 'function' - ? dataTypes(types) - : dataTypes - ? dataTypes.some(item => types.includes(item)) - : true - } - return true - } - const checkValidity = event => { - var _a2, _b2 - const items = Array.from( - (_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items) != null - ? _b2 - : [] - ) - const types = items.map(item => item.type) - const dataTypesValid = checkDataTypes(types) - const multipleFilesValid = multiple || items.length <= 1 - return dataTypesValid && multipleFilesValid - } - const handleDragEvent = (event, eventType) => { - var _a2, _b2, _c, _d - isValid = checkValidity(event) - if (!isValid) { - if (preventDefaultForUnhandled) { - event.preventDefault() - } - if (event.dataTransfer) { - event.dataTransfer.dropEffect = 'none' - } - return - } - event.preventDefault() - if (event.dataTransfer) { - event.dataTransfer.dropEffect = 'copy' - } - const currentFiles = getFiles(event) - switch (eventType) { - case 'enter': - counter += 1 - isOverDropZone.value = true - ;(_a2 = _options.onEnter) == null - ? void 0 - : _a2.call(_options, null, event) - break - case 'over': - ;(_b2 = _options.onOver) == null - ? void 0 - : _b2.call(_options, null, event) - break - case 'leave': - counter -= 1 - if (counter === 0) isOverDropZone.value = false - ;(_c = _options.onLeave) == null - ? void 0 - : _c.call(_options, null, event) - break - case 'drop': - counter = 0 - isOverDropZone.value = false - if (isValid) { - files.value = currentFiles - ;(_d = _options.onDrop) == null - ? void 0 - : _d.call(_options, currentFiles, event) - } - break - } - } - useEventListener(target, 'dragenter', event => - handleDragEvent(event, 'enter') - ) - useEventListener(target, 'dragover', event => - handleDragEvent(event, 'over') - ) - useEventListener(target, 'dragleave', event => - handleDragEvent(event, 'leave') - ) - useEventListener(target, 'drop', event => handleDragEvent(event, 'drop')) - } - return { - files, - isOverDropZone - } -} -function useResizeObserver(target, callback, options = {}) { - const { window: window2 = defaultWindow, ...observerOptions } = options - let observer - const isSupported = useSupported(() => window2 && 'ResizeObserver' in window2) - const cleanup = () => { - if (observer) { - observer.disconnect() - observer = void 0 - } - } - const targets = computed(() => { - const _targets = toValue(target) - return Array.isArray(_targets) - ? _targets.map(el => unrefElement(el)) - : [unrefElement(_targets)] - }) - const stopWatch = watch( - targets, - els => { - cleanup() - if (isSupported.value && window2) { - observer = new ResizeObserver(callback) - for (const _el of els) { - if (_el) observer.observe(_el, observerOptions) - } - } - }, - { immediate: true, flush: 'post' } - ) - const stop = () => { - cleanup() - stopWatch() - } - tryOnScopeDispose(stop) - return { - isSupported, - stop - } -} -function useElementBounding(target, options = {}) { - const { - reset = true, - windowResize = true, - windowScroll = true, - immediate = true, - updateTiming = 'sync' - } = options - const height = ref(0) - const bottom = ref(0) - const left = ref(0) - const right = ref(0) - const top = ref(0) - const width = ref(0) - const x = ref(0) - const y = ref(0) - function recalculate() { - const el = unrefElement(target) - if (!el) { - if (reset) { - height.value = 0 - bottom.value = 0 - left.value = 0 - right.value = 0 - top.value = 0 - width.value = 0 - x.value = 0 - y.value = 0 - } - return - } - const rect = el.getBoundingClientRect() - height.value = rect.height - bottom.value = rect.bottom - left.value = rect.left - right.value = rect.right - top.value = rect.top - width.value = rect.width - x.value = rect.x - y.value = rect.y - } - function update() { - if (updateTiming === 'sync') recalculate() - else if (updateTiming === 'next-frame') - requestAnimationFrame(() => recalculate()) - } - useResizeObserver(target, update) - watch( - () => unrefElement(target), - ele => !ele && update() - ) - useMutationObserver(target, update, { - attributeFilter: ['style', 'class'] - }) - if (windowScroll) - useEventListener('scroll', update, { capture: true, passive: true }) - if (windowResize) useEventListener('resize', update, { passive: true }) - tryOnMounted(() => { - if (immediate) update() - }) - return { - height, - bottom, - left, - right, - top, - width, - x, - y, - update - } -} -function useElementByPoint(options) { - const { - x, - y, - document: document2 = defaultDocument, - multiple, - interval = 'requestAnimationFrame', - immediate = true - } = options - const isSupported = useSupported(() => { - if (toValue(multiple)) return document2 && 'elementsFromPoint' in document2 - return document2 && 'elementFromPoint' in document2 - }) - const element = ref(null) - const cb = () => { - var _a, _b - element.value = toValue(multiple) - ? (_a = - document2 == null - ? void 0 - : document2.elementsFromPoint(toValue(x), toValue(y))) != null - ? _a - : [] - : (_b = - document2 == null - ? void 0 - : document2.elementFromPoint(toValue(x), toValue(y))) != null - ? _b - : null - } - const controls = - interval === 'requestAnimationFrame' - ? useRafFn(cb, { immediate }) - : useIntervalFn(cb, interval, { immediate }) - return { - isSupported, - element, - ...controls - } -} -function useElementHover(el, options = {}) { - const { - delayEnter = 0, - delayLeave = 0, - window: window2 = defaultWindow - } = options - const isHovered = ref(false) - let timer - const toggle = entering => { - const delay = entering ? delayEnter : delayLeave - if (timer) { - clearTimeout(timer) - timer = void 0 - } - if (delay) timer = setTimeout(() => (isHovered.value = entering), delay) - else isHovered.value = entering - } - if (!window2) return isHovered - useEventListener(el, 'mouseenter', () => toggle(true), { passive: true }) - useEventListener(el, 'mouseleave', () => toggle(false), { passive: true }) - return isHovered -} -function useElementSize( - target, - initialSize = { width: 0, height: 0 }, - options = {} -) { - const { window: window2 = defaultWindow, box = 'content-box' } = options - const isSVG = computed(() => { - var _a, _b - return (_b = - (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null - ? void 0 - : _b.includes('svg') - }) - const width = ref(initialSize.width) - const height = ref(initialSize.height) - const { stop: stop1 } = useResizeObserver( - target, - ([entry]) => { - const boxSize = - box === 'border-box' - ? entry.borderBoxSize - : box === 'content-box' - ? entry.contentBoxSize - : entry.devicePixelContentBoxSize - if (window2 && isSVG.value) { - const $elem = unrefElement(target) - if ($elem) { - const rect = $elem.getBoundingClientRect() - width.value = rect.width - height.value = rect.height - } - } else { - if (boxSize) { - const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize] - width.value = formatBoxSize.reduce( - (acc, { inlineSize }) => acc + inlineSize, - 0 - ) - height.value = formatBoxSize.reduce( - (acc, { blockSize }) => acc + blockSize, - 0 - ) - } else { - width.value = entry.contentRect.width - height.value = entry.contentRect.height - } - } - }, - options - ) - tryOnMounted(() => { - const ele = unrefElement(target) - if (ele) { - width.value = 'offsetWidth' in ele ? ele.offsetWidth : initialSize.width - height.value = - 'offsetHeight' in ele ? ele.offsetHeight : initialSize.height - } - }) - const stop2 = watch( - () => unrefElement(target), - ele => { - width.value = ele ? initialSize.width : 0 - height.value = ele ? initialSize.height : 0 - } - ) - function stop() { - stop1() - stop2() - } - return { - width, - height, - stop - } -} -function useIntersectionObserver(target, callback, options = {}) { - const { - root, - rootMargin = '0px', - threshold = 0, - window: window2 = defaultWindow, - immediate = true - } = options - const isSupported = useSupported( - () => window2 && 'IntersectionObserver' in window2 - ) - const targets = computed(() => { - const _target = toValue(target) - return (Array.isArray(_target) ? _target : [_target]) - .map(unrefElement) - .filter(notNullish) - }) - let cleanup = noop - const isActive = ref(immediate) - const stopWatch = isSupported.value - ? watch( - () => [targets.value, unrefElement(root), isActive.value], - ([targets2, root2]) => { - cleanup() - if (!isActive.value) return - if (!targets2.length) return - const observer = new IntersectionObserver(callback, { - root: unrefElement(root2), - rootMargin, - threshold - }) - targets2.forEach(el => el && observer.observe(el)) - cleanup = () => { - observer.disconnect() - cleanup = noop - } - }, - { immediate, flush: 'post' } - ) - : noop - const stop = () => { - cleanup() - stopWatch() - isActive.value = false - } - tryOnScopeDispose(stop) - return { - isSupported, - isActive, - pause() { - cleanup() - isActive.value = false - }, - resume() { - isActive.value = true - }, - stop - } -} -function useElementVisibility(element, options = {}) { - const { - window: window2 = defaultWindow, - scrollTarget, - threshold = 0 - } = options - const elementIsVisible = ref(false) - useIntersectionObserver( - element, - intersectionObserverEntries => { - let isIntersecting = elementIsVisible.value - let latestTime = 0 - for (const entry of intersectionObserverEntries) { - if (entry.time >= latestTime) { - latestTime = entry.time - isIntersecting = entry.isIntersecting - } - } - elementIsVisible.value = isIntersecting - }, - { - root: scrollTarget, - window: window2, - threshold - } - ) - return elementIsVisible -} -var events = /* @__PURE__ */ new Map() -function useEventBus(key) { - const scope = getCurrentScope() - function on(listener) { - var _a - const listeners = events.get(key) || /* @__PURE__ */ new Set() - listeners.add(listener) - events.set(key, listeners) - const _off = () => off(listener) - ;(_a = scope == null ? void 0 : scope.cleanups) == null - ? void 0 - : _a.push(_off) - return _off - } - function once(listener) { - function _listener(...args) { - off(_listener) - listener(...args) - } - return on(_listener) - } - function off(listener) { - const listeners = events.get(key) - if (!listeners) return - listeners.delete(listener) - if (!listeners.size) reset() - } - function reset() { - events.delete(key) - } - function emit(event, payload) { - var _a - ;(_a = events.get(key)) == null - ? void 0 - : _a.forEach(v => v(event, payload)) - } - return { on, once, off, emit, reset } -} -function resolveNestedOptions$1(options) { - if (options === true) return {} - return options -} -function useEventSource(url, events2 = [], options = {}) { - const event = ref(null) - const data = ref(null) - const status = ref('CONNECTING') - const eventSource = ref(null) - const error = shallowRef(null) - const urlRef = toRef2(url) - const lastEventId = shallowRef(null) - let explicitlyClosed = false - let retried = 0 - const { withCredentials = false, immediate = true } = options - const close = () => { - if (isClient && eventSource.value) { - eventSource.value.close() - eventSource.value = null - status.value = 'CLOSED' - explicitlyClosed = true - } - } - const _init = () => { - if (explicitlyClosed || typeof urlRef.value === 'undefined') return - const es = new EventSource(urlRef.value, { withCredentials }) - status.value = 'CONNECTING' - eventSource.value = es - es.onopen = () => { - status.value = 'OPEN' - error.value = null - } - es.onerror = e => { - status.value = 'CLOSED' - error.value = e - if (es.readyState === 2 && !explicitlyClosed && options.autoReconnect) { - es.close() - const { - retries = -1, - delay = 1e3, - onFailed - } = resolveNestedOptions$1(options.autoReconnect) - retried += 1 - if (typeof retries === 'number' && (retries < 0 || retried < retries)) - setTimeout(_init, delay) - else if (typeof retries === 'function' && retries()) - setTimeout(_init, delay) - else onFailed == null ? void 0 : onFailed() - } - } - es.onmessage = e => { - event.value = null - data.value = e.data - lastEventId.value = e.lastEventId - } - for (const event_name of events2) { - useEventListener(es, event_name, e => { - event.value = event_name - data.value = e.data || null - }) - } - } - const open = () => { - if (!isClient) return - close() - explicitlyClosed = false - retried = 0 - _init() - } - if (immediate) watch(urlRef, open, { immediate: true }) - tryOnScopeDispose(close) - return { - eventSource, - event, - data, - status, - error, - open, - close, - lastEventId - } -} -function useEyeDropper(options = {}) { - const { initialValue = '' } = options - const isSupported = useSupported( - () => typeof window !== 'undefined' && 'EyeDropper' in window - ) - const sRGBHex = ref(initialValue) - async function open(openOptions) { - if (!isSupported.value) return - const eyeDropper = new window.EyeDropper() - const result = await eyeDropper.open(openOptions) - sRGBHex.value = result.sRGBHex - return result - } - return { isSupported, sRGBHex, open } -} -function useFavicon(newIcon = null, options = {}) { - const { - baseUrl = '', - rel = 'icon', - document: document2 = defaultDocument - } = options - const favicon = toRef2(newIcon) - const applyIcon = icon => { - const elements = - document2 == null - ? void 0 - : document2.head.querySelectorAll(`link[rel*="${rel}"]`) - if (!elements || elements.length === 0) { - const link = document2 == null ? void 0 : document2.createElement('link') - if (link) { - link.rel = rel - link.href = `${baseUrl}${icon}` - link.type = `image/${icon.split('.').pop()}` - document2 == null ? void 0 : document2.head.append(link) - } - return - } - elements == null - ? void 0 - : elements.forEach(el => (el.href = `${baseUrl}${icon}`)) - } - watch( - favicon, - (i, o) => { - if (typeof i === 'string' && i !== o) applyIcon(i) - }, - { immediate: true } - ) - return favicon -} -var payloadMapping = { - json: 'application/json', - text: 'text/plain' -} -function isFetchOptions(obj) { - return ( - obj && - containsProp( - obj, - 'immediate', - 'refetch', - 'initialData', - 'timeout', - 'beforeFetch', - 'afterFetch', - 'onFetchError', - 'fetch', - 'updateDataOnError' - ) - ) -} -var reAbsolute = /^(?:[a-z][a-z\d+\-.]*:)?\/\//i -function isAbsoluteURL(url) { - return reAbsolute.test(url) -} -function headersToObject(headers) { - if (typeof Headers !== 'undefined' && headers instanceof Headers) - return Object.fromEntries(headers.entries()) - return headers -} -function combineCallbacks(combination, ...callbacks) { - if (combination === 'overwrite') { - return async ctx => { - const callback = callbacks[callbacks.length - 1] - if (callback) return { ...ctx, ...(await callback(ctx)) } - return ctx - } - } else { - return async ctx => { - for (const callback of callbacks) { - if (callback) ctx = { ...ctx, ...(await callback(ctx)) } - } - return ctx - } - } -} -function createFetch(config = {}) { - const _combination = config.combination || 'chain' - const _options = config.options || {} - const _fetchOptions = config.fetchOptions || {} - function useFactoryFetch(url, ...args) { - const computedUrl = computed(() => { - const baseUrl = toValue(config.baseUrl) - const targetUrl = toValue(url) - return baseUrl && !isAbsoluteURL(targetUrl) - ? joinPaths(baseUrl, targetUrl) - : targetUrl - }) - let options = _options - let fetchOptions = _fetchOptions - if (args.length > 0) { - if (isFetchOptions(args[0])) { - options = { - ...options, - ...args[0], - beforeFetch: combineCallbacks( - _combination, - _options.beforeFetch, - args[0].beforeFetch - ), - afterFetch: combineCallbacks( - _combination, - _options.afterFetch, - args[0].afterFetch - ), - onFetchError: combineCallbacks( - _combination, - _options.onFetchError, - args[0].onFetchError - ) - } - } else { - fetchOptions = { - ...fetchOptions, - ...args[0], - headers: { - ...(headersToObject(fetchOptions.headers) || {}), - ...(headersToObject(args[0].headers) || {}) - } - } - } - } - if (args.length > 1 && isFetchOptions(args[1])) { - options = { - ...options, - ...args[1], - beforeFetch: combineCallbacks( - _combination, - _options.beforeFetch, - args[1].beforeFetch - ), - afterFetch: combineCallbacks( - _combination, - _options.afterFetch, - args[1].afterFetch - ), - onFetchError: combineCallbacks( - _combination, - _options.onFetchError, - args[1].onFetchError - ) - } - } - return useFetch(computedUrl, fetchOptions, options) - } - return useFactoryFetch -} -function useFetch(url, ...args) { - var _a - const supportsAbort = typeof AbortController === 'function' - let fetchOptions = {} - let options = { - immediate: true, - refetch: false, - timeout: 0, - updateDataOnError: false - } - const config = { - method: 'GET', - type: 'text', - payload: void 0 - } - if (args.length > 0) { - if (isFetchOptions(args[0])) options = { ...options, ...args[0] } - else fetchOptions = args[0] - } - if (args.length > 1) { - if (isFetchOptions(args[1])) options = { ...options, ...args[1] } - } - const { - fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch, - initialData, - timeout - } = options - const responseEvent = createEventHook() - const errorEvent = createEventHook() - const finallyEvent = createEventHook() - const isFinished = ref(false) - const isFetching = ref(false) - const aborted = ref(false) - const statusCode = ref(null) - const response = shallowRef(null) - const error = shallowRef(null) - const data = shallowRef(initialData || null) - const canAbort = computed(() => supportsAbort && isFetching.value) - let controller - let timer - const abort = () => { - if (supportsAbort) { - controller == null ? void 0 : controller.abort() - controller = new AbortController() - controller.signal.onabort = () => (aborted.value = true) - fetchOptions = { - ...fetchOptions, - signal: controller.signal - } - } - } - const loading = isLoading => { - isFetching.value = isLoading - isFinished.value = !isLoading - } - if (timeout) timer = useTimeoutFn(abort, timeout, { immediate: false }) - let executeCounter = 0 - const execute = async (throwOnFailed = false) => { - var _a2, _b - abort() - loading(true) - error.value = null - statusCode.value = null - aborted.value = false - executeCounter += 1 - const currentExecuteCounter = executeCounter - const defaultFetchOptions = { - method: config.method, - headers: {} - } - if (config.payload) { - const headers = headersToObject(defaultFetchOptions.headers) - const payload = toValue(config.payload) - if ( - !config.payloadType && - payload && - Object.getPrototypeOf(payload) === Object.prototype && - !(payload instanceof FormData) - ) - config.payloadType = 'json' - if (config.payloadType) - headers['Content-Type'] = - (_a2 = payloadMapping[config.payloadType]) != null - ? _a2 - : config.payloadType - defaultFetchOptions.body = - config.payloadType === 'json' ? JSON.stringify(payload) : payload - } - let isCanceled = false - const context = { - url: toValue(url), - options: { - ...defaultFetchOptions, - ...fetchOptions - }, - cancel: () => { - isCanceled = true - } - } - if (options.beforeFetch) - Object.assign(context, await options.beforeFetch(context)) - if (isCanceled || !fetch) { - loading(false) - return Promise.resolve(null) - } - let responseData = null - if (timer) timer.start() - return fetch(context.url, { - ...defaultFetchOptions, - ...context.options, - headers: { - ...headersToObject(defaultFetchOptions.headers), - ...headersToObject((_b = context.options) == null ? void 0 : _b.headers) - } - }) - .then(async fetchResponse => { - response.value = fetchResponse - statusCode.value = fetchResponse.status - responseData = await fetchResponse.clone()[config.type]() - if (!fetchResponse.ok) { - data.value = initialData || null - throw new Error(fetchResponse.statusText) - } - if (options.afterFetch) { - ;({ data: responseData } = await options.afterFetch({ - data: responseData, - response: fetchResponse - })) - } - data.value = responseData - responseEvent.trigger(fetchResponse) - return fetchResponse - }) - .catch(async fetchError => { - let errorData = fetchError.message || fetchError.name - if (options.onFetchError) { - ;({ error: errorData, data: responseData } = - await options.onFetchError({ - data: responseData, - error: fetchError, - response: response.value - })) - } - error.value = errorData - if (options.updateDataOnError) data.value = responseData - errorEvent.trigger(fetchError) - if (throwOnFailed) throw fetchError - return null - }) - .finally(() => { - if (currentExecuteCounter === executeCounter) loading(false) - if (timer) timer.stop() - finallyEvent.trigger(null) - }) - } - const refetch = toRef2(options.refetch) - watch([refetch, toRef2(url)], ([refetch2]) => refetch2 && execute(), { - deep: true - }) - const shell = { - isFinished: readonly(isFinished), - isFetching: readonly(isFetching), - statusCode, - response, - error, - data, - canAbort, - aborted, - abort, - execute, - onFetchResponse: responseEvent.on, - onFetchError: errorEvent.on, - onFetchFinally: finallyEvent.on, - // method - get: setMethod('GET'), - put: setMethod('PUT'), - post: setMethod('POST'), - delete: setMethod('DELETE'), - patch: setMethod('PATCH'), - head: setMethod('HEAD'), - options: setMethod('OPTIONS'), - // type - json: setType('json'), - text: setType('text'), - blob: setType('blob'), - arrayBuffer: setType('arrayBuffer'), - formData: setType('formData') - } - function setMethod(method) { - return (payload, payloadType) => { - if (!isFetching.value) { - config.method = method - config.payload = payload - config.payloadType = payloadType - if (isRef(config.payload)) { - watch( - [refetch, toRef2(config.payload)], - ([refetch2]) => refetch2 && execute(), - { deep: true } - ) - } - return { - ...shell, - then(onFulfilled, onRejected) { - return waitUntilFinished().then(onFulfilled, onRejected) - } - } - } - return void 0 - } - } - function waitUntilFinished() { - return new Promise((resolve, reject) => { - until(isFinished) - .toBe(true) - .then(() => resolve(shell)) - .catch(error2 => reject(error2)) - }) - } - function setType(type) { - return () => { - if (!isFetching.value) { - config.type = type - return { - ...shell, - then(onFulfilled, onRejected) { - return waitUntilFinished().then(onFulfilled, onRejected) - } - } - } - return void 0 - } - } - if (options.immediate) Promise.resolve().then(() => execute()) - return { - ...shell, - then(onFulfilled, onRejected) { - return waitUntilFinished().then(onFulfilled, onRejected) - } - } -} -function joinPaths(start, end) { - if (!start.endsWith('/') && !end.startsWith('/')) return `${start}/${end}` - return `${start}${end}` -} -var DEFAULT_OPTIONS = { - multiple: true, - accept: '*', - reset: false, - directory: false -} -function useFileDialog(options = {}) { - const { document: document2 = defaultDocument } = options - const files = ref(null) - const { on: onChange, trigger: changeTrigger } = createEventHook() - const { on: onCancel, trigger: cancelTrigger } = createEventHook() - let input - if (document2) { - input = document2.createElement('input') - input.type = 'file' - input.onchange = event => { - const result = event.target - files.value = result.files - changeTrigger(files.value) - } - input.oncancel = () => { - cancelTrigger() - } - } - const reset = () => { - files.value = null - if (input && input.value) { - input.value = '' - changeTrigger(null) - } - } - const open = localOptions => { - if (!input) return - const _options = { - ...DEFAULT_OPTIONS, - ...options, - ...localOptions - } - input.multiple = _options.multiple - input.accept = _options.accept - input.webkitdirectory = _options.directory - if (hasOwn(_options, 'capture')) input.capture = _options.capture - if (_options.reset) reset() - input.click() - } - return { - files: readonly(files), - open, - reset, - onCancel, - onChange - } -} -function useFileSystemAccess(options = {}) { - const { window: _window = defaultWindow, dataType = 'Text' } = options - const window2 = _window - const isSupported = useSupported( - () => - window2 && - 'showSaveFilePicker' in window2 && - 'showOpenFilePicker' in window2 - ) - const fileHandle = ref() - const data = ref() - const file = ref() - const fileName = computed(() => { - var _a, _b - return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : '' - }) - const fileMIME = computed(() => { - var _a, _b - return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : '' - }) - const fileSize = computed(() => { - var _a, _b - return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0 - }) - const fileLastModified = computed(() => { - var _a, _b - return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null - ? _b - : 0 - }) - async function open(_options = {}) { - if (!isSupported.value) return - const [handle] = await window2.showOpenFilePicker({ - ...toValue(options), - ..._options - }) - fileHandle.value = handle - await updateData() - } - async function create(_options = {}) { - if (!isSupported.value) return - fileHandle.value = await window2.showSaveFilePicker({ - ...options, - ..._options - }) - data.value = void 0 - await updateData() - } - async function save(_options = {}) { - if (!isSupported.value) return - if (!fileHandle.value) return saveAs(_options) - if (data.value) { - const writableStream = await fileHandle.value.createWritable() - await writableStream.write(data.value) - await writableStream.close() - } - await updateFile() - } - async function saveAs(_options = {}) { - if (!isSupported.value) return - fileHandle.value = await window2.showSaveFilePicker({ - ...options, - ..._options - }) - if (data.value) { - const writableStream = await fileHandle.value.createWritable() - await writableStream.write(data.value) - await writableStream.close() - } - await updateFile() - } - async function updateFile() { - var _a - file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile()) - } - async function updateData() { - var _a, _b - await updateFile() - const type = toValue(dataType) - if (type === 'Text') - data.value = await ((_a = file.value) == null ? void 0 : _a.text()) - else if (type === 'ArrayBuffer') - data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer()) - else if (type === 'Blob') data.value = file.value - } - watch(() => toValue(dataType), updateData) - return { - isSupported, - data, - file, - fileName, - fileMIME, - fileSize, - fileLastModified, - open, - create, - save, - saveAs, - updateData - } -} -function useFocus(target, options = {}) { - const { - initialValue = false, - focusVisible = false, - preventScroll = false - } = options - const innerFocused = ref(false) - const targetElement = computed(() => unrefElement(target)) - useEventListener(targetElement, 'focus', event => { - var _a, _b - if ( - !focusVisible || - ((_b = (_a = event.target).matches) == null - ? void 0 - : _b.call(_a, ':focus-visible')) - ) - innerFocused.value = true - }) - useEventListener(targetElement, 'blur', () => (innerFocused.value = false)) - const focused = computed({ - get: () => innerFocused.value, - set(value) { - var _a, _b - if (!value && innerFocused.value) - (_a = targetElement.value) == null ? void 0 : _a.blur() - else if (value && !innerFocused.value) - (_b = targetElement.value) == null - ? void 0 - : _b.focus({ preventScroll }) - } - }) - watch( - targetElement, - () => { - focused.value = initialValue - }, - { immediate: true, flush: 'post' } - ) - return { focused } -} -var EVENT_FOCUS_IN = 'focusin' -var EVENT_FOCUS_OUT = 'focusout' -function useFocusWithin(target, options = {}) { - const { window: window2 = defaultWindow } = options - const targetElement = computed(() => unrefElement(target)) - const _focused = ref(false) - const focused = computed(() => _focused.value) - const activeElement = useActiveElement(options) - if (!window2 || !activeElement.value) { - return { focused } - } - useEventListener(targetElement, EVENT_FOCUS_IN, () => (_focused.value = true)) - useEventListener( - targetElement, - EVENT_FOCUS_OUT, - () => (_focused.value = false) - ) - return { focused } -} -function useFps(options) { - var _a - const fps = ref(0) - if (typeof performance === 'undefined') return fps - const every = - (_a = options == null ? void 0 : options.every) != null ? _a : 10 - let last = performance.now() - let ticks = 0 - useRafFn(() => { - ticks += 1 - if (ticks >= every) { - const now2 = performance.now() - const diff = now2 - last - fps.value = Math.round(1e3 / (diff / ticks)) - last = now2 - ticks = 0 - } - }) - return fps -} -var eventHandlers = [ - 'fullscreenchange', - 'webkitfullscreenchange', - 'webkitendfullscreen', - 'mozfullscreenchange', - 'MSFullscreenChange' -] -function useFullscreen(target, options = {}) { - const { document: document2 = defaultDocument, autoExit = false } = options - const targetRef = computed(() => { - var _a - return (_a = unrefElement(target)) != null - ? _a - : document2 == null - ? void 0 - : document2.querySelector('html') - }) - const isFullscreen = ref(false) - const requestMethod = computed(() => { - return [ - 'requestFullscreen', - 'webkitRequestFullscreen', - 'webkitEnterFullscreen', - 'webkitEnterFullScreen', - 'webkitRequestFullScreen', - 'mozRequestFullScreen', - 'msRequestFullscreen' - ].find( - m => - (document2 && m in document2) || - (targetRef.value && m in targetRef.value) - ) - }) - const exitMethod = computed(() => { - return [ - 'exitFullscreen', - 'webkitExitFullscreen', - 'webkitExitFullScreen', - 'webkitCancelFullScreen', - 'mozCancelFullScreen', - 'msExitFullscreen' - ].find( - m => - (document2 && m in document2) || - (targetRef.value && m in targetRef.value) - ) - }) - const fullscreenEnabled = computed(() => { - return [ - 'fullScreen', - 'webkitIsFullScreen', - 'webkitDisplayingFullscreen', - 'mozFullScreen', - 'msFullscreenElement' - ].find( - m => - (document2 && m in document2) || - (targetRef.value && m in targetRef.value) - ) - }) - const fullscreenElementMethod = [ - 'fullscreenElement', - 'webkitFullscreenElement', - 'mozFullScreenElement', - 'msFullscreenElement' - ].find(m => document2 && m in document2) - const isSupported = useSupported( - () => - targetRef.value && - document2 && - requestMethod.value !== void 0 && - exitMethod.value !== void 0 && - fullscreenEnabled.value !== void 0 - ) - const isCurrentElementFullScreen = () => { - if (fullscreenElementMethod) - return ( - (document2 == null ? void 0 : document2[fullscreenElementMethod]) === - targetRef.value - ) - return false - } - const isElementFullScreen = () => { - if (fullscreenEnabled.value) { - if (document2 && document2[fullscreenEnabled.value] != null) { - return document2[fullscreenEnabled.value] - } else { - const target2 = targetRef.value - if ( - (target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null - ) { - return Boolean(target2[fullscreenEnabled.value]) - } - } - } - return false - } - async function exit() { - if (!isSupported.value || !isFullscreen.value) return - if (exitMethod.value) { - if ((document2 == null ? void 0 : document2[exitMethod.value]) != null) { - await document2[exitMethod.value]() - } else { - const target2 = targetRef.value - if ((target2 == null ? void 0 : target2[exitMethod.value]) != null) - await target2[exitMethod.value]() - } - } - isFullscreen.value = false - } - async function enter() { - if (!isSupported.value || isFullscreen.value) return - if (isElementFullScreen()) await exit() - const target2 = targetRef.value - if ( - requestMethod.value && - (target2 == null ? void 0 : target2[requestMethod.value]) != null - ) { - await target2[requestMethod.value]() - isFullscreen.value = true - } - } - async function toggle() { - await (isFullscreen.value ? exit() : enter()) - } - const handlerCallback = () => { - const isElementFullScreenValue = isElementFullScreen() - if ( - !isElementFullScreenValue || - (isElementFullScreenValue && isCurrentElementFullScreen()) - ) - isFullscreen.value = isElementFullScreenValue - } - useEventListener(document2, eventHandlers, handlerCallback, false) - useEventListener( - () => unrefElement(targetRef), - eventHandlers, - handlerCallback, - false - ) - if (autoExit) tryOnScopeDispose(exit) - return { - isSupported, - isFullscreen, - enter, - exit, - toggle - } -} -function mapGamepadToXbox360Controller(gamepad) { - return computed(() => { - if (gamepad.value) { - return { - buttons: { - a: gamepad.value.buttons[0], - b: gamepad.value.buttons[1], - x: gamepad.value.buttons[2], - y: gamepad.value.buttons[3] - }, - bumper: { - left: gamepad.value.buttons[4], - right: gamepad.value.buttons[5] - }, - triggers: { - left: gamepad.value.buttons[6], - right: gamepad.value.buttons[7] - }, - stick: { - left: { - horizontal: gamepad.value.axes[0], - vertical: gamepad.value.axes[1], - button: gamepad.value.buttons[10] - }, - right: { - horizontal: gamepad.value.axes[2], - vertical: gamepad.value.axes[3], - button: gamepad.value.buttons[11] - } - }, - dpad: { - up: gamepad.value.buttons[12], - down: gamepad.value.buttons[13], - left: gamepad.value.buttons[14], - right: gamepad.value.buttons[15] - }, - back: gamepad.value.buttons[8], - start: gamepad.value.buttons[9] - } - } - return null - }) -} -function useGamepad(options = {}) { - const { navigator = defaultNavigator } = options - const isSupported = useSupported( - () => navigator && 'getGamepads' in navigator - ) - const gamepads = ref([]) - const onConnectedHook = createEventHook() - const onDisconnectedHook = createEventHook() - const stateFromGamepad = gamepad => { - const hapticActuators = [] - const vibrationActuator = - 'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null - if (vibrationActuator) hapticActuators.push(vibrationActuator) - if (gamepad.hapticActuators) - hapticActuators.push(...gamepad.hapticActuators) - return { - id: gamepad.id, - index: gamepad.index, - connected: gamepad.connected, - mapping: gamepad.mapping, - timestamp: gamepad.timestamp, - vibrationActuator: gamepad.vibrationActuator, - hapticActuators, - axes: gamepad.axes.map(axes => axes), - buttons: gamepad.buttons.map(button => ({ - pressed: button.pressed, - touched: button.touched, - value: button.value - })) - } - } - const updateGamepadState = () => { - const _gamepads = - (navigator == null ? void 0 : navigator.getGamepads()) || [] - for (const gamepad of _gamepads) { - if (gamepad && gamepads.value[gamepad.index]) - gamepads.value[gamepad.index] = stateFromGamepad(gamepad) - } - } - const { isActive, pause, resume } = useRafFn(updateGamepadState) - const onGamepadConnected = gamepad => { - if (!gamepads.value.some(({ index }) => index === gamepad.index)) { - gamepads.value.push(stateFromGamepad(gamepad)) - onConnectedHook.trigger(gamepad.index) - } - resume() - } - const onGamepadDisconnected = gamepad => { - gamepads.value = gamepads.value.filter(x => x.index !== gamepad.index) - onDisconnectedHook.trigger(gamepad.index) - } - useEventListener('gamepadconnected', e => onGamepadConnected(e.gamepad)) - useEventListener('gamepaddisconnected', e => onGamepadDisconnected(e.gamepad)) - tryOnMounted(() => { - const _gamepads = - (navigator == null ? void 0 : navigator.getGamepads()) || [] - for (const gamepad of _gamepads) { - if (gamepad && gamepads.value[gamepad.index]) onGamepadConnected(gamepad) - } - }) - pause() - return { - isSupported, - onConnected: onConnectedHook.on, - onDisconnected: onDisconnectedHook.on, - gamepads, - pause, - resume, - isActive - } -} -function useGeolocation(options = {}) { - const { - enableHighAccuracy = true, - maximumAge = 3e4, - timeout = 27e3, - navigator = defaultNavigator, - immediate = true - } = options - const isSupported = useSupported( - () => navigator && 'geolocation' in navigator - ) - const locatedAt = ref(null) - const error = shallowRef(null) - const coords = ref({ - accuracy: 0, - latitude: Number.POSITIVE_INFINITY, - longitude: Number.POSITIVE_INFINITY, - altitude: null, - altitudeAccuracy: null, - heading: null, - speed: null - }) - function updatePosition(position) { - locatedAt.value = position.timestamp - coords.value = position.coords - error.value = null - } - let watcher - function resume() { - if (isSupported.value) { - watcher = navigator.geolocation.watchPosition( - updatePosition, - err => (error.value = err), - { - enableHighAccuracy, - maximumAge, - timeout - } - ) - } - } - if (immediate) resume() - function pause() { - if (watcher && navigator) navigator.geolocation.clearWatch(watcher) - } - tryOnScopeDispose(() => { - pause() - }) - return { - isSupported, - coords, - locatedAt, - error, - resume, - pause - } -} -var defaultEvents$1 = [ - 'mousemove', - 'mousedown', - 'resize', - 'keydown', - 'touchstart', - 'wheel' -] -var oneMinute = 6e4 -function useIdle(timeout = oneMinute, options = {}) { - const { - initialState = false, - listenForVisibilityChange = true, - events: events2 = defaultEvents$1, - window: window2 = defaultWindow, - eventFilter = throttleFilter(50) - } = options - const idle = ref(initialState) - const lastActive = ref(timestamp()) - let timer - const reset = () => { - idle.value = false - clearTimeout(timer) - timer = setTimeout(() => (idle.value = true), timeout) - } - const onEvent = createFilterWrapper(eventFilter, () => { - lastActive.value = timestamp() - reset() - }) - if (window2) { - const document2 = window2.document - for (const event of events2) - useEventListener(window2, event, onEvent, { passive: true }) - if (listenForVisibilityChange) { - useEventListener(document2, 'visibilitychange', () => { - if (!document2.hidden) onEvent() - }) - } - reset() - } - return { - idle, - lastActive, - reset - } -} -async function loadImage(options) { - return new Promise((resolve, reject) => { - const img = new Image() - const { - src, - srcset, - sizes, - class: clazz, - loading, - crossorigin, - referrerPolicy - } = options - img.src = src - if (srcset) img.srcset = srcset - if (sizes) img.sizes = sizes - if (clazz) img.className = clazz - if (loading) img.loading = loading - if (crossorigin) img.crossOrigin = crossorigin - if (referrerPolicy) img.referrerPolicy = referrerPolicy - img.onload = () => resolve(img) - img.onerror = reject - }) -} -function useImage(options, asyncStateOptions = {}) { - const state = useAsyncState(() => loadImage(toValue(options)), void 0, { - resetOnExecute: true, - ...asyncStateOptions - }) - watch( - () => toValue(options), - () => state.execute(asyncStateOptions.delay), - { deep: true } - ) - return state -} -function resolveElement(el) { - if (typeof Window !== 'undefined' && el instanceof Window) - return el.document.documentElement - if (typeof Document !== 'undefined' && el instanceof Document) - return el.documentElement - return el -} -var ARRIVED_STATE_THRESHOLD_PIXELS = 1 -function useScroll(element, options = {}) { - const { - throttle = 0, - idle = 200, - onStop = noop, - onScroll = noop, - offset = { - left: 0, - right: 0, - top: 0, - bottom: 0 - }, - eventListenerOptions = { - capture: false, - passive: true - }, - behavior = 'auto', - window: window2 = defaultWindow, - onError = e => { - console.error(e) - } - } = options - const internalX = ref(0) - const internalY = ref(0) - const x = computed({ - get() { - return internalX.value - }, - set(x2) { - scrollTo2(x2, void 0) - } - }) - const y = computed({ - get() { - return internalY.value - }, - set(y2) { - scrollTo2(void 0, y2) - } - }) - function scrollTo2(_x, _y) { - var _a, _b, _c, _d - if (!window2) return - const _element = toValue(element) - if (!_element) return - ;(_c = _element instanceof Document ? window2.document.body : _element) == - null - ? void 0 - : _c.scrollTo({ - top: (_a = toValue(_y)) != null ? _a : y.value, - left: (_b = toValue(_x)) != null ? _b : x.value, - behavior: toValue(behavior) - }) - const scrollContainer = - ((_d = _element == null ? void 0 : _element.document) == null - ? void 0 - : _d.documentElement) || - (_element == null ? void 0 : _element.documentElement) || - _element - if (x != null) internalX.value = scrollContainer.scrollLeft - if (y != null) internalY.value = scrollContainer.scrollTop - } - const isScrolling = ref(false) - const arrivedState = reactive({ - left: true, - right: false, - top: true, - bottom: false - }) - const directions = reactive({ - left: false, - right: false, - top: false, - bottom: false - }) - const onScrollEnd = e => { - if (!isScrolling.value) return - isScrolling.value = false - directions.left = false - directions.right = false - directions.top = false - directions.bottom = false - onStop(e) - } - const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle) - const setArrivedState = target => { - var _a - if (!window2) return - const el = - ((_a = target == null ? void 0 : target.document) == null - ? void 0 - : _a.documentElement) || - (target == null ? void 0 : target.documentElement) || - unrefElement(target) - const { display, flexDirection } = getComputedStyle(el) - const scrollLeft = el.scrollLeft - directions.left = scrollLeft < internalX.value - directions.right = scrollLeft > internalX.value - const left = Math.abs(scrollLeft) <= (offset.left || 0) - const right = - Math.abs(scrollLeft) + el.clientWidth >= - el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS - if (display === 'flex' && flexDirection === 'row-reverse') { - arrivedState.left = right - arrivedState.right = left - } else { - arrivedState.left = left - arrivedState.right = right - } - internalX.value = scrollLeft - let scrollTop = el.scrollTop - if (target === window2.document && !scrollTop) - scrollTop = window2.document.body.scrollTop - directions.top = scrollTop < internalY.value - directions.bottom = scrollTop > internalY.value - const top = Math.abs(scrollTop) <= (offset.top || 0) - const bottom = - Math.abs(scrollTop) + el.clientHeight >= - el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS - if (display === 'flex' && flexDirection === 'column-reverse') { - arrivedState.top = bottom - arrivedState.bottom = top - } else { - arrivedState.top = top - arrivedState.bottom = bottom - } - internalY.value = scrollTop - } - const onScrollHandler = e => { - var _a - if (!window2) return - const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target - setArrivedState(eventTarget) - isScrolling.value = true - onScrollEndDebounced(e) - onScroll(e) - } - useEventListener( - element, - 'scroll', - throttle - ? useThrottleFn(onScrollHandler, throttle, true, false) - : onScrollHandler, - eventListenerOptions - ) - tryOnMounted(() => { - try { - const _element = toValue(element) - if (!_element) return - setArrivedState(_element) - } catch (e) { - onError(e) - } - }) - useEventListener(element, 'scrollend', onScrollEnd, eventListenerOptions) - return { - x, - y, - isScrolling, - arrivedState, - directions, - measure() { - const _element = toValue(element) - if (window2 && _element) setArrivedState(_element) - } - } -} -function useInfiniteScroll(element, onLoadMore, options = {}) { - var _a - const { - direction = 'bottom', - interval = 100, - canLoadMore = () => true - } = options - const state = reactive( - useScroll(element, { - ...options, - offset: { - [direction]: (_a = options.distance) != null ? _a : 0, - ...options.offset - } - }) - ) - const promise = ref() - const isLoading = computed(() => !!promise.value) - const observedElement = computed(() => { - return resolveElement(toValue(element)) - }) - const isElementVisible = useElementVisibility(observedElement) - function checkAndLoad() { - state.measure() - if ( - !observedElement.value || - !isElementVisible.value || - !canLoadMore(observedElement.value) - ) - return - const { scrollHeight, clientHeight, scrollWidth, clientWidth } = - observedElement.value - const isNarrower = - direction === 'bottom' || direction === 'top' - ? scrollHeight <= clientHeight - : scrollWidth <= clientWidth - if (state.arrivedState[direction] || isNarrower) { - if (!promise.value) { - promise.value = Promise.all([ - onLoadMore(state), - new Promise(resolve => setTimeout(resolve, interval)) - ]).finally(() => { - promise.value = null - nextTick(() => checkAndLoad()) - }) - } - } - } - const stop = watch( - () => [state.arrivedState[direction], isElementVisible.value], - checkAndLoad, - { immediate: true } - ) - tryOnUnmounted(stop) - return { - isLoading, - reset() { - nextTick(() => checkAndLoad()) - } - } -} -var defaultEvents = ['mousedown', 'mouseup', 'keydown', 'keyup'] -function useKeyModifier(modifier, options = {}) { - const { - events: events2 = defaultEvents, - document: document2 = defaultDocument, - initial = null - } = options - const state = ref(initial) - if (document2) { - events2.forEach(listenerEvent => { - useEventListener(document2, listenerEvent, evt => { - if (typeof evt.getModifierState === 'function') - state.value = evt.getModifierState(modifier) - }) - }) - } - return state -} -function useLocalStorage(key, initialValue, options = {}) { - const { window: window2 = defaultWindow } = options - return useStorage( - key, - initialValue, - window2 == null ? void 0 : window2.localStorage, - options - ) -} -var DefaultMagicKeysAliasMap = { - ctrl: 'control', - command: 'meta', - cmd: 'meta', - option: 'alt', - up: 'arrowup', - down: 'arrowdown', - left: 'arrowleft', - right: 'arrowright' -} -function useMagicKeys(options = {}) { - const { - reactive: useReactive = false, - target = defaultWindow, - aliasMap = DefaultMagicKeysAliasMap, - passive = true, - onEventFired = noop - } = options - const current = reactive(/* @__PURE__ */ new Set()) - const obj = { - toJSON() { - return {} - }, - current - } - const refs = useReactive ? reactive(obj) : obj - const metaDeps = /* @__PURE__ */ new Set() - const usedKeys = /* @__PURE__ */ new Set() - function setRefs(key, value) { - if (key in refs) { - if (useReactive) refs[key] = value - else refs[key].value = value - } - } - function reset() { - current.clear() - for (const key of usedKeys) setRefs(key, false) - } - function updateRefs(e, value) { - var _a, _b - const key = (_a = e.key) == null ? void 0 : _a.toLowerCase() - const code = (_b = e.code) == null ? void 0 : _b.toLowerCase() - const values = [code, key].filter(Boolean) - if (key) { - if (value) current.add(key) - else current.delete(key) - } - for (const key2 of values) { - usedKeys.add(key2) - setRefs(key2, value) - } - if (key === 'meta' && !value) { - metaDeps.forEach(key2 => { - current.delete(key2) - setRefs(key2, false) - }) - metaDeps.clear() - } else if ( - typeof e.getModifierState === 'function' && - e.getModifierState('Meta') && - value - ) { - ;[...current, ...values].forEach(key2 => metaDeps.add(key2)) - } - } - useEventListener( - target, - 'keydown', - e => { - updateRefs(e, true) - return onEventFired(e) - }, - { passive } - ) - useEventListener( - target, - 'keyup', - e => { - updateRefs(e, false) - return onEventFired(e) - }, - { passive } - ) - useEventListener('blur', reset, { passive: true }) - useEventListener('focus', reset, { passive: true }) - const proxy = new Proxy(refs, { - get(target2, prop, rec) { - if (typeof prop !== 'string') return Reflect.get(target2, prop, rec) - prop = prop.toLowerCase() - if (prop in aliasMap) prop = aliasMap[prop] - if (!(prop in refs)) { - if (/[+_-]/.test(prop)) { - const keys2 = prop.split(/[+_-]/g).map(i => i.trim()) - refs[prop] = computed(() => keys2.every(key => toValue(proxy[key]))) - } else { - refs[prop] = ref(false) - } - } - const r = Reflect.get(target2, prop, rec) - return useReactive ? toValue(r) : r - } - }) - return proxy -} -function usingElRef(source, cb) { - if (toValue(source)) cb(toValue(source)) -} -function timeRangeToArray(timeRanges) { - let ranges = [] - for (let i = 0; i < timeRanges.length; ++i) - ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]] - return ranges -} -function tracksToArray(tracks) { - return Array.from(tracks).map( - ( - { - label, - kind, - language, - mode, - activeCues, - cues, - inBandMetadataTrackDispatchType - }, - id - ) => ({ - id, - label, - kind, - language, - mode, - activeCues, - cues, - inBandMetadataTrackDispatchType - }) - ) -} -var defaultOptions = { - src: '', - tracks: [] -} -function useMediaControls(target, options = {}) { - target = toRef2(target) - options = { - ...defaultOptions, - ...options - } - const { document: document2 = defaultDocument } = options - const currentTime = ref(0) - const duration = ref(0) - const seeking = ref(false) - const volume = ref(1) - const waiting = ref(false) - const ended = ref(false) - const playing = ref(false) - const rate = ref(1) - const stalled = ref(false) - const buffered = ref([]) - const tracks = ref([]) - const selectedTrack = ref(-1) - const isPictureInPicture = ref(false) - const muted = ref(false) - const supportsPictureInPicture = - document2 && 'pictureInPictureEnabled' in document2 - const sourceErrorEvent = createEventHook() - const playbackErrorEvent = createEventHook() - const disableTrack = track => { - usingElRef(target, el => { - if (track) { - const id = typeof track === 'number' ? track : track.id - el.textTracks[id].mode = 'disabled' - } else { - for (let i = 0; i < el.textTracks.length; ++i) - el.textTracks[i].mode = 'disabled' - } - selectedTrack.value = -1 - }) - } - const enableTrack = (track, disableTracks = true) => { - usingElRef(target, el => { - const id = typeof track === 'number' ? track : track.id - if (disableTracks) disableTrack() - el.textTracks[id].mode = 'showing' - selectedTrack.value = id - }) - } - const togglePictureInPicture = () => { - return new Promise((resolve, reject) => { - usingElRef(target, async el => { - if (supportsPictureInPicture) { - if (!isPictureInPicture.value) { - el.requestPictureInPicture().then(resolve).catch(reject) - } else { - document2.exitPictureInPicture().then(resolve).catch(reject) - } - } - }) - }) - } - watchEffect(() => { - if (!document2) return - const el = toValue(target) - if (!el) return - const src = toValue(options.src) - let sources = [] - if (!src) return - if (typeof src === 'string') sources = [{ src }] - else if (Array.isArray(src)) sources = src - else if (isObject(src)) sources = [src] - el.querySelectorAll('source').forEach(e => { - e.removeEventListener('error', sourceErrorEvent.trigger) - e.remove() - }) - sources.forEach(({ src: src2, type }) => { - const source = document2.createElement('source') - source.setAttribute('src', src2) - source.setAttribute('type', type || '') - source.addEventListener('error', sourceErrorEvent.trigger) - el.appendChild(source) - }) - el.load() - }) - tryOnScopeDispose(() => { - const el = toValue(target) - if (!el) return - el.querySelectorAll('source').forEach(e => - e.removeEventListener('error', sourceErrorEvent.trigger) - ) - }) - watch([target, volume], () => { - const el = toValue(target) - if (!el) return - el.volume = volume.value - }) - watch([target, muted], () => { - const el = toValue(target) - if (!el) return - el.muted = muted.value - }) - watch([target, rate], () => { - const el = toValue(target) - if (!el) return - el.playbackRate = rate.value - }) - watchEffect(() => { - if (!document2) return - const textTracks = toValue(options.tracks) - const el = toValue(target) - if (!textTracks || !textTracks.length || !el) return - el.querySelectorAll('track').forEach(e => e.remove()) - textTracks.forEach( - ({ default: isDefault, kind, label, src, srcLang }, i) => { - const track = document2.createElement('track') - track.default = isDefault || false - track.kind = kind - track.label = label - track.src = src - track.srclang = srcLang - if (track.default) selectedTrack.value = i - el.appendChild(track) - } - ) - }) - const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable( - currentTime, - time => { - const el = toValue(target) - if (!el) return - el.currentTime = time - } - ) - const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable( - playing, - isPlaying => { - const el = toValue(target) - if (!el) return - if (isPlaying) { - el.play().catch(e => { - playbackErrorEvent.trigger(e) - throw e - }) - } else { - el.pause() - } - } - ) - useEventListener(target, 'timeupdate', () => - ignoreCurrentTimeUpdates( - () => (currentTime.value = toValue(target).currentTime) - ) - ) - useEventListener( - target, - 'durationchange', - () => (duration.value = toValue(target).duration) - ) - useEventListener( - target, - 'progress', - () => (buffered.value = timeRangeToArray(toValue(target).buffered)) - ) - useEventListener(target, 'seeking', () => (seeking.value = true)) - useEventListener(target, 'seeked', () => (seeking.value = false)) - useEventListener(target, ['waiting', 'loadstart'], () => { - waiting.value = true - ignorePlayingUpdates(() => (playing.value = false)) - }) - useEventListener(target, 'loadeddata', () => (waiting.value = false)) - useEventListener(target, 'playing', () => { - waiting.value = false - ended.value = false - ignorePlayingUpdates(() => (playing.value = true)) - }) - useEventListener( - target, - 'ratechange', - () => (rate.value = toValue(target).playbackRate) - ) - useEventListener(target, 'stalled', () => (stalled.value = true)) - useEventListener(target, 'ended', () => (ended.value = true)) - useEventListener(target, 'pause', () => - ignorePlayingUpdates(() => (playing.value = false)) - ) - useEventListener(target, 'play', () => - ignorePlayingUpdates(() => (playing.value = true)) - ) - useEventListener( - target, - 'enterpictureinpicture', - () => (isPictureInPicture.value = true) - ) - useEventListener( - target, - 'leavepictureinpicture', - () => (isPictureInPicture.value = false) - ) - useEventListener(target, 'volumechange', () => { - const el = toValue(target) - if (!el) return - volume.value = el.volume - muted.value = el.muted - }) - const listeners = [] - const stop = watch([target], () => { - const el = toValue(target) - if (!el) return - stop() - listeners[0] = useEventListener( - el.textTracks, - 'addtrack', - () => (tracks.value = tracksToArray(el.textTracks)) - ) - listeners[1] = useEventListener( - el.textTracks, - 'removetrack', - () => (tracks.value = tracksToArray(el.textTracks)) - ) - listeners[2] = useEventListener( - el.textTracks, - 'change', - () => (tracks.value = tracksToArray(el.textTracks)) - ) - }) - tryOnScopeDispose(() => listeners.forEach(listener => listener())) - return { - currentTime, - duration, - waiting, - seeking, - ended, - stalled, - buffered, - playing, - rate, - // Volume - volume, - muted, - // Tracks - tracks, - selectedTrack, - enableTrack, - disableTrack, - // Picture in Picture - supportsPictureInPicture, - togglePictureInPicture, - isPictureInPicture, - // Events - onSourceError: sourceErrorEvent.on, - onPlaybackError: playbackErrorEvent.on - } -} -function getMapVue2Compat() { - const data = shallowReactive({}) - return { - get: key => data[key], - set: (key, value) => set(data, key, value), - has: key => hasOwn(data, key), - delete: key => del(data, key), - clear: () => { - Object.keys(data).forEach(key => { - del(data, key) - }) - } - } -} -function useMemoize(resolver, options) { - const initCache = () => { - if (options == null ? void 0 : options.cache) - return shallowReactive(options.cache) - if (isVue2) return getMapVue2Compat() - return shallowReactive(/* @__PURE__ */ new Map()) - } - const cache = initCache() - const generateKey = (...args) => - (options == null ? void 0 : options.getKey) - ? options.getKey(...args) - : JSON.stringify(args) - const _loadData = (key, ...args) => { - cache.set(key, resolver(...args)) - return cache.get(key) - } - const loadData = (...args) => _loadData(generateKey(...args), ...args) - const deleteData = (...args) => { - cache.delete(generateKey(...args)) - } - const clearData = () => { - cache.clear() - } - const memoized = (...args) => { - const key = generateKey(...args) - if (cache.has(key)) return cache.get(key) - return _loadData(key, ...args) - } - memoized.load = loadData - memoized.delete = deleteData - memoized.clear = clearData - memoized.generateKey = generateKey - memoized.cache = cache - return memoized -} -function useMemory(options = {}) { - const memory = ref() - const isSupported = useSupported( - () => typeof performance !== 'undefined' && 'memory' in performance - ) - if (isSupported.value) { - const { interval = 1e3 } = options - useIntervalFn( - () => { - memory.value = performance.memory - }, - interval, - { - immediate: options.immediate, - immediateCallback: options.immediateCallback - } - ) - } - return { isSupported, memory } -} -var UseMouseBuiltinExtractors = { - page: event => [event.pageX, event.pageY], - client: event => [event.clientX, event.clientY], - screen: event => [event.screenX, event.screenY], - movement: event => - event instanceof Touch ? null : [event.movementX, event.movementY] -} -function useMouse(options = {}) { - const { - type = 'page', - touch = true, - resetOnTouchEnds = false, - initialValue = { x: 0, y: 0 }, - window: window2 = defaultWindow, - target = window2, - scroll = true, - eventFilter - } = options - let _prevMouseEvent = null - const x = ref(initialValue.x) - const y = ref(initialValue.y) - const sourceType = ref(null) - const extractor = - typeof type === 'function' ? type : UseMouseBuiltinExtractors[type] - const mouseHandler = event => { - const result = extractor(event) - _prevMouseEvent = event - if (result) { - ;[x.value, y.value] = result - sourceType.value = 'mouse' - } - } - const touchHandler = event => { - if (event.touches.length > 0) { - const result = extractor(event.touches[0]) - if (result) { - ;[x.value, y.value] = result - sourceType.value = 'touch' - } - } - } - const scrollHandler = () => { - if (!_prevMouseEvent || !window2) return - const pos = extractor(_prevMouseEvent) - if (_prevMouseEvent instanceof MouseEvent && pos) { - x.value = pos[0] + window2.scrollX - y.value = pos[1] + window2.scrollY - } - } - const reset = () => { - x.value = initialValue.x - y.value = initialValue.y - } - const mouseHandlerWrapper = eventFilter - ? event => eventFilter(() => mouseHandler(event), {}) - : event => mouseHandler(event) - const touchHandlerWrapper = eventFilter - ? event => eventFilter(() => touchHandler(event), {}) - : event => touchHandler(event) - const scrollHandlerWrapper = eventFilter - ? () => eventFilter(() => scrollHandler(), {}) - : () => scrollHandler() - if (target) { - const listenerOptions = { passive: true } - useEventListener( - target, - ['mousemove', 'dragover'], - mouseHandlerWrapper, - listenerOptions - ) - if (touch && type !== 'movement') { - useEventListener( - target, - ['touchstart', 'touchmove'], - touchHandlerWrapper, - listenerOptions - ) - if (resetOnTouchEnds) - useEventListener(target, 'touchend', reset, listenerOptions) - } - if (scroll && type === 'page') - useEventListener(window2, 'scroll', scrollHandlerWrapper, { - passive: true - }) - } - return { - x, - y, - sourceType - } -} -function useMouseInElement(target, options = {}) { - const { handleOutside = true, window: window2 = defaultWindow } = options - const type = options.type || 'page' - const { x, y, sourceType } = useMouse(options) - const targetRef = ref( - target != null ? target : window2 == null ? void 0 : window2.document.body - ) - const elementX = ref(0) - const elementY = ref(0) - const elementPositionX = ref(0) - const elementPositionY = ref(0) - const elementHeight = ref(0) - const elementWidth = ref(0) - const isOutside = ref(true) - let stop = () => {} - if (window2) { - stop = watch( - [targetRef, x, y], - () => { - const el = unrefElement(targetRef) - if (!el || !(el instanceof Element)) return - const { left, top, width, height } = el.getBoundingClientRect() - elementPositionX.value = - left + (type === 'page' ? window2.pageXOffset : 0) - elementPositionY.value = - top + (type === 'page' ? window2.pageYOffset : 0) - elementHeight.value = height - elementWidth.value = width - const elX = x.value - elementPositionX.value - const elY = y.value - elementPositionY.value - isOutside.value = - width === 0 || - height === 0 || - elX < 0 || - elY < 0 || - elX > width || - elY > height - if (handleOutside || !isOutside.value) { - elementX.value = elX - elementY.value = elY - } - }, - { immediate: true } - ) - useEventListener(document, 'mouseleave', () => { - isOutside.value = true - }) - } - return { - x, - y, - sourceType, - elementX, - elementY, - elementPositionX, - elementPositionY, - elementHeight, - elementWidth, - isOutside, - stop - } -} -function useMousePressed(options = {}) { - const { - touch = true, - drag = true, - capture = false, - initialValue = false, - window: window2 = defaultWindow - } = options - const pressed = ref(initialValue) - const sourceType = ref(null) - if (!window2) { - return { - pressed, - sourceType - } - } - const onPressed = srcType => () => { - pressed.value = true - sourceType.value = srcType - } - const onReleased = () => { - pressed.value = false - sourceType.value = null - } - const target = computed(() => unrefElement(options.target) || window2) - useEventListener(target, 'mousedown', onPressed('mouse'), { - passive: true, - capture - }) - useEventListener(window2, 'mouseleave', onReleased, { - passive: true, - capture - }) - useEventListener(window2, 'mouseup', onReleased, { passive: true, capture }) - if (drag) { - useEventListener(target, 'dragstart', onPressed('mouse'), { - passive: true, - capture - }) - useEventListener(window2, 'drop', onReleased, { passive: true, capture }) - useEventListener(window2, 'dragend', onReleased, { passive: true, capture }) - } - if (touch) { - useEventListener(target, 'touchstart', onPressed('touch'), { - passive: true, - capture - }) - useEventListener(window2, 'touchend', onReleased, { - passive: true, - capture - }) - useEventListener(window2, 'touchcancel', onReleased, { - passive: true, - capture - }) - } - return { - pressed, - sourceType - } -} -function useNavigatorLanguage(options = {}) { - const { window: window2 = defaultWindow } = options - const navigator = window2 == null ? void 0 : window2.navigator - const isSupported = useSupported(() => navigator && 'language' in navigator) - const language = ref(navigator == null ? void 0 : navigator.language) - useEventListener(window2, 'languagechange', () => { - if (navigator) language.value = navigator.language - }) - return { - isSupported, - language - } -} -function useNetwork(options = {}) { - const { window: window2 = defaultWindow } = options - const navigator = window2 == null ? void 0 : window2.navigator - const isSupported = useSupported(() => navigator && 'connection' in navigator) - const isOnline = ref(true) - const saveData = ref(false) - const offlineAt = ref(void 0) - const onlineAt = ref(void 0) - const downlink = ref(void 0) - const downlinkMax = ref(void 0) - const rtt = ref(void 0) - const effectiveType = ref(void 0) - const type = ref('unknown') - const connection = isSupported.value && navigator.connection - function updateNetworkInformation() { - if (!navigator) return - isOnline.value = navigator.onLine - offlineAt.value = isOnline.value ? void 0 : Date.now() - onlineAt.value = isOnline.value ? Date.now() : void 0 - if (connection) { - downlink.value = connection.downlink - downlinkMax.value = connection.downlinkMax - effectiveType.value = connection.effectiveType - rtt.value = connection.rtt - saveData.value = connection.saveData - type.value = connection.type - } - } - if (window2) { - useEventListener(window2, 'offline', () => { - isOnline.value = false - offlineAt.value = Date.now() - }) - useEventListener(window2, 'online', () => { - isOnline.value = true - onlineAt.value = Date.now() - }) - } - if (connection) - useEventListener(connection, 'change', updateNetworkInformation, false) - updateNetworkInformation() - return { - isSupported: readonly(isSupported), - isOnline: readonly(isOnline), - saveData: readonly(saveData), - offlineAt: readonly(offlineAt), - onlineAt: readonly(onlineAt), - downlink: readonly(downlink), - downlinkMax: readonly(downlinkMax), - effectiveType: readonly(effectiveType), - rtt: readonly(rtt), - type: readonly(type) - } -} -function useNow(options = {}) { - const { - controls: exposeControls = false, - interval = 'requestAnimationFrame' - } = options - const now2 = ref(/* @__PURE__ */ new Date()) - const update = () => (now2.value = /* @__PURE__ */ new Date()) - const controls = - interval === 'requestAnimationFrame' - ? useRafFn(update, { immediate: true }) - : useIntervalFn(update, interval, { immediate: true }) - if (exposeControls) { - return { - now: now2, - ...controls - } - } else { - return now2 - } -} -function useObjectUrl(object) { - const url = ref() - const release = () => { - if (url.value) URL.revokeObjectURL(url.value) - url.value = void 0 - } - watch( - () => toValue(object), - newObject => { - release() - if (newObject) url.value = URL.createObjectURL(newObject) - }, - { immediate: true } - ) - tryOnScopeDispose(release) - return readonly(url) -} -function useClamp(value, min, max) { - if (typeof value === 'function' || isReadonly(value)) - return computed(() => clamp(toValue(value), toValue(min), toValue(max))) - const _value = ref(value) - return computed({ - get() { - return (_value.value = clamp(_value.value, toValue(min), toValue(max))) - }, - set(value2) { - _value.value = clamp(value2, toValue(min), toValue(max)) - } - }) -} -function useOffsetPagination(options) { - const { - total = Number.POSITIVE_INFINITY, - pageSize = 10, - page = 1, - onPageChange = noop, - onPageSizeChange = noop, - onPageCountChange = noop - } = options - const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY) - const pageCount = computed(() => - Math.max(1, Math.ceil(toValue(total) / toValue(currentPageSize))) - ) - const currentPage = useClamp(page, 1, pageCount) - const isFirstPage = computed(() => currentPage.value === 1) - const isLastPage = computed(() => currentPage.value === pageCount.value) - if (isRef(page)) { - syncRef(page, currentPage, { - direction: isReadonly(page) ? 'ltr' : 'both' - }) - } - if (isRef(pageSize)) { - syncRef(pageSize, currentPageSize, { - direction: isReadonly(pageSize) ? 'ltr' : 'both' - }) - } - function prev() { - currentPage.value-- - } - function next() { - currentPage.value++ - } - const returnValue = { - currentPage, - currentPageSize, - pageCount, - isFirstPage, - isLastPage, - prev, - next - } - watch(currentPage, () => { - onPageChange(reactive(returnValue)) - }) - watch(currentPageSize, () => { - onPageSizeChange(reactive(returnValue)) - }) - watch(pageCount, () => { - onPageCountChange(reactive(returnValue)) - }) - return returnValue -} -function useOnline(options = {}) { - const { isOnline } = useNetwork(options) - return isOnline -} -function usePageLeave(options = {}) { - const { window: window2 = defaultWindow } = options - const isLeft = ref(false) - const handler = event => { - if (!window2) return - event = event || window2.event - const from = event.relatedTarget || event.toElement - isLeft.value = !from - } - if (window2) { - useEventListener(window2, 'mouseout', handler, { passive: true }) - useEventListener(window2.document, 'mouseleave', handler, { passive: true }) - useEventListener(window2.document, 'mouseenter', handler, { passive: true }) - } - return isLeft -} -function useScreenOrientation(options = {}) { - const { window: window2 = defaultWindow } = options - const isSupported = useSupported( - () => window2 && 'screen' in window2 && 'orientation' in window2.screen - ) - const screenOrientation = isSupported.value ? window2.screen.orientation : {} - const orientation = ref(screenOrientation.type) - const angle = ref(screenOrientation.angle || 0) - if (isSupported.value) { - useEventListener(window2, 'orientationchange', () => { - orientation.value = screenOrientation.type - angle.value = screenOrientation.angle - }) - } - const lockOrientation = type => { - if (isSupported.value && typeof screenOrientation.lock === 'function') - return screenOrientation.lock(type) - return Promise.reject(new Error('Not supported')) - } - const unlockOrientation = () => { - if (isSupported.value && typeof screenOrientation.unlock === 'function') - screenOrientation.unlock() - } - return { - isSupported, - orientation, - angle, - lockOrientation, - unlockOrientation - } -} -function useParallax(target, options = {}) { - const { - deviceOrientationTiltAdjust = i => i, - deviceOrientationRollAdjust = i => i, - mouseTiltAdjust = i => i, - mouseRollAdjust = i => i, - window: window2 = defaultWindow - } = options - const orientation = reactive(useDeviceOrientation({ window: window2 })) - const screenOrientation = reactive(useScreenOrientation({ window: window2 })) - const { - elementX: x, - elementY: y, - elementWidth: width, - elementHeight: height - } = useMouseInElement(target, { handleOutside: false, window: window2 }) - const source = computed(() => { - if ( - orientation.isSupported && - ((orientation.alpha != null && orientation.alpha !== 0) || - (orientation.gamma != null && orientation.gamma !== 0)) - ) { - return 'deviceOrientation' - } - return 'mouse' - }) - const roll = computed(() => { - if (source.value === 'deviceOrientation') { - let value - switch (screenOrientation.orientation) { - case 'landscape-primary': - value = orientation.gamma / 90 - break - case 'landscape-secondary': - value = -orientation.gamma / 90 - break - case 'portrait-primary': - value = -orientation.beta / 90 - break - case 'portrait-secondary': - value = orientation.beta / 90 - break - default: - value = -orientation.beta / 90 - } - return deviceOrientationRollAdjust(value) - } else { - const value = -(y.value - height.value / 2) / height.value - return mouseRollAdjust(value) - } - }) - const tilt = computed(() => { - if (source.value === 'deviceOrientation') { - let value - switch (screenOrientation.orientation) { - case 'landscape-primary': - value = orientation.beta / 90 - break - case 'landscape-secondary': - value = -orientation.beta / 90 - break - case 'portrait-primary': - value = orientation.gamma / 90 - break - case 'portrait-secondary': - value = -orientation.gamma / 90 - break - default: - value = orientation.gamma / 90 - } - return deviceOrientationTiltAdjust(value) - } else { - const value = (x.value - width.value / 2) / width.value - return mouseTiltAdjust(value) - } - }) - return { roll, tilt, source } -} -function useParentElement(element = useCurrentElement()) { - const parentElement = shallowRef() - const update = () => { - const el = unrefElement(element) - if (el) parentElement.value = el.parentElement - } - tryOnMounted(update) - watch(() => toValue(element), update) - return parentElement -} -function usePerformanceObserver(options, callback) { - const { - window: window2 = defaultWindow, - immediate = true, - ...performanceOptions - } = options - const isSupported = useSupported( - () => window2 && 'PerformanceObserver' in window2 - ) - let observer - const stop = () => { - observer == null ? void 0 : observer.disconnect() - } - const start = () => { - if (isSupported.value) { - stop() - observer = new PerformanceObserver(callback) - observer.observe(performanceOptions) - } - } - tryOnScopeDispose(stop) - if (immediate) start() - return { - isSupported, - start, - stop - } -} -var defaultState = { - x: 0, - y: 0, - pointerId: 0, - pressure: 0, - tiltX: 0, - tiltY: 0, - width: 0, - height: 0, - twist: 0, - pointerType: null -} -var keys = Object.keys(defaultState) -function usePointer(options = {}) { - const { target = defaultWindow } = options - const isInside = ref(false) - const state = ref(options.initialValue || {}) - Object.assign(state.value, defaultState, state.value) - const handler = event => { - isInside.value = true - if ( - options.pointerTypes && - !options.pointerTypes.includes(event.pointerType) - ) - return - state.value = objectPick(event, keys, false) - } - if (target) { - const listenerOptions = { passive: true } - useEventListener( - target, - ['pointerdown', 'pointermove', 'pointerup'], - handler, - listenerOptions - ) - useEventListener( - target, - 'pointerleave', - () => (isInside.value = false), - listenerOptions - ) - } - return { - ...toRefs2(state), - isInside - } -} -function usePointerLock(target, options = {}) { - const { document: document2 = defaultDocument } = options - const isSupported = useSupported( - () => document2 && 'pointerLockElement' in document2 - ) - const element = ref() - const triggerElement = ref() - let targetElement - if (isSupported.value) { - useEventListener(document2, 'pointerlockchange', () => { - var _a - const currentElement = - (_a = document2.pointerLockElement) != null ? _a : element.value - if (targetElement && currentElement === targetElement) { - element.value = document2.pointerLockElement - if (!element.value) targetElement = triggerElement.value = null - } - }) - useEventListener(document2, 'pointerlockerror', () => { - var _a - const currentElement = - (_a = document2.pointerLockElement) != null ? _a : element.value - if (targetElement && currentElement === targetElement) { - const action = document2.pointerLockElement ? 'release' : 'acquire' - throw new Error(`Failed to ${action} pointer lock.`) - } - }) - } - async function lock(e) { - var _a - if (!isSupported.value) - throw new Error('Pointer Lock API is not supported by your browser.') - triggerElement.value = e instanceof Event ? e.currentTarget : null - targetElement = - e instanceof Event - ? (_a = unrefElement(target)) != null - ? _a - : triggerElement.value - : unrefElement(e) - if (!targetElement) throw new Error('Target element undefined.') - targetElement.requestPointerLock() - return await until(element).toBe(targetElement) - } - async function unlock() { - if (!element.value) return false - document2.exitPointerLock() - await until(element).toBeNull() - return true - } - return { - isSupported, - element, - triggerElement, - lock, - unlock - } -} -function usePointerSwipe(target, options = {}) { - const targetRef = toRef2(target) - const { - threshold = 50, - onSwipe, - onSwipeEnd, - onSwipeStart, - disableTextSelect = false - } = options - const posStart = reactive({ x: 0, y: 0 }) - const updatePosStart = (x, y) => { - posStart.x = x - posStart.y = y - } - const posEnd = reactive({ x: 0, y: 0 }) - const updatePosEnd = (x, y) => { - posEnd.x = x - posEnd.y = y - } - const distanceX = computed(() => posStart.x - posEnd.x) - const distanceY = computed(() => posStart.y - posEnd.y) - const { max, abs } = Math - const isThresholdExceeded = computed( - () => max(abs(distanceX.value), abs(distanceY.value)) >= threshold - ) - const isSwiping = ref(false) - const isPointerDown = ref(false) - const direction = computed(() => { - if (!isThresholdExceeded.value) return 'none' - if (abs(distanceX.value) > abs(distanceY.value)) { - return distanceX.value > 0 ? 'left' : 'right' - } else { - return distanceY.value > 0 ? 'up' : 'down' - } - }) - const eventIsAllowed = e => { - var _a, _b, _c - const isReleasingButton = e.buttons === 0 - const isPrimaryButton = e.buttons === 1 - return (_c = - (_b = - (_a = options.pointerTypes) == null - ? void 0 - : _a.includes(e.pointerType)) != null - ? _b - : isReleasingButton || isPrimaryButton) != null - ? _c - : true - } - const stops = [ - useEventListener(target, 'pointerdown', e => { - if (!eventIsAllowed(e)) return - isPointerDown.value = true - const eventTarget = e.target - eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId) - const { clientX: x, clientY: y } = e - updatePosStart(x, y) - updatePosEnd(x, y) - onSwipeStart == null ? void 0 : onSwipeStart(e) - }), - useEventListener(target, 'pointermove', e => { - if (!eventIsAllowed(e)) return - if (!isPointerDown.value) return - const { clientX: x, clientY: y } = e - updatePosEnd(x, y) - if (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true - if (isSwiping.value) onSwipe == null ? void 0 : onSwipe(e) - }), - useEventListener(target, 'pointerup', e => { - if (!eventIsAllowed(e)) return - if (isSwiping.value) - onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value) - isPointerDown.value = false - isSwiping.value = false - }) - ] - tryOnMounted(() => { - var _a, _b, _c, _d, _e, _f, _g, _h - ;(_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null - ? void 0 - : _b.setProperty('touch-action', 'none') - if (disableTextSelect) { - ;(_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null - ? void 0 - : _d.setProperty('-webkit-user-select', 'none') - ;(_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null - ? void 0 - : _f.setProperty('-ms-user-select', 'none') - ;(_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null - ? void 0 - : _h.setProperty('user-select', 'none') - } - }) - const stop = () => stops.forEach(s => s()) - return { - isSwiping: readonly(isSwiping), - direction: readonly(direction), - posStart: readonly(posStart), - posEnd: readonly(posEnd), - distanceX, - distanceY, - stop - } -} -function usePreferredColorScheme(options) { - const isLight = useMediaQuery('(prefers-color-scheme: light)', options) - const isDark = useMediaQuery('(prefers-color-scheme: dark)', options) - return computed(() => { - if (isDark.value) return 'dark' - if (isLight.value) return 'light' - return 'no-preference' - }) -} -function usePreferredContrast(options) { - const isMore = useMediaQuery('(prefers-contrast: more)', options) - const isLess = useMediaQuery('(prefers-contrast: less)', options) - const isCustom = useMediaQuery('(prefers-contrast: custom)', options) - return computed(() => { - if (isMore.value) return 'more' - if (isLess.value) return 'less' - if (isCustom.value) return 'custom' - return 'no-preference' - }) -} -function usePreferredLanguages(options = {}) { - const { window: window2 = defaultWindow } = options - if (!window2) return ref(['en']) - const navigator = window2.navigator - const value = ref(navigator.languages) - useEventListener(window2, 'languagechange', () => { - value.value = navigator.languages - }) - return value -} -function usePreferredReducedMotion(options) { - const isReduced = useMediaQuery('(prefers-reduced-motion: reduce)', options) - return computed(() => { - if (isReduced.value) return 'reduce' - return 'no-preference' - }) -} -function usePrevious(value, initialValue) { - const previous = shallowRef(initialValue) - watch( - toRef2(value), - (_, oldValue) => { - previous.value = oldValue - }, - { flush: 'sync' } - ) - return readonly(previous) -} -var topVarName = '--vueuse-safe-area-top' -var rightVarName = '--vueuse-safe-area-right' -var bottomVarName = '--vueuse-safe-area-bottom' -var leftVarName = '--vueuse-safe-area-left' -function useScreenSafeArea() { - const top = ref('') - const right = ref('') - const bottom = ref('') - const left = ref('') - if (isClient) { - const topCssVar = useCssVar(topVarName) - const rightCssVar = useCssVar(rightVarName) - const bottomCssVar = useCssVar(bottomVarName) - const leftCssVar = useCssVar(leftVarName) - topCssVar.value = 'env(safe-area-inset-top, 0px)' - rightCssVar.value = 'env(safe-area-inset-right, 0px)' - bottomCssVar.value = 'env(safe-area-inset-bottom, 0px)' - leftCssVar.value = 'env(safe-area-inset-left, 0px)' - update() - useEventListener('resize', useDebounceFn(update)) - } - function update() { - top.value = getValue(topVarName) - right.value = getValue(rightVarName) - bottom.value = getValue(bottomVarName) - left.value = getValue(leftVarName) - } - return { - top, - right, - bottom, - left, - update - } -} -function getValue(position) { - return getComputedStyle(document.documentElement).getPropertyValue(position) -} -function useScriptTag(src, onLoaded = noop, options = {}) { - const { - immediate = true, - manual = false, - type = 'text/javascript', - async = true, - crossOrigin, - referrerPolicy, - noModule, - defer, - document: document2 = defaultDocument, - attrs = {} - } = options - const scriptTag = ref(null) - let _promise = null - const loadScript = waitForScriptLoad => - new Promise((resolve, reject) => { - const resolveWithElement = el2 => { - scriptTag.value = el2 - resolve(el2) - return el2 - } - if (!document2) { - resolve(false) - return - } - let shouldAppend = false - let el = document2.querySelector(`script[src="${toValue(src)}"]`) - if (!el) { - el = document2.createElement('script') - el.type = type - el.async = async - el.src = toValue(src) - if (defer) el.defer = defer - if (crossOrigin) el.crossOrigin = crossOrigin - if (noModule) el.noModule = noModule - if (referrerPolicy) el.referrerPolicy = referrerPolicy - Object.entries(attrs).forEach(([name, value]) => - el == null ? void 0 : el.setAttribute(name, value) - ) - shouldAppend = true - } else if (el.hasAttribute('data-loaded')) { - resolveWithElement(el) - } - el.addEventListener('error', event => reject(event)) - el.addEventListener('abort', event => reject(event)) - el.addEventListener('load', () => { - el.setAttribute('data-loaded', 'true') - onLoaded(el) - resolveWithElement(el) - }) - if (shouldAppend) el = document2.head.appendChild(el) - if (!waitForScriptLoad) resolveWithElement(el) - }) - const load = (waitForScriptLoad = true) => { - if (!_promise) _promise = loadScript(waitForScriptLoad) - return _promise - } - const unload = () => { - if (!document2) return - _promise = null - if (scriptTag.value) scriptTag.value = null - const el = document2.querySelector(`script[src="${toValue(src)}"]`) - if (el) document2.head.removeChild(el) - } - if (immediate && !manual) tryOnMounted(load) - if (!manual) tryOnUnmounted(unload) - return { scriptTag, load, unload } -} -function checkOverflowScroll(ele) { - const style = window.getComputedStyle(ele) - if ( - style.overflowX === 'scroll' || - style.overflowY === 'scroll' || - (style.overflowX === 'auto' && ele.clientWidth < ele.scrollWidth) || - (style.overflowY === 'auto' && ele.clientHeight < ele.scrollHeight) - ) { - return true - } else { - const parent = ele.parentNode - if (!parent || parent.tagName === 'BODY') return false - return checkOverflowScroll(parent) - } -} -function preventDefault(rawEvent) { - const e = rawEvent || window.event - const _target = e.target - if (checkOverflowScroll(_target)) return false - if (e.touches.length > 1) return true - if (e.preventDefault) e.preventDefault() - return false -} -var elInitialOverflow = /* @__PURE__ */ new WeakMap() -function useScrollLock(element, initialState = false) { - const isLocked = ref(initialState) - let stopTouchMoveListener = null - let initialOverflow = '' - watch( - toRef2(element), - el => { - const target = resolveElement(toValue(el)) - if (target) { - const ele = target - if (!elInitialOverflow.get(ele)) - elInitialOverflow.set(ele, ele.style.overflow) - if (ele.style.overflow !== 'hidden') - initialOverflow = ele.style.overflow - if (ele.style.overflow === 'hidden') return (isLocked.value = true) - if (isLocked.value) return (ele.style.overflow = 'hidden') - } - }, - { - immediate: true - } - ) - const lock = () => { - const el = resolveElement(toValue(element)) - if (!el || isLocked.value) return - if (isIOS) { - stopTouchMoveListener = useEventListener( - el, - 'touchmove', - e => { - preventDefault(e) - }, - { passive: false } - ) - } - el.style.overflow = 'hidden' - isLocked.value = true - } - const unlock = () => { - const el = resolveElement(toValue(element)) - if (!el || !isLocked.value) return - if (isIOS) stopTouchMoveListener == null ? void 0 : stopTouchMoveListener() - el.style.overflow = initialOverflow - elInitialOverflow.delete(el) - isLocked.value = false - } - tryOnScopeDispose(unlock) - return computed({ - get() { - return isLocked.value - }, - set(v) { - if (v) lock() - else unlock() - } - }) -} -function useSessionStorage(key, initialValue, options = {}) { - const { window: window2 = defaultWindow } = options - return useStorage( - key, - initialValue, - window2 == null ? void 0 : window2.sessionStorage, - options - ) -} -function useShare(shareOptions = {}, options = {}) { - const { navigator = defaultNavigator } = options - const _navigator = navigator - const isSupported = useSupported(() => _navigator && 'canShare' in _navigator) - const share = async (overrideOptions = {}) => { - if (isSupported.value) { - const data = { - ...toValue(shareOptions), - ...toValue(overrideOptions) - } - let granted = true - if (data.files && _navigator.canShare) - granted = _navigator.canShare({ files: data.files }) - if (granted) return _navigator.share(data) - } - } - return { - isSupported, - share - } -} -var defaultSortFn = (source, compareFn) => source.sort(compareFn) -var defaultCompare = (a, b) => a - b -function useSorted(...args) { - var _a, _b, _c, _d - const [source] = args - let compareFn = defaultCompare - let options = {} - if (args.length === 2) { - if (typeof args[1] === 'object') { - options = args[1] - compareFn = (_a = options.compareFn) != null ? _a : defaultCompare - } else { - compareFn = (_b = args[1]) != null ? _b : defaultCompare - } - } else if (args.length > 2) { - compareFn = (_c = args[1]) != null ? _c : defaultCompare - options = (_d = args[2]) != null ? _d : {} - } - const { dirty = false, sortFn = defaultSortFn } = options - if (!dirty) return computed(() => sortFn([...toValue(source)], compareFn)) - watchEffect(() => { - const result = sortFn(toValue(source), compareFn) - if (isRef(source)) source.value = result - else source.splice(0, source.length, ...result) - }) - return source -} -function useSpeechRecognition(options = {}) { - const { - interimResults = true, - continuous = true, - maxAlternatives = 1, - window: window2 = defaultWindow - } = options - const lang = toRef2(options.lang || 'en-US') - const isListening = ref(false) - const isFinal = ref(false) - const result = ref('') - const error = shallowRef(void 0) - const toggle = (value = !isListening.value) => { - isListening.value = value - } - const start = () => { - isListening.value = true - } - const stop = () => { - isListening.value = false - } - const SpeechRecognition = - window2 && (window2.SpeechRecognition || window2.webkitSpeechRecognition) - const isSupported = useSupported(() => SpeechRecognition) - let recognition - if (isSupported.value) { - recognition = new SpeechRecognition() - recognition.continuous = continuous - recognition.interimResults = interimResults - recognition.lang = toValue(lang) - recognition.maxAlternatives = maxAlternatives - recognition.onstart = () => { - isFinal.value = false - } - watch(lang, lang2 => { - if (recognition && !isListening.value) recognition.lang = lang2 - }) - recognition.onresult = event => { - const currentResult = event.results[event.resultIndex] - const { transcript } = currentResult[0] - isFinal.value = currentResult.isFinal - result.value = transcript - error.value = void 0 - } - recognition.onerror = event => { - error.value = event - } - recognition.onend = () => { - isListening.value = false - recognition.lang = toValue(lang) - } - watch(isListening, () => { - if (isListening.value) recognition.start() - else recognition.stop() - }) - } - tryOnScopeDispose(() => { - isListening.value = false - }) - return { - isSupported, - isListening, - isFinal, - recognition, - result, - error, - toggle, - start, - stop - } -} -function useSpeechSynthesis(text, options = {}) { - const { - pitch = 1, - rate = 1, - volume = 1, - window: window2 = defaultWindow - } = options - const synth = window2 && window2.speechSynthesis - const isSupported = useSupported(() => synth) - const isPlaying = ref(false) - const status = ref('init') - const spokenText = toRef2(text || '') - const lang = toRef2(options.lang || 'en-US') - const error = shallowRef(void 0) - const toggle = (value = !isPlaying.value) => { - isPlaying.value = value - } - const bindEventsForUtterance = utterance2 => { - utterance2.lang = toValue(lang) - utterance2.voice = toValue(options.voice) || null - utterance2.pitch = toValue(pitch) - utterance2.rate = toValue(rate) - utterance2.volume = volume - utterance2.onstart = () => { - isPlaying.value = true - status.value = 'play' - } - utterance2.onpause = () => { - isPlaying.value = false - status.value = 'pause' - } - utterance2.onresume = () => { - isPlaying.value = true - status.value = 'play' - } - utterance2.onend = () => { - isPlaying.value = false - status.value = 'end' - } - utterance2.onerror = event => { - error.value = event - } - } - const utterance = computed(() => { - isPlaying.value = false - status.value = 'init' - const newUtterance = new SpeechSynthesisUtterance(spokenText.value) - bindEventsForUtterance(newUtterance) - return newUtterance - }) - const speak = () => { - synth.cancel() - if (utterance) synth.speak(utterance.value) - } - const stop = () => { - synth.cancel() - isPlaying.value = false - } - if (isSupported.value) { - bindEventsForUtterance(utterance.value) - watch(lang, lang2 => { - if (utterance.value && !isPlaying.value) utterance.value.lang = lang2 - }) - if (options.voice) { - watch(options.voice, () => { - synth.cancel() - }) - } - watch(isPlaying, () => { - if (isPlaying.value) synth.resume() - else synth.pause() - }) - } - tryOnScopeDispose(() => { - isPlaying.value = false - }) - return { - isSupported, - isPlaying, - status, - utterance, - error, - stop, - toggle, - speak - } -} -function useStepper(steps, initialStep) { - const stepsRef = ref(steps) - const stepNames = computed(() => - Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value) - ) - const index = ref( - stepNames.value.indexOf( - initialStep != null ? initialStep : stepNames.value[0] - ) - ) - const current = computed(() => at(index.value)) - const isFirst = computed(() => index.value === 0) - const isLast = computed(() => index.value === stepNames.value.length - 1) - const next = computed(() => stepNames.value[index.value + 1]) - const previous = computed(() => stepNames.value[index.value - 1]) - function at(index2) { - if (Array.isArray(stepsRef.value)) return stepsRef.value[index2] - return stepsRef.value[stepNames.value[index2]] - } - function get2(step) { - if (!stepNames.value.includes(step)) return - return at(stepNames.value.indexOf(step)) - } - function goTo(step) { - if (stepNames.value.includes(step)) - index.value = stepNames.value.indexOf(step) - } - function goToNext() { - if (isLast.value) return - index.value++ - } - function goToPrevious() { - if (isFirst.value) return - index.value-- - } - function goBackTo(step) { - if (isAfter(step)) goTo(step) - } - function isNext(step) { - return stepNames.value.indexOf(step) === index.value + 1 - } - function isPrevious(step) { - return stepNames.value.indexOf(step) === index.value - 1 - } - function isCurrent(step) { - return stepNames.value.indexOf(step) === index.value - } - function isBefore(step) { - return index.value < stepNames.value.indexOf(step) - } - function isAfter(step) { - return index.value > stepNames.value.indexOf(step) - } - return { - steps: stepsRef, - stepNames, - index, - current, - next, - previous, - isFirst, - isLast, - at, - get: get2, - goTo, - goToNext, - goToPrevious, - goBackTo, - isNext, - isPrevious, - isCurrent, - isBefore, - isAfter - } -} -function useStorageAsync(key, initialValue, storage, options = {}) { - var _a - const { - flush = 'pre', - deep = true, - listenToStorageChanges = true, - writeDefaults = true, - mergeDefaults = false, - shallow, - window: window2 = defaultWindow, - eventFilter, - onError = e => { - console.error(e) - } - } = options - const rawInit = toValue(initialValue) - const type = guessSerializerType(rawInit) - const data = (shallow ? shallowRef : ref)(initialValue) - const serializer = - (_a = options.serializer) != null ? _a : StorageSerializers[type] - if (!storage) { - try { - storage = getSSRHandler('getDefaultStorageAsync', () => { - var _a2 - return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage - })() - } catch (e) { - onError(e) - } - } - async function read(event) { - if (!storage || (event && event.key !== key)) return - try { - const rawValue = event ? event.newValue : await storage.getItem(key) - if (rawValue == null) { - data.value = rawInit - if (writeDefaults && rawInit !== null) - await storage.setItem(key, await serializer.write(rawInit)) - } else if (mergeDefaults) { - const value = await serializer.read(rawValue) - if (typeof mergeDefaults === 'function') - data.value = mergeDefaults(value, rawInit) - else if (type === 'object' && !Array.isArray(value)) - data.value = { ...rawInit, ...value } - else data.value = value - } else { - data.value = await serializer.read(rawValue) - } - } catch (e) { - onError(e) - } - } - read() - if (window2 && listenToStorageChanges) - useEventListener(window2, 'storage', e => - Promise.resolve().then(() => read(e)) - ) - if (storage) { - watchWithFilter( - data, - async () => { - try { - if (data.value == null) await storage.removeItem(key) - else await storage.setItem(key, await serializer.write(data.value)) - } catch (e) { - onError(e) - } - }, - { - flush, - deep, - eventFilter - } - ) - } - return data -} -var _id = 0 -function useStyleTag(css, options = {}) { - const isLoaded = ref(false) - const { - document: document2 = defaultDocument, - immediate = true, - manual = false, - id = `vueuse_styletag_${++_id}` - } = options - const cssRef = ref(css) - let stop = () => {} - const load = () => { - if (!document2) return - const el = document2.getElementById(id) || document2.createElement('style') - if (!el.isConnected) { - el.id = id - if (options.media) el.media = options.media - document2.head.appendChild(el) - } - if (isLoaded.value) return - stop = watch( - cssRef, - value => { - el.textContent = value - }, - { immediate: true } - ) - isLoaded.value = true - } - const unload = () => { - if (!document2 || !isLoaded.value) return - stop() - document2.head.removeChild(document2.getElementById(id)) - isLoaded.value = false - } - if (immediate && !manual) tryOnMounted(load) - if (!manual) tryOnScopeDispose(unload) - return { - id, - css: cssRef, - unload, - load, - isLoaded: readonly(isLoaded) - } -} -function useSwipe(target, options = {}) { - const { - threshold = 50, - onSwipe, - onSwipeEnd, - onSwipeStart, - passive = true, - window: window2 = defaultWindow - } = options - const coordsStart = reactive({ x: 0, y: 0 }) - const coordsEnd = reactive({ x: 0, y: 0 }) - const diffX = computed(() => coordsStart.x - coordsEnd.x) - const diffY = computed(() => coordsStart.y - coordsEnd.y) - const { max, abs } = Math - const isThresholdExceeded = computed( - () => max(abs(diffX.value), abs(diffY.value)) >= threshold - ) - const isSwiping = ref(false) - const direction = computed(() => { - if (!isThresholdExceeded.value) return 'none' - if (abs(diffX.value) > abs(diffY.value)) { - return diffX.value > 0 ? 'left' : 'right' - } else { - return diffY.value > 0 ? 'up' : 'down' - } - }) - const getTouchEventCoords = e => [e.touches[0].clientX, e.touches[0].clientY] - const updateCoordsStart = (x, y) => { - coordsStart.x = x - coordsStart.y = y - } - const updateCoordsEnd = (x, y) => { - coordsEnd.x = x - coordsEnd.y = y - } - let listenerOptions - const isPassiveEventSupported = checkPassiveEventSupport( - window2 == null ? void 0 : window2.document - ) - if (!passive) - listenerOptions = isPassiveEventSupported - ? { passive: false, capture: true } - : { capture: true } - else - listenerOptions = isPassiveEventSupported - ? { passive: true } - : { capture: false } - const onTouchEnd = e => { - if (isSwiping.value) - onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value) - isSwiping.value = false - } - const stops = [ - useEventListener( - target, - 'touchstart', - e => { - if (e.touches.length !== 1) return - if (listenerOptions.capture && !listenerOptions.passive) - e.preventDefault() - const [x, y] = getTouchEventCoords(e) - updateCoordsStart(x, y) - updateCoordsEnd(x, y) - onSwipeStart == null ? void 0 : onSwipeStart(e) - }, - listenerOptions - ), - useEventListener( - target, - 'touchmove', - e => { - if (e.touches.length !== 1) return - const [x, y] = getTouchEventCoords(e) - updateCoordsEnd(x, y) - if (!isSwiping.value && isThresholdExceeded.value) - isSwiping.value = true - if (isSwiping.value) onSwipe == null ? void 0 : onSwipe(e) - }, - listenerOptions - ), - useEventListener( - target, - ['touchend', 'touchcancel'], - onTouchEnd, - listenerOptions - ) - ] - const stop = () => stops.forEach(s => s()) - return { - isPassiveEventSupported, - isSwiping, - direction, - coordsStart, - coordsEnd, - lengthX: diffX, - lengthY: diffY, - stop - } -} -function checkPassiveEventSupport(document2) { - if (!document2) return false - let supportsPassive = false - const optionsBlock = { - get passive() { - supportsPassive = true - return false - } - } - document2.addEventListener('x', noop, optionsBlock) - document2.removeEventListener('x', noop) - return supportsPassive -} -function useTemplateRefsList() { - const refs = ref([]) - refs.value.set = el => { - if (el) refs.value.push(el) - } - onBeforeUpdate(() => { - refs.value.length = 0 - }) - return refs -} -function useTextDirection(options = {}) { - const { - document: document2 = defaultDocument, - selector = 'html', - observe = false, - initialValue = 'ltr' - } = options - function getValue2() { - var _a, _b - return (_b = - (_a = document2 == null ? void 0 : document2.querySelector(selector)) == - null - ? void 0 - : _a.getAttribute('dir')) != null - ? _b - : initialValue - } - const dir = ref(getValue2()) - tryOnMounted(() => (dir.value = getValue2())) - if (observe && document2) { - useMutationObserver( - document2.querySelector(selector), - () => (dir.value = getValue2()), - { attributes: true } - ) - } - return computed({ - get() { - return dir.value - }, - set(v) { - var _a, _b - dir.value = v - if (!document2) return - if (dir.value) - (_a = document2.querySelector(selector)) == null - ? void 0 - : _a.setAttribute('dir', dir.value) - else - (_b = document2.querySelector(selector)) == null - ? void 0 - : _b.removeAttribute('dir') - } - }) -} -function getRangesFromSelection(selection) { - var _a - const rangeCount = (_a = selection.rangeCount) != null ? _a : 0 - return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i)) -} -function useTextSelection(options = {}) { - const { window: window2 = defaultWindow } = options - const selection = ref(null) - const text = computed(() => { - var _a, _b - return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != - null - ? _b - : '' - }) - const ranges = computed(() => - selection.value ? getRangesFromSelection(selection.value) : [] - ) - const rects = computed(() => - ranges.value.map(range => range.getBoundingClientRect()) - ) - function onSelectionChange() { - selection.value = null - if (window2) selection.value = window2.getSelection() - } - if (window2) - useEventListener(window2.document, 'selectionchange', onSelectionChange) - return { - text, - rects, - ranges, - selection - } -} -function useTextareaAutosize(options) { - var _a - const textarea = ref(options == null ? void 0 : options.element) - const input = ref(options == null ? void 0 : options.input) - const styleProp = - (_a = options == null ? void 0 : options.styleProp) != null ? _a : 'height' - const textareaScrollHeight = ref(1) - const textareaOldWidth = ref(0) - function triggerResize() { - var _a2 - if (!textarea.value) return - let height = '' - textarea.value.style[styleProp] = '1px' - textareaScrollHeight.value = - (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight - const _styleTarget = toValue(options == null ? void 0 : options.styleTarget) - if (_styleTarget) - _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px` - else height = `${textareaScrollHeight.value}px` - textarea.value.style[styleProp] = height - } - watch([input, textarea], () => nextTick(triggerResize), { immediate: true }) - watch(textareaScrollHeight, () => { - var _a2 - return (_a2 = options == null ? void 0 : options.onResize) == null - ? void 0 - : _a2.call(options) - }) - useResizeObserver(textarea, ([{ contentRect }]) => { - if (textareaOldWidth.value === contentRect.width) return - textareaOldWidth.value = contentRect.width - triggerResize() - }) - if (options == null ? void 0 : options.watch) - watch(options.watch, triggerResize, { immediate: true, deep: true }) - return { - textarea, - input, - triggerResize - } -} -function useThrottledRefHistory(source, options = {}) { - const { throttle = 200, trailing = true } = options - const filter = throttleFilter(throttle, trailing) - const history = useRefHistory(source, { ...options, eventFilter: filter }) - return { - ...history - } -} -var DEFAULT_UNITS = [ - { max: 6e4, value: 1e3, name: 'second' }, - { max: 276e4, value: 6e4, name: 'minute' }, - { max: 72e6, value: 36e5, name: 'hour' }, - { max: 5184e5, value: 864e5, name: 'day' }, - { max: 24192e5, value: 6048e5, name: 'week' }, - { max: 28512e6, value: 2592e6, name: 'month' }, - { max: Number.POSITIVE_INFINITY, value: 31536e6, name: 'year' } -] -var DEFAULT_MESSAGES = { - justNow: 'just now', - past: n => (n.match(/\d/) ? `${n} ago` : n), - future: n => (n.match(/\d/) ? `in ${n}` : n), - month: (n, past) => - n === 1 - ? past - ? 'last month' - : 'next month' - : `${n} month${n > 1 ? 's' : ''}`, - year: (n, past) => - n === 1 - ? past - ? 'last year' - : 'next year' - : `${n} year${n > 1 ? 's' : ''}`, - day: (n, past) => - n === 1 ? (past ? 'yesterday' : 'tomorrow') : `${n} day${n > 1 ? 's' : ''}`, - week: (n, past) => - n === 1 - ? past - ? 'last week' - : 'next week' - : `${n} week${n > 1 ? 's' : ''}`, - hour: n => `${n} hour${n > 1 ? 's' : ''}`, - minute: n => `${n} minute${n > 1 ? 's' : ''}`, - second: n => `${n} second${n > 1 ? 's' : ''}`, - invalid: '' -} -function DEFAULT_FORMATTER(date) { - return date.toISOString().slice(0, 10) -} -function useTimeAgo(time, options = {}) { - const { controls: exposeControls = false, updateInterval = 3e4 } = options - const { now: now2, ...controls } = useNow({ - interval: updateInterval, - controls: true - }) - const timeAgo = computed(() => - formatTimeAgo(new Date(toValue(time)), options, toValue(now2)) - ) - if (exposeControls) { - return { - timeAgo, - ...controls - } - } else { - return timeAgo - } -} -function formatTimeAgo(from, options = {}, now2 = Date.now()) { - var _a - const { - max, - messages = DEFAULT_MESSAGES, - fullDateFormatter = DEFAULT_FORMATTER, - units = DEFAULT_UNITS, - showSecond = false, - rounding = 'round' - } = options - const roundFn = - typeof rounding === 'number' ? n => +n.toFixed(rounding) : Math[rounding] - const diff = +now2 - +from - const absDiff = Math.abs(diff) - function getValue2(diff2, unit) { - return roundFn(Math.abs(diff2) / unit.value) - } - function format(diff2, unit) { - const val = getValue2(diff2, unit) - const past = diff2 > 0 - const str = applyFormat(unit.name, val, past) - return applyFormat(past ? 'past' : 'future', str, past) - } - function applyFormat(name, val, isPast) { - const formatter = messages[name] - if (typeof formatter === 'function') return formatter(val, isPast) - return formatter.replace('{0}', val.toString()) - } - if (absDiff < 6e4 && !showSecond) return messages.justNow - if (typeof max === 'number' && absDiff > max) - return fullDateFormatter(new Date(from)) - if (typeof max === 'string') { - const unitMax = - (_a = units.find(i => i.name === max)) == null ? void 0 : _a.max - if (unitMax && absDiff > unitMax) return fullDateFormatter(new Date(from)) - } - for (const [idx, unit] of units.entries()) { - const val = getValue2(diff, unit) - if (val <= 0 && units[idx - 1]) return format(diff, units[idx - 1]) - if (absDiff < unit.max) return format(diff, unit) - } - return messages.invalid -} -function useTimeoutPoll(fn, interval, timeoutPollOptions) { - const { start } = useTimeoutFn(loop, interval, { immediate: false }) - const isActive = ref(false) - async function loop() { - if (!isActive.value) return - await fn() - start() - } - function resume() { - if (!isActive.value) { - isActive.value = true - loop() - } - } - function pause() { - isActive.value = false - } - if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate) - resume() - tryOnScopeDispose(pause) - return { - isActive, - pause, - resume - } -} -function useTimestamp(options = {}) { - const { - controls: exposeControls = false, - offset = 0, - immediate = true, - interval = 'requestAnimationFrame', - callback - } = options - const ts = ref(timestamp() + offset) - const update = () => (ts.value = timestamp() + offset) - const cb = callback - ? () => { - update() - callback(ts.value) - } - : update - const controls = - interval === 'requestAnimationFrame' - ? useRafFn(cb, { immediate }) - : useIntervalFn(cb, interval, { immediate }) - if (exposeControls) { - return { - timestamp: ts, - ...controls - } - } else { - return ts - } -} -function useTitle(newTitle = null, options = {}) { - var _a, _b, _c - const { document: document2 = defaultDocument, restoreOnUnmount = t => t } = - options - const originalTitle = - (_a = document2 == null ? void 0 : document2.title) != null ? _a : '' - const title = toRef2( - (_b = - newTitle != null - ? newTitle - : document2 == null - ? void 0 - : document2.title) != null - ? _b - : null - ) - const isReadonly2 = newTitle && typeof newTitle === 'function' - function format(t) { - if (!('titleTemplate' in options)) return t - const template = options.titleTemplate || '%s' - return typeof template === 'function' - ? template(t) - : toValue(template).replace(/%s/g, t) - } - watch( - title, - (t, o) => { - if (t !== o && document2) - document2.title = format(typeof t === 'string' ? t : '') - }, - { immediate: true } - ) - if (options.observe && !options.titleTemplate && document2 && !isReadonly2) { - useMutationObserver( - (_c = document2.head) == null ? void 0 : _c.querySelector('title'), - () => { - if (document2 && document2.title !== title.value) - title.value = format(document2.title) - }, - { childList: true } - ) - } - tryOnBeforeUnmount(() => { - if (restoreOnUnmount) { - const restoredTitle = restoreOnUnmount(originalTitle, title.value || '') - if (restoredTitle != null && document2) document2.title = restoredTitle - } - }) - return title -} -var _TransitionPresets = { - easeInSine: [0.12, 0, 0.39, 0], - easeOutSine: [0.61, 1, 0.88, 1], - easeInOutSine: [0.37, 0, 0.63, 1], - easeInQuad: [0.11, 0, 0.5, 0], - easeOutQuad: [0.5, 1, 0.89, 1], - easeInOutQuad: [0.45, 0, 0.55, 1], - easeInCubic: [0.32, 0, 0.67, 0], - easeOutCubic: [0.33, 1, 0.68, 1], - easeInOutCubic: [0.65, 0, 0.35, 1], - easeInQuart: [0.5, 0, 0.75, 0], - easeOutQuart: [0.25, 1, 0.5, 1], - easeInOutQuart: [0.76, 0, 0.24, 1], - easeInQuint: [0.64, 0, 0.78, 0], - easeOutQuint: [0.22, 1, 0.36, 1], - easeInOutQuint: [0.83, 0, 0.17, 1], - easeInExpo: [0.7, 0, 0.84, 0], - easeOutExpo: [0.16, 1, 0.3, 1], - easeInOutExpo: [0.87, 0, 0.13, 1], - easeInCirc: [0.55, 0, 1, 0.45], - easeOutCirc: [0, 0.55, 0.45, 1], - easeInOutCirc: [0.85, 0, 0.15, 1], - easeInBack: [0.36, 0, 0.66, -0.56], - easeOutBack: [0.34, 1.56, 0.64, 1], - easeInOutBack: [0.68, -0.6, 0.32, 1.6] -} -var TransitionPresets = Object.assign( - {}, - { linear: identity }, - _TransitionPresets -) -function createEasingFunction([p0, p1, p2, p3]) { - const a = (a1, a2) => 1 - 3 * a2 + 3 * a1 - const b = (a1, a2) => 3 * a2 - 6 * a1 - const c = a1 => 3 * a1 - const calcBezier = (t, a1, a2) => - ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t - const getSlope = (t, a1, a2) => - 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1) - const getTforX = x => { - let aGuessT = x - for (let i = 0; i < 4; ++i) { - const currentSlope = getSlope(aGuessT, p0, p2) - if (currentSlope === 0) return aGuessT - const currentX = calcBezier(aGuessT, p0, p2) - x - aGuessT -= currentX / currentSlope - } - return aGuessT - } - return x => (p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3)) -} -function lerp(a, b, alpha) { - return a + alpha * (b - a) -} -function toVec(t) { - return (typeof t === 'number' ? [t] : t) || [] -} -function executeTransition(source, from, to, options = {}) { - var _a, _b - const fromVal = toValue(from) - const toVal = toValue(to) - const v1 = toVec(fromVal) - const v2 = toVec(toVal) - const duration = (_a = toValue(options.duration)) != null ? _a : 1e3 - const startedAt = Date.now() - const endAt = Date.now() + duration - const trans = - typeof options.transition === 'function' - ? options.transition - : (_b = toValue(options.transition)) != null - ? _b - : identity - const ease = typeof trans === 'function' ? trans : createEasingFunction(trans) - return new Promise(resolve => { - source.value = fromVal - const tick = () => { - var _a2 - if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) { - resolve() - return - } - const now2 = Date.now() - const alpha = ease((now2 - startedAt) / duration) - const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha)) - if (Array.isArray(source.value)) - source.value = arr.map((n, i) => { - var _a3, _b2 - return lerp( - (_a3 = v1[i]) != null ? _a3 : 0, - (_b2 = v2[i]) != null ? _b2 : 0, - alpha - ) - }) - else if (typeof source.value === 'number') source.value = arr[0] - if (now2 < endAt) { - requestAnimationFrame(tick) - } else { - source.value = toVal - resolve() - } - } - tick() - }) -} -function useTransition(source, options = {}) { - let currentId = 0 - const sourceVal = () => { - const v = toValue(source) - return typeof v === 'number' ? v : v.map(toValue) - } - const outputRef = ref(sourceVal()) - watch( - sourceVal, - async to => { - var _a, _b - if (toValue(options.disabled)) return - const id = ++currentId - if (options.delay) await promiseTimeout(toValue(options.delay)) - if (id !== currentId) return - const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to) - ;(_a = options.onStarted) == null ? void 0 : _a.call(options) - await executeTransition(outputRef, outputRef.value, toVal, { - ...options, - abort: () => { - var _a2 - return ( - id !== currentId || - ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) - ) - } - }) - ;(_b = options.onFinished) == null ? void 0 : _b.call(options) - }, - { deep: true } - ) - watch( - () => toValue(options.disabled), - disabled => { - if (disabled) { - currentId++ - outputRef.value = sourceVal() - } - } - ) - tryOnScopeDispose(() => { - currentId++ - }) - return computed(() => - toValue(options.disabled) ? sourceVal() : outputRef.value - ) -} -function useUrlSearchParams(mode = 'history', options = {}) { - const { - initialValue = {}, - removeNullishValues = true, - removeFalsyValues = false, - write: enableWrite = true, - window: window2 = defaultWindow - } = options - if (!window2) return reactive(initialValue) - const state = reactive({}) - function getRawParams() { - if (mode === 'history') { - return window2.location.search || '' - } else if (mode === 'hash') { - const hash = window2.location.hash || '' - const index = hash.indexOf('?') - return index > 0 ? hash.slice(index) : '' - } else { - return (window2.location.hash || '').replace(/^#/, '') - } - } - function constructQuery(params) { - const stringified = params.toString() - if (mode === 'history') - return `${stringified ? `?${stringified}` : ''}${ - window2.location.hash || '' - }` - if (mode === 'hash-params') - return `${window2.location.search || ''}${ - stringified ? `#${stringified}` : '' - }` - const hash = window2.location.hash || '#' - const index = hash.indexOf('?') - if (index > 0) - return `${hash.slice(0, index)}${stringified ? `?${stringified}` : ''}` - return `${hash}${stringified ? `?${stringified}` : ''}` - } - function read() { - return new URLSearchParams(getRawParams()) - } - function updateState(params) { - const unusedKeys = new Set(Object.keys(state)) - for (const key of params.keys()) { - const paramsForKey = params.getAll(key) - state[key] = - paramsForKey.length > 1 ? paramsForKey : params.get(key) || '' - unusedKeys.delete(key) - } - Array.from(unusedKeys).forEach(key => delete state[key]) - } - const { pause, resume } = watchPausable( - state, - () => { - const params = new URLSearchParams('') - Object.keys(state).forEach(key => { - const mapEntry = state[key] - if (Array.isArray(mapEntry)) - mapEntry.forEach(value => params.append(key, value)) - else if (removeNullishValues && mapEntry == null) params.delete(key) - else if (removeFalsyValues && !mapEntry) params.delete(key) - else params.set(key, mapEntry) - }) - write(params) - }, - { deep: true } - ) - function write(params, shouldUpdate) { - pause() - if (shouldUpdate) updateState(params) - window2.history.replaceState( - window2.history.state, - window2.document.title, - window2.location.pathname + constructQuery(params) - ) - resume() - } - function onChanged() { - if (!enableWrite) return - write(read(), true) - } - useEventListener(window2, 'popstate', onChanged, false) - if (mode !== 'history') - useEventListener(window2, 'hashchange', onChanged, false) - const initial = read() - if (initial.keys().next().value) updateState(initial) - else Object.assign(state, initialValue) - return state -} -function useUserMedia(options = {}) { - var _a, _b - const enabled = ref((_a = options.enabled) != null ? _a : false) - const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true) - const constraints = ref(options.constraints) - const { navigator = defaultNavigator } = options - const isSupported = useSupported(() => { - var _a2 - return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null - ? void 0 - : _a2.getUserMedia - }) - const stream = shallowRef() - function getDeviceOptions(type) { - switch (type) { - case 'video': { - if (constraints.value) return constraints.value.video || false - break - } - case 'audio': { - if (constraints.value) return constraints.value.audio || false - break - } - } - } - async function _start() { - if (!isSupported.value || stream.value) return - stream.value = await navigator.mediaDevices.getUserMedia({ - video: getDeviceOptions('video'), - audio: getDeviceOptions('audio') - }) - return stream.value - } - function _stop() { - var _a2 - ;(_a2 = stream.value) == null - ? void 0 - : _a2.getTracks().forEach(t => t.stop()) - stream.value = void 0 - } - function stop() { - _stop() - enabled.value = false - } - async function start() { - await _start() - if (stream.value) enabled.value = true - return stream.value - } - async function restart() { - _stop() - return await start() - } - watch( - enabled, - v => { - if (v) _start() - else _stop() - }, - { immediate: true } - ) - watch( - constraints, - () => { - if (autoSwitch.value && stream.value) restart() - }, - { immediate: true } - ) - tryOnScopeDispose(() => { - stop() - }) - return { - isSupported, - stream, - start, - stop, - restart, - constraints, - enabled, - autoSwitch - } -} -function useVModel(props, key, emit, options = {}) { - var _a, _b, _c, _d, _e - const { - clone = false, - passive = false, - eventName, - deep = false, - defaultValue, - shouldEmit - } = options - const vm = getCurrentInstance() - const _emit = - emit || - (vm == null ? void 0 : vm.emit) || - ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || - ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == - null - ? void 0 - : _c.bind(vm == null ? void 0 : vm.proxy)) - let event = eventName - if (!key) { - if (isVue2) { - const modelOptions = - (_e = - (_d = vm == null ? void 0 : vm.proxy) == null - ? void 0 - : _d.$options) == null - ? void 0 - : _e.model - key = (modelOptions == null ? void 0 : modelOptions.value) || 'value' - if (!eventName) - event = (modelOptions == null ? void 0 : modelOptions.event) || 'input' - } else { - key = 'modelValue' - } - } - event = event || `update:${key.toString()}` - const cloneFn = val => - !clone ? val : typeof clone === 'function' ? clone(val) : cloneFnJSON(val) - const getValue2 = () => - isDef(props[key]) ? cloneFn(props[key]) : defaultValue - const triggerEmit = value => { - if (shouldEmit) { - if (shouldEmit(value)) _emit(event, value) - } else { - _emit(event, value) - } - } - if (passive) { - const initialValue = getValue2() - const proxy = ref(initialValue) - let isUpdating = false - watch( - () => props[key], - v => { - if (!isUpdating) { - isUpdating = true - proxy.value = cloneFn(v) - nextTick(() => (isUpdating = false)) - } - } - ) - watch( - proxy, - v => { - if (!isUpdating && (v !== props[key] || deep)) triggerEmit(v) - }, - { deep } - ) - return proxy - } else { - return computed({ - get() { - return getValue2() - }, - set(value) { - triggerEmit(value) - } - }) - } -} -function useVModels(props, emit, options = {}) { - const ret = {} - for (const key in props) { - ret[key] = useVModel(props, key, emit, options) - } - return ret -} -function useVibrate(options) { - const { - pattern = [], - interval = 0, - navigator = defaultNavigator - } = options || {} - const isSupported = useSupported( - () => typeof navigator !== 'undefined' && 'vibrate' in navigator - ) - const patternRef = toRef2(pattern) - let intervalControls - const vibrate = (pattern2 = patternRef.value) => { - if (isSupported.value) navigator.vibrate(pattern2) - } - const stop = () => { - if (isSupported.value) navigator.vibrate(0) - intervalControls == null ? void 0 : intervalControls.pause() - } - if (interval > 0) { - intervalControls = useIntervalFn(vibrate, interval, { - immediate: false, - immediateCallback: false - }) - } - return { - isSupported, - pattern, - intervalControls, - vibrate, - stop - } -} -function useVirtualList(list, options) { - const { - containerStyle, - wrapperProps, - scrollTo: scrollTo2, - calculateRange, - currentList, - containerRef - } = 'itemHeight' in options - ? useVerticalVirtualList(options, list) - : useHorizontalVirtualList(options, list) - return { - list: currentList, - scrollTo: scrollTo2, - containerProps: { - ref: containerRef, - onScroll: () => { - calculateRange() - }, - style: containerStyle - }, - wrapperProps - } -} -function useVirtualListResources(list) { - const containerRef = ref(null) - const size = useElementSize(containerRef) - const currentList = ref([]) - const source = shallowRef(list) - const state = ref({ start: 0, end: 10 }) - return { state, source, currentList, size, containerRef } -} -function createGetViewCapacity(state, source, itemSize) { - return containerSize => { - if (typeof itemSize === 'number') return Math.ceil(containerSize / itemSize) - const { start = 0 } = state.value - let sum = 0 - let capacity = 0 - for (let i = start; i < source.value.length; i++) { - const size = itemSize(i) - sum += size - capacity = i - if (sum > containerSize) break - } - return capacity - start - } -} -function createGetOffset(source, itemSize) { - return scrollDirection => { - if (typeof itemSize === 'number') - return Math.floor(scrollDirection / itemSize) + 1 - let sum = 0 - let offset = 0 - for (let i = 0; i < source.value.length; i++) { - const size = itemSize(i) - sum += size - if (sum >= scrollDirection) { - offset = i - break - } - } - return offset + 1 - } -} -function createCalculateRange( - type, - overscan, - getOffset, - getViewCapacity, - { containerRef, state, currentList, source } -) { - return () => { - const element = containerRef.value - if (element) { - const offset = getOffset( - type === 'vertical' ? element.scrollTop : element.scrollLeft - ) - const viewCapacity = getViewCapacity( - type === 'vertical' ? element.clientHeight : element.clientWidth - ) - const from = offset - overscan - const to = offset + viewCapacity + overscan - state.value = { - start: from < 0 ? 0 : from, - end: to > source.value.length ? source.value.length : to - } - currentList.value = source.value - .slice(state.value.start, state.value.end) - .map((ele, index) => ({ - data: ele, - index: index + state.value.start - })) - } - } -} -function createGetDistance(itemSize, source) { - return index => { - if (typeof itemSize === 'number') { - const size2 = index * itemSize - return size2 - } - const size = source.value - .slice(0, index) - .reduce((sum, _, i) => sum + itemSize(i), 0) - return size - } -} -function useWatchForSizes(size, list, containerRef, calculateRange) { - watch([size.width, size.height, list, containerRef], () => { - calculateRange() - }) -} -function createComputedTotalSize(itemSize, source) { - return computed(() => { - if (typeof itemSize === 'number') return source.value.length * itemSize - return source.value.reduce((sum, _, index) => sum + itemSize(index), 0) - }) -} -var scrollToDictionaryForElementScrollKey = { - horizontal: 'scrollLeft', - vertical: 'scrollTop' -} -function createScrollTo(type, calculateRange, getDistance, containerRef) { - return index => { - if (containerRef.value) { - containerRef.value[scrollToDictionaryForElementScrollKey[type]] = - getDistance(index) - calculateRange() - } - } -} -function useHorizontalVirtualList(options, list) { - const resources = useVirtualListResources(list) - const { state, source, currentList, size, containerRef } = resources - const containerStyle = { overflowX: 'auto' } - const { itemWidth, overscan = 5 } = options - const getViewCapacity = createGetViewCapacity(state, source, itemWidth) - const getOffset = createGetOffset(source, itemWidth) - const calculateRange = createCalculateRange( - 'horizontal', - overscan, - getOffset, - getViewCapacity, - resources - ) - const getDistanceLeft = createGetDistance(itemWidth, source) - const offsetLeft = computed(() => getDistanceLeft(state.value.start)) - const totalWidth = createComputedTotalSize(itemWidth, source) - useWatchForSizes(size, list, containerRef, calculateRange) - const scrollTo2 = createScrollTo( - 'horizontal', - calculateRange, - getDistanceLeft, - containerRef - ) - const wrapperProps = computed(() => { - return { - style: { - height: '100%', - width: `${totalWidth.value - offsetLeft.value}px`, - marginLeft: `${offsetLeft.value}px`, - display: 'flex' - } - } - }) - return { - scrollTo: scrollTo2, - calculateRange, - wrapperProps, - containerStyle, - currentList, - containerRef - } -} -function useVerticalVirtualList(options, list) { - const resources = useVirtualListResources(list) - const { state, source, currentList, size, containerRef } = resources - const containerStyle = { overflowY: 'auto' } - const { itemHeight, overscan = 5 } = options - const getViewCapacity = createGetViewCapacity(state, source, itemHeight) - const getOffset = createGetOffset(source, itemHeight) - const calculateRange = createCalculateRange( - 'vertical', - overscan, - getOffset, - getViewCapacity, - resources - ) - const getDistanceTop = createGetDistance(itemHeight, source) - const offsetTop = computed(() => getDistanceTop(state.value.start)) - const totalHeight = createComputedTotalSize(itemHeight, source) - useWatchForSizes(size, list, containerRef, calculateRange) - const scrollTo2 = createScrollTo( - 'vertical', - calculateRange, - getDistanceTop, - containerRef - ) - const wrapperProps = computed(() => { - return { - style: { - width: '100%', - height: `${totalHeight.value - offsetTop.value}px`, - marginTop: `${offsetTop.value}px` - } - } - }) - return { - calculateRange, - scrollTo: scrollTo2, - containerStyle, - wrapperProps, - currentList, - containerRef - } -} -function useWakeLock(options = {}) { - const { - navigator = defaultNavigator, - document: document2 = defaultDocument - } = options - const requestedType = ref(false) - const sentinel = shallowRef(null) - const documentVisibility = useDocumentVisibility({ document: document2 }) - const isSupported = useSupported(() => navigator && 'wakeLock' in navigator) - const isActive = computed( - () => !!sentinel.value && documentVisibility.value === 'visible' - ) - if (isSupported.value) { - useEventListener(sentinel, 'release', () => { - var _a, _b - requestedType.value = - (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null - ? _b - : false - }) - whenever( - () => - documentVisibility.value === 'visible' && - (document2 == null ? void 0 : document2.visibilityState) === - 'visible' && - requestedType.value, - type => { - requestedType.value = false - forceRequest(type) - } - ) - } - async function forceRequest(type) { - var _a - await ((_a = sentinel.value) == null ? void 0 : _a.release()) - sentinel.value = isSupported.value - ? await navigator.wakeLock.request(type) - : null - } - async function request(type) { - if (documentVisibility.value === 'visible') await forceRequest(type) - else requestedType.value = type - } - async function release() { - requestedType.value = false - const s = sentinel.value - sentinel.value = null - await (s == null ? void 0 : s.release()) - } - return { - sentinel, - isSupported, - isActive, - request, - forceRequest, - release - } -} -function useWebNotification(options = {}) { - const { - window: window2 = defaultWindow, - requestPermissions: _requestForPermissions = true - } = options - const defaultWebNotificationOptions = options - const isSupported = useSupported(() => { - if (!window2 || !('Notification' in window2)) return false - try { - new Notification('') - } catch (e) { - return false - } - return true - }) - const permissionGranted = ref( - isSupported.value && - 'permission' in Notification && - Notification.permission === 'granted' - ) - const notification = ref(null) - const ensurePermissions = async () => { - if (!isSupported.value) return - if (!permissionGranted.value && Notification.permission !== 'denied') { - const result = await Notification.requestPermission() - if (result === 'granted') permissionGranted.value = true - } - return permissionGranted.value - } - const { on: onClick, trigger: clickTrigger } = createEventHook() - const { on: onShow, trigger: showTrigger } = createEventHook() - const { on: onError, trigger: errorTrigger } = createEventHook() - const { on: onClose, trigger: closeTrigger } = createEventHook() - const show = async overrides => { - if (!isSupported.value || !permissionGranted.value) return - const options2 = Object.assign({}, defaultWebNotificationOptions, overrides) - notification.value = new Notification(options2.title || '', options2) - notification.value.onclick = clickTrigger - notification.value.onshow = showTrigger - notification.value.onerror = errorTrigger - notification.value.onclose = closeTrigger - return notification.value - } - const close = () => { - if (notification.value) notification.value.close() - notification.value = null - } - if (_requestForPermissions) tryOnMounted(ensurePermissions) - tryOnScopeDispose(close) - if (isSupported.value && window2) { - const document2 = window2.document - useEventListener(document2, 'visibilitychange', e => { - e.preventDefault() - if (document2.visibilityState === 'visible') { - close() - } - }) - } - return { - isSupported, - notification, - ensurePermissions, - permissionGranted, - show, - close, - onClick, - onShow, - onError, - onClose - } -} -var DEFAULT_PING_MESSAGE = 'ping' -function resolveNestedOptions(options) { - if (options === true) return {} - return options -} -function useWebSocket(url, options = {}) { - const { - onConnected, - onDisconnected, - onError, - onMessage, - immediate = true, - autoClose = true, - protocols = [] - } = options - const data = ref(null) - const status = ref('CLOSED') - const wsRef = ref() - const urlRef = toRef2(url) - let heartbeatPause - let heartbeatResume - let explicitlyClosed = false - let retried = 0 - let bufferedData = [] - let pongTimeoutWait - const _sendBuffer = () => { - if (bufferedData.length && wsRef.value && status.value === 'OPEN') { - for (const buffer of bufferedData) wsRef.value.send(buffer) - bufferedData = [] - } - } - const resetHeartbeat = () => { - clearTimeout(pongTimeoutWait) - pongTimeoutWait = void 0 - } - const close = (code = 1e3, reason) => { - if (!isClient || !wsRef.value) return - explicitlyClosed = true - resetHeartbeat() - heartbeatPause == null ? void 0 : heartbeatPause() - wsRef.value.close(code, reason) - wsRef.value = void 0 - } - const send = (data2, useBuffer = true) => { - if (!wsRef.value || status.value !== 'OPEN') { - if (useBuffer) bufferedData.push(data2) - return false - } - _sendBuffer() - wsRef.value.send(data2) - return true - } - const _init = () => { - if (explicitlyClosed || typeof urlRef.value === 'undefined') return - const ws = new WebSocket(urlRef.value, protocols) - wsRef.value = ws - status.value = 'CONNECTING' - ws.onopen = () => { - status.value = 'OPEN' - retried = 0 - onConnected == null ? void 0 : onConnected(ws) - heartbeatResume == null ? void 0 : heartbeatResume() - _sendBuffer() - } - ws.onclose = ev => { - status.value = 'CLOSED' - onDisconnected == null ? void 0 : onDisconnected(ws, ev) - if ( - !explicitlyClosed && - options.autoReconnect && - (wsRef.value == null || ws === wsRef.value) - ) { - const { - retries = -1, - delay = 1e3, - onFailed - } = resolveNestedOptions(options.autoReconnect) - if (typeof retries === 'number' && (retries < 0 || retried < retries)) { - retried += 1 - setTimeout(_init, delay) - } else if (typeof retries === 'function' && retries()) { - setTimeout(_init, delay) - } else { - onFailed == null ? void 0 : onFailed() - } - } - } - ws.onerror = e => { - onError == null ? void 0 : onError(ws, e) - } - ws.onmessage = e => { - if (options.heartbeat) { - resetHeartbeat() - const { message = DEFAULT_PING_MESSAGE, responseMessage = message } = - resolveNestedOptions(options.heartbeat) - if (e.data === responseMessage) return - } - data.value = e.data - onMessage == null ? void 0 : onMessage(ws, e) - } - } - if (options.heartbeat) { - const { - message = DEFAULT_PING_MESSAGE, - interval = 1e3, - pongTimeout = 1e3 - } = resolveNestedOptions(options.heartbeat) - const { pause, resume } = useIntervalFn( - () => { - send(message, false) - if (pongTimeoutWait != null) return - pongTimeoutWait = setTimeout(() => { - close() - explicitlyClosed = false - }, pongTimeout) - }, - interval, - { immediate: false } - ) - heartbeatPause = pause - heartbeatResume = resume - } - if (autoClose) { - if (isClient) useEventListener('beforeunload', () => close()) - tryOnScopeDispose(close) - } - const open = () => { - if (!isClient && !isWorker) return - close() - explicitlyClosed = false - retried = 0 - _init() - } - if (immediate) open() - watch(urlRef, open) - return { - data, - status, - close, - send, - open, - ws: wsRef - } -} -function useWebWorker(arg0, workerOptions, options) { - const { window: window2 = defaultWindow } = options != null ? options : {} - const data = ref(null) - const worker = shallowRef() - const post = (...args) => { - if (!worker.value) return - worker.value.postMessage(...args) - } - const terminate = function terminate2() { - if (!worker.value) return - worker.value.terminate() - } - if (window2) { - if (typeof arg0 === 'string') worker.value = new Worker(arg0, workerOptions) - else if (typeof arg0 === 'function') worker.value = arg0() - else worker.value = arg0 - worker.value.onmessage = e => { - data.value = e.data - } - tryOnScopeDispose(() => { - if (worker.value) worker.value.terminate() - }) - } - return { - data, - post, - terminate, - worker - } -} -function depsParser(deps, localDeps) { - if (deps.length === 0 && localDeps.length === 0) return '' - const depsString = deps.map(dep => `'${dep}'`).toString() - const depsFunctionString = localDeps - .filter(dep => typeof dep === 'function') - .map(fn => { - const str = fn.toString() - if (str.trim().startsWith('function')) { - return str - } else { - const name = fn.name - return `const ${name} = ${str}` - } - }) - .join(';') - const importString = `importScripts(${depsString});` - return `${depsString.trim() === '' ? '' : importString} ${depsFunctionString}` -} -function jobRunner(userFunc) { - return e => { - const userFuncArgs = e.data[0] - return Promise.resolve(userFunc.apply(void 0, userFuncArgs)) - .then(result => { - postMessage(['SUCCESS', result]) - }) - .catch(error => { - postMessage(['ERROR', error]) - }) - } -} -function createWorkerBlobUrl(fn, deps, localDeps) { - const blobCode = `${depsParser( - deps, - localDeps - )}; onmessage=(${jobRunner})(${fn})` - const blob = new Blob([blobCode], { type: 'text/javascript' }) - const url = URL.createObjectURL(blob) - return url -} -function useWebWorkerFn(fn, options = {}) { - const { - dependencies = [], - localDependencies = [], - timeout, - window: window2 = defaultWindow - } = options - const worker = ref() - const workerStatus = ref('PENDING') - const promise = ref({}) - const timeoutId = ref() - const workerTerminate = (status = 'PENDING') => { - if (worker.value && worker.value._url && window2) { - worker.value.terminate() - URL.revokeObjectURL(worker.value._url) - promise.value = {} - worker.value = void 0 - window2.clearTimeout(timeoutId.value) - workerStatus.value = status - } - } - workerTerminate() - tryOnScopeDispose(workerTerminate) - const generateWorker = () => { - const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies) - const newWorker = new Worker(blobUrl) - newWorker._url = blobUrl - newWorker.onmessage = e => { - const { resolve = () => {}, reject = () => {} } = promise.value - const [status, result] = e.data - switch (status) { - case 'SUCCESS': - resolve(result) - workerTerminate(status) - break - default: - reject(result) - workerTerminate('ERROR') - break - } - } - newWorker.onerror = e => { - const { reject = () => {} } = promise.value - e.preventDefault() - reject(e) - workerTerminate('ERROR') - } - if (timeout) { - timeoutId.value = setTimeout( - () => workerTerminate('TIMEOUT_EXPIRED'), - timeout - ) - } - return newWorker - } - const callWorker = (...fnArgs) => - new Promise((resolve, reject) => { - var _a - promise.value = { - resolve, - reject - } - ;(_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]) - workerStatus.value = 'RUNNING' - }) - const workerFn = (...fnArgs) => { - if (workerStatus.value === 'RUNNING') { - console.error( - '[useWebWorkerFn] You can only run one instance of the worker at a time.' - ) - return Promise.reject() - } - worker.value = generateWorker() - return callWorker(...fnArgs) - } - return { - workerFn, - workerStatus, - workerTerminate - } -} -function useWindowFocus(options = {}) { - const { window: window2 = defaultWindow } = options - if (!window2) return ref(false) - const focused = ref(window2.document.hasFocus()) - useEventListener(window2, 'blur', () => { - focused.value = false - }) - useEventListener(window2, 'focus', () => { - focused.value = true - }) - return focused -} -function useWindowScroll(options = {}) { - const { window: window2 = defaultWindow, behavior = 'auto' } = options - if (!window2) { - return { - x: ref(0), - y: ref(0) - } - } - const internalX = ref(window2.scrollX) - const internalY = ref(window2.scrollY) - const x = computed({ - get() { - return internalX.value - }, - set(x2) { - scrollTo({ left: x2, behavior }) - } - }) - const y = computed({ - get() { - return internalY.value - }, - set(y2) { - scrollTo({ top: y2, behavior }) - } - }) - useEventListener( - window2, - 'scroll', - () => { - internalX.value = window2.scrollX - internalY.value = window2.scrollY - }, - { - capture: false, - passive: true - } - ) - return { x, y } -} -function useWindowSize(options = {}) { - const { - window: window2 = defaultWindow, - initialWidth = Number.POSITIVE_INFINITY, - initialHeight = Number.POSITIVE_INFINITY, - listenOrientation = true, - includeScrollbar = true, - type = 'inner' - } = options - const width = ref(initialWidth) - const height = ref(initialHeight) - const update = () => { - if (window2) { - if (type === 'outer') { - width.value = window2.outerWidth - height.value = window2.outerHeight - } else if (includeScrollbar) { - width.value = window2.innerWidth - height.value = window2.innerHeight - } else { - width.value = window2.document.documentElement.clientWidth - height.value = window2.document.documentElement.clientHeight - } - } - } - update() - tryOnMounted(update) - useEventListener('resize', update, { passive: true }) - if (listenOrientation) { - const matches = useMediaQuery('(orientation: portrait)') - watch(matches, () => update()) - } - return { width, height } -} - -export { - computedEager, - computedWithControl, - tryOnScopeDispose, - createEventHook, - createGlobalState, - injectLocal, - provideLocal, - createInjectionState, - createSharedComposable, - extendRef, - get, - isDefined, - makeDestructurable, - toValue, - resolveUnref, - reactify, - reactifyObject, - toReactive, - reactiveComputed, - reactiveOmit, - directiveHooks, - isClient, - isWorker, - isDef, - notNullish, - assert, - isObject, - now, - timestamp, - clamp, - noop, - rand, - hasOwn, - isIOS, - createFilterWrapper, - bypassFilter, - debounceFilter, - throttleFilter, - pausableFilter, - hyphenate, - camelize, - promiseTimeout, - identity, - createSingletonPromise, - invoke, - containsProp, - increaseWithUnit, - objectPick, - objectOmit, - objectEntries, - getLifeCycleTarget, - toRef2 as toRef, - resolveRef, - reactivePick, - refAutoReset, - useDebounceFn, - refDebounced, - refDefault, - useThrottleFn, - refThrottled, - refWithControl, - controlledRef, - set2 as set, - watchWithFilter, - watchPausable, - syncRef, - syncRefs, - toRefs2 as toRefs, - tryOnBeforeMount, - tryOnBeforeUnmount, - tryOnMounted, - tryOnUnmounted, - until, - useArrayDifference, - useArrayEvery, - useArrayFilter, - useArrayFind, - useArrayFindIndex, - useArrayFindLast, - useArrayIncludes, - useArrayJoin, - useArrayMap, - useArrayReduce, - useArraySome, - useArrayUnique, - useCounter, - formatDate, - normalizeDate, - useDateFormat, - useIntervalFn, - useInterval, - useLastChanged, - useTimeoutFn, - useTimeout, - useToNumber, - useToString, - useToggle, - watchArray, - watchAtMost, - watchDebounced, - watchDeep, - watchIgnorable, - watchImmediate, - watchOnce, - watchThrottled, - watchTriggerable, - whenever, - computedAsync, - computedInject, - createReusableTemplate, - createTemplatePromise, - createUnrefFn, - defaultWindow, - defaultDocument, - defaultNavigator, - defaultLocation, - unrefElement, - useEventListener, - onClickOutside, - onKeyStroke, - onKeyDown, - onKeyPressed, - onKeyUp, - onLongPress, - onStartTyping, - templateRef, - useMounted, - useSupported, - useMutationObserver, - useActiveElement, - useRafFn, - useAnimate, - useAsyncQueue, - useAsyncState, - useBase64, - useBattery, - useBluetooth, - useMediaQuery, - breakpointsTailwind, - breakpointsBootstrapV5, - breakpointsVuetifyV2, - breakpointsVuetifyV3, - breakpointsVuetify, - breakpointsAntDesign, - breakpointsQuasar, - breakpointsSematic, - breakpointsMasterCss, - breakpointsPrimeFlex, - breakpointsElement, - useBreakpoints, - useBroadcastChannel, - useBrowserLocation, - useCached, - usePermission, - useClipboard, - useClipboardItems, - cloneFnJSON, - useCloned, - getSSRHandler, - setSSRHandler, - usePreferredDark, - StorageSerializers, - customStorageEventName, - useStorage, - useColorMode, - useConfirmDialog, - useCssVar, - useCurrentElement, - useCycleList, - useDark, - useManualRefHistory, - useRefHistory, - useDebouncedRefHistory, - useDeviceMotion, - useDeviceOrientation, - useDevicePixelRatio, - useDevicesList, - useDisplayMedia, - useDocumentVisibility, - useDraggable, - useDropZone, - useResizeObserver, - useElementBounding, - useElementByPoint, - useElementHover, - useElementSize, - useIntersectionObserver, - useElementVisibility, - useEventBus, - useEventSource, - useEyeDropper, - useFavicon, - createFetch, - useFetch, - useFileDialog, - useFileSystemAccess, - useFocus, - useFocusWithin, - useFps, - useFullscreen, - mapGamepadToXbox360Controller, - useGamepad, - useGeolocation, - useIdle, - useImage, - useScroll, - useInfiniteScroll, - useKeyModifier, - useLocalStorage, - DefaultMagicKeysAliasMap, - useMagicKeys, - useMediaControls, - useMemoize, - useMemory, - useMouse, - useMouseInElement, - useMousePressed, - useNavigatorLanguage, - useNetwork, - useNow, - useObjectUrl, - useOffsetPagination, - useOnline, - usePageLeave, - useScreenOrientation, - useParallax, - useParentElement, - usePerformanceObserver, - usePointer, - usePointerLock, - usePointerSwipe, - usePreferredColorScheme, - usePreferredContrast, - usePreferredLanguages, - usePreferredReducedMotion, - usePrevious, - useScreenSafeArea, - useScriptTag, - useScrollLock, - useSessionStorage, - useShare, - useSorted, - useSpeechRecognition, - useSpeechSynthesis, - useStepper, - useStorageAsync, - useStyleTag, - useSwipe, - useTemplateRefsList, - useTextDirection, - useTextSelection, - useTextareaAutosize, - useThrottledRefHistory, - useTimeAgo, - formatTimeAgo, - useTimeoutPoll, - useTimestamp, - useTitle, - TransitionPresets, - executeTransition, - useTransition, - useUrlSearchParams, - useUserMedia, - useVModel, - useVModels, - useVibrate, - useVirtualList, - useWakeLock, - useWebNotification, - useWebSocket, - useWebWorker, - useWebWorkerFn, - useWindowFocus, - useWindowScroll, - useWindowSize -} -/*! Bundled license information: - -vitepress/lib/vue-demi.mjs: - (** - * vue-demi v0.14.7 - * Copyright (c) 2020-present, Anthony Fu - * @license MIT - *) -*/ -//# sourceMappingURL=chunk-PWVUJGW4.js.map diff --git a/website/src/.vitepress/cache/deps/chunk-PWVUJGW4.js.map b/website/src/.vitepress/cache/deps/chunk-PWVUJGW4.js.map deleted file mode 100644 index 1781a7ff..00000000 --- a/website/src/.vitepress/cache/deps/chunk-PWVUJGW4.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../node_modules/.pnpm/vitepress@1.4.3_@algolia+client-search@4.24.0_postcss@8.4.47_search-insights@2.17.2_typescript@5.6.3/node_modules/vitepress/lib/vue-demi.mjs", "../../../../node_modules/.pnpm/@vueuse+shared@11.2.0_vue@3.5.12_typescript@5.6.3_/node_modules/@vueuse/shared/index.mjs", "../../../../node_modules/.pnpm/@vueuse+core@11.2.0_vue@3.5.12_typescript@5.6.3_/node_modules/@vueuse/core/index.mjs"], - "sourcesContent": ["/**\n * vue-demi v0.14.7\n * Copyright (c) 2020-present, Anthony Fu\n * @license MIT\n */\n\nimport * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexport function del(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexport * from 'vue'\nexport { Vue, Vue2, isVue2, isVue3, install }\n", "import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, inject, provide, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get(v);\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"injectLocal must be called in setup\");\n if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!scope) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue(defaultValue);\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue(\n !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n toValue(element),\n toValue(value),\n index,\n toValue(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = ref(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n", "import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, notNullish, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, tryOnBeforeUnmount, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, isVue2, readonly, reactive, toRaw, nextTick, markRaw, unref, getCurrentScope, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /* #__PURE__ */ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ defineComponent({\n inheritAttrs,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return noop;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, isVue2 ? void 0 : instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true,\n triggerOnRemoval = false\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = ref();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n }, true);\n useEventListener(window, \"focus\", trigger, true);\n }\n if (triggerOnRemoval) {\n useMutationObserver(document, (mutations) => {\n mutations.filter((m) => m.removedNodes.length).map((n) => Array.from(n.removedNodes)).flat().forEach((node) => {\n if (node === activeElement.value)\n trigger();\n });\n }, {\n childList: true,\n subtree: true\n });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit && delta < intervalLimit) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n if (!animate.value)\n update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n if (el)\n update();\n });\n watch(() => keyframes, (value) => {\n if (animate.value)\n update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n });\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n if (activeIndex.value === tasks.length - 1)\n onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(k)]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow, strategy = \"min-width\" } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(-1));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref2] of objectEntries(refs)) {\n watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update);\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value && isAllowed(permissionRead.value)) {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value && isAllowed(permissionWrite.value))\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update);\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(key);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n const raw_prop = toValue(prop);\n if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) {\n if (val == null)\n elRef.value.style.removeProperty(raw_prop);\n else\n elRef.value.style.setProperty(raw_prop, val);\n }\n }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev,\n go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\",\n window = defaultWindow\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => {\n if (mode.system) {\n return mode.system.value;\n } else {\n const preferredDark = usePreferredDark({ window });\n return preferredDark.value ? \"dark\" : \"light\";\n }\n });\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = ref(1);\n if (window) {\n let observe2 = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup2();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe2, { once: true });\n }, cleanup2 = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n };\n let media;\n observe2();\n tryOnScopeDispose(cleanup2);\n }\n return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.addEventListener(\"ended\", stop));\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target,\n buttons = [0]\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n var _a, _b;\n const isOverDropZone = ref(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n if (_options.dataTypes) {\n const dataTypes = unref(_options.dataTypes);\n return typeof dataTypes === \"function\" ? dataTypes(types) : dataTypes ? dataTypes.some((item) => types.includes(item)) : true;\n }\n return true;\n };\n const checkValidity = (event) => {\n var _a2, _b2;\n const items = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items) != null ? _b2 : []);\n const types = items.map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d;\n isValid = checkValidity(event);\n if (!isValid) {\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_a2 = _options.onEnter) == null ? void 0 : _a2.call(_options, null, event);\n break;\n case \"over\":\n (_b2 = _options.onOver) == null ? void 0 : _b2.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_c = _options.onLeave) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_d = _options.onDrop) == null ? void 0 : _d.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true,\n updateTiming = \"sync\"\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function recalculate() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = ref(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n if (es.readyState === 2 && !explicitlyClosed && options.autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries(headers.entries());\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const payload = toValue(config.payload);\n if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onCancel,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n await updateFile();\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n });\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = ref(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => _focused.value = false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = ref(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on,\n onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = shallowReactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX;\n y.value = pos[1] + window.scrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported: readonly(isSupported),\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(type)\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const screenOrientation = reactive(useScreenOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n return \"deviceOrientation\";\n }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock();\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n })\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n if (utterance)\n synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n var _a;\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n const styleProp = (_a = options == null ? void 0 : options.styleProp) != null ? _a : \"height\";\n const textareaScrollHeight = ref(1);\n const textareaOldWidth = ref(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval, { immediate: false });\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnBeforeUnmount(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n const requestedType = ref(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n try {\n new Notification(\"\");\n } catch (e) {\n return false;\n }\n return true;\n });\n const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n if (!isClient || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n retried = 0;\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n if (typeof retries === \"number\" && (retries < 0 || retried < retries)) {\n retried += 1;\n setTimeout(_init, delay);\n } else if (typeof retries === \"function\" && retries()) {\n setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE,\n responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === responseMessage)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n watch(urlRef, open);\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, behavior = \"auto\" } = options;\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const internalX = ref(window.scrollX);\n const internalY = ref(window.scrollY);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo({ left: x2, behavior });\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo({ top: y2, behavior });\n }\n });\n useEventListener(\n window,\n \"scroll\",\n () => {\n internalX.value = window.scrollX;\n internalY.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true,\n type = \"inner\"\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n"], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAI,SAAS;AACb,IAAI,SAAS;AAKN,SAAS,IAAI,QAAQ,KAAK,KAAK;AACpC,MAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,WAAO,SAAS,KAAK,IAAI,OAAO,QAAQ,GAAG;AAC3C,WAAO,OAAO,KAAK,GAAG,GAAG;AACzB,WAAO;AAAA,EACT;AACA,SAAO,GAAG,IAAI;AACd,SAAO;AACT;AAEO,SAAS,IAAI,QAAQ,KAAK;AAC/B,MAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,WAAO,OAAO,KAAK,CAAC;AACpB;AAAA,EACF;AACA,SAAO,OAAO,GAAG;AACnB;;;AC5BA,SAAS,cAAc,IAAI,SAAS;AAClC,MAAI;AACJ,QAAM,SAAS,WAAW;AAC1B,cAAY,MAAM;AAChB,WAAO,QAAQ,GAAG;AAAA,EACpB,GAAG;AAAA,IACD,GAAG;AAAA,IACH,QAAQ,KAAK,WAAW,OAAO,SAAS,QAAQ,UAAU,OAAO,KAAK;AAAA,EACxE,CAAC;AACD,SAAO,SAAS,MAAM;AACxB;AAEA,SAAS,oBAAoB,QAAQ,IAAI;AACvC,MAAI,IAAI;AACR,MAAI;AACJ,MAAI;AACJ,QAAM,QAAQ,IAAI,IAAI;AACtB,QAAM,SAAS,MAAM;AACnB,UAAM,QAAQ;AACd,YAAQ;AAAA,EACV;AACA,QAAM,QAAQ,QAAQ,EAAE,OAAO,OAAO,CAAC;AACvC,QAAMA,OAAM,OAAO,OAAO,aAAa,KAAK,GAAG;AAC/C,QAAMC,OAAM,OAAO,OAAO,aAAa,SAAS,GAAG;AACnD,QAAM,SAAS,UAAU,CAAC,QAAQ,aAAa;AAC7C,YAAQ;AACR,cAAU;AACV,WAAO;AAAA,MACL,MAAM;AACJ,YAAI,MAAM,OAAO;AACf,cAAID,KAAI,CAAC;AACT,gBAAM,QAAQ;AAAA,QAChB;AACA,cAAM;AACN,eAAO;AAAA,MACT;AAAA,MACA,IAAI,IAAI;AACN,QAAAC,QAAO,OAAO,SAASA,KAAI,EAAE;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,CAAC;AACD,MAAI,OAAO,aAAa,MAAM;AAC5B,WAAO,UAAU;AACnB,SAAO;AACT;AAEA,SAAS,kBAAkB,IAAI;AAC7B,MAAI,gBAAgB,GAAG;AACrB,mBAAe,EAAE;AACjB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB;AACzB,QAAM,MAAsB,oBAAI,IAAI;AACpC,QAAM,MAAM,CAAC,OAAO;AAClB,QAAI,OAAO,EAAE;AAAA,EACf;AACA,QAAM,KAAK,CAAC,OAAO;AACjB,QAAI,IAAI,EAAE;AACV,UAAM,QAAQ,MAAM,IAAI,EAAE;AAC1B,sBAAkB,KAAK;AACvB,WAAO;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AACA,QAAM,UAAU,IAAI,SAAS;AAC3B,WAAO,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC;AAAA,EAC7D;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,cAAc;AACvC,MAAI,cAAc;AAClB,MAAI;AACJ,QAAM,QAAQ,YAAY,IAAI;AAC9B,SAAO,IAAI,SAAS;AAClB,QAAI,CAAC,aAAa;AAChB,cAAQ,MAAM,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC;AAC7C,oBAAc;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AACF;AAEA,IAAM,wBAAwC,oBAAI,QAAQ;AAE1D,IAAM,cAAc,IAAI,SAAS;AAC/B,MAAI;AACJ,QAAM,MAAM,KAAK,CAAC;AAClB,QAAM,YAAY,KAAK,mBAAmB,MAAM,OAAO,SAAS,GAAG;AACnE,MAAI,YAAY;AACd,UAAM,IAAI,MAAM,qCAAqC;AACvD,MAAI,sBAAsB,IAAI,QAAQ,KAAK,OAAO,sBAAsB,IAAI,QAAQ;AAClF,WAAO,sBAAsB,IAAI,QAAQ,EAAE,GAAG;AAChD,SAAO,OAAO,GAAG,IAAI;AACvB;AAEA,IAAM,eAAe,CAAC,KAAK,UAAU;AACnC,MAAI;AACJ,QAAM,YAAY,KAAK,mBAAmB,MAAM,OAAO,SAAS,GAAG;AACnE,MAAI,YAAY;AACd,UAAM,IAAI,MAAM,sCAAsC;AACxD,MAAI,CAAC,sBAAsB,IAAI,QAAQ;AACrC,0BAAsB,IAAI,UAA0B,uBAAO,OAAO,IAAI,CAAC;AACzE,QAAM,qBAAqB,sBAAsB,IAAI,QAAQ;AAC7D,qBAAmB,GAAG,IAAI;AAC1B,UAAQ,KAAK,KAAK;AACpB;AAEA,SAAS,qBAAqB,YAAY,SAAS;AACjD,QAAM,OAAO,WAAW,OAAO,SAAS,QAAQ,iBAAiB,OAAO,WAAW,QAAQ,gBAAgB;AAC3G,QAAM,eAAe,WAAW,OAAO,SAAS,QAAQ;AACxD,QAAM,oBAAoB,IAAI,SAAS;AACrC,UAAM,QAAQ,WAAW,GAAG,IAAI;AAChC,iBAAa,KAAK,KAAK;AACvB,WAAO;AAAA,EACT;AACA,QAAM,mBAAmB,MAAM,YAAY,KAAK,YAAY;AAC5D,SAAO,CAAC,mBAAmB,gBAAgB;AAC7C;AAEA,SAAS,uBAAuB,YAAY;AAC1C,MAAI,cAAc;AAClB,MAAI;AACJ,MAAI;AACJ,QAAM,UAAU,MAAM;AACpB,mBAAe;AACf,QAAI,SAAS,eAAe,GAAG;AAC7B,YAAM,KAAK;AACX,cAAQ;AACR,cAAQ;AAAA,IACV;AAAA,EACF;AACA,SAAO,IAAI,SAAS;AAClB,mBAAe;AACf,QAAI,CAAC,OAAO;AACV,cAAQ,YAAY,IAAI;AACxB,cAAQ,MAAM,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC;AAAA,IAC7C;AACA,sBAAkB,OAAO;AACzB,WAAO;AAAA,EACT;AACF;AAEA,SAAS,UAAUC,MAAK,QAAQ,EAAE,aAAa,OAAO,SAAS,KAAK,IAAI,CAAC,GAAG;AAC1E,MAAI,CAAC,UAAU,CAAC,QAAQ,WAAW,MAAM,GAAG;AAC1C,QAAI;AACF,YAAM,IAAI,MAAM,oDAAoD;AACtE;AAAA,EACF;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,QAAQ;AACV;AACF,QAAI,MAAM,KAAK,KAAK,QAAQ;AAC1B,aAAO,eAAeA,MAAK,KAAK;AAAA,QAC9B,MAAM;AACJ,iBAAO,MAAM;AAAA,QACf;AAAA,QACA,IAAI,GAAG;AACL,gBAAM,QAAQ;AAAA,QAChB;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,aAAO,eAAeA,MAAK,KAAK,EAAE,OAAO,WAAW,CAAC;AAAA,IACvD;AAAA,EACF;AACA,SAAOA;AACT;AAEA,SAAS,IAAI,KAAK,KAAK;AACrB,MAAI,OAAO;AACT,WAAO,MAAM,GAAG;AAClB,SAAO,MAAM,GAAG,EAAE,GAAG;AACvB;AAEA,SAAS,UAAU,GAAG;AACpB,SAAO,MAAM,CAAC,KAAK;AACrB;AAEA,SAAS,mBAAmB,KAAK,KAAK;AACpC,MAAI,OAAO,WAAW,aAAa;AACjC,UAAM,QAAQ,EAAE,GAAG,IAAI;AACvB,WAAO,eAAe,OAAO,OAAO,UAAU;AAAA,MAC5C,YAAY;AAAA,MACZ,QAAQ;AACN,YAAI,QAAQ;AACZ,eAAO;AAAA,UACL,MAAM,OAAO;AAAA,YACX,OAAO,IAAI,OAAO;AAAA,YAClB,MAAM,QAAQ,IAAI;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT,OAAO;AACL,WAAO,OAAO,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG;AAAA,EACpC;AACF;AAEA,SAAS,QAAQ,GAAG;AAClB,SAAO,OAAO,MAAM,aAAa,EAAE,IAAI,MAAM,CAAC;AAChD;AACA,IAAM,eAAe;AAErB,SAAS,SAAS,IAAI,SAAS;AAC7B,QAAM,WAAW,WAAW,OAAO,SAAS,QAAQ,oBAAoB,QAAQ,QAAQ;AACxF,SAAO,YAAY,MAAM;AACvB,WAAO,SAAS,MAAM,GAAG,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;AAAA,EACnE;AACF;AAEA,SAAS,eAAe,KAAK,gBAAgB,CAAC,GAAG;AAC/C,MAAIC,QAAO,CAAC;AACZ,MAAI;AACJ,MAAI,MAAM,QAAQ,aAAa,GAAG;AAChC,IAAAA,QAAO;AAAA,EACT,OAAO;AACL,cAAU;AACV,UAAM,EAAE,uBAAuB,KAAK,IAAI;AACxC,IAAAA,MAAK,KAAK,GAAG,OAAO,KAAK,GAAG,CAAC;AAC7B,QAAI;AACF,MAAAA,MAAK,KAAK,GAAG,OAAO,oBAAoB,GAAG,CAAC;AAAA,EAChD;AACA,SAAO,OAAO;AAAA,IACZA,MAAK,IAAI,CAAC,QAAQ;AAChB,YAAM,QAAQ,IAAI,GAAG;AACrB,aAAO;AAAA,QACL;AAAA,QACA,OAAO,UAAU,aAAa,SAAS,MAAM,KAAK,GAAG,GAAG,OAAO,IAAI;AAAA,MACrE;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,SAAS,WAAW,WAAW;AAC7B,MAAI,CAAC,MAAM,SAAS;AAClB,WAAO,SAAS,SAAS;AAC3B,QAAM,QAAQ,IAAI,MAAM,CAAC,GAAG;AAAA,IAC1B,IAAI,GAAG,GAAG,UAAU;AAClB,aAAO,MAAM,QAAQ,IAAI,UAAU,OAAO,GAAG,QAAQ,CAAC;AAAA,IACxD;AAAA,IACA,IAAI,GAAG,GAAG,OAAO;AACf,UAAI,MAAM,UAAU,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK;AAC3C,kBAAU,MAAM,CAAC,EAAE,QAAQ;AAAA;AAE3B,kBAAU,MAAM,CAAC,IAAI;AACvB,aAAO;AAAA,IACT;AAAA,IACA,eAAe,GAAG,GAAG;AACnB,aAAO,QAAQ,eAAe,UAAU,OAAO,CAAC;AAAA,IAClD;AAAA,IACA,IAAI,GAAG,GAAG;AACR,aAAO,QAAQ,IAAI,UAAU,OAAO,CAAC;AAAA,IACvC;AAAA,IACA,UAAU;AACR,aAAO,OAAO,KAAK,UAAU,KAAK;AAAA,IACpC;AAAA,IACA,2BAA2B;AACzB,aAAO;AAAA,QACL,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO,SAAS,KAAK;AACvB;AAEA,SAAS,iBAAiB,IAAI;AAC5B,SAAO,WAAW,SAAS,EAAE,CAAC;AAChC;AAEA,SAAS,aAAa,QAAQA,OAAM;AAClC,QAAM,WAAWA,MAAK,KAAK;AAC3B,QAAM,YAAY,SAAS,CAAC;AAC5B,SAAO,iBAAiB,MAAM,OAAO,cAAc,aAAa,OAAO,YAAY,OAAO,QAAQ,OAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,YAAY,OAAO,QAAQ,OAAS,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7P;AAEA,IAAM,iBAAiB;AAAA,EACrB,SAAS,SAAS,YAAY;AAAA,EAC9B,SAAS,SAAS,YAAY;AAAA,EAC9B,WAAW,SAAS,cAAc;AACpC;AAEA,IAAM,WAAW,OAAO,WAAW,eAAe,OAAO,aAAa;AACtE,IAAM,WAAW,OAAO,sBAAsB,eAAe,sBAAsB;AACnF,IAAM,QAAQ,CAAC,QAAQ,OAAO,QAAQ;AACtC,IAAM,aAAa,CAAC,QAAQ,OAAO;AACnC,IAAM,SAAS,CAAC,cAAc,UAAU;AACtC,MAAI,CAAC;AACH,YAAQ,KAAK,GAAG,KAAK;AACzB;AACA,IAAM,WAAW,OAAO,UAAU;AAClC,IAAM,WAAW,CAAC,QAAQ,SAAS,KAAK,GAAG,MAAM;AACjD,IAAM,MAAM,MAAM,KAAK,IAAI;AAC3B,IAAM,YAAY,MAAM,CAAC,KAAK,IAAI;AAClC,IAAM,QAAQ,CAAC,GAAG,KAAK,QAAQ,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC;AAC7D,IAAM,OAAO,MAAM;AACnB;AACA,IAAM,OAAO,CAAC,KAAK,QAAQ;AACzB,QAAM,KAAK,KAAK,GAAG;AACnB,QAAM,KAAK,MAAM,GAAG;AACpB,SAAO,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,MAAM,EAAE,IAAI;AACvD;AACA,IAAM,SAAS,CAAC,KAAK,QAAQ,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;AAC1E,IAAM,QAAwB,SAAS;AACvC,SAAS,WAAW;AAClB,MAAI,IAAI;AACR,SAAO,cAAc,KAAK,UAAU,OAAO,SAAS,OAAO,cAAc,OAAO,SAAS,GAAG,eAAe,mBAAmB,KAAK,OAAO,UAAU,SAAS,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,cAAc,OAAO,SAAS,GAAG,kBAAkB,KAAK,iBAAiB,KAAK,UAAU,OAAO,SAAS,OAAO,UAAU,SAAS;AAC9U;AAEA,SAAS,oBAAoB,QAAQ,IAAI;AACvC,WAAS,WAAW,MAAM;AACxB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAQ,QAAQ,OAAO,MAAM,GAAG,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,SAAS,MAAM,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,IAC7G,CAAC;AAAA,EACH;AACA,SAAO;AACT;AACA,IAAM,eAAe,CAACC,YAAW;AAC/B,SAAOA,QAAO;AAChB;AACA,SAAS,eAAe,IAAI,UAAU,CAAC,GAAG;AACxC,MAAI;AACJ,MAAI;AACJ,MAAI,eAAe;AACnB,QAAM,gBAAgB,CAAC,WAAW;AAChC,iBAAa,MAAM;AACnB,iBAAa;AACb,mBAAe;AAAA,EACjB;AACA,QAAM,SAAS,CAACA,YAAW;AACzB,UAAM,WAAW,QAAQ,EAAE;AAC3B,UAAM,cAAc,QAAQ,QAAQ,OAAO;AAC3C,QAAI;AACF,oBAAc,KAAK;AACrB,QAAI,YAAY,KAAK,gBAAgB,UAAU,eAAe,GAAG;AAC/D,UAAI,UAAU;AACZ,sBAAc,QAAQ;AACtB,mBAAW;AAAA,MACb;AACA,aAAO,QAAQ,QAAQA,QAAO,CAAC;AAAA,IACjC;AACA,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,qBAAe,QAAQ,iBAAiB,SAAS;AACjD,UAAI,eAAe,CAAC,UAAU;AAC5B,mBAAW,WAAW,MAAM;AAC1B,cAAI;AACF,0BAAc,KAAK;AACrB,qBAAW;AACX,kBAAQA,QAAO,CAAC;AAAA,QAClB,GAAG,WAAW;AAAA,MAChB;AACA,cAAQ,WAAW,MAAM;AACvB,YAAI;AACF,wBAAc,QAAQ;AACxB,mBAAW;AACX,gBAAQA,QAAO,CAAC;AAAA,MAClB,GAAG,QAAQ;AAAA,IACb,CAAC;AAAA,EACH;AACA,SAAO;AACT;AACA,SAAS,kBAAkB,MAAM;AAC/B,MAAI,WAAW;AACf,MAAI;AACJ,MAAI,YAAY;AAChB,MAAI,eAAe;AACnB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK,CAAC,MAAM;AACxC,KAAC,EAAE,OAAO,IAAI,WAAW,MAAM,UAAU,MAAM,iBAAiB,MAAM,IAAI,KAAK,CAAC;AAAA;AAEhF,KAAC,IAAI,WAAW,MAAM,UAAU,MAAM,iBAAiB,KAAK,IAAI;AAClE,QAAM,QAAQ,MAAM;AAClB,QAAI,OAAO;AACT,mBAAa,KAAK;AAClB,cAAQ;AACR,mBAAa;AACb,qBAAe;AAAA,IACjB;AAAA,EACF;AACA,QAAM,SAAS,CAAC,YAAY;AAC1B,UAAM,WAAW,QAAQ,EAAE;AAC3B,UAAM,UAAU,KAAK,IAAI,IAAI;AAC7B,UAAMA,UAAS,MAAM;AACnB,aAAO,YAAY,QAAQ;AAAA,IAC7B;AACA,UAAM;AACN,QAAI,YAAY,GAAG;AACjB,iBAAW,KAAK,IAAI;AACpB,aAAOA,QAAO;AAAA,IAChB;AACA,QAAI,UAAU,aAAa,WAAW,CAAC,YAAY;AACjD,iBAAW,KAAK,IAAI;AACpB,MAAAA,QAAO;AAAA,IACT,WAAW,UAAU;AACnB,kBAAY,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC3C,uBAAe,iBAAiB,SAAS;AACzC,gBAAQ,WAAW,MAAM;AACvB,qBAAW,KAAK,IAAI;AACpB,sBAAY;AACZ,kBAAQA,QAAO,CAAC;AAChB,gBAAM;AAAA,QACR,GAAG,KAAK,IAAI,GAAG,WAAW,OAAO,CAAC;AAAA,MACpC,CAAC;AAAA,IACH;AACA,QAAI,CAAC,WAAW,CAAC;AACf,cAAQ,WAAW,MAAM,YAAY,MAAM,QAAQ;AACrD,gBAAY;AACZ,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,eAAe,eAAe,cAAc;AACnD,QAAM,WAAW,IAAI,IAAI;AACzB,WAAS,QAAQ;AACf,aAAS,QAAQ;AAAA,EACnB;AACA,WAAS,SAAS;AAChB,aAAS,QAAQ;AAAA,EACnB;AACA,QAAM,cAAc,IAAI,SAAS;AAC/B,QAAI,SAAS;AACX,mBAAa,GAAG,IAAI;AAAA,EACxB;AACA,SAAO,EAAE,UAAU,SAAS,QAAQ,GAAG,OAAO,QAAQ,YAAY;AACpE;AAEA,SAAS,oBAAoB,IAAI;AAC/B,QAAM,QAAwB,uBAAO,OAAO,IAAI;AAChD,SAAO,CAAC,QAAQ;AACd,UAAM,MAAM,MAAM,GAAG;AACrB,WAAO,QAAQ,MAAM,GAAG,IAAI,GAAG,GAAG;AAAA,EACpC;AACF;AACA,IAAM,cAAc;AACpB,IAAM,YAAY,oBAAoB,CAAC,QAAQ,IAAI,QAAQ,aAAa,KAAK,EAAE,YAAY,CAAC;AAC5F,IAAM,aAAa;AACnB,IAAM,WAAW,oBAAoB,CAAC,QAAQ;AAC5C,SAAO,IAAI,QAAQ,YAAY,CAAC,GAAG,MAAM,IAAI,EAAE,YAAY,IAAI,EAAE;AACnE,CAAC;AAED,SAAS,eAAe,IAAI,iBAAiB,OAAO,SAAS,WAAW;AACtE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI;AACF,iBAAW,MAAM,OAAO,MAAM,GAAG,EAAE;AAAA;AAEnC,iBAAW,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH;AACA,SAAS,SAAS,KAAK;AACrB,SAAO;AACT;AACA,SAAS,uBAAuB,IAAI;AAClC,MAAI;AACJ,WAAS,UAAU;AACjB,QAAI,CAAC;AACH,iBAAW,GAAG;AAChB,WAAO;AAAA,EACT;AACA,UAAQ,QAAQ,YAAY;AAC1B,UAAM,QAAQ;AACd,eAAW;AACX,QAAI;AACF,YAAM;AAAA,EACV;AACA,SAAO;AACT;AACA,SAAS,OAAO,IAAI;AAClB,SAAO,GAAG;AACZ;AACA,SAAS,aAAa,QAAQ,OAAO;AACnC,SAAO,MAAM,KAAK,CAAC,MAAM,KAAK,GAAG;AACnC;AACA,SAAS,iBAAiB,QAAQ,OAAO;AACvC,MAAI;AACJ,MAAI,OAAO,WAAW;AACpB,WAAO,SAAS;AAClB,QAAM,UAAU,KAAK,OAAO,MAAM,cAAc,MAAM,OAAO,SAAS,GAAG,CAAC,MAAM;AAChF,QAAM,OAAO,OAAO,MAAM,MAAM,MAAM;AACtC,QAAM,SAAS,OAAO,WAAW,KAAK,IAAI;AAC1C,MAAI,OAAO,MAAM,MAAM;AACrB,WAAO;AACT,SAAO,SAAS;AAClB;AACA,SAAS,WAAW,KAAKD,OAAM,gBAAgB,OAAO;AACpD,SAAOA,MAAK,OAAO,CAAC,GAAG,MAAM;AAC3B,QAAI,KAAK,KAAK;AACZ,UAAI,CAAC,iBAAiB,IAAI,CAAC,MAAM;AAC/B,UAAE,CAAC,IAAI,IAAI,CAAC;AAAA,IAChB;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;AACA,SAAS,WAAW,KAAKA,OAAM,gBAAgB,OAAO;AACpD,SAAO,OAAO,YAAY,OAAO,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM;AACrE,YAAQ,CAAC,iBAAiB,UAAU,WAAW,CAACA,MAAK,SAAS,GAAG;AAAA,EACnE,CAAC,CAAC;AACJ;AACA,SAAS,cAAc,KAAK;AAC1B,SAAO,OAAO,QAAQ,GAAG;AAC3B;AACA,SAAS,mBAAmB,QAAQ;AAClC,SAAO,UAAU,mBAAmB;AACtC;AAEA,SAASE,UAAS,MAAM;AACtB,MAAI,KAAK,WAAW;AAClB,WAAO,MAAQ,GAAG,IAAI;AACxB,QAAM,IAAI,KAAK,CAAC;AAChB,SAAO,OAAO,MAAM,aAAa,SAAS,UAAU,OAAO,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AAC7F;AACA,IAAM,aAAaA;AAEnB,SAAS,aAAa,QAAQF,OAAM;AAClC,QAAM,WAAWA,MAAK,KAAK;AAC3B,QAAM,YAAY,SAAS,CAAC;AAC5B,SAAO,iBAAiB,MAAM,OAAO,cAAc,aAAa,OAAO,YAAY,OAAO,QAAQ,OAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,UAAU,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,YAAY,SAAS,IAAI,CAAC,MAAM,CAAC,GAAGE,OAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9N;AAEA,SAAS,aAAa,cAAc,UAAU,KAAK;AACjD,SAAO,UAAU,CAAC,OAAO,YAAY;AACnC,QAAI,QAAQ,QAAQ,YAAY;AAChC,QAAI;AACJ,UAAM,aAAa,MAAM,WAAW,MAAM;AACxC,cAAQ,QAAQ,YAAY;AAC5B,cAAQ;AAAA,IACV,GAAG,QAAQ,OAAO,CAAC;AACnB,sBAAkB,MAAM;AACtB,mBAAa,KAAK;AAAA,IACpB,CAAC;AACD,WAAO;AAAA,MACL,MAAM;AACJ,cAAM;AACN,eAAO;AAAA,MACT;AAAA,MACA,IAAI,UAAU;AACZ,gBAAQ;AACR,gBAAQ;AACR,qBAAa,KAAK;AAClB,gBAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,cAAc,IAAI,KAAK,KAAK,UAAU,CAAC,GAAG;AACjD,SAAO;AAAA,IACL,eAAe,IAAI,OAAO;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,SAAS,aAAa,OAAO,KAAK,KAAK,UAAU,CAAC,GAAG;AACnD,QAAM,YAAY,IAAI,MAAM,KAAK;AACjC,QAAM,UAAU,cAAc,MAAM;AAClC,cAAU,QAAQ,MAAM;AAAA,EAC1B,GAAG,IAAI,OAAO;AACd,QAAM,OAAO,MAAM,QAAQ,CAAC;AAC5B,SAAO;AACT;AAEA,SAAS,WAAW,QAAQ,cAAc;AACxC,SAAO,SAAS;AAAA,IACd,MAAM;AACJ,UAAI;AACJ,cAAQ,KAAK,OAAO,UAAU,OAAO,KAAK;AAAA,IAC5C;AAAA,IACA,IAAI,OAAO;AACT,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAEA,SAAS,cAAc,IAAI,KAAK,KAAK,WAAW,OAAO,UAAU,MAAM,iBAAiB,OAAO;AAC7F,SAAO;AAAA,IACL,eAAe,IAAI,UAAU,SAAS,cAAc;AAAA,IACpD;AAAA,EACF;AACF;AAEA,SAAS,aAAa,OAAO,QAAQ,KAAK,WAAW,MAAM,UAAU,MAAM;AACzE,MAAI,SAAS;AACX,WAAO;AACT,QAAM,YAAY,IAAI,MAAM,KAAK;AACjC,QAAM,UAAU,cAAc,MAAM;AAClC,cAAU,QAAQ,MAAM;AAAA,EAC1B,GAAG,OAAO,UAAU,OAAO;AAC3B,QAAM,OAAO,MAAM,QAAQ,CAAC;AAC5B,SAAO;AACT;AAEA,SAAS,eAAe,SAAS,UAAU,CAAC,GAAG;AAC7C,MAAI,SAAS;AACb,MAAI;AACJ,MAAI;AACJ,QAAMH,OAAM,UAAU,CAAC,QAAQ,aAAa;AAC1C,YAAQ;AACR,cAAU;AACV,WAAO;AAAA,MACL,MAAM;AACJ,eAAOF,KAAI;AAAA,MACb;AAAA,MACA,IAAI,GAAG;AACL,QAAAC,KAAI,CAAC;AAAA,MACP;AAAA,IACF;AAAA,EACF,CAAC;AACD,WAASD,KAAI,WAAW,MAAM;AAC5B,QAAI;AACF,YAAM;AACR,WAAO;AAAA,EACT;AACA,WAASC,KAAI,OAAO,aAAa,MAAM;AACrC,QAAI,IAAI;AACR,QAAI,UAAU;AACZ;AACF,UAAM,MAAM;AACZ,UAAM,KAAK,QAAQ,mBAAmB,OAAO,SAAS,GAAG,KAAK,SAAS,OAAO,GAAG,OAAO;AACtF;AACF,aAAS;AACT,KAAC,KAAK,QAAQ,cAAc,OAAO,SAAS,GAAG,KAAK,SAAS,OAAO,GAAG;AACvE,QAAI;AACF,cAAQ;AAAA,EACZ;AACA,QAAM,eAAe,MAAMD,KAAI,KAAK;AACpC,QAAM,YAAY,CAAC,MAAMC,KAAI,GAAG,KAAK;AACrC,QAAM,OAAO,MAAMD,KAAI,KAAK;AAC5B,QAAM,MAAM,CAAC,MAAMC,KAAI,GAAG,KAAK;AAC/B,SAAO;AAAA,IACLC;AAAA,IACA;AAAA,MACE,KAAAF;AAAA,MACA,KAAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,EAAE,YAAY,KAAK;AAAA,EACrB;AACF;AACA,IAAM,gBAAgB;AAEtB,SAASA,QAAO,MAAM;AACpB,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,CAACC,MAAK,KAAK,IAAI;AACrB,IAAAA,KAAI,QAAQ;AAAA,EACd;AACA,MAAI,KAAK,WAAW,GAAG;AACrB,QAAI,QAAQ;AACV,UAAM,GAAG,IAAI;AAAA,IACf,OAAO;AACL,YAAM,CAAC,QAAQ,KAAK,KAAK,IAAI;AAC7B,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,QAAQ,IAAI,UAAU,CAAC,GAAG;AACjD,QAAM;AAAA,IACJ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,IAAI;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,QAAQ,IAAI,UAAU,CAAC,GAAG;AAC/C,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,EAAE,aAAa,OAAO,QAAQ,SAAS,IAAI,eAAe,MAAM;AACtE,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,MAAM,OAAO,QAAQ,SAAS;AACzC;AAEA,SAAS,QAAQ,MAAM,UAAU,CAAC,OAAO,GAAG;AAC1C,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY,CAAC;AAAA,EACf,IAAI,WAAW,CAAC;AAChB,QAAM,WAAW,CAAC;AAClB,QAAM,eAAe,SAAS,aAAa,UAAU,QAAQ,CAAC,MAAM;AACpE,QAAM,eAAe,SAAS,aAAa,UAAU,QAAQ,CAAC,MAAM;AACpE,MAAI,cAAc,UAAU,cAAc,OAAO;AAC/C,aAAS,KAAK;AAAA,MACZ;AAAA,MACA,CAAC,aAAa;AACZ,iBAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;AACjC,cAAM,QAAQ,aAAa,QAAQ;AACnC,iBAAS,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;AAAA,MACpC;AAAA,MACA,EAAE,OAAO,MAAM,UAAU;AAAA,IAC3B,CAAC;AAAA,EACH;AACA,MAAI,cAAc,UAAU,cAAc,OAAO;AAC/C,aAAS,KAAK;AAAA,MACZ;AAAA,MACA,CAAC,aAAa;AACZ,iBAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;AACjC,aAAK,QAAQ,aAAa,QAAQ;AAClC,iBAAS,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;AAAA,MACpC;AAAA,MACA,EAAE,OAAO,MAAM,UAAU;AAAA,IAC3B,CAAC;AAAA,EACH;AACA,QAAM,OAAO,MAAM;AACjB,aAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,EAClC;AACA,SAAO;AACT;AAEA,SAAS,SAAS,QAAQ,SAAS,UAAU,CAAC,GAAG;AAC/C,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,EACd,IAAI;AACJ,MAAI,CAAC,MAAM,QAAQ,OAAO;AACxB,cAAU,CAAC,OAAO;AACpB,SAAO;AAAA,IACL;AAAA,IACA,CAAC,aAAa,QAAQ,QAAQ,CAAC,WAAW,OAAO,QAAQ,QAAQ;AAAA,IACjE,EAAE,OAAO,MAAM,UAAU;AAAA,EAC3B;AACF;AAEA,SAASI,QAAO,WAAW,UAAU,CAAC,GAAG;AACvC,MAAI,CAAC,MAAM,SAAS;AAClB,WAAO,OAAS,SAAS;AAC3B,QAAM,SAAS,MAAM,QAAQ,UAAU,KAAK,IAAI,MAAM,KAAK,EAAE,QAAQ,UAAU,MAAM,OAAO,CAAC,IAAI,CAAC;AAClG,aAAW,OAAO,UAAU,OAAO;AACjC,WAAO,GAAG,IAAI,UAAU,OAAO;AAAA,MAC7B,MAAM;AACJ,eAAO,UAAU,MAAM,GAAG;AAAA,MAC5B;AAAA,MACA,IAAI,GAAG;AACL,YAAI;AACJ,cAAM,cAAc,KAAK,QAAQ,QAAQ,UAAU,MAAM,OAAO,KAAK;AACrE,YAAI,YAAY;AACd,cAAI,MAAM,QAAQ,UAAU,KAAK,GAAG;AAClC,kBAAM,OAAO,CAAC,GAAG,UAAU,KAAK;AAChC,iBAAK,GAAG,IAAI;AACZ,sBAAU,QAAQ;AAAA,UACpB,OAAO;AACL,kBAAM,YAAY,EAAE,GAAG,UAAU,OAAO,CAAC,GAAG,GAAG,EAAE;AACjD,mBAAO,eAAe,WAAW,OAAO,eAAe,UAAU,KAAK,CAAC;AACvE,sBAAU,QAAQ;AAAA,UACpB;AAAA,QACF,OAAO;AACL,oBAAU,MAAM,GAAG,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,IACF,EAAE;AAAA,EACJ;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,IAAI,OAAO,MAAM,QAAQ;AACjD,QAAM,WAAW,mBAAmB,MAAM;AAC1C,MAAI;AACF,kBAAc,IAAI,MAAM;AAAA,WACjB;AACP,OAAG;AAAA;AAEH,aAAS,EAAE;AACf;AAEA,SAAS,mBAAmB,IAAI,QAAQ;AACtC,QAAM,WAAW,mBAAmB,MAAM;AAC1C,MAAI;AACF,oBAAgB,IAAI,MAAM;AAC9B;AAEA,SAAS,aAAa,IAAI,OAAO,MAAM,QAAQ;AAC7C,QAAM,WAAW,mBAAmB;AACpC,MAAI;AACF,cAAU,IAAI,MAAM;AAAA,WACb;AACP,OAAG;AAAA;AAEH,aAAS,EAAE;AACf;AAEA,SAAS,eAAe,IAAI,QAAQ;AAClC,QAAM,WAAW,mBAAmB,MAAM;AAC1C,MAAI;AACF,gBAAY,IAAI,MAAM;AAC1B;AAEA,SAAS,YAAY,GAAG,QAAQ,OAAO;AACrC,WAAS,QAAQ,WAAW,EAAE,QAAQ,QAAQ,OAAO,OAAO,SAAS,eAAe,IAAI,CAAC,GAAG;AAC1F,QAAI,OAAO;AACX,UAAM,UAAU,IAAI,QAAQ,CAAC,YAAY;AACvC,aAAO;AAAA,QACL;AAAA,QACA,CAAC,MAAM;AACL,cAAI,UAAU,CAAC,MAAM,OAAO;AAC1B,gBAAI;AACF,mBAAK;AAAA;AAEL,uBAAS,MAAM,QAAQ,OAAO,SAAS,KAAK,CAAC;AAC/C,oBAAQ,CAAC;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,WAAW,CAAC,OAAO;AACzB,QAAI,WAAW,MAAM;AACnB,eAAS;AAAA,QACP,eAAe,SAAS,cAAc,EAAE,KAAK,MAAM,QAAQ,CAAC,CAAC,EAAE,QAAQ,MAAM,QAAQ,OAAO,SAAS,KAAK,CAAC;AAAA,MAC7G;AAAA,IACF;AACA,WAAO,QAAQ,KAAK,QAAQ;AAAA,EAC9B;AACA,WAAS,KAAK,OAAO,SAAS;AAC5B,QAAI,CAAC,MAAM,KAAK;AACd,aAAO,QAAQ,CAAC,MAAM,MAAM,OAAO,OAAO;AAC5C,UAAM,EAAE,QAAQ,QAAQ,OAAO,OAAO,SAAS,eAAe,IAAI,WAAW,OAAO,UAAU,CAAC;AAC/F,QAAI,OAAO;AACX,UAAM,UAAU,IAAI,QAAQ,CAAC,YAAY;AACvC,aAAO;AAAA,QACL,CAAC,GAAG,KAAK;AAAA,QACT,CAAC,CAAC,IAAI,EAAE,MAAM;AACZ,cAAI,WAAW,OAAO,KAAK;AACzB,gBAAI;AACF,mBAAK;AAAA;AAEL,uBAAS,MAAM,QAAQ,OAAO,SAAS,KAAK,CAAC;AAC/C,oBAAQ,EAAE;AAAA,UACZ;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,WAAW,CAAC,OAAO;AACzB,QAAI,WAAW,MAAM;AACnB,eAAS;AAAA,QACP,eAAe,SAAS,cAAc,EAAE,KAAK,MAAM,QAAQ,CAAC,CAAC,EAAE,QAAQ,MAAM;AAC3E,kBAAQ,OAAO,SAAS,KAAK;AAC7B,iBAAO,QAAQ,CAAC;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,QAAQ,KAAK,QAAQ;AAAA,EAC9B;AACA,WAAS,WAAW,SAAS;AAC3B,WAAO,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,OAAO;AAAA,EAC3C;AACA,WAAS,SAAS,SAAS;AACzB,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B;AACA,WAAS,cAAc,SAAS;AAC9B,WAAO,KAAK,QAAQ,OAAO;AAAA,EAC7B;AACA,WAAS,QAAQ,SAAS;AACxB,WAAO,QAAQ,OAAO,OAAO,OAAO;AAAA,EACtC;AACA,WAAS,WAAW,OAAO,SAAS;AAClC,WAAO,QAAQ,CAAC,MAAM;AACpB,YAAM,QAAQ,MAAM,KAAK,CAAC;AAC1B,aAAO,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,QAAQ,KAAK,CAAC;AAAA,IAC/D,GAAG,OAAO;AAAA,EACZ;AACA,WAAS,QAAQ,SAAS;AACxB,WAAO,aAAa,GAAG,OAAO;AAAA,EAChC;AACA,WAAS,aAAa,IAAI,GAAG,SAAS;AACpC,QAAI,QAAQ;AACZ,WAAO,QAAQ,MAAM;AACnB,eAAS;AACT,aAAO,SAAS;AAAA,IAClB,GAAG,OAAO;AAAA,EACZ;AACA,MAAI,MAAM,QAAQ,QAAQ,CAAC,CAAC,GAAG;AAC7B,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,MAAM;AACR,eAAO,YAAY,GAAG,CAAC,KAAK;AAAA,MAC9B;AAAA,IACF;AACA,WAAO;AAAA,EACT,OAAO;AACL,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,MAAM;AACR,eAAO,YAAY,GAAG,CAAC,KAAK;AAAA,MAC9B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;AACA,SAAS,MAAM,GAAG;AAChB,SAAO,YAAY,CAAC;AACtB;AAEA,SAAS,kBAAkB,OAAO,QAAQ;AACxC,SAAO,UAAU;AACnB;AACA,SAAS,sBAAsB,MAAM;AACnC,MAAI;AACJ,QAAM,OAAO,KAAK,CAAC;AACnB,QAAM,SAAS,KAAK,CAAC;AACrB,MAAI,aAAa,KAAK,KAAK,CAAC,MAAM,OAAO,KAAK;AAC9C,MAAI,OAAO,cAAc,UAAU;AACjC,UAAM,MAAM;AACZ,gBAAY,CAAC,OAAO,WAAW,MAAM,GAAG,MAAM,OAAO,GAAG;AAAA,EAC1D;AACA,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,OAAO,CAAC,MAAM,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7G;AAEA,SAAS,cAAc,MAAM,IAAI;AAC/B,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,MAAM,CAAC,SAAS,OAAO,UAAU,GAAG,QAAQ,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC;AAC1G;AAEA,SAAS,eAAe,MAAM,IAAI;AAChC,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;AACvE;AAEA,SAAS,aAAa,MAAM,IAAI;AAC9B,SAAO,SAAS,MAAM;AAAA,IACpB,QAAQ,IAAI,EAAE,KAAK,CAAC,SAAS,OAAO,UAAU,GAAG,QAAQ,OAAO,GAAG,OAAO,KAAK,CAAC;AAAA,EAClF,CAAC;AACH;AAEA,SAAS,kBAAkB,MAAM,IAAI;AACnC,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,UAAU,CAAC,SAAS,OAAO,UAAU,GAAG,QAAQ,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC;AAC9G;AAEA,SAAS,SAAS,KAAK,IAAI;AACzB,MAAI,QAAQ,IAAI;AAChB,SAAO,UAAU,GAAG;AAClB,QAAI,GAAG,IAAI,KAAK,GAAG,OAAO,GAAG;AAC3B,aAAO,IAAI,KAAK;AAAA,EACpB;AACA,SAAO;AACT;AACA,SAAS,iBAAiB,MAAM,IAAI;AAClC,SAAO,SAAS,MAAM;AAAA,IACpB,CAAC,MAAM,UAAU,WAAW,SAAS,QAAQ,IAAI,GAAG,CAAC,SAAS,OAAO,UAAU,GAAG,QAAQ,OAAO,GAAG,OAAO,KAAK,CAAC,IAAI,QAAQ,IAAI,EAAE,SAAS,CAAC,SAAS,OAAO,UAAU,GAAG,QAAQ,OAAO,GAAG,OAAO,KAAK,CAAC;AAAA,EAC3M,CAAC;AACH;AAEA,SAAS,uBAAuB,KAAK;AACnC,SAAO,SAAS,GAAG,KAAK,aAAa,KAAK,aAAa,YAAY;AACrE;AACA,SAAS,oBAAoB,MAAM;AACjC,MAAI;AACJ,QAAM,OAAO,KAAK,CAAC;AACnB,QAAM,QAAQ,KAAK,CAAC;AACpB,MAAI,aAAa,KAAK,CAAC;AACvB,MAAI,YAAY;AAChB,MAAI,uBAAuB,UAAU,GAAG;AACtC,iBAAa,KAAK,WAAW,cAAc,OAAO,KAAK;AACvD,iBAAa,WAAW;AAAA,EAC1B;AACA,MAAI,OAAO,eAAe,UAAU;AAClC,UAAM,MAAM;AACZ,iBAAa,CAAC,SAAS,WAAW,QAAQ,GAAG,MAAM,QAAQ,MAAM;AAAA,EACnE;AACA,eAAa,cAAc,OAAO,aAAa,CAAC,SAAS,WAAW,YAAY,QAAQ,MAAM;AAC9F,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,MAAM,SAAS,EAAE,KAAK,CAAC,SAAS,OAAO,UAAU;AAAA,IACnF,QAAQ,OAAO;AAAA,IACf,QAAQ,KAAK;AAAA,IACb;AAAA,IACA,QAAQ,KAAK;AAAA,EACf,CAAC,CAAC;AACJ;AAEA,SAAS,aAAa,MAAM,WAAW;AACrC,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,KAAK,QAAQ,SAAS,CAAC,CAAC;AACrF;AAEA,SAAS,YAAY,MAAM,IAAI;AAC7B,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AACpE;AAEA,SAAS,eAAe,MAAM,YAAY,MAAM;AAC9C,QAAM,iBAAiB,CAAC,KAAK,OAAO,UAAU,QAAQ,QAAQ,GAAG,GAAG,QAAQ,KAAK,GAAG,KAAK;AACzF,SAAO,SAAS,MAAM;AACpB,UAAM,WAAW,QAAQ,IAAI;AAC7B,WAAO,KAAK,SAAS,SAAS,OAAO,gBAAgB,OAAO,KAAK,CAAC,MAAM,aAAa,QAAQ,KAAK,CAAC,EAAE,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,OAAO,cAAc;AAAA,EAC9J,CAAC;AACH;AAEA,SAAS,aAAa,MAAM,IAAI;AAC9B,SAAO,SAAS,MAAM,QAAQ,IAAI,EAAE,KAAK,CAAC,SAAS,OAAO,UAAU,GAAG,QAAQ,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC;AACzG;AAEA,SAAS,KAAK,OAAO;AACnB,SAAO,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC;AAClC;AACA,SAAS,iBAAiB,OAAO,IAAI;AACnC,SAAO,MAAM,OAAO,CAAC,KAAK,MAAM;AAC9B,QAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC;AAClC,UAAI,KAAK,CAAC;AACZ,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;AACA,SAAS,eAAe,MAAM,WAAW;AACvC,SAAO,SAAS,MAAM;AACpB,UAAM,eAAe,QAAQ,IAAI,EAAE,IAAI,CAAC,YAAY,QAAQ,OAAO,CAAC;AACpE,WAAO,YAAY,iBAAiB,cAAc,SAAS,IAAI,KAAK,YAAY;AAAA,EAClF,CAAC;AACH;AAEA,SAAS,WAAW,eAAe,GAAG,UAAU,CAAC,GAAG;AAClD,MAAI,gBAAgB,MAAM,YAAY;AACtC,QAAM,QAAQ,IAAI,YAAY;AAC9B,QAAM;AAAA,IACJ,MAAM,OAAO;AAAA,IACb,MAAM,OAAO;AAAA,EACf,IAAI;AACJ,QAAM,MAAM,CAAC,QAAQ,MAAM,MAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG,GAAG;AACzF,QAAM,MAAM,CAAC,QAAQ,MAAM,MAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG,GAAG;AACzF,QAAMN,OAAM,MAAM,MAAM;AACxB,QAAMC,OAAM,CAAC,QAAQ,MAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,GAAG,CAAC;AACnE,QAAM,QAAQ,CAAC,MAAM,kBAAkB;AACrC,oBAAgB;AAChB,WAAOA,KAAI,GAAG;AAAA,EAChB;AACA,SAAO,EAAE,OAAO,KAAK,KAAK,KAAAD,MAAK,KAAAC,MAAK,MAAM;AAC5C;AAEA,IAAM,cAAc;AACpB,IAAM,eAAe;AACrB,SAAS,gBAAgB,OAAO,SAAS,aAAa,WAAW;AAC/D,MAAI,IAAI,QAAQ,KAAK,OAAO;AAC5B,MAAI;AACF,QAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,SAAS,OAAO,GAAG,IAAI,KAAK,EAAE;AAC7D,SAAO,cAAc,EAAE,YAAY,IAAI;AACzC;AACA,SAAS,cAAc,KAAK;AAC1B,QAAM,WAAW,CAAC,MAAM,MAAM,MAAM,IAAI;AACxC,QAAM,IAAI,MAAM;AAChB,SAAO,OAAO,UAAU,IAAI,MAAM,EAAE,KAAK,SAAS,CAAC,KAAK,SAAS,CAAC;AACpE;AACA,SAAS,WAAW,MAAM,WAAW,UAAU,CAAC,GAAG;AACjD,MAAI;AACJ,QAAM,QAAQ,KAAK,YAAY;AAC/B,QAAM,QAAQ,KAAK,SAAS;AAC5B,QAAM,OAAO,KAAK,QAAQ;AAC1B,QAAM,QAAQ,KAAK,SAAS;AAC5B,QAAM,UAAU,KAAK,WAAW;AAChC,QAAM,UAAU,KAAK,WAAW;AAChC,QAAM,eAAe,KAAK,gBAAgB;AAC1C,QAAM,MAAM,KAAK,OAAO;AACxB,QAAM,YAAY,KAAK,QAAQ,mBAAmB,OAAO,KAAK;AAC9D,QAAM,UAAU;AAAA,IACd,IAAI,MAAM,cAAc,KAAK;AAAA,IAC7B,IAAI,MAAM,OAAO,KAAK,EAAE,MAAM,EAAE;AAAA,IAChC,MAAM,MAAM;AAAA,IACZ,GAAG,MAAM,QAAQ;AAAA,IACjB,IAAI,MAAM,cAAc,QAAQ,CAAC;AAAA,IACjC,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,SAAS,GAAG,GAAG;AAAA,IACxC,KAAK,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,OAAO,GAAG,EAAE,OAAO,QAAQ,CAAC;AAAA,IAC/E,MAAM,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,OAAO,GAAG,EAAE,OAAO,OAAO,CAAC;AAAA,IAC/E,GAAG,MAAM,OAAO,IAAI;AAAA,IACpB,IAAI,MAAM,cAAc,IAAI;AAAA,IAC5B,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,GAAG;AAAA,IACnC,GAAG,MAAM,OAAO,KAAK;AAAA,IACrB,IAAI,MAAM,cAAc,KAAK;AAAA,IAC7B,IAAI,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,GAAG;AAAA,IACpC,GAAG,MAAM,GAAG,QAAQ,MAAM,EAAE,GAAG,SAAS,GAAG,GAAG;AAAA,IAC9C,IAAI,MAAM,cAAc,QAAQ,MAAM,EAAE;AAAA,IACxC,IAAI,MAAM,GAAG,QAAQ,MAAM,EAAE,GAAG,SAAS,GAAG,GAAG;AAAA,IAC/C,GAAG,MAAM,OAAO,OAAO;AAAA,IACvB,IAAI,MAAM,cAAc,OAAO;AAAA,IAC/B,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,GAAG;AAAA,IACtC,GAAG,MAAM,OAAO,OAAO;AAAA,IACvB,IAAI,MAAM,cAAc,OAAO;AAAA,IAC/B,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,GAAG;AAAA,IACtC,KAAK,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,GAAG;AAAA,IAC5C,GAAG,MAAM;AAAA,IACT,IAAI,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,OAAO,GAAG,EAAE,SAAS,SAAS,CAAC;AAAA,IACjF,KAAK,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,OAAO,GAAG,EAAE,SAAS,QAAQ,CAAC;AAAA,IACjF,MAAM,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,OAAO,GAAG,EAAE,SAAS,OAAO,CAAC;AAAA,IACjF,GAAG,MAAM,SAAS,OAAO,OAAO;AAAA,IAChC,IAAI,MAAM,SAAS,OAAO,SAAS,OAAO,IAAI;AAAA,IAC9C,GAAG,MAAM,SAAS,OAAO,SAAS,IAAI;AAAA,IACtC,IAAI,MAAM,SAAS,OAAO,SAAS,MAAM,IAAI;AAAA,EAC/C;AACA,SAAO,UAAU,QAAQ,cAAc,CAAC,OAAO,OAAO;AACpD,QAAI,KAAK;AACT,YAAQ,KAAK,MAAM,OAAO,MAAM,MAAM,QAAQ,KAAK,MAAM,OAAO,SAAS,IAAI,KAAK,OAAO,MAAM,OAAO,KAAK;AAAA,EAC7G,CAAC;AACH;AACA,SAAS,cAAc,MAAM;AAC3B,MAAI,SAAS;AACX,WAAO,IAAI,KAAK,OAAO,GAAG;AAC5B,MAAI,SAAS;AACX,WAAuB,oBAAI,KAAK;AAClC,MAAI,gBAAgB;AAClB,WAAO,IAAI,KAAK,IAAI;AACtB,MAAI,OAAO,SAAS,YAAY,CAAC,MAAM,KAAK,IAAI,GAAG;AACjD,UAAM,IAAI,KAAK,MAAM,WAAW;AAChC,QAAI,GAAG;AACL,YAAM,IAAI,EAAE,CAAC,IAAI,KAAK;AACtB,YAAM,MAAM,EAAE,CAAC,KAAK,KAAK,UAAU,GAAG,CAAC;AACvC,aAAO,IAAI,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE;AAAA,IACzE;AAAA,EACF;AACA,SAAO,IAAI,KAAK,IAAI;AACtB;AACA,SAAS,cAAc,MAAM,YAAY,YAAY,UAAU,CAAC,GAAG;AACjE,SAAO,SAAS,MAAM,WAAW,cAAc,QAAQ,IAAI,CAAC,GAAG,QAAQ,SAAS,GAAG,OAAO,CAAC;AAC7F;AAEA,SAAS,cAAc,IAAI,WAAW,KAAK,UAAU,CAAC,GAAG;AACvD,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,oBAAoB;AAAA,EACtB,IAAI;AACJ,MAAI,QAAQ;AACZ,QAAM,WAAW,IAAI,KAAK;AAC1B,WAAS,QAAQ;AACf,QAAI,OAAO;AACT,oBAAc,KAAK;AACnB,cAAQ;AAAA,IACV;AAAA,EACF;AACA,WAAS,QAAQ;AACf,aAAS,QAAQ;AACjB,UAAM;AAAA,EACR;AACA,WAAS,SAAS;AAChB,UAAM,gBAAgB,QAAQ,QAAQ;AACtC,QAAI,iBAAiB;AACnB;AACF,aAAS,QAAQ;AACjB,QAAI;AACF,SAAG;AACL,UAAM;AACN,QAAI,SAAS;AACX,cAAQ,YAAY,IAAI,aAAa;AAAA,EACzC;AACA,MAAI,aAAa;AACf,WAAO;AACT,MAAI,MAAM,QAAQ,KAAK,OAAO,aAAa,YAAY;AACrD,UAAM,YAAY,MAAM,UAAU,MAAM;AACtC,UAAI,SAAS,SAAS;AACpB,eAAO;AAAA,IACX,CAAC;AACD,sBAAkB,SAAS;AAAA,EAC7B;AACA,oBAAkB,KAAK;AACvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,YAAY,WAAW,KAAK,UAAU,CAAC,GAAG;AACjD,QAAM;AAAA,IACJ,UAAU,iBAAiB;AAAA,IAC3B,YAAY;AAAA,IACZ;AAAA,EACF,IAAI;AACJ,QAAM,UAAU,IAAI,CAAC;AACrB,QAAM,SAAS,MAAM,QAAQ,SAAS;AACtC,QAAM,QAAQ,MAAM;AAClB,YAAQ,QAAQ;AAAA,EAClB;AACA,QAAM,WAAW;AAAA,IACf,WAAW,MAAM;AACf,aAAO;AACP,eAAS,QAAQ,KAAK;AAAA,IACxB,IAAI;AAAA,IACJ;AAAA,IACA,EAAE,UAAU;AAAA,EACd;AACA,MAAI,gBAAgB;AAClB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,eAAe,QAAQ,UAAU,CAAC,GAAG;AAC5C,MAAI;AACJ,QAAM,KAAK,KAAK,KAAK,QAAQ,iBAAiB,OAAO,KAAK,IAAI;AAC9D;AAAA,IACE;AAAA,IACA,MAAM,GAAG,QAAQ,UAAU;AAAA,IAC3B;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,aAAa,IAAI,UAAU,UAAU,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,YAAY,IAAI,KAAK;AAC3B,MAAI,QAAQ;AACZ,WAAS,QAAQ;AACf,QAAI,OAAO;AACT,mBAAa,KAAK;AAClB,cAAQ;AAAA,IACV;AAAA,EACF;AACA,WAAS,OAAO;AACd,cAAU,QAAQ;AAClB,UAAM;AAAA,EACR;AACA,WAAS,SAAS,MAAM;AACtB,UAAM;AACN,cAAU,QAAQ;AAClB,YAAQ,WAAW,MAAM;AACvB,gBAAU,QAAQ;AAClB,cAAQ;AACR,SAAG,GAAG,IAAI;AAAA,IACZ,GAAG,QAAQ,QAAQ,CAAC;AAAA,EACtB;AACA,MAAI,WAAW;AACb,cAAU,QAAQ;AAClB,QAAI;AACF,YAAM;AAAA,EACV;AACA,oBAAkB,IAAI;AACtB,SAAO;AAAA,IACL,WAAW,SAAS,SAAS;AAAA,IAC7B;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW,WAAW,KAAK,UAAU,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,UAAU,iBAAiB;AAAA,IAC3B;AAAA,EACF,IAAI;AACJ,QAAM,WAAW;AAAA,IACf,YAAY,OAAO,WAAW;AAAA,IAC9B;AAAA,IACA;AAAA,EACF;AACA,QAAM,QAAQ,SAAS,MAAM,CAAC,SAAS,UAAU,KAAK;AACtD,MAAI,gBAAgB;AAClB,WAAO;AAAA,MACL;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,YAAY,OAAO,UAAU,CAAC,GAAG;AACxC,QAAM;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SAAO,SAAS,MAAM;AACpB,QAAI,WAAW,QAAQ,KAAK;AAC5B,QAAI,OAAO,aAAa;AACtB,iBAAW,OAAO,MAAM,EAAE,UAAU,KAAK;AAC3C,QAAI,aAAa,OAAO,MAAM,QAAQ;AACpC,iBAAW;AACb,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,YAAY,OAAO;AAC1B,SAAO,SAAS,MAAM,GAAG,QAAQ,KAAK,CAAC,EAAE;AAC3C;AAEA,SAAS,UAAU,eAAe,OAAO,UAAU,CAAC,GAAG;AACrD,QAAM;AAAA,IACJ,cAAc;AAAA,IACd,aAAa;AAAA,EACf,IAAI;AACJ,QAAM,aAAa,MAAM,YAAY;AACrC,QAAM,SAAS,IAAI,YAAY;AAC/B,WAAS,OAAO,OAAO;AACrB,QAAI,UAAU,QAAQ;AACpB,aAAO,QAAQ;AACf,aAAO,OAAO;AAAA,IAChB,OAAO;AACL,YAAM,SAAS,QAAQ,WAAW;AAClC,aAAO,QAAQ,OAAO,UAAU,SAAS,QAAQ,UAAU,IAAI;AAC/D,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AACA,MAAI;AACF,WAAO;AAAA;AAEP,WAAO,CAAC,QAAQ,MAAM;AAC1B;AAEA,SAAS,WAAW,QAAQ,IAAI,SAAS;AACvC,MAAI,WAAW,WAAW,OAAO,SAAS,QAAQ,aAAa,CAAC,IAAI,CAAC,GAAG,kBAAkB,WAAW,OAAO,IAAI,MAAM,QAAQ,MAAM,IAAI,SAAS,QAAQ,MAAM,CAAC;AAChK,SAAO,MAAM,QAAQ,CAAC,SAAS,GAAG,cAAc;AAC9C,UAAM,iBAAiB,MAAM,KAAK,EAAE,QAAQ,QAAQ,OAAO,CAAC;AAC5D,UAAM,QAAQ,CAAC;AACf,eAAW,OAAO,SAAS;AACzB,UAAI,QAAQ;AACZ,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,YAAI,CAAC,eAAe,CAAC,KAAK,QAAQ,QAAQ,CAAC,GAAG;AAC5C,yBAAe,CAAC,IAAI;AACpB,kBAAQ;AACR;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC;AACH,cAAM,KAAK,GAAG;AAAA,IAClB;AACA,UAAM,UAAU,QAAQ,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;AAC5D,OAAG,SAAS,SAAS,OAAO,SAAS,SAAS;AAC9C,cAAU,CAAC,GAAG,OAAO;AAAA,EACvB,GAAG,OAAO;AACZ;AAEA,SAAS,YAAY,QAAQ,IAAI,SAAS;AACxC,QAAM;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,UAAU,IAAI,CAAC;AACrB,QAAM,OAAO;AAAA,IACX;AAAA,IACA,IAAI,SAAS;AACX,cAAQ,SAAS;AACjB,UAAI,QAAQ,SAAS,QAAQ,KAAK;AAChC,iBAAS,MAAM,KAAK,CAAC;AACvB,SAAG,GAAG,IAAI;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACA,SAAO,EAAE,OAAO,SAAS,KAAK;AAChC;AAEA,SAAS,eAAe,QAAQ,IAAI,UAAU,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,GAAG;AAAA,EACL,IAAI;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,aAAa,eAAe,UAAU,EAAE,QAAQ,CAAC;AAAA,IACnD;AAAA,EACF;AACF;AAEA,SAAS,UAAU,QAAQ,IAAI,SAAS;AACtC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,eAAe,QAAQ,IAAI,UAAU,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,cAAc;AAAA,IACd,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,EACF;AACA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,aAAa,UAAU,QAAQ;AACjC,UAAM,SAAS,IAAI,KAAK;AACxB,6BAAyB,MAAM;AAAA,IAC/B;AACA,oBAAgB,CAAC,YAAY;AAC3B,aAAO,QAAQ;AACf,cAAQ;AACR,aAAO,QAAQ;AAAA,IACjB;AACA,WAAO;AAAA,MACL;AAAA,MACA,IAAI,SAAS;AACX,YAAI,CAAC,OAAO;AACV,qBAAW,GAAG,IAAI;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,EACF,OAAO;AACL,UAAM,cAAc,CAAC;AACrB,UAAM,gBAAgB,IAAI,CAAC;AAC3B,UAAM,cAAc,IAAI,CAAC;AACzB,6BAAyB,MAAM;AAC7B,oBAAc,QAAQ,YAAY;AAAA,IACpC;AACA,gBAAY;AAAA,MACV;AAAA,QACE;AAAA,QACA,MAAM;AACJ,sBAAY;AAAA,QACd;AAAA,QACA,EAAE,GAAG,cAAc,OAAO,OAAO;AAAA,MACnC;AAAA,IACF;AACA,oBAAgB,CAAC,YAAY;AAC3B,YAAM,kBAAkB,YAAY;AACpC,cAAQ;AACR,oBAAc,SAAS,YAAY,QAAQ;AAAA,IAC7C;AACA,gBAAY;AAAA,MACV;AAAA,QACE;AAAA,QACA,IAAI,SAAS;AACX,gBAAM,SAAS,cAAc,QAAQ,KAAK,cAAc,UAAU,YAAY;AAC9E,wBAAc,QAAQ;AACtB,sBAAY,QAAQ;AACpB,cAAI;AACF;AACF,qBAAW,GAAG,IAAI;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,WAAO,MAAM;AACX,kBAAY,QAAQ,CAAC,OAAO,GAAG,CAAC;AAAA,IAClC;AAAA,EACF;AACA,SAAO,EAAE,MAAM,eAAe,uBAAuB;AACvD;AAEA,SAAS,eAAe,QAAQ,IAAI,SAAS;AAC3C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEA,SAAS,UAAU,QAAQ,IAAI,SAAS;AACtC,QAAM,OAAO,MAAM,QAAQ,IAAI,SAAS;AACtC,aAAS,MAAM,KAAK,CAAC;AACrB,WAAO,GAAG,GAAG,IAAI;AAAA,EACnB,GAAG,OAAO;AACV,SAAO;AACT;AAEA,SAAS,eAAe,QAAQ,IAAI,UAAU,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,GAAG;AAAA,EACL,IAAI;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,aAAa,eAAe,UAAU,UAAU,OAAO;AAAA,IACzD;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,QAAQ,IAAI,UAAU,CAAC,GAAG;AAClD,MAAI;AACJ,WAAS,WAAW;AAClB,QAAI,CAAC;AACH;AACF,UAAM,KAAK;AACX,gBAAY;AACZ,OAAG;AAAA,EACL;AACA,WAAS,UAAU,UAAU;AAC3B,gBAAY;AAAA,EACd;AACA,QAAM,MAAM,CAAC,OAAO,aAAa;AAC/B,aAAS;AACT,WAAO,GAAG,OAAO,UAAU,SAAS;AAAA,EACtC;AACA,QAAM,MAAM,eAAe,QAAQ,KAAK,OAAO;AAC/C,QAAM,EAAE,cAAc,IAAI;AAC1B,QAAM,UAAU,MAAM;AACpB,QAAI;AACJ,kBAAc,MAAM;AAClB,aAAO,IAAI,gBAAgB,MAAM,GAAG,YAAY,MAAM,CAAC;AAAA,IACzD,CAAC;AACD,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;AACA,SAAS,gBAAgB,SAAS;AAChC,MAAI,WAAW,OAAO;AACpB,WAAO;AACT,MAAI,MAAM,QAAQ,OAAO;AACvB,WAAO,QAAQ,IAAI,CAAC,SAAS,QAAQ,IAAI,CAAC;AAC5C,SAAO,QAAQ,OAAO;AACxB;AACA,SAAS,YAAY,QAAQ;AAC3B,SAAO,MAAM,QAAQ,MAAM,IAAI,OAAO,IAAI,MAAM,MAAM,IAAI;AAC5D;AAEA,SAAS,SAAS,QAAQ,IAAI,SAAS;AACrC,QAAM,OAAO;AAAA,IACX;AAAA,IACA,CAAC,GAAG,IAAI,iBAAiB;AACvB,UAAI,GAAG;AACL,YAAI,WAAW,OAAO,SAAS,QAAQ;AACrC,mBAAS,MAAM,KAAK,CAAC;AACvB,WAAG,GAAG,IAAI,YAAY;AAAA,MACxB;AAAA,IACF;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,MAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO;AACT;;;ACviDA,SAAS,cAAc,oBAAoB,cAAc,cAAc;AACrE,MAAI;AACJ,MAAI,MAAM,YAAY,GAAG;AACvB,cAAU;AAAA,MACR,YAAY;AAAA,IACd;AAAA,EACF,OAAO;AACL,cAAU,gBAAgB,CAAC;AAAA,EAC7B;AACA,QAAM;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,EACZ,IAAI;AACJ,QAAM,UAAU,IAAI,CAAC,IAAI;AACzB,QAAM,UAAU,UAAU,WAAW,YAAY,IAAI,IAAI,YAAY;AACrE,MAAI,UAAU;AACd,cAAY,OAAO,iBAAiB;AAClC,QAAI,CAAC,QAAQ;AACX;AACF;AACA,UAAM,qBAAqB;AAC3B,QAAI,cAAc;AAClB,QAAI,YAAY;AACd,cAAQ,QAAQ,EAAE,KAAK,MAAM;AAC3B,mBAAW,QAAQ;AAAA,MACrB,CAAC;AAAA,IACH;AACA,QAAI;AACF,YAAM,SAAS,MAAM,mBAAmB,CAAC,mBAAmB;AAC1D,qBAAa,MAAM;AACjB,cAAI;AACF,uBAAW,QAAQ;AACrB,cAAI,CAAC;AACH,2BAAe;AAAA,QACnB,CAAC;AAAA,MACH,CAAC;AACD,UAAI,uBAAuB;AACzB,gBAAQ,QAAQ;AAAA,IACpB,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX,UAAE;AACA,UAAI,cAAc,uBAAuB;AACvC,mBAAW,QAAQ;AACrB,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AACD,MAAI,MAAM;AACR,WAAO,SAAS,MAAM;AACpB,cAAQ,QAAQ;AAChB,aAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,eAAe,KAAK,SAAS,eAAe,uBAAuB;AAC1E,MAAI,SAAS,OAAO,GAAG;AACvB,MAAI;AACF,aAAS,OAAO,KAAK,aAAa;AACpC,MAAI;AACF,aAAS,OAAO,KAAK,eAAe,qBAAqB;AAC3D,MAAI,OAAO,YAAY,YAAY;AACjC,WAAO,SAAS,CAAC,QAAQ,QAAQ,QAAQ,GAAG,CAAC;AAAA,EAC/C,OAAO;AACL,WAAO,SAAS;AAAA,MACd,KAAK,CAAC,QAAQ,QAAQ,IAAI,QAAQ,GAAG;AAAA,MACrC,KAAK,QAAQ;AAAA,IACf,CAAC;AAAA,EACH;AACF;AAEA,SAAS,uBAAuB,UAAU,CAAC,GAAG;AAC5C,MAAI,CAAC,UAAU,CAAC,QAAQ,WAAW,MAAM,GAAG;AAC1C,QAAI;AACF,YAAM,IAAI,MAAM,iEAAiE;AACnF;AAAA,EACF;AACA,QAAM;AAAA,IACJ,eAAe;AAAA,EACjB,IAAI;AACJ,QAAM,SAAS,WAAW;AAC1B,QAAM,SAAyB,gBAAgB;AAAA,IAC7C,MAAM,GAAG,EAAE,MAAM,GAAG;AAClB,aAAO,MAAM;AACX,eAAO,QAAQ,MAAM;AAAA,MACvB;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM,QAAwB,gBAAgB;AAAA,IAC5C;AAAA,IACA,MAAM,GAAG,EAAE,OAAO,MAAM,GAAG;AACzB,aAAO,MAAM;AACX,YAAI;AACJ,YAAI,CAAC,OAAO,SAAS;AACnB,gBAAM,IAAI,MAAM,6DAA6D;AAC/E,cAAM,SAAS,KAAK,OAAO,UAAU,OAAO,SAAS,GAAG,KAAK,QAAQ,EAAE,GAAG,qBAAqB,KAAK,GAAG,QAAQ,MAAM,CAAC;AACtH,eAAO,iBAAiB,SAAS,OAAO,SAAS,MAAM,YAAY,IAAI,MAAM,CAAC,IAAI;AAAA,MACpF;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACL,EAAE,QAAQ,MAAM;AAAA,IAChB,CAAC,QAAQ,KAAK;AAAA,EAChB;AACF;AACA,SAAS,qBAAqB,KAAK;AACjC,QAAM,SAAS,CAAC;AAChB,aAAW,OAAO;AAChB,WAAO,SAAS,GAAG,CAAC,IAAI,IAAI,GAAG;AACjC,SAAO;AACT;AAEA,SAAS,sBAAsB,UAAU,CAAC,GAAG;AAC3C,MAAI,CAAC,QAAQ;AACX,QAAI;AACF,YAAM,IAAI,MAAM,8DAA8D;AAChF;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,QAAM,YAAY,IAAI,CAAC,CAAC;AACxB,WAAS,UAAU,MAAM;AACvB,UAAM,QAAQ,gBAAgB;AAAA,MAC5B,KAAK;AAAA,MACL;AAAA,MACA,SAAS;AAAA,MACT,SAAS,MAAM;AAAA,MACf;AAAA,MACA,QAAQ,MAAM;AAAA,MACd;AAAA,MACA,aAAa;AAAA,MACb;AAAA,IACF,CAAC;AACD,cAAU,MAAM,KAAK,KAAK;AAC1B,UAAM,UAAU,IAAI,QAAQ,CAAC,UAAU,YAAY;AACjD,YAAM,UAAU,CAAC,MAAM;AACrB,cAAM,cAAc;AACpB,eAAO,SAAS,CAAC;AAAA,MACnB;AACA,YAAM,SAAS;AAAA,IACjB,CAAC,EAAE,QAAQ,MAAM;AACf,YAAM,UAAU;AAChB,YAAM,SAAS,UAAU,MAAM,QAAQ,KAAK;AAC5C,UAAI,WAAW;AACb,kBAAU,MAAM,OAAO,QAAQ,CAAC;AAAA,IACpC,CAAC;AACD,WAAO,MAAM;AAAA,EACf;AACA,WAAS,SAAS,MAAM;AACtB,QAAI,QAAQ,aAAa,UAAU,MAAM,SAAS;AAChD,aAAO,UAAU,MAAM,CAAC,EAAE;AAC5B,WAAO,OAAO,GAAG,IAAI;AAAA,EACvB;AACA,QAAM,YAA4B,gBAAgB,CAAC,GAAG,EAAE,MAAM,MAAM;AAClE,UAAM,aAAa,MAAM,UAAU,MAAM,IAAI,CAAC,UAAU;AACtD,UAAI;AACJ,aAAO,EAAE,UAAU,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,YAAY,OAAO,SAAS,GAAG,KAAK,OAAO,KAAK,CAAC;AAAA,IACtG,CAAC;AACD,QAAI,QAAQ;AACV,aAAO,MAAM,EAAE,iBAAiB,QAAQ,YAAY,UAAU;AAChE,WAAO;AAAA,EACT,CAAC;AACD,YAAU,QAAQ;AAClB,SAAO;AACT;AAEA,SAAS,cAAc,IAAI;AACzB,SAAO,YAAY,MAAM;AACvB,WAAO,GAAG,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;AAAA,EACnD;AACF;AAEA,IAAM,gBAAgB,WAAW,SAAS;AAC1C,IAAM,kBAAkB,WAAW,OAAO,WAAW;AACrD,IAAM,mBAAmB,WAAW,OAAO,YAAY;AACvD,IAAM,kBAAkB,WAAW,OAAO,WAAW;AAErD,SAAS,aAAa,OAAO;AAC3B,MAAI;AACJ,QAAM,QAAQ,QAAQ,KAAK;AAC3B,UAAQ,KAAK,SAAS,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK;AAClE;AAEA,SAAS,oBAAoB,MAAM;AACjC,MAAI;AACJ,MAAIM;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,OAAO,KAAK,CAAC,MAAM,YAAY,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AACzD,KAACA,SAAQ,WAAW,OAAO,IAAI;AAC/B,aAAS;AAAA,EACX,OAAO;AACL,KAAC,QAAQA,SAAQ,WAAW,OAAO,IAAI;AAAA,EACzC;AACA,MAAI,CAAC;AACH,WAAO;AACT,MAAI,CAAC,MAAM,QAAQA,OAAM;AACvB,IAAAA,UAAS,CAACA,OAAM;AAClB,MAAI,CAAC,MAAM,QAAQ,SAAS;AAC1B,gBAAY,CAAC,SAAS;AACxB,QAAM,WAAW,CAAC;AAClB,QAAM,UAAU,MAAM;AACpB,aAAS,QAAQ,CAAC,OAAO,GAAG,CAAC;AAC7B,aAAS,SAAS;AAAA,EACpB;AACA,QAAM,WAAW,CAAC,IAAI,OAAO,UAAU,aAAa;AAClD,OAAG,iBAAiB,OAAO,UAAU,QAAQ;AAC7C,WAAO,MAAM,GAAG,oBAAoB,OAAO,UAAU,QAAQ;AAAA,EAC/D;AACA,QAAM,YAAY;AAAA,IAChB,MAAM,CAAC,aAAa,MAAM,GAAG,QAAQ,OAAO,CAAC;AAAA,IAC7C,CAAC,CAAC,IAAI,QAAQ,MAAM;AAClB,cAAQ;AACR,UAAI,CAAC;AACH;AACF,YAAM,eAAe,SAAS,QAAQ,IAAI,EAAE,GAAG,SAAS,IAAI;AAC5D,eAAS;AAAA,QACP,GAAGA,QAAO,QAAQ,CAAC,UAAU;AAC3B,iBAAO,UAAU,IAAI,CAAC,aAAa,SAAS,IAAI,OAAO,UAAU,YAAY,CAAC;AAAA,QAChF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,EAAE,WAAW,MAAM,OAAO,OAAO;AAAA,EACnC;AACA,QAAM,OAAO,MAAM;AACjB,cAAU;AACV,YAAQ;AAAA,EACV;AACA,oBAAkB,IAAI;AACtB,SAAO;AACT;AAEA,IAAI,iBAAiB;AACrB,SAAS,eAAe,QAAQ,SAAS,UAAU,CAAC,GAAG;AACrD,QAAM,EAAE,QAAAC,UAAS,eAAe,SAAS,CAAC,GAAG,UAAU,MAAM,eAAe,MAAM,IAAI;AACtF,MAAI,CAACA;AACH,WAAO;AACT,MAAI,SAAS,CAAC,gBAAgB;AAC5B,qBAAiB;AACjB,UAAM,KAAKA,QAAO,SAAS,KAAK,QAAQ,EAAE,QAAQ,CAAC,OAAO,GAAG,iBAAiB,SAAS,IAAI,CAAC;AAC5F,IAAAA,QAAO,SAAS,gBAAgB,iBAAiB,SAAS,IAAI;AAAA,EAChE;AACA,MAAI,eAAe;AACnB,QAAM,eAAe,CAAC,UAAU;AAC9B,WAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,YAAY;AACvC,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO,MAAM,KAAKA,QAAO,SAAS,iBAAiB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,OAAO,MAAM,UAAU,MAAM,aAAa,EAAE,SAAS,EAAE,CAAC;AAAA,MACpI,OAAO;AACL,cAAM,KAAK,aAAa,OAAO;AAC/B,eAAO,OAAO,MAAM,WAAW,MAAM,MAAM,aAAa,EAAE,SAAS,EAAE;AAAA,MACvE;AAAA,IACF,CAAC;AAAA,EACH;AACA,QAAM,WAAW,CAAC,UAAU;AAC1B,UAAM,KAAK,aAAa,MAAM;AAC9B,QAAI,CAAC,MAAM,OAAO,MAAM,UAAU,MAAM,aAAa,EAAE,SAAS,EAAE;AAChE;AACF,QAAI,MAAM,WAAW;AACnB,qBAAe,CAAC,aAAa,KAAK;AACpC,QAAI,CAAC,cAAc;AACjB,qBAAe;AACf;AAAA,IACF;AACA,YAAQ,KAAK;AAAA,EACf;AACA,MAAI,oBAAoB;AACxB,QAAM,UAAU;AAAA,IACd,iBAAiBA,SAAQ,SAAS,CAAC,UAAU;AAC3C,UAAI,CAAC,mBAAmB;AACtB,4BAAoB;AACpB,mBAAW,MAAM;AACf,8BAAoB;AAAA,QACtB,GAAG,CAAC;AACJ,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF,GAAG,EAAE,SAAS,MAAM,QAAQ,CAAC;AAAA,IAC7B,iBAAiBA,SAAQ,eAAe,CAAC,MAAM;AAC7C,YAAM,KAAK,aAAa,MAAM;AAC9B,qBAAe,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE;AAAA,IAC3E,GAAG,EAAE,SAAS,KAAK,CAAC;AAAA,IACpB,gBAAgB,iBAAiBA,SAAQ,QAAQ,CAAC,UAAU;AAC1D,iBAAW,MAAM;AACf,YAAI;AACJ,cAAM,KAAK,aAAa,MAAM;AAC9B,cAAM,KAAKA,QAAO,SAAS,kBAAkB,OAAO,SAAS,GAAG,aAAa,YAAY,EAAE,MAAM,OAAO,SAAS,GAAG,SAASA,QAAO,SAAS,aAAa,IAAI;AAC5J,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF,GAAG,CAAC;AAAA,IACN,CAAC;AAAA,EACH,EAAE,OAAO,OAAO;AAChB,QAAM,OAAO,MAAM,QAAQ,QAAQ,CAAC,OAAO,GAAG,CAAC;AAC/C,SAAO;AACT;AAEA,SAAS,mBAAmB,WAAW;AACrC,MAAI,OAAO,cAAc;AACvB,WAAO;AAAA,WACA,OAAO,cAAc;AAC5B,WAAO,CAAC,UAAU,MAAM,QAAQ;AAAA,WACzB,MAAM,QAAQ,SAAS;AAC9B,WAAO,CAAC,UAAU,UAAU,SAAS,MAAM,GAAG;AAChD,SAAO,MAAM;AACf;AACA,SAAS,eAAe,MAAM;AAC5B,MAAI;AACJ,MAAI;AACJ,MAAI,UAAU,CAAC;AACf,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,KAAK,CAAC;AACZ,cAAU,KAAK,CAAC;AAChB,cAAU,KAAK,CAAC;AAAA,EAClB,WAAW,KAAK,WAAW,GAAG;AAC5B,QAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAC/B,YAAM;AACN,gBAAU,KAAK,CAAC;AAChB,gBAAU,KAAK,CAAC;AAAA,IAClB,OAAO;AACL,YAAM,KAAK,CAAC;AACZ,gBAAU,KAAK,CAAC;AAAA,IAClB;AAAA,EACF,OAAO;AACL,UAAM;AACN,cAAU,KAAK,CAAC;AAAA,EAClB;AACA,QAAM;AAAA,IACJ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,SAAS;AAAA,EACX,IAAI;AACJ,QAAM,YAAY,mBAAmB,GAAG;AACxC,QAAM,WAAW,CAAC,MAAM;AACtB,QAAI,EAAE,UAAU,QAAQ,MAAM;AAC5B;AACF,QAAI,UAAU,CAAC;AACb,cAAQ,CAAC;AAAA,EACb;AACA,SAAO,iBAAiB,QAAQ,WAAW,UAAU,OAAO;AAC9D;AACA,SAAS,UAAU,KAAK,SAAS,UAAU,CAAC,GAAG;AAC7C,SAAO,YAAY,KAAK,SAAS,EAAE,GAAG,SAAS,WAAW,UAAU,CAAC;AACvE;AACA,SAAS,aAAa,KAAK,SAAS,UAAU,CAAC,GAAG;AAChD,SAAO,YAAY,KAAK,SAAS,EAAE,GAAG,SAAS,WAAW,WAAW,CAAC;AACxE;AACA,SAAS,QAAQ,KAAK,SAAS,UAAU,CAAC,GAAG;AAC3C,SAAO,YAAY,KAAK,SAAS,EAAE,GAAG,SAAS,WAAW,QAAQ,CAAC;AACrE;AAEA,IAAM,gBAAgB;AACtB,IAAM,oBAAoB;AAC1B,SAAS,YAAY,QAAQ,SAAS,SAAS;AAC7C,MAAI,IAAI;AACR,QAAM,aAAa,SAAS,MAAM,aAAa,MAAM,CAAC;AACtD,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,iBAAiB;AACrB,WAAS,QAAQ;AACf,QAAI,SAAS;AACX,mBAAa,OAAO;AACpB,gBAAU;AAAA,IACZ;AACA,eAAW;AACX,qBAAiB;AACjB,qBAAiB;AAAA,EACnB;AACA,WAAS,UAAU,IAAI;AACrB,QAAI,KAAK,KAAK;AACd,UAAM,CAAC,iBAAiB,WAAW,eAAe,IAAI,CAAC,gBAAgB,UAAU,cAAc;AAC/F,UAAM;AACN,QAAI,EAAE,WAAW,OAAO,SAAS,QAAQ,cAAc,CAAC,aAAa,CAAC;AACpE;AACF,UAAM,MAAM,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,IAAI,SAAS,GAAG,WAAW,WAAW;AACjH;AACF,SAAK,MAAM,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,IAAI;AAC9E,SAAG,eAAe;AACpB,SAAK,KAAK,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,GAAG;AAC5E,SAAG,gBAAgB;AACrB,UAAM,KAAK,GAAG,IAAI,UAAU;AAC5B,UAAM,KAAK,GAAG,IAAI,UAAU;AAC5B,UAAM,WAAW,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AAC5C,YAAQ,UAAU,GAAG,YAAY,iBAAiB,UAAU,eAAe;AAAA,EAC7E;AACA,WAAS,OAAO,IAAI;AAClB,QAAI,KAAK,KAAK,IAAI;AAClB,UAAM,MAAM,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,IAAI,SAAS,GAAG,WAAW,WAAW;AACjH;AACF,UAAM;AACN,SAAK,MAAM,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,IAAI;AAC9E,SAAG,eAAe;AACpB,SAAK,KAAK,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,GAAG;AAC5E,SAAG,gBAAgB;AACrB,eAAW;AAAA,MACT,GAAG,GAAG;AAAA,MACN,GAAG,GAAG;AAAA,IACR;AACA,qBAAiB,GAAG;AACpB,cAAU;AAAA,MACR,MAAM;AACJ,yBAAiB;AACjB,gBAAQ,EAAE;AAAA,MACZ;AAAA,OACC,KAAK,WAAW,OAAO,SAAS,QAAQ,UAAU,OAAO,KAAK;AAAA,IACjE;AAAA,EACF;AACA,WAAS,OAAO,IAAI;AAClB,QAAI,KAAK,KAAK,IAAI;AAClB,UAAM,MAAM,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,IAAI,SAAS,GAAG,WAAW,WAAW;AACjH;AACF,QAAI,CAAC,aAAa,WAAW,OAAO,SAAS,QAAQ,uBAAuB;AAC1E;AACF,SAAK,MAAM,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,IAAI;AAC9E,SAAG,eAAe;AACpB,SAAK,KAAK,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,GAAG;AAC5E,SAAG,gBAAgB;AACrB,UAAM,KAAK,GAAG,IAAI,SAAS;AAC3B,UAAM,KAAK,GAAG,IAAI,SAAS;AAC3B,UAAM,WAAW,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AAC5C,QAAI,cAAc,KAAK,WAAW,OAAO,SAAS,QAAQ,sBAAsB,OAAO,KAAK;AAC1F,YAAM;AAAA,EACV;AACA,QAAM,kBAAkB;AAAA,IACtB,UAAU,KAAK,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,GAAG;AAAA,IACnF,OAAO,KAAK,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,SAAS,GAAG;AAAA,EAClF;AACA,QAAM,UAAU;AAAA,IACd,iBAAiB,YAAY,eAAe,QAAQ,eAAe;AAAA,IACnE,iBAAiB,YAAY,eAAe,QAAQ,eAAe;AAAA,IACnE,iBAAiB,YAAY,CAAC,aAAa,cAAc,GAAG,WAAW,eAAe;AAAA,EACxF;AACA,QAAM,OAAO,MAAM,QAAQ,QAAQ,CAAC,OAAO,GAAG,CAAC;AAC/C,SAAO;AACT;AAEA,SAAS,2BAA2B;AAClC,QAAM,EAAE,eAAe,KAAK,IAAI;AAChC,MAAI,CAAC;AACH,WAAO;AACT,MAAI,kBAAkB;AACpB,WAAO;AACT,UAAQ,cAAc,SAAS;AAAA,IAC7B,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,EACX;AACA,SAAO,cAAc,aAAa,iBAAiB;AACrD;AACA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,MAAI,WAAW,WAAW;AACxB,WAAO;AACT,MAAI,WAAW,MAAM,WAAW;AAC9B,WAAO;AACT,MAAI,WAAW,MAAM,WAAW;AAC9B,WAAO;AACT,MAAI,WAAW,MAAM,WAAW;AAC9B,WAAO;AACT,SAAO;AACT;AACA,SAAS,cAAc,UAAU,UAAU,CAAC,GAAG;AAC7C,QAAM,EAAE,UAAU,YAAY,gBAAgB,IAAI;AAClD,QAAM,UAAU,CAAC,UAAU;AACzB,QAAI,CAAC,yBAAyB,KAAK,iBAAiB,KAAK,GAAG;AAC1D,eAAS,KAAK;AAAA,IAChB;AAAA,EACF;AACA,MAAI;AACF,qBAAiB,WAAW,WAAW,SAAS,EAAE,SAAS,KAAK,CAAC;AACrE;AAEA,SAAS,YAAY,KAAK,eAAe,MAAM;AAC7C,QAAM,WAAW,mBAAmB;AACpC,MAAI,WAAW,MAAM;AAAA,EACrB;AACA,QAAM,UAAU,UAAU,CAAC,OAAO,YAAY;AAC5C,eAAW;AACX,WAAO;AAAA,MACL,MAAM;AACJ,YAAI,IAAI;AACR,cAAM;AACN,gBAAQ,MAAM,KAAK,YAAY,OAAO,SAAS,SAAS,UAAU,OAAO,SAAS,GAAG,MAAM,GAAG,MAAM,OAAO,KAAK;AAAA,MAClH;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACD,eAAa,QAAQ;AACrB,YAAU,QAAQ;AAClB,SAAO;AACT;AAEA,SAAS,aAAa;AACpB,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,WAAW,mBAAmB;AACpC,MAAI,UAAU;AACZ,cAAU,MAAM;AACd,gBAAU,QAAQ;AAAA,IACpB,GAAG,SAAS,SAAS,QAAQ;AAAA,EAC/B;AACA,SAAO;AACT;AAEA,SAAS,aAAa,UAAU;AAC9B,QAAM,YAAY,WAAW;AAC7B,SAAO,SAAS,MAAM;AACpB,cAAU;AACV,WAAO,QAAQ,SAAS,CAAC;AAAA,EAC3B,CAAC;AACH;AAEA,SAAS,oBAAoB,QAAQ,UAAU,UAAU,CAAC,GAAG;AAC3D,QAAM,EAAE,QAAAA,UAAS,eAAe,GAAG,gBAAgB,IAAI;AACvD,MAAI;AACJ,QAAM,cAAc,aAAa,MAAMA,WAAU,sBAAsBA,OAAM;AAC7E,QAAM,UAAU,MAAM;AACpB,QAAI,UAAU;AACZ,eAAS,WAAW;AACpB,iBAAW;AAAA,IACb;AAAA,EACF;AACA,QAAM,UAAU,SAAS,MAAM;AAC7B,UAAM,QAAQ,QAAQ,MAAM;AAC5B,UAAM,SAAS,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,OAAO,UAAU;AAC1F,WAAO,IAAI,IAAI,KAAK;AAAA,EACtB,CAAC;AACD,QAAM,YAAY;AAAA,IAChB,MAAM,QAAQ;AAAA,IACd,CAAC,aAAa;AACZ,cAAQ;AACR,UAAI,YAAY,SAAS,SAAS,MAAM;AACtC,mBAAW,IAAI,iBAAiB,QAAQ;AACxC,iBAAS,QAAQ,CAAC,OAAO,SAAS,QAAQ,IAAI,eAAe,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,IACA,EAAE,WAAW,MAAM,OAAO,OAAO;AAAA,EACnC;AACA,QAAM,cAAc,MAAM;AACxB,WAAO,YAAY,OAAO,SAAS,SAAS,YAAY;AAAA,EAC1D;AACA,QAAM,OAAO,MAAM;AACjB,cAAU;AACV,YAAQ;AAAA,EACV;AACA,oBAAkB,IAAI;AACtB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,UAAU,CAAC,GAAG;AACtC,MAAI;AACJ,QAAM;AAAA,IACJ,QAAAA,UAAS;AAAA,IACT,OAAO;AAAA,IACP,mBAAmB;AAAA,EACrB,IAAI;AACJ,QAAMC,aAAY,KAAK,QAAQ,aAAa,OAAO,KAAKD,WAAU,OAAO,SAASA,QAAO;AACzF,QAAM,uBAAuB,MAAM;AACjC,QAAI;AACJ,QAAI,UAAUC,aAAY,OAAO,SAASA,UAAS;AACnD,QAAI,MAAM;AACR,aAAO,WAAW,OAAO,SAAS,QAAQ;AACxC,mBAAW,MAAM,WAAW,OAAO,SAAS,QAAQ,eAAe,OAAO,SAAS,IAAI;AAAA,IAC3F;AACA,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,IAAI;AAC1B,QAAM,UAAU,MAAM;AACpB,kBAAc,QAAQ,qBAAqB;AAAA,EAC7C;AACA,MAAID,SAAQ;AACV,qBAAiBA,SAAQ,QAAQ,CAAC,UAAU;AAC1C,UAAI,MAAM,kBAAkB;AAC1B;AACF,cAAQ;AAAA,IACV,GAAG,IAAI;AACP,qBAAiBA,SAAQ,SAAS,SAAS,IAAI;AAAA,EACjD;AACA,MAAI,kBAAkB;AACpB,wBAAoBC,WAAU,CAAC,cAAc;AAC3C,gBAAU,OAAO,CAAC,MAAM,EAAE,aAAa,MAAM,EAAE,IAAI,CAAC,MAAM,MAAM,KAAK,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS;AAC7G,YAAI,SAAS,cAAc;AACzB,kBAAQ;AAAA,MACZ,CAAC;AAAA,IACH,GAAG;AAAA,MACD,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,UAAQ;AACR,SAAO;AACT;AAEA,SAAS,SAAS,IAAI,UAAU,CAAC,GAAG;AAClC,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,QAAAD,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,gBAAgB,WAAW,MAAM,WAAW;AAClD,MAAI,yBAAyB;AAC7B,MAAI,QAAQ;AACZ,WAAS,KAAKE,YAAW;AACvB,QAAI,CAAC,SAAS,SAAS,CAACF;AACtB;AACF,QAAI,CAAC;AACH,+BAAyBE;AAC3B,UAAM,QAAQA,aAAY;AAC1B,QAAI,iBAAiB,QAAQ,eAAe;AAC1C,cAAQF,QAAO,sBAAsB,IAAI;AACzC;AAAA,IACF;AACA,6BAAyBE;AACzB,OAAG,EAAE,OAAO,WAAAA,WAAU,CAAC;AACvB,YAAQF,QAAO,sBAAsB,IAAI;AAAA,EAC3C;AACA,WAAS,SAAS;AAChB,QAAI,CAAC,SAAS,SAASA,SAAQ;AAC7B,eAAS,QAAQ;AACjB,+BAAyB;AACzB,cAAQA,QAAO,sBAAsB,IAAI;AAAA,IAC3C;AAAA,EACF;AACA,WAAS,QAAQ;AACf,aAAS,QAAQ;AACjB,QAAI,SAAS,QAAQA,SAAQ;AAC3B,MAAAA,QAAO,qBAAqB,KAAK;AACjC,cAAQ;AAAA,IACV;AAAA,EACF;AACA,MAAI;AACF,WAAO;AACT,oBAAkB,KAAK;AACvB,SAAO;AAAA,IACL,UAAU,SAAS,QAAQ;AAAA,IAC3B;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW,QAAQ,WAAW,SAAS;AAC9C,MAAI;AACJ,MAAI;AACJ,MAAI,SAAS,OAAO,GAAG;AACrB,aAAS;AACT,qBAAiB,WAAW,SAAS,CAAC,UAAU,aAAa,gBAAgB,WAAW,WAAW,SAAS,CAAC;AAAA,EAC/G,OAAO;AACL,aAAS,EAAE,UAAU,QAAQ;AAC7B,qBAAiB;AAAA,EACnB;AACA,QAAM;AAAA,IACJ,QAAAA,UAAS;AAAA,IACT,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,cAAc,gBAAgB;AAAA,IAC9B;AAAA,IACA,UAAU,CAAC,MAAM;AACf,cAAQ,MAAM,CAAC;AAAA,IACjB;AAAA,EACF,IAAI;AACJ,QAAM,cAAc,aAAa,MAAMA,WAAU,eAAe,aAAa,YAAY,SAAS;AAClG,QAAM,UAAU,WAAW,MAAM;AACjC,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,WAAW;AAAA,IACX,aAAa;AAAA,IACb,UAAU;AAAA,IACV,cAAc;AAAA,IACd,SAAS;AAAA,IACT,WAAW,YAAY,SAAS;AAAA,IAChC,cAAc;AAAA,EAChB,CAAC;AACD,QAAM,UAAU,SAAS,MAAM,MAAM,OAAO;AAC5C,QAAM,YAAY,SAAS,MAAM,MAAM,SAAS;AAChD,QAAM,eAAe,SAAS,MAAM,MAAM,YAAY;AACtD,QAAM,YAAY,SAAS;AAAA,IACzB,MAAM;AACJ,aAAO,MAAM;AAAA,IACf;AAAA,IACA,IAAI,OAAO;AACT,YAAM,YAAY;AAClB,UAAI,QAAQ;AACV,gBAAQ,MAAM,YAAY;AAAA,IAC9B;AAAA,EACF,CAAC;AACD,QAAM,cAAc,SAAS;AAAA,IAC3B,MAAM;AACJ,aAAO,MAAM;AAAA,IACf;AAAA,IACA,IAAI,OAAO;AACT,YAAM,cAAc;AACpB,UAAI,QAAQ,OAAO;AACjB,gBAAQ,MAAM,cAAc;AAC5B,mBAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM,WAAW,SAAS;AAAA,IACxB,MAAM;AACJ,aAAO,MAAM;AAAA,IACf;AAAA,IACA,IAAI,OAAO;AACT,YAAM,WAAW;AACjB,UAAI,QAAQ;AACV,gBAAQ,MAAM,WAAW;AAAA,IAC7B;AAAA,EACF,CAAC;AACD,QAAM,eAAe,SAAS;AAAA,IAC5B,MAAM;AACJ,aAAO,MAAM;AAAA,IACf;AAAA,IACA,IAAI,OAAO;AACT,YAAM,eAAe;AACrB,UAAI,QAAQ;AACV,gBAAQ,MAAM,eAAe;AAAA,IACjC;AAAA,EACF,CAAC;AACD,QAAM,OAAO,MAAM;AACjB,QAAI,QAAQ,OAAO;AACjB,UAAI;AACF,gBAAQ,MAAM,KAAK;AACnB,mBAAW;AAAA,MACb,SAAS,GAAG;AACV,kBAAU;AACV,gBAAQ,CAAC;AAAA,MACX;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,QAAQ,MAAM;AAClB,QAAI;AACJ,QAAI;AACF,OAAC,KAAK,QAAQ,UAAU,OAAO,SAAS,GAAG,MAAM;AACjD,gBAAU;AAAA,IACZ,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,QAAM,UAAU,MAAM;AACpB,QAAI;AACJ,QAAI,CAAC,QAAQ;AACX,aAAO;AACT,QAAI;AACF,OAAC,KAAK,QAAQ,UAAU,OAAO,SAAS,GAAG,QAAQ;AACnD,iBAAW;AAAA,IACb,SAAS,GAAG;AACV,gBAAU;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,QAAM,SAAS,MAAM;AACnB,QAAI;AACJ,QAAI;AACF,OAAC,KAAK,QAAQ,UAAU,OAAO,SAAS,GAAG,OAAO;AAClD,gBAAU;AAAA,IACZ,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,QAAM,SAAS,MAAM;AACnB,QAAI;AACJ,QAAI;AACF,OAAC,KAAK,QAAQ,UAAU,OAAO,SAAS,GAAG,OAAO;AAClD,gBAAU;AAAA,IACZ,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,QAAM,MAAM,aAAa,MAAM,GAAG,CAAC,OAAO;AACxC,QAAI;AACF,aAAO;AAAA,EACX,CAAC;AACD,QAAM,MAAM,WAAW,CAAC,UAAU;AAChC,QAAI,QAAQ;AACV,aAAO;AACT,QAAI,CAAC,aAAa,MAAM,KAAK,QAAQ,OAAO;AAC1C,cAAQ,MAAM,SAAS,IAAI;AAAA,QACzB,aAAa,MAAM;AAAA,QACnB,QAAQ,KAAK;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,EAAE,MAAM,KAAK,CAAC;AACjB,eAAa,MAAM,OAAO,IAAI,GAAG,KAAK;AACtC,oBAAkB,MAAM;AACxB,WAAS,OAAO,MAAM;AACpB,UAAM,KAAK,aAAa,MAAM;AAC9B,QAAI,CAAC,YAAY,SAAS,CAAC;AACzB;AACF,QAAI,CAAC,QAAQ;AACX,cAAQ,QAAQ,GAAG,QAAQ,QAAQ,SAAS,GAAG,cAAc;AAC/D,QAAI;AACF,cAAQ,MAAM,QAAQ;AACxB,QAAI,kBAAkB;AACpB,cAAQ,MAAM,eAAe;AAC/B,QAAI,QAAQ,CAAC;AACX,cAAQ,MAAM,MAAM;AAAA;AAEpB,iBAAW;AACb,eAAW,OAAO,SAAS,QAAQ,QAAQ,KAAK;AAAA,EAClD;AACA,mBAAiB,SAAS,CAAC,UAAU,UAAU,QAAQ,GAAG,SAAS;AACnE,mBAAiB,SAAS,UAAU,MAAM;AACxC,QAAI;AACJ,QAAI;AACF,OAAC,KAAK,QAAQ,UAAU,OAAO,SAAS,GAAG,aAAa;AAAA,EAC5D,CAAC;AACD,QAAM,EAAE,QAAQ,WAAW,OAAO,SAAS,IAAI,SAAS,MAAM;AAC5D,QAAI,CAAC,QAAQ;AACX;AACF,UAAM,UAAU,QAAQ,MAAM;AAC9B,UAAM,YAAY,QAAQ,MAAM;AAChC,UAAM,eAAe,QAAQ,MAAM;AACnC,UAAM,YAAY,QAAQ,MAAM;AAChC,UAAM,cAAc,QAAQ,MAAM;AAClC,UAAM,WAAW,QAAQ,MAAM;AAC/B,UAAM,eAAe,QAAQ,MAAM;AAAA,EACrC,GAAG,EAAE,WAAW,MAAM,CAAC;AACvB,WAAS,aAAa;AACpB,QAAI,YAAY;AACd,gBAAU;AAAA,EACd;AACA,WAAS,YAAY;AACnB,QAAI,YAAY,SAASA;AACvB,MAAAA,QAAO,sBAAsB,QAAQ;AAAA,EACzC;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,OAAO,SAAS;AACrC,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,aAAa;AAAA,IACb;AAAA,EACF,IAAI,WAAW,CAAC;AAChB,QAAM,eAAe;AAAA,IACnB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AACA,QAAM,gBAAgB,MAAM,KAAK,MAAM,KAAK,EAAE,QAAQ,MAAM,OAAO,CAAC,GAAG,OAAO,EAAE,OAAO,aAAa,SAAS,MAAM,KAAK,EAAE;AAC1H,QAAM,SAAS,SAAS,aAAa;AACrC,QAAM,cAAc,IAAI,EAAE;AAC1B,MAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC,eAAW;AACX,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,WAAS,aAAa,OAAO,KAAK;AAChC,gBAAY;AACZ,WAAO,YAAY,KAAK,EAAE,OAAO;AACjC,WAAO,YAAY,KAAK,EAAE,QAAQ;AAAA,EACpC;AACA,QAAM,OAAO,CAAC,MAAM,SAAS;AAC3B,WAAO,KAAK,KAAK,CAAC,YAAY;AAC5B,UAAI;AACJ,UAAI,UAAU,OAAO,SAAS,OAAO,SAAS;AAC5C,qBAAa,aAAa,SAAS,IAAI,MAAM,SAAS,CAAC;AACvD;AAAA,MACF;AACA,YAAM,KAAK,OAAO,YAAY,KAAK,MAAM,OAAO,SAAS,GAAG,WAAW,aAAa,YAAY,WAAW;AACzG,mBAAW;AACX;AAAA,MACF;AACA,YAAM,OAAO,KAAK,OAAO,EAAE,KAAK,CAAC,eAAe;AAC9C,qBAAa,aAAa,WAAW,UAAU;AAC/C,YAAI,YAAY,UAAU,MAAM,SAAS;AACvC,qBAAW;AACb,eAAO;AAAA,MACT,CAAC;AACD,UAAI,CAAC;AACH,eAAO;AACT,aAAO,QAAQ,KAAK,CAAC,MAAM,YAAY,MAAM,CAAC,CAAC;AAAA,IACjD,CAAC,EAAE,MAAM,CAAC,MAAM;AACd,UAAI,UAAU,OAAO,SAAS,OAAO,SAAS;AAC5C,qBAAa,aAAa,SAAS,CAAC;AACpC,eAAO;AAAA,MACT;AACA,mBAAa,aAAa,UAAU,CAAC;AACrC,cAAQ;AACR,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,QAAQ,QAAQ,CAAC;AACpB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AACA,SAAS,YAAY,QAAQ;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,QAAQ,IAAI,MAAM,SAAS;AACjC,QAAI,OAAO;AACT,aAAO,KAAK;AAAA;AAEZ,aAAO,iBAAiB,SAAS,MAAM,OAAO,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,EACxE,CAAC;AACH;AAEA,SAAS,cAAc,SAAS,cAAc,SAAS;AACrD,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV;AAAA,EACF,IAAI,WAAW,OAAO,UAAU,CAAC;AACjC,QAAM,QAAQ,UAAU,WAAW,YAAY,IAAI,IAAI,YAAY;AACnE,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,QAAQ,WAAW,MAAM;AAC/B,iBAAe,QAAQ,SAAS,MAAM,MAAM;AAC1C,QAAI;AACF,YAAM,QAAQ;AAChB,UAAM,QAAQ;AACd,YAAQ,QAAQ;AAChB,cAAU,QAAQ;AAClB,QAAI,SAAS;AACX,YAAM,eAAe,MAAM;AAC7B,UAAM,WAAW,OAAO,YAAY,aAAa,QAAQ,GAAG,IAAI,IAAI;AACpE,QAAI;AACF,YAAM,OAAO,MAAM;AACnB,YAAM,QAAQ;AACd,cAAQ,QAAQ;AAChB,gBAAU,IAAI;AAAA,IAChB,SAAS,GAAG;AACV,YAAM,QAAQ;AACd,cAAQ,CAAC;AACT,UAAI;AACF,cAAM;AAAA,IACV,UAAE;AACA,gBAAU,QAAQ;AAAA,IACpB;AACA,WAAO,MAAM;AAAA,EACf;AACA,MAAI;AACF,YAAQ,KAAK;AACf,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,WAAS,oBAAoB;AAC3B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,QAAQ,KAAK,CAAC,EAAE,MAAM,MAAM;AAAA,IACtE,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,KAAK,aAAa,YAAY;AAC5B,aAAO,kBAAkB,EAAE,KAAK,aAAa,UAAU;AAAA,IACzD;AAAA,EACF;AACF;AAEA,IAAM,WAAW;AAAA,EACf,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;AAAA,EAC9B,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;AAAA,EAC/B,KAAK,CAAC,MAAM,KAAK,UAAU,MAAM,KAAK,CAAC,CAAC;AAAA,EACxC,KAAK,CAAC,MAAM,KAAK,UAAU,OAAO,YAAY,CAAC,CAAC;AAAA,EAChD,MAAM,MAAM;AACd;AACA,SAAS,wBAAwB,QAAQ;AACvC,MAAI,CAAC;AACH,WAAO,SAAS;AAClB,MAAI,kBAAkB;AACpB,WAAO,SAAS;AAAA,WACT,kBAAkB;AACzB,WAAO,SAAS;AAAA,WACT,MAAM,QAAQ,MAAM;AAC3B,WAAO,SAAS;AAAA;AAEhB,WAAO,SAAS;AACpB;AAEA,SAAS,UAAU,QAAQ,SAAS;AAClC,QAAM,SAAS,IAAI,EAAE;AACrB,QAAM,UAAU,IAAI;AACpB,WAAS,UAAU;AACjB,QAAI,CAAC;AACH;AACF,YAAQ,QAAQ,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC/C,UAAI;AACF,cAAM,UAAU,QAAQ,MAAM;AAC9B,YAAI,WAAW,MAAM;AACnB,kBAAQ,EAAE;AAAA,QACZ,WAAW,OAAO,YAAY,UAAU;AACtC,kBAAQ,aAAa,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE,MAAM,aAAa,CAAC,CAAC,CAAC;AAAA,QACnE,WAAW,mBAAmB,MAAM;AAClC,kBAAQ,aAAa,OAAO,CAAC;AAAA,QAC/B,WAAW,mBAAmB,aAAa;AACzC,kBAAQ,OAAO,KAAK,OAAO,aAAa,GAAG,IAAI,WAAW,OAAO,CAAC,CAAC,CAAC;AAAA,QACtE,WAAW,mBAAmB,mBAAmB;AAC/C,kBAAQ,QAAQ,UAAU,WAAW,OAAO,SAAS,QAAQ,MAAM,WAAW,OAAO,SAAS,QAAQ,OAAO,CAAC;AAAA,QAChH,WAAW,mBAAmB,kBAAkB;AAC9C,gBAAM,MAAM,QAAQ,UAAU,KAAK;AACnC,cAAI,cAAc;AAClB,oBAAU,GAAG,EAAE,KAAK,MAAM;AACxB,kBAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,kBAAM,MAAM,OAAO,WAAW,IAAI;AAClC,mBAAO,QAAQ,IAAI;AACnB,mBAAO,SAAS,IAAI;AACpB,gBAAI,UAAU,KAAK,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AACpD,oBAAQ,OAAO,UAAU,WAAW,OAAO,SAAS,QAAQ,MAAM,WAAW,OAAO,SAAS,QAAQ,OAAO,CAAC;AAAA,UAC/G,CAAC,EAAE,MAAM,MAAM;AAAA,QACjB,WAAW,OAAO,YAAY,UAAU;AACtC,gBAAM,gBAAgB,WAAW,OAAO,SAAS,QAAQ,eAAe,wBAAwB,OAAO;AACvG,gBAAM,aAAa,aAAa,OAAO;AACvC,iBAAO,QAAQ,aAAa,IAAI,KAAK,CAAC,UAAU,GAAG,EAAE,MAAM,mBAAmB,CAAC,CAAC,CAAC;AAAA,QACnF,OAAO;AACL,iBAAO,IAAI,MAAM,6BAA6B,CAAC;AAAA,QACjD;AAAA,MACF,SAAS,OAAO;AACd,eAAO,KAAK;AAAA,MACd;AAAA,IACF,CAAC;AACD,YAAQ,MAAM,KAAK,CAAC,QAAQ,OAAO,QAAQ,GAAG;AAC9C,WAAO,QAAQ;AAAA,EACjB;AACA,MAAI,MAAM,MAAM,KAAK,OAAO,WAAW;AACrC,UAAM,QAAQ,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA;AAE1C,YAAQ;AACV,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AACA,SAAS,UAAU,KAAK;AACtB,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI,CAAC,IAAI,UAAU;AACjB,UAAI,SAAS,MAAM;AACjB,gBAAQ;AAAA,MACV;AACA,UAAI,UAAU;AAAA,IAChB,OAAO;AACL,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACH;AACA,SAAS,aAAa,MAAM;AAC1B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,KAAK,IAAI,WAAW;AAC1B,OAAG,SAAS,CAAC,MAAM;AACjB,cAAQ,EAAE,OAAO,MAAM;AAAA,IACzB;AACA,OAAG,UAAU;AACb,OAAG,cAAc,IAAI;AAAA,EACvB,CAAC;AACH;AAEA,SAAS,WAAW,UAAU,CAAC,GAAG;AAChC,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAMD,UAAS,CAAC,kBAAkB,sBAAsB,yBAAyB,aAAa;AAC9F,QAAM,cAAc,aAAa,MAAM,aAAa,gBAAgB,aAAa,OAAO,UAAU,eAAe,UAAU;AAC3H,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,eAAe,IAAI,CAAC;AAC1B,QAAM,kBAAkB,IAAI,CAAC;AAC7B,QAAM,QAAQ,IAAI,CAAC;AACnB,MAAI;AACJ,WAAS,oBAAoB;AAC3B,aAAS,QAAQ,KAAK;AACtB,iBAAa,QAAQ,KAAK,gBAAgB;AAC1C,oBAAgB,QAAQ,KAAK,mBAAmB;AAChD,UAAM,QAAQ,KAAK;AAAA,EACrB;AACA,MAAI,YAAY,OAAO;AACrB,cAAU,WAAW,EAAE,KAAK,CAAC,aAAa;AACxC,gBAAU;AACV,wBAAkB,KAAK,OAAO;AAC9B,uBAAiB,SAASA,SAAQ,mBAAmB,EAAE,SAAS,KAAK,CAAC;AAAA,IACxE,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,aAAa,SAAS;AAC7B,MAAI;AAAA,IACF,mBAAmB;AAAA,EACrB,IAAI,WAAW,CAAC;AAChB,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,mBAAmB;AAAA,IACnB,YAAY;AAAA,EACd,IAAI,WAAW,CAAC;AAChB,QAAM,cAAc,aAAa,MAAM,aAAa,eAAe,SAAS;AAC5E,QAAM,SAAS,WAAW,MAAM;AAChC,QAAM,QAAQ,WAAW,IAAI;AAC7B,QAAM,QAAQ,MAAM;AAClB,iCAA6B;AAAA,EAC/B,CAAC;AACD,iBAAe,gBAAgB;AAC7B,QAAI,CAAC,YAAY;AACf;AACF,UAAM,QAAQ;AACd,QAAI,WAAW,QAAQ,SAAS;AAC9B,yBAAmB;AACrB,QAAI;AACF,aAAO,QAAQ,OAAO,aAAa,OAAO,SAAS,UAAU,UAAU,cAAc;AAAA,QACnF;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,YAAM,QAAQ;AAAA,IAChB;AAAA,EACF;AACA,QAAM,SAAS,IAAI;AACnB,QAAM,cAAc,SAAS,MAAM;AACjC,QAAI;AACJ,aAAS,KAAK,OAAO,UAAU,OAAO,SAAS,GAAG,cAAc;AAAA,EAClE,CAAC;AACD,iBAAe,+BAA+B;AAC5C,UAAM,QAAQ;AACd,QAAI,OAAO,SAAS,OAAO,MAAM,MAAM;AACrC,aAAO,MAAM,iBAAiB,0BAA0B,MAAM;AAAA,MAC9D,CAAC;AACD,UAAI;AACF,eAAO,QAAQ,MAAM,OAAO,MAAM,KAAK,QAAQ;AAAA,MACjD,SAAS,KAAK;AACZ,cAAM,QAAQ;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACA,eAAa,MAAM;AACjB,QAAI;AACJ,QAAI,OAAO;AACT,OAAC,KAAK,OAAO,MAAM,SAAS,OAAO,SAAS,GAAG,QAAQ;AAAA,EAC3D,CAAC;AACD,oBAAkB,MAAM;AACtB,QAAI;AACJ,QAAI,OAAO;AACT,OAAC,KAAK,OAAO,MAAM,SAAS,OAAO,SAAS,GAAG,WAAW;AAAA,EAC9D,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,OAAO,UAAU,CAAC,GAAG;AAC1C,QAAM,EAAE,QAAAC,UAAS,cAAc,IAAI;AACnC,QAAM,cAAc,aAAa,MAAMA,WAAU,gBAAgBA,WAAU,OAAOA,QAAO,eAAe,UAAU;AAClH,MAAI;AACJ,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,UAAU,CAAC,UAAU;AACzB,YAAQ,QAAQ,MAAM;AAAA,EACxB;AACA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC;AACH;AACF,QAAI,yBAAyB;AAC3B,iBAAW,oBAAoB,UAAU,OAAO;AAAA;AAEhD,iBAAW,eAAe,OAAO;AAAA,EACrC;AACA,QAAM,YAAY,YAAY,MAAM;AAClC,QAAI,CAAC,YAAY;AACf;AACF,YAAQ;AACR,iBAAaA,QAAO,WAAW,QAAQ,KAAK,CAAC;AAC7C,QAAI,sBAAsB;AACxB,iBAAW,iBAAiB,UAAU,OAAO;AAAA;AAE7C,iBAAW,YAAY,OAAO;AAChC,YAAQ,QAAQ,WAAW;AAAA,EAC7B,CAAC;AACD,oBAAkB,MAAM;AACtB,cAAU;AACV,YAAQ;AACR,iBAAa;AAAA,EACf,CAAC;AACD,SAAO;AACT;AAEA,IAAM,sBAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACT;AACA,IAAM,yBAAyB;AAAA,EAC7B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP;AACA,IAAM,uBAAuB;AAAA,EAC3B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AACA,IAAM,uBAAuB;AAAA,EAC3B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP;AACA,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB;AAAA,EAC3B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP;AACA,IAAM,oBAAoB;AAAA,EACxB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AACA,IAAM,qBAAqB;AAAA,EACzB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AACb;AACA,IAAM,uBAAuB;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AACA,IAAM,uBAAuB;AAAA,EAC3B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AACA,IAAM,qBAAqB;AAAA,EACzB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,SAAS,eAAe,aAAa,UAAU,CAAC,GAAG;AACjD,WAASG,UAAS,GAAG,OAAO;AAC1B,QAAI,IAAI,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC;AACvC,QAAI,SAAS;AACX,UAAI,iBAAiB,GAAG,KAAK;AAC/B,QAAI,OAAO,MAAM;AACf,UAAI,GAAG,CAAC;AACV,WAAO;AAAA,EACT;AACA,QAAM,EAAE,QAAAH,UAAS,eAAe,WAAW,YAAY,IAAI;AAC3D,WAAS,MAAM,OAAO;AACpB,QAAI,CAACA;AACH,aAAO;AACT,WAAOA,QAAO,WAAW,KAAK,EAAE;AAAA,EAClC;AACA,QAAM,iBAAiB,CAAC,MAAM;AAC5B,WAAO,cAAc,MAAM,eAAeG,UAAS,CAAC,CAAC,KAAK,OAAO;AAAA,EACnE;AACA,QAAM,iBAAiB,CAAC,MAAM;AAC5B,WAAO,cAAc,MAAM,eAAeA,UAAS,CAAC,CAAC,KAAK,OAAO;AAAA,EACnE;AACA,QAAM,kBAAkB,OAAO,KAAK,WAAW,EAAE,OAAO,CAAC,WAAW,MAAM;AACxE,WAAO,eAAe,WAAW,GAAG;AAAA,MAClC,KAAK,MAAM,aAAa,cAAc,eAAe,CAAC,IAAI,eAAe,CAAC;AAAA,MAC1E,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,WAAS,UAAU;AACjB,UAAM,SAAS,OAAO,KAAK,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;AACzE,WAAO,SAAS,MAAM,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAAA,EACzE;AACA,SAAO,OAAO,OAAO,iBAAiB;AAAA,IACpC;AAAA,IACA;AAAA,IACA,QAAQ,GAAG;AACT,aAAO,cAAc,MAAM,eAAeA,UAAS,GAAG,GAAG,CAAC,KAAK,OAAO;AAAA,IACxE;AAAA,IACA,QAAQ,GAAG;AACT,aAAO,cAAc,MAAM,eAAeA,UAAS,GAAG,IAAI,CAAC,KAAK,OAAO;AAAA,IACzE;AAAA,IACA,QAAQ,GAAG,GAAG;AACZ,aAAO,cAAc,MAAM,eAAeA,UAAS,CAAC,CAAC,qBAAqBA,UAAS,GAAG,IAAI,CAAC,KAAK,OAAO;AAAA,IACzG;AAAA,IACA,UAAU,GAAG;AACX,aAAO,MAAM,eAAeA,UAAS,GAAG,GAAG,CAAC,GAAG;AAAA,IACjD;AAAA,IACA,iBAAiB,GAAG;AAClB,aAAO,MAAM,eAAeA,UAAS,CAAC,CAAC,GAAG;AAAA,IAC5C;AAAA,IACA,UAAU,GAAG;AACX,aAAO,MAAM,eAAeA,UAAS,GAAG,IAAI,CAAC,GAAG;AAAA,IAClD;AAAA,IACA,iBAAiB,GAAG;AAClB,aAAO,MAAM,eAAeA,UAAS,CAAC,CAAC,GAAG;AAAA,IAC5C;AAAA,IACA,YAAY,GAAG,GAAG;AAChB,aAAO,MAAM,eAAeA,UAAS,CAAC,CAAC,qBAAqBA,UAAS,GAAG,IAAI,CAAC,GAAG;AAAA,IAClF;AAAA,IACA;AAAA,IACA,SAAS;AACP,YAAM,MAAM,QAAQ;AACpB,aAAO,SAAS,MAAM,IAAI,MAAM,WAAW,IAAI,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC;AAAA,IACtE;AAAA,EACF,CAAC;AACH;AAEA,SAAS,oBAAoB,SAAS;AACpC,QAAM;AAAA,IACJ;AAAA,IACA,QAAAH,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,cAAc,aAAa,MAAMA,WAAU,sBAAsBA,OAAM;AAC7E,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,UAAU,IAAI;AACpB,QAAM,OAAO,IAAI;AACjB,QAAM,QAAQ,WAAW,IAAI;AAC7B,QAAM,OAAO,CAAC,UAAU;AACtB,QAAI,QAAQ;AACV,cAAQ,MAAM,YAAY,KAAK;AAAA,EACnC;AACA,QAAM,QAAQ,MAAM;AAClB,QAAI,QAAQ;AACV,cAAQ,MAAM,MAAM;AACtB,aAAS,QAAQ;AAAA,EACnB;AACA,MAAI,YAAY,OAAO;AACrB,iBAAa,MAAM;AACjB,YAAM,QAAQ;AACd,cAAQ,QAAQ,IAAI,iBAAiB,IAAI;AACzC,cAAQ,MAAM,iBAAiB,WAAW,CAAC,MAAM;AAC/C,aAAK,QAAQ,EAAE;AAAA,MACjB,GAAG,EAAE,SAAS,KAAK,CAAC;AACpB,cAAQ,MAAM,iBAAiB,gBAAgB,CAAC,MAAM;AACpD,cAAM,QAAQ;AAAA,MAChB,GAAG,EAAE,SAAS,KAAK,CAAC;AACpB,cAAQ,MAAM,iBAAiB,SAAS,MAAM;AAC5C,iBAAS,QAAQ;AAAA,MACnB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,oBAAkB,MAAM;AACtB,UAAM;AAAA,EACR,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,SAAS,mBAAmB,UAAU,CAAC,GAAG;AACxC,QAAM,EAAE,QAAAA,UAAS,cAAc,IAAI;AACnC,QAAM,OAAO,OAAO;AAAA,IAClB,oBAAoB,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;AAAA,EAC/C;AACA,aAAW,CAAC,KAAK,IAAI,KAAK,cAAc,IAAI,GAAG;AAC7C,UAAM,MAAM,CAAC,UAAU;AACrB,UAAI,EAAEA,WAAU,OAAO,SAASA,QAAO,aAAaA,QAAO,SAAS,GAAG,MAAM;AAC3E;AACF,MAAAA,QAAO,SAAS,GAAG,IAAI;AAAA,IACzB,CAAC;AAAA,EACH;AACA,QAAM,aAAa,CAAC,YAAY;AAC9B,QAAI;AACJ,UAAM,EAAE,OAAO,QAAQ,OAAO,KAAKA,WAAU,OAAO,SAASA,QAAO,YAAY,CAAC;AACjF,UAAM,EAAE,OAAO,KAAKA,WAAU,OAAO,SAASA,QAAO,aAAa,CAAC;AACnE,eAAW,OAAO;AAChB,WAAK,GAAG,EAAE,SAAS,KAAKA,WAAU,OAAO,SAASA,QAAO,aAAa,OAAO,SAAS,GAAG,GAAG;AAC9F,WAAO,SAAS;AAAA,MACd;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AACA,QAAM,QAAQ,IAAI,WAAW,MAAM,CAAC;AACpC,MAAIA,SAAQ;AACV,qBAAiBA,SAAQ,YAAY,MAAM,MAAM,QAAQ,WAAW,UAAU,GAAG,EAAE,SAAS,KAAK,CAAC;AAClG,qBAAiBA,SAAQ,cAAc,MAAM,MAAM,QAAQ,WAAW,YAAY,GAAG,EAAE,SAAS,KAAK,CAAC;AAAA,EACxG;AACA,SAAO;AACT;AAEA,SAAS,UAAU,UAAU,aAAa,CAAC,GAAG,MAAM,MAAM,GAAG,cAAc;AACzE,QAAM,cAAc,IAAI,SAAS,KAAK;AACtC,QAAM,MAAM,SAAS,OAAO,CAAC,UAAU;AACrC,QAAI,CAAC,WAAW,OAAO,YAAY,KAAK;AACtC,kBAAY,QAAQ;AAAA,EACxB,GAAG,YAAY;AACf,SAAO;AACT;AAEA,SAAS,cAAc,gBAAgB,UAAU,CAAC,GAAG;AACnD,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,cAAc,aAAa,MAAM,aAAa,iBAAiB,SAAS;AAC9E,QAAM,mBAAmB,WAAW;AACpC,QAAM,OAAO,OAAO,mBAAmB,WAAW,EAAE,MAAM,eAAe,IAAI;AAC7E,QAAM,QAAQ,WAAW;AACzB,QAAM,SAAS,MAAM;AACnB,QAAI,IAAI;AACR,UAAM,SAAS,MAAM,KAAK,iBAAiB,UAAU,OAAO,SAAS,GAAG,UAAU,OAAO,KAAK;AAAA,EAChG;AACA,mBAAiB,kBAAkB,UAAU,MAAM;AACnD,QAAM,QAAQ,uBAAuB,YAAY;AAC/C,QAAI,CAAC,YAAY;AACf;AACF,QAAI,CAAC,iBAAiB,OAAO;AAC3B,UAAI;AACF,yBAAiB,QAAQ,MAAM,UAAU,YAAY,MAAM,IAAI;AAAA,MACjE,SAAS,GAAG;AACV,yBAAiB,QAAQ;AAAA,MAC3B,UAAE;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI;AACF,aAAO,MAAM,iBAAiB,KAAK;AAAA,EACvC,CAAC;AACD,QAAM;AACN,MAAI,UAAU;AACZ,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa,UAAU,CAAC,GAAG;AAClC,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,eAAe;AAAA,IACf,SAAS;AAAA,EACX,IAAI;AACJ,QAAM,0BAA0B,aAAa,MAAM,aAAa,eAAe,SAAS;AACxF,QAAM,iBAAiB,cAAc,gBAAgB;AACrD,QAAM,kBAAkB,cAAc,iBAAiB;AACvD,QAAM,cAAc,SAAS,MAAM,wBAAwB,SAAS,MAAM;AAC1E,QAAM,OAAO,IAAI,EAAE;AACnB,QAAM,SAAS,IAAI,KAAK;AACxB,QAAM,UAAU,aAAa,MAAM,OAAO,QAAQ,OAAO,YAAY;AACrE,WAAS,aAAa;AACpB,QAAI,wBAAwB,SAAS,UAAU,eAAe,KAAK,GAAG;AACpE,gBAAU,UAAU,SAAS,EAAE,KAAK,CAAC,UAAU;AAC7C,aAAK,QAAQ;AAAA,MACf,CAAC;AAAA,IACH,OAAO;AACL,WAAK,QAAQ,WAAW;AAAA,IAC1B;AAAA,EACF;AACA,MAAI,YAAY,SAAS;AACvB,qBAAiB,CAAC,QAAQ,KAAK,GAAG,UAAU;AAC9C,iBAAe,KAAK,QAAQ,QAAQ,MAAM,GAAG;AAC3C,QAAI,YAAY,SAAS,SAAS,MAAM;AACtC,UAAI,wBAAwB,SAAS,UAAU,gBAAgB,KAAK;AAClE,cAAM,UAAU,UAAU,UAAU,KAAK;AAAA;AAEzC,mBAAW,KAAK;AAClB,WAAK,QAAQ;AACb,aAAO,QAAQ;AACf,cAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AACA,WAAS,WAAW,OAAO;AACzB,UAAM,KAAK,SAAS,cAAc,UAAU;AAC5C,OAAG,QAAQ,SAAS,OAAO,QAAQ;AACnC,OAAG,MAAM,WAAW;AACpB,OAAG,MAAM,UAAU;AACnB,aAAS,KAAK,YAAY,EAAE;AAC5B,OAAG,OAAO;AACV,aAAS,YAAY,MAAM;AAC3B,OAAG,OAAO;AAAA,EACZ;AACA,WAAS,aAAa;AACpB,QAAI,IAAI,IAAI;AACZ,YAAQ,MAAM,MAAM,KAAK,YAAY,OAAO,SAAS,SAAS,iBAAiB,OAAO,SAAS,GAAG,KAAK,QAAQ,MAAM,OAAO,SAAS,GAAG,SAAS,MAAM,OAAO,KAAK;AAAA,EACrK;AACA,WAAS,UAAU,QAAQ;AACzB,WAAO,WAAW,aAAa,WAAW;AAAA,EAC5C;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,UAAU,CAAC,GAAG;AACvC,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,eAAe;AAAA,EACjB,IAAI;AACJ,QAAM,cAAc,aAAa,MAAM,aAAa,eAAe,SAAS;AAC5E,QAAM,UAAU,IAAI,CAAC,CAAC;AACtB,QAAM,SAAS,IAAI,KAAK;AACxB,QAAM,UAAU,aAAa,MAAM,OAAO,QAAQ,OAAO,YAAY;AACrE,WAAS,gBAAgB;AACvB,QAAI,YAAY,OAAO;AACrB,gBAAU,UAAU,KAAK,EAAE,KAAK,CAAC,UAAU;AACzC,gBAAQ,QAAQ;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AACA,MAAI,YAAY,SAAS;AACvB,qBAAiB,CAAC,QAAQ,KAAK,GAAG,aAAa;AACjD,iBAAe,KAAK,QAAQ,QAAQ,MAAM,GAAG;AAC3C,QAAI,YAAY,SAAS,SAAS,MAAM;AACtC,YAAM,UAAU,UAAU,MAAM,KAAK;AACrC,cAAQ,QAAQ;AAChB,aAAO,QAAQ;AACf,cAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,YAAY,QAAQ;AAC3B,SAAO,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AAC1C;AACA,SAAS,UAAU,QAAQ,UAAU,CAAC,GAAG;AACvC,QAAM,SAAS,IAAI,CAAC,CAAC;AACrB,QAAM;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA;AAAA,IAER,OAAO;AAAA,IACP,YAAY;AAAA,EACd,IAAI;AACJ,WAAS,OAAO;AACd,WAAO,QAAQ,MAAM,QAAQ,MAAM,CAAC;AAAA,EACtC;AACA,MAAI,CAAC,WAAW,MAAM,MAAM,KAAK,OAAO,WAAW,aAAa;AAC9D,UAAM,QAAQ,MAAM;AAAA,MAClB,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,SAAK;AAAA,EACP;AACA,SAAO,EAAE,QAAQ,KAAK;AACxB;AAEA,IAAM,UAAU,OAAO,eAAe,cAAc,aAAa,OAAO,WAAW,cAAc,SAAS,OAAO,WAAW,cAAc,SAAS,OAAO,SAAS,cAAc,OAAO,CAAC;AACzL,IAAM,YAAY;AAClB,IAAM,WAA2B,YAAY;AAC7C,SAAS,cAAc;AACrB,MAAI,EAAE,aAAa;AACjB,YAAQ,SAAS,IAAI,QAAQ,SAAS,KAAK,CAAC;AAC9C,SAAO,QAAQ,SAAS;AAC1B;AACA,SAAS,cAAc,KAAK,UAAU;AACpC,SAAO,SAAS,GAAG,KAAK;AAC1B;AACA,SAAS,cAAc,KAAK,IAAI;AAC9B,WAAS,GAAG,IAAI;AAClB;AAEA,SAAS,iBAAiB,SAAS;AACjC,SAAO,cAAc,gCAAgC,OAAO;AAC9D;AAEA,SAAS,oBAAoB,SAAS;AACpC,SAAO,WAAW,OAAO,QAAQ,mBAAmB,MAAM,QAAQ,mBAAmB,MAAM,QAAQ,mBAAmB,OAAO,SAAS,OAAO,YAAY,YAAY,YAAY,OAAO,YAAY,WAAW,WAAW,OAAO,YAAY,WAAW,WAAW,CAAC,OAAO,MAAM,OAAO,IAAI,WAAW;AACzS;AAEA,IAAM,qBAAqB;AAAA,EACzB,SAAS;AAAA,IACP,MAAM,CAAC,MAAM,MAAM;AAAA,IACnB,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AAAA,IACzB,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;AAAA,EAChC;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,CAAC,MAAM,OAAO,WAAW,CAAC;AAAA,IAChC,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH,MAAM,CAAC,MAAM;AAAA,IACb,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,CAAC,MAAM;AAAA,IACb,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC;AAAA,IAClC,OAAO,CAAC,MAAM,KAAK,UAAU,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC;AAAA,EACtD;AAAA,EACA,KAAK;AAAA,IACH,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC;AAAA,IAClC,OAAO,CAAC,MAAM,KAAK,UAAU,MAAM,KAAK,CAAC,CAAC;AAAA,EAC5C;AAAA,EACA,MAAM;AAAA,IACJ,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC;AAAA,IACvB,OAAO,CAAC,MAAM,EAAE,YAAY;AAAA,EAC9B;AACF;AACA,IAAM,yBAAyB;AAC/B,SAAS,WAAW,KAAKI,WAAU,SAAS,UAAU,CAAC,GAAG;AACxD,MAAI;AACJ,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,yBAAyB;AAAA,IACzB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,IACA,QAAAJ,UAAS;AAAA,IACT;AAAA,IACA,UAAU,CAAC,MAAM;AACf,cAAQ,MAAM,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,QAAQ,UAAU,aAAa,KAAK,OAAOI,cAAa,aAAaA,UAAS,IAAIA,SAAQ;AAChG,MAAI,CAAC,SAAS;AACZ,QAAI;AACF,gBAAU,cAAc,qBAAqB,MAAM;AACjD,YAAI;AACJ,gBAAQ,MAAM,kBAAkB,OAAO,SAAS,IAAI;AAAA,MACtD,CAAC,EAAE;AAAA,IACL,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,MAAI,CAAC;AACH,WAAO;AACT,QAAM,UAAU,QAAQA,SAAQ;AAChC,QAAM,OAAO,oBAAoB,OAAO;AACxC,QAAM,cAAc,KAAK,QAAQ,eAAe,OAAO,KAAK,mBAAmB,IAAI;AACnF,QAAM,EAAE,OAAO,YAAY,QAAQ,YAAY,IAAI;AAAA,IACjD;AAAA,IACA,MAAM,MAAM,KAAK,KAAK;AAAA,IACtB,EAAE,OAAO,MAAM,YAAY;AAAA,EAC7B;AACA,MAAIJ,WAAU,wBAAwB;AACpC,iBAAa,MAAM;AACjB,UAAI,mBAAmB;AACrB,yBAAiBA,SAAQ,WAAW,MAAM;AAAA;AAE1C,yBAAiBA,SAAQ,wBAAwB,qBAAqB;AACxE,UAAI;AACF,eAAO;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,CAAC;AACH,WAAO;AACT,WAAS,mBAAmB,UAAU,UAAU;AAC9C,QAAIA,SAAQ;AACV,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa;AAAA,MACf;AACA,MAAAA,QAAO,cAAc,mBAAmB,UAAU,IAAI,aAAa,WAAW,OAAO,IAAI,IAAI,YAAY,wBAAwB;AAAA,QAC/H,QAAQ;AAAA,MACV,CAAC,CAAC;AAAA,IACJ;AAAA,EACF;AACA,WAAS,MAAM,GAAG;AAChB,QAAI;AACF,YAAM,WAAW,QAAQ,QAAQ,GAAG;AACpC,UAAI,KAAK,MAAM;AACb,2BAAmB,UAAU,IAAI;AACjC,gBAAQ,WAAW,GAAG;AAAA,MACxB,OAAO;AACL,cAAM,aAAa,WAAW,MAAM,CAAC;AACrC,YAAI,aAAa,YAAY;AAC3B,kBAAQ,QAAQ,KAAK,UAAU;AAC/B,6BAAmB,UAAU,UAAU;AAAA,QACzC;AAAA,MACF;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,WAAS,KAAK,OAAO;AACnB,UAAM,WAAW,QAAQ,MAAM,WAAW,QAAQ,QAAQ,GAAG;AAC7D,QAAI,YAAY,MAAM;AACpB,UAAI,iBAAiB,WAAW;AAC9B,gBAAQ,QAAQ,KAAK,WAAW,MAAM,OAAO,CAAC;AAChD,aAAO;AAAA,IACT,WAAW,CAAC,SAAS,eAAe;AAClC,YAAM,QAAQ,WAAW,KAAK,QAAQ;AACtC,UAAI,OAAO,kBAAkB;AAC3B,eAAO,cAAc,OAAO,OAAO;AAAA,eAC5B,SAAS,YAAY,CAAC,MAAM,QAAQ,KAAK;AAChD,eAAO,EAAE,GAAG,SAAS,GAAG,MAAM;AAChC,aAAO;AAAA,IACT,WAAW,OAAO,aAAa,UAAU;AACvC,aAAO;AAAA,IACT,OAAO;AACL,aAAO,WAAW,KAAK,QAAQ;AAAA,IACjC;AAAA,EACF;AACA,WAAS,OAAO,OAAO;AACrB,QAAI,SAAS,MAAM,gBAAgB;AACjC;AACF,QAAI,SAAS,MAAM,OAAO,MAAM;AAC9B,WAAK,QAAQ;AACb;AAAA,IACF;AACA,QAAI,SAAS,MAAM,QAAQ;AACzB;AACF,eAAW;AACX,QAAI;AACF,WAAK,SAAS,OAAO,SAAS,MAAM,cAAc,WAAW,MAAM,KAAK,KAAK;AAC3E,aAAK,QAAQ,KAAK,KAAK;AAAA,IAC3B,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX,UAAE;AACA,UAAI;AACF,iBAAS,WAAW;AAAA;AAEpB,oBAAY;AAAA,IAChB;AAAA,EACF;AACA,WAAS,sBAAsB,OAAO;AACpC,WAAO,MAAM,MAAM;AAAA,EACrB;AACA,SAAO;AACT;AAEA,IAAM,oBAAoB;AAC1B,SAAS,aAAa,UAAU,CAAC,GAAG;AAClC,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,QAAAA,UAAS;AAAA,IACT;AAAA,IACA,aAAa;AAAA,IACb,yBAAyB;AAAA,IACzB;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,EACtB,IAAI;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,GAAG,QAAQ,SAAS,CAAC;AAAA,EACvB;AACA,QAAM,gBAAgB,iBAAiB,EAAE,QAAAA,QAAO,CAAC;AACjD,QAAM,SAAS,SAAS,MAAM,cAAc,QAAQ,SAAS,OAAO;AACpE,QAAM,QAAQ,eAAe,cAAc,OAAOK,OAAM,YAAY,IAAI,WAAW,YAAY,cAAc,SAAS,EAAE,QAAAL,SAAQ,uBAAuB,CAAC;AACxJ,QAAM,QAAQ,SAAS,MAAM,MAAM,UAAU,SAAS,OAAO,QAAQ,MAAM,KAAK;AAChF,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA,CAAC,WAAW,YAAY,UAAU;AAChC,YAAM,KAAK,OAAO,cAAc,WAAWA,WAAU,OAAO,SAASA,QAAO,SAAS,cAAc,SAAS,IAAI,aAAa,SAAS;AACtI,UAAI,CAAC;AACH;AACF,YAAM,eAA+B,oBAAI,IAAI;AAC7C,YAAM,kBAAkC,oBAAI,IAAI;AAChD,UAAI,oBAAoB;AACxB,UAAI,eAAe,SAAS;AAC1B,cAAM,UAAU,MAAM,MAAM,KAAK;AACjC,eAAO,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,KAAK,IAAI,MAAM,KAAK,CAAC,EAAE,OAAO,OAAO,EAAE,QAAQ,CAAC,MAAM;AACzF,cAAI,QAAQ,SAAS,CAAC;AACpB,yBAAa,IAAI,CAAC;AAAA;AAElB,4BAAgB,IAAI,CAAC;AAAA,QACzB,CAAC;AAAA,MACH,OAAO;AACL,4BAAoB,EAAE,KAAK,YAAY,MAAM;AAAA,MAC/C;AACA,UAAI,aAAa,SAAS,KAAK,gBAAgB,SAAS,KAAK,sBAAsB;AACjF;AACF,UAAI;AACJ,UAAI,mBAAmB;AACrB,gBAAQA,QAAO,SAAS,cAAc,OAAO;AAC7C,cAAM,YAAY,SAAS,eAAe,iBAAiB,CAAC;AAC5D,QAAAA,QAAO,SAAS,KAAK,YAAY,KAAK;AAAA,MACxC;AACA,iBAAW,KAAK,cAAc;AAC5B,WAAG,UAAU,IAAI,CAAC;AAAA,MACpB;AACA,iBAAW,KAAK,iBAAiB;AAC/B,WAAG,UAAU,OAAO,CAAC;AAAA,MACvB;AACA,UAAI,mBAAmB;AACrB,WAAG,aAAa,kBAAkB,KAAK,kBAAkB,KAAK;AAAA,MAChE;AACA,UAAI,mBAAmB;AACrB,QAAAA,QAAO,iBAAiB,KAAK,EAAE;AAC/B,iBAAS,KAAK,YAAY,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AACA,WAAS,iBAAiB,MAAM;AAC9B,QAAI;AACJ,oBAAgB,UAAU,YAAY,KAAK,MAAM,IAAI,MAAM,OAAO,KAAK,IAAI;AAAA,EAC7E;AACA,WAAS,UAAU,MAAM;AACvB,QAAI,QAAQ;AACV,cAAQ,UAAU,MAAM,gBAAgB;AAAA;AAExC,uBAAiB,IAAI;AAAA,EACzB;AACA,QAAM,OAAO,WAAW,EAAE,OAAO,QAAQ,WAAW,KAAK,CAAC;AAC1D,eAAa,MAAM,UAAU,MAAM,KAAK,CAAC;AACzC,QAAM,OAAO,SAAS;AAAA,IACpB,MAAM;AACJ,aAAO,WAAW,MAAM,QAAQ,MAAM;AAAA,IACxC;AAAA,IACA,IAAI,GAAG;AACL,YAAM,QAAQ;AAAA,IAChB;AAAA,EACF,CAAC;AACD,MAAI;AACF,WAAO,OAAO,OAAO,MAAM,EAAE,OAAO,QAAQ,MAAM,CAAC;AAAA,EACrD,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEA,SAAS,iBAAiB,WAAW,IAAI,KAAK,GAAG;AAC/C,QAAM,cAAc,gBAAgB;AACpC,QAAM,aAAa,gBAAgB;AACnC,QAAM,aAAa,gBAAgB;AACnC,MAAI,WAAW;AACf,QAAM,SAAS,CAAC,SAAS;AACvB,eAAW,QAAQ,IAAI;AACvB,aAAS,QAAQ;AACjB,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,iBAAW;AAAA,IACb,CAAC;AAAA,EACH;AACA,QAAM,UAAU,CAAC,SAAS;AACxB,aAAS,QAAQ;AACjB,gBAAY,QAAQ,IAAI;AACxB,aAAS,EAAE,MAAM,YAAY,MAAM,CAAC;AAAA,EACtC;AACA,QAAM,SAAS,CAAC,SAAS;AACvB,aAAS,QAAQ;AACjB,eAAW,QAAQ,IAAI;AACvB,aAAS,EAAE,MAAM,YAAY,KAAK,CAAC;AAAA,EACrC;AACA,SAAO;AAAA,IACL,YAAY,SAAS,MAAM,SAAS,KAAK;AAAA,IACzC;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,WAAW;AAAA,IACrB,WAAW,YAAY;AAAA,IACvB,UAAU,WAAW;AAAA,EACvB;AACF;AAEA,SAAS,UAAU,MAAM,QAAQ,UAAU,CAAC,GAAG;AAC7C,QAAM,EAAE,QAAAA,UAAS,eAAe,cAAc,UAAU,MAAM,IAAI;AAClE,QAAM,WAAW,IAAI,YAAY;AACjC,QAAM,QAAQ,SAAS,MAAM;AAC3B,QAAI;AACJ,WAAO,aAAa,MAAM,OAAO,KAAKA,WAAU,OAAO,SAASA,QAAO,aAAa,OAAO,SAAS,GAAG;AAAA,EACzG,CAAC;AACD,WAAS,eAAe;AACtB,QAAI;AACJ,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,KAAK,QAAQ,KAAK;AACxB,QAAI,MAAMA,WAAU,KAAK;AACvB,YAAM,SAAS,KAAKA,QAAO,iBAAiB,EAAE,EAAE,iBAAiB,GAAG,MAAM,OAAO,SAAS,GAAG,KAAK;AAClG,eAAS,QAAQ,SAAS;AAAA,IAC5B;AAAA,EACF;AACA,MAAI,SAAS;AACX,wBAAoB,OAAO,cAAc;AAAA,MACvC,iBAAiB,CAAC,SAAS,OAAO;AAAA,MAClC,QAAAA;AAAA,IACF,CAAC;AAAA,EACH;AACA;AAAA,IACE,CAAC,OAAO,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC3B,CAAC,GAAG,QAAQ;AACV,UAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AACjB,YAAI,CAAC,EAAE,MAAM,eAAe,IAAI,CAAC,CAAC;AACpC,mBAAa;AAAA,IACf;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA;AAAA,IACE;AAAA,IACA,CAAC,QAAQ;AACP,UAAI;AACJ,YAAM,WAAW,QAAQ,IAAI;AAC7B,YAAM,KAAK,MAAM,UAAU,OAAO,SAAS,GAAG,UAAU,UAAU;AAChE,YAAI,OAAO;AACT,gBAAM,MAAM,MAAM,eAAe,QAAQ;AAAA;AAEzC,gBAAM,MAAM,MAAM,YAAY,UAAU,GAAG;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,eAAe;AACxC,QAAM,KAAK,mBAAmB;AAC9B,QAAM,iBAAiB;AAAA,IACrB,MAAM;AAAA,IACN,MAAM,gBAAgB,aAAa,aAAa,IAAI,GAAG,MAAM;AAAA,EAC/D;AACA,YAAU,eAAe,OAAO;AAChC,YAAU,eAAe,OAAO;AAChC,SAAO;AACT;AAEA,SAAS,aAAa,MAAM,SAAS;AACnC,QAAM,QAAQ,WAAW,gBAAgB,CAAC;AAC1C,QAAM,UAAUK,OAAM,IAAI;AAC1B,QAAM,QAAQ,SAAS;AAAA,IACrB,MAAM;AACJ,UAAI;AACJ,YAAM,aAAa,QAAQ;AAC3B,UAAI,UAAU,WAAW,OAAO,SAAS,QAAQ,cAAc,QAAQ,WAAW,MAAM,OAAO,UAAU,IAAI,WAAW,QAAQ,MAAM,KAAK;AAC3I,UAAI,SAAS;AACX,kBAAU,KAAK,WAAW,OAAO,SAAS,QAAQ,kBAAkB,OAAO,KAAK;AAClF,aAAO;AAAA,IACT;AAAA,IACA,IAAI,GAAG;AACL,MAAAC,KAAI,CAAC;AAAA,IACP;AAAA,EACF,CAAC;AACD,WAASA,KAAI,GAAG;AACd,UAAM,aAAa,QAAQ;AAC3B,UAAM,SAAS,WAAW;AAC1B,UAAM,UAAU,IAAI,SAAS,UAAU;AACvC,UAAM,QAAQ,WAAW,MAAM;AAC/B,UAAM,QAAQ;AACd,WAAO;AAAA,EACT;AACA,WAAS,MAAM,QAAQ,GAAG;AACxB,WAAOA,KAAI,MAAM,QAAQ,KAAK;AAAA,EAChC;AACA,WAAS,KAAK,IAAI,GAAG;AACnB,WAAO,MAAM,CAAC;AAAA,EAChB;AACA,WAAS,KAAK,IAAI,GAAG;AACnB,WAAO,MAAM,CAAC,CAAC;AAAA,EACjB;AACA,WAAS,kBAAkB;AACzB,QAAI,IAAI;AACR,YAAQ,KAAK,SAAS,KAAK,WAAW,OAAO,SAAS,QAAQ,iBAAiB,OAAO,KAAK,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,OAAO,KAAK;AAAA,EAC/H;AACA,QAAM,SAAS,MAAMA,KAAI,MAAM,KAAK,CAAC;AACrC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAIA;AAAA,EACN;AACF;AAEA,SAAS,QAAQ,UAAU,CAAC,GAAG;AAC7B,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,QAAAN,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,OAAO,aAAa;AAAA,IACxB,GAAG;AAAA,IACH,WAAW,CAAC,OAAO,mBAAmB;AACpC,UAAI;AACJ,UAAI,QAAQ;AACV,SAAC,KAAK,QAAQ,cAAc,OAAO,SAAS,GAAG,KAAK,SAAS,UAAU,QAAQ,gBAAgB,KAAK;AAAA;AAEpG,uBAAe,KAAK;AAAA,IACxB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,QAAM,SAAS,SAAS,MAAM;AAC5B,QAAI,KAAK,QAAQ;AACf,aAAO,KAAK,OAAO;AAAA,IACrB,OAAO;AACL,YAAM,gBAAgB,iBAAiB,EAAE,QAAAA,QAAO,CAAC;AACjD,aAAO,cAAc,QAAQ,SAAS;AAAA,IACxC;AAAA,EACF,CAAC;AACD,QAAM,SAAS,SAAS;AAAA,IACtB,MAAM;AACJ,aAAO,KAAK,UAAU;AAAA,IACxB;AAAA,IACA,IAAI,GAAG;AACL,YAAM,UAAU,IAAI,SAAS;AAC7B,UAAI,OAAO,UAAU;AACnB,aAAK,QAAQ;AAAA;AAEb,aAAK,QAAQ;AAAA,IACjB;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAEA,SAAS,SAAS,GAAG;AACnB,SAAO;AACT;AACA,SAAS,YAAY,QAAQ,OAAO;AAClC,SAAO,OAAO,QAAQ;AACxB;AACA,SAAS,YAAY,OAAO;AAC1B,SAAO,QAAQ,OAAO,UAAU,aAAa,QAAQ,cAAc;AACrE;AACA,SAAS,aAAa,OAAO;AAC3B,SAAO,QAAQ,OAAO,UAAU,aAAa,QAAQ,cAAc;AACrE;AACA,SAAS,oBAAoB,QAAQ,UAAU,CAAC,GAAG;AACjD,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO,YAAY,KAAK;AAAA,IACxB,QAAQ,aAAa,KAAK;AAAA,IAC1B,YAAY;AAAA,EACd,IAAI;AACJ,WAAS,uBAAuB;AAC9B,WAAO,QAAQ;AAAA,MACb,UAAU,KAAK,OAAO,KAAK;AAAA,MAC3B,WAAW,UAAU;AAAA,IACvB,CAAC;AAAA,EACH;AACA,QAAM,OAAO,IAAI,qBAAqB,CAAC;AACvC,QAAM,YAAY,IAAI,CAAC,CAAC;AACxB,QAAM,YAAY,IAAI,CAAC,CAAC;AACxB,QAAM,aAAa,CAAC,WAAW;AAC7B,cAAU,QAAQ,MAAM,OAAO,QAAQ,CAAC;AACxC,SAAK,QAAQ;AAAA,EACf;AACA,QAAM,SAAS,MAAM;AACnB,cAAU,MAAM,QAAQ,KAAK,KAAK;AAClC,SAAK,QAAQ,qBAAqB;AAClC,QAAI,QAAQ,YAAY,UAAU,MAAM,SAAS,QAAQ;AACvD,gBAAU,MAAM,OAAO,QAAQ,UAAU,OAAO,iBAAiB;AACnE,QAAI,UAAU,MAAM;AAClB,gBAAU,MAAM,OAAO,GAAG,UAAU,MAAM,MAAM;AAAA,EACpD;AACA,QAAM,QAAQ,MAAM;AAClB,cAAU,MAAM,OAAO,GAAG,UAAU,MAAM,MAAM;AAChD,cAAU,MAAM,OAAO,GAAG,UAAU,MAAM,MAAM;AAAA,EAClD;AACA,QAAM,OAAO,MAAM;AACjB,UAAM,QAAQ,UAAU,MAAM,MAAM;AACpC,QAAI,OAAO;AACT,gBAAU,MAAM,QAAQ,KAAK,KAAK;AAClC,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AACA,QAAM,OAAO,MAAM;AACjB,UAAM,QAAQ,UAAU,MAAM,MAAM;AACpC,QAAI,OAAO;AACT,gBAAU,MAAM,QAAQ,KAAK,KAAK;AAClC,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AACA,QAAM,QAAQ,MAAM;AAClB,eAAW,KAAK,KAAK;AAAA,EACvB;AACA,QAAM,UAAU,SAAS,MAAM,CAAC,KAAK,OAAO,GAAG,UAAU,KAAK,CAAC;AAC/D,QAAM,UAAU,SAAS,MAAM,UAAU,MAAM,SAAS,CAAC;AACzD,QAAM,UAAU,SAAS,MAAM,UAAU,MAAM,SAAS,CAAC;AACzD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,QAAQ,UAAU,CAAC,GAAG;AAC3C,QAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR;AAAA,EACF,IAAI;AACJ,QAAM;AAAA,IACJ,aAAa;AAAA,IACb;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ,IAAI,eAAe,WAAW;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA,EAAE,MAAM,OAAO,aAAa,eAAe;AAAA,EAC7C;AACA,WAAS,UAAU,SAAS,OAAO;AACjC,2BAAuB;AACvB,kBAAc,MAAM;AAClB,cAAQ,QAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AACA,QAAM,gBAAgB,oBAAoB,QAAQ,EAAE,GAAG,SAAS,OAAO,QAAQ,SAAS,MAAM,UAAU,CAAC;AACzG,QAAM,EAAE,OAAO,QAAQ,aAAa,IAAI;AACxC,WAAS,SAAS;AAChB,2BAAuB;AACvB,iBAAa;AAAA,EACf;AACA,WAAS,OAAO,WAAW;AACzB,mBAAe;AACf,QAAI;AACF,aAAO;AAAA,EACX;AACA,WAAS,MAAM,IAAI;AACjB,QAAI,WAAW;AACf,UAAM,SAAS,MAAM,WAAW;AAChC,kBAAc,MAAM;AAClB,SAAG,MAAM;AAAA,IACX,CAAC;AACD,QAAI,CAAC;AACH,aAAO;AAAA,EACX;AACA,WAAS,UAAU;AACjB,SAAK;AACL,UAAM;AAAA,EACR;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB,QAAQ,UAAU,CAAC,GAAG;AACpD,QAAM,SAAS,QAAQ,WAAW,eAAe,QAAQ,QAAQ,IAAI;AACrE,QAAM,UAAU,cAAc,QAAQ,EAAE,GAAG,SAAS,aAAa,OAAO,CAAC;AACzE,SAAO;AAAA,IACL,GAAG;AAAA,EACL;AACF;AAEA,SAAS,gBAAgB,UAAU,CAAC,GAAG;AACrC,QAAM;AAAA,IACJ,QAAAA,UAAS;AAAA,IACT,cAAc;AAAA,EAChB,IAAI;AACJ,QAAM,eAAe,IAAI,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACtD,QAAM,eAAe,IAAI,EAAE,OAAO,MAAM,MAAM,MAAM,OAAO,KAAK,CAAC;AACjE,QAAM,WAAW,IAAI,CAAC;AACtB,QAAM,+BAA+B,IAAI;AAAA,IACvC,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL,CAAC;AACD,MAAIA,SAAQ;AACV,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,CAAC,UAAU;AACT,qBAAa,QAAQ,MAAM;AAC3B,qCAA6B,QAAQ,MAAM;AAC3C,qBAAa,QAAQ,MAAM;AAC3B,iBAAS,QAAQ,MAAM;AAAA,MACzB;AAAA,IACF;AACA,qBAAiBA,SAAQ,gBAAgB,cAAc;AAAA,EACzD;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,UAAU,CAAC,GAAG;AAC1C,QAAM,EAAE,QAAAA,UAAS,cAAc,IAAI;AACnC,QAAM,cAAc,aAAa,MAAMA,WAAU,4BAA4BA,OAAM;AACnF,QAAM,aAAa,IAAI,KAAK;AAC5B,QAAM,QAAQ,IAAI,IAAI;AACtB,QAAM,OAAO,IAAI,IAAI;AACrB,QAAM,QAAQ,IAAI,IAAI;AACtB,MAAIA,WAAU,YAAY,OAAO;AAC/B,qBAAiBA,SAAQ,qBAAqB,CAAC,UAAU;AACvD,iBAAW,QAAQ,MAAM;AACzB,YAAM,QAAQ,MAAM;AACpB,WAAK,QAAQ,MAAM;AACnB,YAAM,QAAQ,MAAM;AAAA,IACtB,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,UAAU,CAAC,GAAG;AACzC,QAAM;AAAA,IACJ,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,aAAa,IAAI,CAAC;AACxB,MAAIA,SAAQ;AACV,QAAI,WAAW,WAAW;AACxB,iBAAW,QAAQA,QAAO;AAC1B,eAAS;AACT,cAAQA,QAAO,WAAW,gBAAgB,WAAW,KAAK,OAAO;AACjE,YAAM,iBAAiB,UAAU,UAAU,EAAE,MAAM,KAAK,CAAC;AAAA,IAC3D,GAAG,WAAW,WAAW;AACvB,eAAS,OAAO,SAAS,MAAM,oBAAoB,UAAU,QAAQ;AAAA,IACvE;AACA,QAAI;AACJ,aAAS;AACT,sBAAkB,QAAQ;AAAA,EAC5B;AACA,SAAO,EAAE,WAAW;AACtB;AAEA,SAAS,eAAe,UAAU,CAAC,GAAG;AACpC,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,qBAAqB;AAAA,IACrB,cAAc,EAAE,OAAO,MAAM,OAAO,KAAK;AAAA,IACzC,WAAAO;AAAA,EACF,IAAI;AACJ,QAAM,UAAU,IAAI,CAAC,CAAC;AACtB,QAAM,cAAc,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,YAAY,CAAC;AACvF,QAAM,cAAc,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,YAAY,CAAC;AACvF,QAAM,eAAe,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,aAAa,CAAC;AACzF,QAAM,cAAc,aAAa,MAAM,aAAa,UAAU,gBAAgB,UAAU,aAAa,gBAAgB;AACrH,QAAM,oBAAoB,IAAI,KAAK;AACnC,MAAI;AACJ,iBAAe,SAAS;AACtB,QAAI,CAAC,YAAY;AACf;AACF,YAAQ,QAAQ,MAAM,UAAU,aAAa,iBAAiB;AAC9D,IAAAA,cAAa,OAAO,SAASA,WAAU,QAAQ,KAAK;AACpD,QAAI,QAAQ;AACV,aAAO,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1C,eAAS;AAAA,IACX;AAAA,EACF;AACA,iBAAe,oBAAoB;AACjC,QAAI,CAAC,YAAY;AACf,aAAO;AACT,QAAI,kBAAkB;AACpB,aAAO;AACT,UAAM,EAAE,OAAO,MAAM,IAAI,cAAc,UAAU,EAAE,UAAU,KAAK,CAAC;AACnE,UAAM,MAAM;AACZ,QAAI,MAAM,UAAU,WAAW;AAC7B,UAAI,UAAU;AACd,UAAI;AACF,iBAAS,MAAM,UAAU,aAAa,aAAa,WAAW;AAAA,MAChE,SAAS,GAAG;AACV,iBAAS;AACT,kBAAU;AAAA,MACZ;AACA,aAAO;AACP,wBAAkB,QAAQ;AAAA,IAC5B,OAAO;AACL,wBAAkB,QAAQ;AAAA,IAC5B;AACA,WAAO,kBAAkB;AAAA,EAC3B;AACA,MAAI,YAAY,OAAO;AACrB,QAAI;AACF,wBAAkB;AACpB,qBAAiB,UAAU,cAAc,gBAAgB,MAAM;AAC/D,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,UAAU,CAAC,GAAG;AACrC,MAAI;AACJ,QAAM,UAAU,KAAK,KAAK,QAAQ,YAAY,OAAO,KAAK,KAAK;AAC/D,QAAM,QAAQ,QAAQ;AACtB,QAAM,QAAQ,QAAQ;AACtB,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,cAAc,aAAa,MAAM;AACrC,QAAI;AACJ,YAAQ,MAAM,aAAa,OAAO,SAAS,UAAU,iBAAiB,OAAO,SAAS,IAAI;AAAA,EAC5F,CAAC;AACD,QAAM,aAAa,EAAE,OAAO,MAAM;AAClC,QAAM,SAAS,WAAW;AAC1B,iBAAe,SAAS;AACtB,QAAI;AACJ,QAAI,CAAC,YAAY,SAAS,OAAO;AAC/B;AACF,WAAO,QAAQ,MAAM,UAAU,aAAa,gBAAgB,UAAU;AACtE,KAAC,MAAM,OAAO,UAAU,OAAO,SAAS,IAAI,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,SAAS,IAAI,CAAC;AACxG,WAAO,OAAO;AAAA,EAChB;AACA,iBAAe,QAAQ;AACrB,QAAI;AACJ,KAAC,MAAM,OAAO,UAAU,OAAO,SAAS,IAAI,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/E,WAAO,QAAQ;AAAA,EACjB;AACA,WAAS,OAAO;AACd,UAAM;AACN,YAAQ,QAAQ;AAAA,EAClB;AACA,iBAAe,QAAQ;AACrB,UAAM,OAAO;AACb,QAAI,OAAO;AACT,cAAQ,QAAQ;AAClB,WAAO,OAAO;AAAA,EAChB;AACA;AAAA,IACE;AAAA,IACA,CAAC,MAAM;AACL,UAAI;AACF,eAAO;AAAA;AAEP,cAAM;AAAA,IACV;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,UAAU,CAAC,GAAG;AAC3C,QAAM,EAAE,UAAAN,YAAW,gBAAgB,IAAI;AACvC,MAAI,CAACA;AACH,WAAO,IAAI,SAAS;AACtB,QAAM,aAAa,IAAIA,UAAS,eAAe;AAC/C,mBAAiBA,WAAU,oBAAoB,MAAM;AACnD,eAAW,QAAQA,UAAS;AAAA,EAC9B,CAAC;AACD,SAAO;AACT;AAEA,SAAS,aAAa,QAAQ,UAAU,CAAC,GAAG;AAC1C,MAAI,IAAI;AACR,QAAM;AAAA,IACJ;AAAA,IACA,gBAAAO;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB;AAAA,IACA,QAAQ,iBAAiB;AAAA,IACzB,UAAU,CAAC,CAAC;AAAA,EACd,IAAI;AACJ,QAAM,WAAW;AAAA,KACd,KAAK,QAAQ,YAAY,MAAM,OAAO,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAC3D;AACA,QAAM,eAAe,IAAI;AACzB,QAAM,cAAc,CAAC,MAAM;AACzB,QAAI;AACF,aAAO,aAAa,SAAS,EAAE,WAAW;AAC5C,WAAO;AAAA,EACT;AACA,QAAM,cAAc,CAAC,MAAM;AACzB,QAAI,QAAQA,eAAc;AACxB,QAAE,eAAe;AACnB,QAAI,QAAQ,eAAe;AACzB,QAAE,gBAAgB;AAAA,EACtB;AACA,QAAM,QAAQ,CAAC,MAAM;AACnB,QAAI;AACJ,QAAI,CAAC,QAAQ,OAAO,EAAE,SAAS,EAAE,MAAM;AACrC;AACF,QAAI,QAAQ,QAAQ,QAAQ,KAAK,CAAC,YAAY,CAAC;AAC7C;AACF,QAAI,QAAQ,KAAK,KAAK,EAAE,WAAW,QAAQ,MAAM;AAC/C;AACF,UAAM,YAAY,QAAQ,gBAAgB;AAC1C,UAAM,iBAAiB,MAAM,aAAa,OAAO,SAAS,UAAU,0BAA0B,OAAO,SAAS,IAAI,KAAK,SAAS;AAChI,UAAM,aAAa,QAAQ,MAAM,EAAE,sBAAsB;AACzD,UAAM,MAAM;AAAA,MACV,GAAG,EAAE,WAAW,YAAY,WAAW,OAAO,cAAc,OAAO,UAAU,aAAa,WAAW;AAAA,MACrG,GAAG,EAAE,WAAW,YAAY,WAAW,MAAM,cAAc,MAAM,UAAU,YAAY,WAAW;AAAA,IACpG;AACA,SAAK,WAAW,OAAO,SAAS,QAAQ,KAAK,CAAC,OAAO;AACnD;AACF,iBAAa,QAAQ;AACrB,gBAAY,CAAC;AAAA,EACf;AACA,QAAM,OAAO,CAAC,MAAM;AAClB,QAAI,QAAQ,QAAQ,QAAQ,KAAK,CAAC,YAAY,CAAC;AAC7C;AACF,QAAI,CAAC,aAAa;AAChB;AACF,UAAM,YAAY,QAAQ,gBAAgB;AAC1C,UAAM,aAAa,QAAQ,MAAM,EAAE,sBAAsB;AACzD,QAAI,EAAE,GAAG,EAAE,IAAI,SAAS;AACxB,QAAI,SAAS,OAAO,SAAS,QAAQ;AACnC,UAAI,EAAE,UAAU,aAAa,MAAM;AACnC,UAAI;AACF,YAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,UAAU,cAAc,WAAW,KAAK;AAAA,IACzE;AACA,QAAI,SAAS,OAAO,SAAS,QAAQ;AACnC,UAAI,EAAE,UAAU,aAAa,MAAM;AACnC,UAAI;AACF,YAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,UAAU,eAAe,WAAW,MAAM;AAAA,IAC3E;AACA,aAAS,QAAQ;AAAA,MACf;AAAA,MACA;AAAA,IACF;AACA,cAAU,OAAO,SAAS,OAAO,SAAS,OAAO,CAAC;AAClD,gBAAY,CAAC;AAAA,EACf;AACA,QAAM,MAAM,CAAC,MAAM;AACjB,QAAI,QAAQ,QAAQ,QAAQ,KAAK,CAAC,YAAY,CAAC;AAC7C;AACF,QAAI,CAAC,aAAa;AAChB;AACF,iBAAa,QAAQ;AACrB,aAAS,OAAO,SAAS,MAAM,SAAS,OAAO,CAAC;AAChD,gBAAY,CAAC;AAAA,EACf;AACA,MAAI,UAAU;AACZ,UAAM,SAAS,EAAE,UAAU,KAAK,QAAQ,YAAY,OAAO,KAAK,KAAK;AACrE,qBAAiB,gBAAgB,eAAe,OAAO,MAAM;AAC7D,qBAAiB,iBAAiB,eAAe,MAAM,MAAM;AAC7D,qBAAiB,iBAAiB,aAAa,KAAK,MAAM;AAAA,EAC5D;AACA,SAAO;AAAA,IACL,GAAGC,QAAO,QAAQ;AAAA,IAClB;AAAA,IACA,YAAY,SAAS,MAAM,CAAC,CAAC,aAAa,KAAK;AAAA,IAC/C,OAAO;AAAA,MACL,MAAM,QAAQ,SAAS,MAAM,CAAC,UAAU,SAAS,MAAM,CAAC;AAAA,IAC1D;AAAA,EACF;AACF;AAEA,SAAS,YAAY,QAAQ,UAAU,CAAC,GAAG;AACzC,MAAI,IAAI;AACR,QAAM,iBAAiB,IAAI,KAAK;AAChC,QAAM,QAAQ,WAAW,IAAI;AAC7B,MAAI,UAAU;AACd,MAAI,UAAU;AACd,MAAI,UAAU;AACZ,UAAM,WAAW,OAAO,YAAY,aAAa,EAAE,QAAQ,QAAQ,IAAI;AACvE,UAAM,YAAY,KAAK,SAAS,aAAa,OAAO,KAAK;AACzD,UAAM,8BAA8B,KAAK,SAAS,+BAA+B,OAAO,KAAK;AAC7F,UAAM,WAAW,CAAC,UAAU;AAC1B,UAAI,KAAK;AACT,YAAM,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,iBAAiB,OAAO,SAAS,IAAI,UAAU,OAAO,MAAM,CAAC,CAAC;AAC1G,aAAO,KAAK,WAAW,IAAI,OAAO,WAAW,OAAO,CAAC,KAAK,CAAC,CAAC;AAAA,IAC9D;AACA,UAAM,iBAAiB,CAAC,UAAU;AAChC,UAAI,SAAS,WAAW;AACtB,cAAM,YAAY,MAAM,SAAS,SAAS;AAC1C,eAAO,OAAO,cAAc,aAAa,UAAU,KAAK,IAAI,YAAY,UAAU,KAAK,CAAC,SAAS,MAAM,SAAS,IAAI,CAAC,IAAI;AAAA,MAC3H;AACA,aAAO;AAAA,IACT;AACA,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,KAAK;AACT,YAAM,QAAQ,MAAM,MAAM,OAAO,MAAM,MAAM,iBAAiB,OAAO,SAAS,IAAI,UAAU,OAAO,MAAM,CAAC,CAAC;AAC3G,YAAM,QAAQ,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI;AAC3C,YAAM,iBAAiB,eAAe,KAAK;AAC3C,YAAM,qBAAqB,YAAY,MAAM,UAAU;AACvD,aAAO,kBAAkB;AAAA,IAC3B;AACA,UAAM,kBAAkB,CAAC,OAAO,cAAc;AAC5C,UAAI,KAAK,KAAK,IAAI;AAClB,gBAAU,cAAc,KAAK;AAC7B,UAAI,CAAC,SAAS;AACZ,YAAI,4BAA4B;AAC9B,gBAAM,eAAe;AAAA,QACvB;AACA,YAAI,MAAM,cAAc;AACtB,gBAAM,aAAa,aAAa;AAAA,QAClC;AACA;AAAA,MACF;AACA,YAAM,eAAe;AACrB,UAAI,MAAM,cAAc;AACtB,cAAM,aAAa,aAAa;AAAA,MAClC;AACA,YAAM,eAAe,SAAS,KAAK;AACnC,cAAQ,WAAW;AAAA,QACjB,KAAK;AACH,qBAAW;AACX,yBAAe,QAAQ;AACvB,WAAC,MAAM,SAAS,YAAY,OAAO,SAAS,IAAI,KAAK,UAAU,MAAM,KAAK;AAC1E;AAAA,QACF,KAAK;AACH,WAAC,MAAM,SAAS,WAAW,OAAO,SAAS,IAAI,KAAK,UAAU,MAAM,KAAK;AACzE;AAAA,QACF,KAAK;AACH,qBAAW;AACX,cAAI,YAAY;AACd,2BAAe,QAAQ;AACzB,WAAC,KAAK,SAAS,YAAY,OAAO,SAAS,GAAG,KAAK,UAAU,MAAM,KAAK;AACxE;AAAA,QACF,KAAK;AACH,oBAAU;AACV,yBAAe,QAAQ;AACvB,cAAI,SAAS;AACX,kBAAM,QAAQ;AACd,aAAC,KAAK,SAAS,WAAW,OAAO,SAAS,GAAG,KAAK,UAAU,cAAc,KAAK;AAAA,UACjF;AACA;AAAA,MACJ;AAAA,IACF;AACA,qBAAiB,QAAQ,aAAa,CAAC,UAAU,gBAAgB,OAAO,OAAO,CAAC;AAChF,qBAAiB,QAAQ,YAAY,CAAC,UAAU,gBAAgB,OAAO,MAAM,CAAC;AAC9E,qBAAiB,QAAQ,aAAa,CAAC,UAAU,gBAAgB,OAAO,OAAO,CAAC;AAChF,qBAAiB,QAAQ,QAAQ,CAAC,UAAU,gBAAgB,OAAO,MAAM,CAAC;AAAA,EAC5E;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,QAAQ,UAAU,UAAU,CAAC,GAAG;AACzD,QAAM,EAAE,QAAAT,UAAS,eAAe,GAAG,gBAAgB,IAAI;AACvD,MAAI;AACJ,QAAM,cAAc,aAAa,MAAMA,WAAU,oBAAoBA,OAAM;AAC3E,QAAM,UAAU,MAAM;AACpB,QAAI,UAAU;AACZ,eAAS,WAAW;AACpB,iBAAW;AAAA,IACb;AAAA,EACF;AACA,QAAM,UAAU,SAAS,MAAM;AAC7B,UAAM,WAAW,QAAQ,MAAM;AAC/B,WAAO,MAAM,QAAQ,QAAQ,IAAI,SAAS,IAAI,CAAC,OAAO,aAAa,EAAE,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC;AAAA,EACnG,CAAC;AACD,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,CAAC,QAAQ;AACP,cAAQ;AACR,UAAI,YAAY,SAASA,SAAQ;AAC/B,mBAAW,IAAI,eAAe,QAAQ;AACtC,mBAAW,OAAO,KAAK;AACrB,cAAI;AACF,qBAAS,QAAQ,KAAK,eAAe;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,IACA,EAAE,WAAW,MAAM,OAAO,OAAO;AAAA,EACnC;AACA,QAAM,OAAO,MAAM;AACjB,YAAQ;AACR,cAAU;AAAA,EACZ;AACA,oBAAkB,IAAI;AACtB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,QAAQ,UAAU,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,eAAe;AAAA,EACjB,IAAI;AACJ,QAAM,SAAS,IAAI,CAAC;AACpB,QAAM,SAAS,IAAI,CAAC;AACpB,QAAM,OAAO,IAAI,CAAC;AAClB,QAAM,QAAQ,IAAI,CAAC;AACnB,QAAM,MAAM,IAAI,CAAC;AACjB,QAAM,QAAQ,IAAI,CAAC;AACnB,QAAM,IAAI,IAAI,CAAC;AACf,QAAM,IAAI,IAAI,CAAC;AACf,WAAS,cAAc;AACrB,UAAM,KAAK,aAAa,MAAM;AAC9B,QAAI,CAAC,IAAI;AACP,UAAI,OAAO;AACT,eAAO,QAAQ;AACf,eAAO,QAAQ;AACf,aAAK,QAAQ;AACb,cAAM,QAAQ;AACd,YAAI,QAAQ;AACZ,cAAM,QAAQ;AACd,UAAE,QAAQ;AACV,UAAE,QAAQ;AAAA,MACZ;AACA;AAAA,IACF;AACA,UAAM,OAAO,GAAG,sBAAsB;AACtC,WAAO,QAAQ,KAAK;AACpB,WAAO,QAAQ,KAAK;AACpB,SAAK,QAAQ,KAAK;AAClB,UAAM,QAAQ,KAAK;AACnB,QAAI,QAAQ,KAAK;AACjB,UAAM,QAAQ,KAAK;AACnB,MAAE,QAAQ,KAAK;AACf,MAAE,QAAQ,KAAK;AAAA,EACjB;AACA,WAAS,SAAS;AAChB,QAAI,iBAAiB;AACnB,kBAAY;AAAA,aACL,iBAAiB;AACxB,4BAAsB,MAAM,YAAY,CAAC;AAAA,EAC7C;AACA,oBAAkB,QAAQ,MAAM;AAChC,QAAM,MAAM,aAAa,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC;AAC3D,sBAAoB,QAAQ,QAAQ;AAAA,IAClC,iBAAiB,CAAC,SAAS,OAAO;AAAA,EACpC,CAAC;AACD,MAAI;AACF,qBAAiB,UAAU,QAAQ,EAAE,SAAS,MAAM,SAAS,KAAK,CAAC;AACrE,MAAI;AACF,qBAAiB,UAAU,QAAQ,EAAE,SAAS,KAAK,CAAC;AACtD,eAAa,MAAM;AACjB,QAAI;AACF,aAAO;AAAA,EACX,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,SAAS;AAClC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,UAAAC,YAAW;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,cAAc,aAAa,MAAM;AACrC,QAAI,QAAQ,QAAQ;AAClB,aAAOA,aAAY,uBAAuBA;AAC5C,WAAOA,aAAY,sBAAsBA;AAAA,EAC3C,CAAC;AACD,QAAM,UAAU,IAAI,IAAI;AACxB,QAAM,KAAK,MAAM;AACf,QAAI,IAAI;AACR,YAAQ,QAAQ,QAAQ,QAAQ,KAAK,KAAKA,aAAY,OAAO,SAASA,UAAS,kBAAkB,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,KAAKA,aAAY,OAAO,SAASA,UAAS,iBAAiB,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,OAAO,KAAK;AAAA,EACpP;AACA,QAAM,WAAW,aAAa,0BAA0B,SAAS,IAAI,EAAE,UAAU,CAAC,IAAI,cAAc,IAAI,UAAU,EAAE,UAAU,CAAC;AAC/H,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL;AACF;AAEA,SAAS,gBAAgB,IAAI,UAAU,CAAC,GAAG;AACzC,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,QAAAD,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,YAAY,IAAI,KAAK;AAC3B,MAAI;AACJ,QAAM,SAAS,CAAC,aAAa;AAC3B,UAAM,QAAQ,WAAW,aAAa;AACtC,QAAI,OAAO;AACT,mBAAa,KAAK;AAClB,cAAQ;AAAA,IACV;AACA,QAAI;AACF,cAAQ,WAAW,MAAM,UAAU,QAAQ,UAAU,KAAK;AAAA;AAE1D,gBAAU,QAAQ;AAAA,EACtB;AACA,MAAI,CAACA;AACH,WAAO;AACT,mBAAiB,IAAI,cAAc,MAAM,OAAO,IAAI,GAAG,EAAE,SAAS,KAAK,CAAC;AACxE,mBAAiB,IAAI,cAAc,MAAM,OAAO,KAAK,GAAG,EAAE,SAAS,KAAK,CAAC;AACzE,SAAO;AACT;AAEA,SAAS,eAAe,QAAQ,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,UAAU,CAAC,GAAG;AACnF,QAAM,EAAE,QAAAA,UAAS,eAAe,MAAM,cAAc,IAAI;AACxD,QAAM,QAAQ,SAAS,MAAM;AAC3B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,aAAa,MAAM,MAAM,OAAO,SAAS,GAAG,iBAAiB,OAAO,SAAS,GAAG,SAAS,KAAK;AAAA,EACnH,CAAC;AACD,QAAM,QAAQ,IAAI,YAAY,KAAK;AACnC,QAAM,SAAS,IAAI,YAAY,MAAM;AACrC,QAAM,EAAE,MAAM,MAAM,IAAI;AAAA,IACtB;AAAA,IACA,CAAC,CAAC,KAAK,MAAM;AACX,YAAM,UAAU,QAAQ,eAAe,MAAM,gBAAgB,QAAQ,gBAAgB,MAAM,iBAAiB,MAAM;AAClH,UAAIA,WAAU,MAAM,OAAO;AACzB,cAAM,QAAQ,aAAa,MAAM;AACjC,YAAI,OAAO;AACT,gBAAM,OAAO,MAAM,sBAAsB;AACzC,gBAAM,QAAQ,KAAK;AACnB,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,MACF,OAAO;AACL,YAAI,SAAS;AACX,gBAAM,gBAAgB,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AACjE,gBAAM,QAAQ,cAAc,OAAO,CAAC,KAAK,EAAE,WAAW,MAAM,MAAM,YAAY,CAAC;AAC/E,iBAAO,QAAQ,cAAc,OAAO,CAAC,KAAK,EAAE,UAAU,MAAM,MAAM,WAAW,CAAC;AAAA,QAChF,OAAO;AACL,gBAAM,QAAQ,MAAM,YAAY;AAChC,iBAAO,QAAQ,MAAM,YAAY;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,eAAa,MAAM;AACjB,UAAM,MAAM,aAAa,MAAM;AAC/B,QAAI,KAAK;AACP,YAAM,QAAQ,iBAAiB,MAAM,IAAI,cAAc,YAAY;AACnE,aAAO,QAAQ,kBAAkB,MAAM,IAAI,eAAe,YAAY;AAAA,IACxE;AAAA,EACF,CAAC;AACD,QAAM,QAAQ;AAAA,IACZ,MAAM,aAAa,MAAM;AAAA,IACzB,CAAC,QAAQ;AACP,YAAM,QAAQ,MAAM,YAAY,QAAQ;AACxC,aAAO,QAAQ,MAAM,YAAY,SAAS;AAAA,IAC5C;AAAA,EACF;AACA,WAAS,OAAO;AACd,UAAM;AACN,UAAM;AAAA,EACR;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,wBAAwB,QAAQ,UAAU,UAAU,CAAC,GAAG;AAC/D,QAAM;AAAA,IACJ;AAAA,IACA,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,QAAAA,UAAS;AAAA,IACT,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,cAAc,aAAa,MAAMA,WAAU,0BAA0BA,OAAM;AACjF,QAAM,UAAU,SAAS,MAAM;AAC7B,UAAM,UAAU,QAAQ,MAAM;AAC9B,YAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,YAAY,EAAE,OAAO,UAAU;AAAA,EAC3F,CAAC;AACD,MAAI,UAAU;AACd,QAAM,WAAW,IAAI,SAAS;AAC9B,QAAM,YAAY,YAAY,QAAQ;AAAA,IACpC,MAAM,CAAC,QAAQ,OAAO,aAAa,IAAI,GAAG,SAAS,KAAK;AAAA,IACxD,CAAC,CAAC,UAAU,KAAK,MAAM;AACrB,cAAQ;AACR,UAAI,CAAC,SAAS;AACZ;AACF,UAAI,CAAC,SAAS;AACZ;AACF,YAAM,WAAW,IAAI;AAAA,QACnB;AAAA,QACA;AAAA,UACE,MAAM,aAAa,KAAK;AAAA,UACxB;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,eAAS,QAAQ,CAAC,OAAO,MAAM,SAAS,QAAQ,EAAE,CAAC;AACnD,gBAAU,MAAM;AACd,iBAAS,WAAW;AACpB,kBAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,EAAE,WAAW,OAAO,OAAO;AAAA,EAC7B,IAAI;AACJ,QAAM,OAAO,MAAM;AACjB,YAAQ;AACR,cAAU;AACV,aAAS,QAAQ;AAAA,EACnB;AACA,oBAAkB,IAAI;AACtB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ;AACN,cAAQ;AACR,eAAS,QAAQ;AAAA,IACnB;AAAA,IACA,SAAS;AACP,eAAS,QAAQ;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,SAAS,UAAU,CAAC,GAAG;AACnD,QAAM,EAAE,QAAAA,UAAS,eAAe,cAAc,YAAY,EAAE,IAAI;AAChE,QAAM,mBAAmB,IAAI,KAAK;AAClC;AAAA,IACE;AAAA,IACA,CAAC,gCAAgC;AAC/B,UAAI,iBAAiB,iBAAiB;AACtC,UAAI,aAAa;AACjB,iBAAW,SAAS,6BAA6B;AAC/C,YAAI,MAAM,QAAQ,YAAY;AAC5B,uBAAa,MAAM;AACnB,2BAAiB,MAAM;AAAA,QACzB;AAAA,MACF;AACA,uBAAiB,QAAQ;AAAA,IAC3B;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAAA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,SAAyB,oBAAI,IAAI;AAEvC,SAAS,YAAY,KAAK;AACxB,QAAM,QAAQ,gBAAgB;AAC9B,WAAS,GAAG,UAAU;AACpB,QAAI;AACJ,UAAM,YAAY,OAAO,IAAI,GAAG,KAAqB,oBAAI,IAAI;AAC7D,cAAU,IAAI,QAAQ;AACtB,WAAO,IAAI,KAAK,SAAS;AACzB,UAAM,OAAO,MAAM,IAAI,QAAQ;AAC/B,KAAC,KAAK,SAAS,OAAO,SAAS,MAAM,aAAa,OAAO,SAAS,GAAG,KAAK,IAAI;AAC9E,WAAO;AAAA,EACT;AACA,WAAS,KAAK,UAAU;AACtB,aAAS,aAAa,MAAM;AAC1B,UAAI,SAAS;AACb,eAAS,GAAG,IAAI;AAAA,IAClB;AACA,WAAO,GAAG,SAAS;AAAA,EACrB;AACA,WAAS,IAAI,UAAU;AACrB,UAAM,YAAY,OAAO,IAAI,GAAG;AAChC,QAAI,CAAC;AACH;AACF,cAAU,OAAO,QAAQ;AACzB,QAAI,CAAC,UAAU;AACb,YAAM;AAAA,EACV;AACA,WAAS,QAAQ;AACf,WAAO,OAAO,GAAG;AAAA,EACnB;AACA,WAAS,KAAK,OAAO,SAAS;AAC5B,QAAI;AACJ,KAAC,KAAK,OAAO,IAAI,GAAG,MAAM,OAAO,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,OAAO,CAAC;AAAA,EAC/E;AACA,SAAO,EAAE,IAAI,MAAM,KAAK,MAAM,MAAM;AACtC;AAEA,SAAS,uBAAuB,SAAS;AACvC,MAAI,YAAY;AACd,WAAO,CAAC;AACV,SAAO;AACT;AACA,SAAS,eAAe,KAAKD,UAAS,CAAC,GAAG,UAAU,CAAC,GAAG;AACtD,QAAM,QAAQ,IAAI,IAAI;AACtB,QAAM,OAAO,IAAI,IAAI;AACrB,QAAM,SAAS,IAAI,YAAY;AAC/B,QAAM,cAAc,IAAI,IAAI;AAC5B,QAAM,QAAQ,WAAW,IAAI;AAC7B,QAAM,SAASM,OAAM,GAAG;AACxB,QAAM,cAAc,WAAW,IAAI;AACnC,MAAI,mBAAmB;AACvB,MAAI,UAAU;AACd,QAAM;AAAA,IACJ,kBAAkB;AAAA,IAClB,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,QAAQ,MAAM;AAClB,QAAI,YAAY,YAAY,OAAO;AACjC,kBAAY,MAAM,MAAM;AACxB,kBAAY,QAAQ;AACpB,aAAO,QAAQ;AACf,yBAAmB;AAAA,IACrB;AAAA,EACF;AACA,QAAM,QAAQ,MAAM;AAClB,QAAI,oBAAoB,OAAO,OAAO,UAAU;AAC9C;AACF,UAAM,KAAK,IAAI,YAAY,OAAO,OAAO,EAAE,gBAAgB,CAAC;AAC5D,WAAO,QAAQ;AACf,gBAAY,QAAQ;AACpB,OAAG,SAAS,MAAM;AAChB,aAAO,QAAQ;AACf,YAAM,QAAQ;AAAA,IAChB;AACA,OAAG,UAAU,CAAC,MAAM;AAClB,aAAO,QAAQ;AACf,YAAM,QAAQ;AACd,UAAI,GAAG,eAAe,KAAK,CAAC,oBAAoB,QAAQ,eAAe;AACrE,WAAG,MAAM;AACT,cAAM;AAAA,UACJ,UAAU;AAAA,UACV,QAAQ;AAAA,UACR;AAAA,QACF,IAAI,uBAAuB,QAAQ,aAAa;AAChD,mBAAW;AACX,YAAI,OAAO,YAAY,aAAa,UAAU,KAAK,UAAU;AAC3D,qBAAW,OAAO,KAAK;AAAA,iBAChB,OAAO,YAAY,cAAc,QAAQ;AAChD,qBAAW,OAAO,KAAK;AAAA;AAEvB,sBAAY,OAAO,SAAS,SAAS;AAAA,MACzC;AAAA,IACF;AACA,OAAG,YAAY,CAAC,MAAM;AACpB,YAAM,QAAQ;AACd,WAAK,QAAQ,EAAE;AACf,kBAAY,QAAQ,EAAE;AAAA,IACxB;AACA,eAAW,cAAcN,SAAQ;AAC/B,uBAAiB,IAAI,YAAY,CAAC,MAAM;AACtC,cAAM,QAAQ;AACd,aAAK,QAAQ,EAAE,QAAQ;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,EACF;AACA,QAAM,OAAO,MAAM;AACjB,QAAI,CAAC;AACH;AACF,UAAM;AACN,uBAAmB;AACnB,cAAU;AACV,UAAM;AAAA,EACR;AACA,MAAI;AACF,UAAM,QAAQ,MAAM,EAAE,WAAW,KAAK,CAAC;AACzC,oBAAkB,KAAK;AACvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,UAAU,CAAC,GAAG;AACnC,QAAM,EAAE,eAAe,GAAG,IAAI;AAC9B,QAAM,cAAc,aAAa,MAAM,OAAO,WAAW,eAAe,gBAAgB,MAAM;AAC9F,QAAM,UAAU,IAAI,YAAY;AAChC,iBAAe,KAAK,aAAa;AAC/B,QAAI,CAAC,YAAY;AACf;AACF,UAAM,aAAa,IAAI,OAAO,WAAW;AACzC,UAAM,SAAS,MAAM,WAAW,KAAK,WAAW;AAChD,YAAQ,QAAQ,OAAO;AACvB,WAAO;AAAA,EACT;AACA,SAAO,EAAE,aAAa,SAAS,KAAK;AACtC;AAEA,SAAS,WAAW,UAAU,MAAM,UAAU,CAAC,GAAG;AAChD,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAAE,YAAW;AAAA,EACb,IAAI;AACJ,QAAM,UAAUI,OAAM,OAAO;AAC7B,QAAM,YAAY,CAAC,SAAS;AAC1B,UAAM,WAAWJ,aAAY,OAAO,SAASA,UAAS,KAAK,iBAAiB,cAAc,GAAG,IAAI;AACjG,QAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AACtC,YAAM,OAAOA,aAAY,OAAO,SAASA,UAAS,cAAc,MAAM;AACtE,UAAI,MAAM;AACR,aAAK,MAAM;AACX,aAAK,OAAO,GAAG,OAAO,GAAG,IAAI;AAC7B,aAAK,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC;AAC1C,QAAAA,aAAY,OAAO,SAASA,UAAS,KAAK,OAAO,IAAI;AAAA,MACvD;AACA;AAAA,IACF;AACA,gBAAY,OAAO,SAAS,SAAS,QAAQ,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,EAAE;AAAA,EACpF;AACA;AAAA,IACE;AAAA,IACA,CAAC,GAAG,MAAM;AACR,UAAI,OAAO,MAAM,YAAY,MAAM;AACjC,kBAAU,CAAC;AAAA,IACf;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA,SAAO;AACT;AAEA,IAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,MAAM;AACR;AACA,SAAS,eAAe,KAAK;AAC3B,SAAO,OAAO,aAAa,KAAK,aAAa,WAAW,eAAe,WAAW,eAAe,cAAc,gBAAgB,SAAS,mBAAmB;AAC7J;AACA,IAAM,aAAa;AACnB,SAAS,cAAc,KAAK;AAC1B,SAAO,WAAW,KAAK,GAAG;AAC5B;AACA,SAAS,gBAAgB,SAAS;AAChC,MAAI,OAAO,YAAY,eAAe,mBAAmB;AACvD,WAAO,OAAO,YAAY,QAAQ,QAAQ,CAAC;AAC7C,SAAO;AACT;AACA,SAAS,iBAAiB,gBAAgB,WAAW;AACnD,MAAI,gBAAgB,aAAa;AAC/B,WAAO,OAAO,QAAQ;AACpB,YAAM,WAAW,UAAU,UAAU,SAAS,CAAC;AAC/C,UAAI;AACF,eAAO,EAAE,GAAG,KAAK,GAAG,MAAM,SAAS,GAAG,EAAE;AAC1C,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AACL,WAAO,OAAO,QAAQ;AACpB,iBAAW,YAAY,WAAW;AAChC,YAAI;AACF,gBAAM,EAAE,GAAG,KAAK,GAAG,MAAM,SAAS,GAAG,EAAE;AAAA,MAC3C;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AACA,SAAS,YAAY,SAAS,CAAC,GAAG;AAChC,QAAM,eAAe,OAAO,eAAe;AAC3C,QAAM,WAAW,OAAO,WAAW,CAAC;AACpC,QAAM,gBAAgB,OAAO,gBAAgB,CAAC;AAC9C,WAAS,gBAAgB,QAAQ,MAAM;AACrC,UAAM,cAAc,SAAS,MAAM;AACjC,YAAM,UAAU,QAAQ,OAAO,OAAO;AACtC,YAAM,YAAY,QAAQ,GAAG;AAC7B,aAAO,WAAW,CAAC,cAAc,SAAS,IAAI,UAAU,SAAS,SAAS,IAAI;AAAA,IAChF,CAAC;AACD,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,KAAK,SAAS,GAAG;AACnB,UAAI,eAAe,KAAK,CAAC,CAAC,GAAG;AAC3B,kBAAU;AAAA,UACR,GAAG;AAAA,UACH,GAAG,KAAK,CAAC;AAAA,UACT,aAAa,iBAAiB,cAAc,SAAS,aAAa,KAAK,CAAC,EAAE,WAAW;AAAA,UACrF,YAAY,iBAAiB,cAAc,SAAS,YAAY,KAAK,CAAC,EAAE,UAAU;AAAA,UAClF,cAAc,iBAAiB,cAAc,SAAS,cAAc,KAAK,CAAC,EAAE,YAAY;AAAA,QAC1F;AAAA,MACF,OAAO;AACL,uBAAe;AAAA,UACb,GAAG;AAAA,UACH,GAAG,KAAK,CAAC;AAAA,UACT,SAAS;AAAA,YACP,GAAG,gBAAgB,aAAa,OAAO,KAAK,CAAC;AAAA,YAC7C,GAAG,gBAAgB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,SAAS,KAAK,eAAe,KAAK,CAAC,CAAC,GAAG;AAC9C,gBAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG,KAAK,CAAC;AAAA,QACT,aAAa,iBAAiB,cAAc,SAAS,aAAa,KAAK,CAAC,EAAE,WAAW;AAAA,QACrF,YAAY,iBAAiB,cAAc,SAAS,YAAY,KAAK,CAAC,EAAE,UAAU;AAAA,QAClF,cAAc,iBAAiB,cAAc,SAAS,cAAc,KAAK,CAAC,EAAE,YAAY;AAAA,MAC1F;AAAA,IACF;AACA,WAAO,SAAS,aAAa,cAAc,OAAO;AAAA,EACpD;AACA,SAAO;AACT;AACA,SAAS,SAAS,QAAQ,MAAM;AAC9B,MAAI;AACJ,QAAM,gBAAgB,OAAO,oBAAoB;AACjD,MAAI,eAAe,CAAC;AACpB,MAAI,UAAU;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,mBAAmB;AAAA,EACrB;AACA,QAAM,SAAS;AAAA,IACb,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACA,MAAI,KAAK,SAAS,GAAG;AACnB,QAAI,eAAe,KAAK,CAAC,CAAC;AACxB,gBAAU,EAAE,GAAG,SAAS,GAAG,KAAK,CAAC,EAAE;AAAA;AAEnC,qBAAe,KAAK,CAAC;AAAA,EACzB;AACA,MAAI,KAAK,SAAS,GAAG;AACnB,QAAI,eAAe,KAAK,CAAC,CAAC;AACxB,gBAAU,EAAE,GAAG,SAAS,GAAG,KAAK,CAAC,EAAE;AAAA,EACvC;AACA,QAAM;AAAA,IACJ,SAAS,KAAK,kBAAkB,OAAO,SAAS,GAAG;AAAA,IACnD;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,gBAAgB,gBAAgB;AACtC,QAAM,aAAa,gBAAgB;AACnC,QAAM,eAAe,gBAAgB;AACrC,QAAM,aAAa,IAAI,KAAK;AAC5B,QAAM,aAAa,IAAI,KAAK;AAC5B,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,aAAa,IAAI,IAAI;AAC3B,QAAM,WAAW,WAAW,IAAI;AAChC,QAAM,QAAQ,WAAW,IAAI;AAC7B,QAAM,OAAO,WAAW,eAAe,IAAI;AAC3C,QAAM,WAAW,SAAS,MAAM,iBAAiB,WAAW,KAAK;AACjE,MAAI;AACJ,MAAI;AACJ,QAAM,QAAQ,MAAM;AAClB,QAAI,eAAe;AACjB,oBAAc,OAAO,SAAS,WAAW,MAAM;AAC/C,mBAAa,IAAI,gBAAgB;AACjC,iBAAW,OAAO,UAAU,MAAM,QAAQ,QAAQ;AAClD,qBAAe;AAAA,QACb,GAAG;AAAA,QACH,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,CAAC,cAAc;AAC7B,eAAW,QAAQ;AACnB,eAAW,QAAQ,CAAC;AAAA,EACtB;AACA,MAAI;AACF,YAAQ,aAAa,OAAO,SAAS,EAAE,WAAW,MAAM,CAAC;AAC3D,MAAI,iBAAiB;AACrB,QAAM,UAAU,OAAO,gBAAgB,UAAU;AAC/C,QAAI,KAAK;AACT,UAAM;AACN,YAAQ,IAAI;AACZ,UAAM,QAAQ;AACd,eAAW,QAAQ;AACnB,YAAQ,QAAQ;AAChB,sBAAkB;AAClB,UAAM,wBAAwB;AAC9B,UAAM,sBAAsB;AAAA,MAC1B,QAAQ,OAAO;AAAA,MACf,SAAS,CAAC;AAAA,IACZ;AACA,QAAI,OAAO,SAAS;AAClB,YAAM,UAAU,gBAAgB,oBAAoB,OAAO;AAC3D,YAAM,UAAU,QAAQ,OAAO,OAAO;AACtC,UAAI,CAAC,OAAO,eAAe,WAAW,OAAO,eAAe,OAAO,MAAM,OAAO,aAAa,EAAE,mBAAmB;AAChH,eAAO,cAAc;AACvB,UAAI,OAAO;AACT,gBAAQ,cAAc,KAAK,MAAM,eAAe,OAAO,WAAW,MAAM,OAAO,MAAM,OAAO;AAC9F,0BAAoB,OAAO,OAAO,gBAAgB,SAAS,KAAK,UAAU,OAAO,IAAI;AAAA,IACvF;AACA,QAAI,aAAa;AACjB,UAAM,UAAU;AAAA,MACd,KAAK,QAAQ,GAAG;AAAA,MAChB,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,QAAQ,MAAM;AACZ,qBAAa;AAAA,MACf;AAAA,IACF;AACA,QAAI,QAAQ;AACV,aAAO,OAAO,SAAS,MAAM,QAAQ,YAAY,OAAO,CAAC;AAC3D,QAAI,cAAc,CAAC,OAAO;AACxB,cAAQ,KAAK;AACb,aAAO,QAAQ,QAAQ,IAAI;AAAA,IAC7B;AACA,QAAI,eAAe;AACnB,QAAI;AACF,YAAM,MAAM;AACd,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,QACE,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,SAAS;AAAA,UACP,GAAG,gBAAgB,oBAAoB,OAAO;AAAA,UAC9C,GAAG,iBAAiB,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,OAAO;AAAA,QACzE;AAAA,MACF;AAAA,IACF,EAAE,KAAK,OAAO,kBAAkB;AAC9B,eAAS,QAAQ;AACjB,iBAAW,QAAQ,cAAc;AACjC,qBAAe,MAAM,cAAc,MAAM,EAAE,OAAO,IAAI,EAAE;AACxD,UAAI,CAAC,cAAc,IAAI;AACrB,aAAK,QAAQ,eAAe;AAC5B,cAAM,IAAI,MAAM,cAAc,UAAU;AAAA,MAC1C;AACA,UAAI,QAAQ,YAAY;AACtB,SAAC,EAAE,MAAM,aAAa,IAAI,MAAM,QAAQ,WAAW;AAAA,UACjD,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AACA,WAAK,QAAQ;AACb,oBAAc,QAAQ,aAAa;AACnC,aAAO;AAAA,IACT,CAAC,EAAE,MAAM,OAAO,eAAe;AAC7B,UAAI,YAAY,WAAW,WAAW,WAAW;AACjD,UAAI,QAAQ,cAAc;AACxB,SAAC,EAAE,OAAO,WAAW,MAAM,aAAa,IAAI,MAAM,QAAQ,aAAa;AAAA,UACrE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,UAAU,SAAS;AAAA,QACrB,CAAC;AAAA,MACH;AACA,YAAM,QAAQ;AACd,UAAI,QAAQ;AACV,aAAK,QAAQ;AACf,iBAAW,QAAQ,UAAU;AAC7B,UAAI;AACF,cAAM;AACR,aAAO;AAAA,IACT,CAAC,EAAE,QAAQ,MAAM;AACf,UAAI,0BAA0B;AAC5B,gBAAQ,KAAK;AACf,UAAI;AACF,cAAM,KAAK;AACb,mBAAa,QAAQ,IAAI;AAAA,IAC3B,CAAC;AAAA,EACH;AACA,QAAM,UAAUI,OAAM,QAAQ,OAAO;AACrC;AAAA,IACE;AAAA,MACE;AAAA,MACAA,OAAM,GAAG;AAAA,IACX;AAAA,IACA,CAAC,CAAC,QAAQ,MAAM,YAAY,QAAQ;AAAA,IACpC,EAAE,MAAM,KAAK;AAAA,EACf;AACA,QAAM,QAAQ;AAAA,IACZ,YAAY,SAAS,UAAU;AAAA,IAC/B,YAAY,SAAS,UAAU;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB,cAAc;AAAA,IAC/B,cAAc,WAAW;AAAA,IACzB,gBAAgB,aAAa;AAAA;AAAA,IAE7B,KAAK,UAAU,KAAK;AAAA,IACpB,KAAK,UAAU,KAAK;AAAA,IACpB,MAAM,UAAU,MAAM;AAAA,IACtB,QAAQ,UAAU,QAAQ;AAAA,IAC1B,OAAO,UAAU,OAAO;AAAA,IACxB,MAAM,UAAU,MAAM;AAAA,IACtB,SAAS,UAAU,SAAS;AAAA;AAAA,IAE5B,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,QAAQ,MAAM;AAAA,IACpB,aAAa,QAAQ,aAAa;AAAA,IAClC,UAAU,QAAQ,UAAU;AAAA,EAC9B;AACA,WAAS,UAAU,QAAQ;AACzB,WAAO,CAAC,SAAS,gBAAgB;AAC/B,UAAI,CAAC,WAAW,OAAO;AACrB,eAAO,SAAS;AAChB,eAAO,UAAU;AACjB,eAAO,cAAc;AACrB,YAAI,MAAM,OAAO,OAAO,GAAG;AACzB;AAAA,YACE;AAAA,cACE;AAAA,cACAA,OAAM,OAAO,OAAO;AAAA,YACtB;AAAA,YACA,CAAC,CAAC,QAAQ,MAAM,YAAY,QAAQ;AAAA,YACpC,EAAE,MAAM,KAAK;AAAA,UACf;AAAA,QACF;AACA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,KAAK,aAAa,YAAY;AAC5B,mBAAO,kBAAkB,EAAE,KAAK,aAAa,UAAU;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,oBAAoB;AAC3B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,UAAU,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,QAAQ,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,OAAO,MAAM,CAAC;AAAA,IAC1F,CAAC;AAAA,EACH;AACA,WAAS,QAAQ,MAAM;AACrB,WAAO,MAAM;AACX,UAAI,CAAC,WAAW,OAAO;AACrB,eAAO,OAAO;AACd,eAAO;AAAA,UACL,GAAG;AAAA,UACH,KAAK,aAAa,YAAY;AAC5B,mBAAO,kBAAkB,EAAE,KAAK,aAAa,UAAU;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,QAAQ;AACV,YAAQ,QAAQ,EAAE,KAAK,MAAM,QAAQ,CAAC;AACxC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,KAAK,aAAa,YAAY;AAC5B,aAAO,kBAAkB,EAAE,KAAK,aAAa,UAAU;AAAA,IACzD;AAAA,EACF;AACF;AACA,SAAS,UAAU,OAAO,KAAK;AAC7B,MAAI,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,WAAW,GAAG;AAC7C,WAAO,GAAG,KAAK,IAAI,GAAG;AACxB,SAAO,GAAG,KAAK,GAAG,GAAG;AACvB;AAEA,IAAM,kBAAkB;AAAA,EACtB,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AACb;AACA,SAAS,cAAc,UAAU,CAAC,GAAG;AACnC,QAAM;AAAA,IACJ,UAAAJ,YAAW;AAAA,EACb,IAAI;AACJ,QAAM,QAAQ,IAAI,IAAI;AACtB,QAAM,EAAE,IAAI,UAAU,SAAS,cAAc,IAAI,gBAAgB;AACjE,QAAM,EAAE,IAAI,UAAU,SAAS,cAAc,IAAI,gBAAgB;AACjE,MAAI;AACJ,MAAIA,WAAU;AACZ,YAAQA,UAAS,cAAc,OAAO;AACtC,UAAM,OAAO;AACb,UAAM,WAAW,CAAC,UAAU;AAC1B,YAAM,SAAS,MAAM;AACrB,YAAM,QAAQ,OAAO;AACrB,oBAAc,MAAM,KAAK;AAAA,IAC3B;AACA,UAAM,WAAW,MAAM;AACrB,oBAAc;AAAA,IAChB;AAAA,EACF;AACA,QAAM,QAAQ,MAAM;AAClB,UAAM,QAAQ;AACd,QAAI,SAAS,MAAM,OAAO;AACxB,YAAM,QAAQ;AACd,oBAAc,IAAI;AAAA,IACpB;AAAA,EACF;AACA,QAAM,OAAO,CAAC,iBAAiB;AAC7B,QAAI,CAAC;AACH;AACF,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AACA,UAAM,WAAW,SAAS;AAC1B,UAAM,SAAS,SAAS;AACxB,UAAM,kBAAkB,SAAS;AACjC,QAAI,OAAO,UAAU,SAAS;AAC5B,YAAM,UAAU,SAAS;AAC3B,QAAI,SAAS;AACX,YAAM;AACR,UAAM,MAAM;AAAA,EACd;AACA,SAAO;AAAA,IACL,OAAO,SAAS,KAAK;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,UAAU,CAAC,GAAG;AACzC,QAAM;AAAA,IACJ,QAAQ,UAAU;AAAA,IAClB,WAAW;AAAA,EACb,IAAI;AACJ,QAAMD,UAAS;AACf,QAAM,cAAc,aAAa,MAAMA,WAAU,wBAAwBA,WAAU,wBAAwBA,OAAM;AACjH,QAAM,aAAa,IAAI;AACvB,QAAM,OAAO,IAAI;AACjB,QAAM,OAAO,IAAI;AACjB,QAAM,WAAW,SAAS,MAAM;AAC9B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,KAAK,UAAU,OAAO,SAAS,GAAG,SAAS,OAAO,KAAK;AAAA,EAC5E,CAAC;AACD,QAAM,WAAW,SAAS,MAAM;AAC9B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,KAAK,UAAU,OAAO,SAAS,GAAG,SAAS,OAAO,KAAK;AAAA,EAC5E,CAAC;AACD,QAAM,WAAW,SAAS,MAAM;AAC9B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,KAAK,UAAU,OAAO,SAAS,GAAG,SAAS,OAAO,KAAK;AAAA,EAC5E,CAAC;AACD,QAAM,mBAAmB,SAAS,MAAM;AACtC,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,KAAK,UAAU,OAAO,SAAS,GAAG,iBAAiB,OAAO,KAAK;AAAA,EACpF,CAAC;AACD,iBAAe,KAAK,WAAW,CAAC,GAAG;AACjC,QAAI,CAAC,YAAY;AACf;AACF,UAAM,CAAC,MAAM,IAAI,MAAMA,QAAO,mBAAmB,EAAE,GAAG,QAAQ,OAAO,GAAG,GAAG,SAAS,CAAC;AACrF,eAAW,QAAQ;AACnB,UAAM,WAAW;AAAA,EACnB;AACA,iBAAe,OAAO,WAAW,CAAC,GAAG;AACnC,QAAI,CAAC,YAAY;AACf;AACF,eAAW,QAAQ,MAAMA,QAAO,mBAAmB,EAAE,GAAG,SAAS,GAAG,SAAS,CAAC;AAC9E,SAAK,QAAQ;AACb,UAAM,WAAW;AAAA,EACnB;AACA,iBAAe,KAAK,WAAW,CAAC,GAAG;AACjC,QAAI,CAAC,YAAY;AACf;AACF,QAAI,CAAC,WAAW;AACd,aAAO,OAAO,QAAQ;AACxB,QAAI,KAAK,OAAO;AACd,YAAM,iBAAiB,MAAM,WAAW,MAAM,eAAe;AAC7D,YAAM,eAAe,MAAM,KAAK,KAAK;AACrC,YAAM,eAAe,MAAM;AAAA,IAC7B;AACA,UAAM,WAAW;AAAA,EACnB;AACA,iBAAe,OAAO,WAAW,CAAC,GAAG;AACnC,QAAI,CAAC,YAAY;AACf;AACF,eAAW,QAAQ,MAAMA,QAAO,mBAAmB,EAAE,GAAG,SAAS,GAAG,SAAS,CAAC;AAC9E,QAAI,KAAK,OAAO;AACd,YAAM,iBAAiB,MAAM,WAAW,MAAM,eAAe;AAC7D,YAAM,eAAe,MAAM,KAAK,KAAK;AACrC,YAAM,eAAe,MAAM;AAAA,IAC7B;AACA,UAAM,WAAW;AAAA,EACnB;AACA,iBAAe,aAAa;AAC1B,QAAI;AACJ,SAAK,QAAQ,QAAQ,KAAK,WAAW,UAAU,OAAO,SAAS,GAAG,QAAQ;AAAA,EAC5E;AACA,iBAAe,aAAa;AAC1B,QAAI,IAAI;AACR,UAAM,WAAW;AACjB,UAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAI,SAAS;AACX,WAAK,QAAQ,QAAQ,KAAK,KAAK,UAAU,OAAO,SAAS,GAAG,KAAK;AAAA,aAC1D,SAAS;AAChB,WAAK,QAAQ,QAAQ,KAAK,KAAK,UAAU,OAAO,SAAS,GAAG,YAAY;AAAA,aACjE,SAAS;AAChB,WAAK,QAAQ,KAAK;AAAA,EACtB;AACA,QAAM,MAAM,QAAQ,QAAQ,GAAG,UAAU;AACzC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,SAAS,QAAQ,UAAU,CAAC,GAAG;AACtC,QAAM,EAAE,eAAe,OAAO,eAAe,OAAO,gBAAgB,MAAM,IAAI;AAC9E,QAAM,eAAe,IAAI,KAAK;AAC9B,QAAM,gBAAgB,SAAS,MAAM,aAAa,MAAM,CAAC;AACzD,mBAAiB,eAAe,SAAS,CAAC,UAAU;AAClD,QAAI,IAAI;AACR,QAAI,CAAC,kBAAkB,MAAM,KAAK,MAAM,QAAQ,YAAY,OAAO,SAAS,GAAG,KAAK,IAAI,gBAAgB;AACtG,mBAAa,QAAQ;AAAA,EACzB,CAAC;AACD,mBAAiB,eAAe,QAAQ,MAAM,aAAa,QAAQ,KAAK;AACxE,QAAM,UAAU,SAAS;AAAA,IACvB,KAAK,MAAM,aAAa;AAAA,IACxB,IAAI,OAAO;AACT,UAAI,IAAI;AACR,UAAI,CAAC,SAAS,aAAa;AACzB,SAAC,KAAK,cAAc,UAAU,OAAO,SAAS,GAAG,KAAK;AAAA,eAC/C,SAAS,CAAC,aAAa;AAC9B,SAAC,KAAK,cAAc,UAAU,OAAO,SAAS,GAAG,MAAM,EAAE,cAAc,CAAC;AAAA,IAC5E;AAAA,EACF,CAAC;AACD;AAAA,IACE;AAAA,IACA,MAAM;AACJ,cAAQ,QAAQ;AAAA,IAClB;AAAA,IACA,EAAE,WAAW,MAAM,OAAO,OAAO;AAAA,EACnC;AACA,SAAO,EAAE,QAAQ;AACnB;AAEA,IAAM,iBAAiB;AACvB,IAAM,kBAAkB;AACxB,SAAS,eAAe,QAAQ,UAAU,CAAC,GAAG;AAC5C,QAAM,EAAE,QAAAA,UAAS,cAAc,IAAI;AACnC,QAAM,gBAAgB,SAAS,MAAM,aAAa,MAAM,CAAC;AACzD,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,UAAU,SAAS,MAAM,SAAS,KAAK;AAC7C,QAAM,gBAAgB,iBAAiB,OAAO;AAC9C,MAAI,CAACA,WAAU,CAAC,cAAc,OAAO;AACnC,WAAO,EAAE,QAAQ;AAAA,EACnB;AACA,mBAAiB,eAAe,gBAAgB,MAAM,SAAS,QAAQ,IAAI;AAC3E,mBAAiB,eAAe,iBAAiB,MAAM,SAAS,QAAQ,KAAK;AAC7E,SAAO,EAAE,QAAQ;AACnB;AAEA,SAAS,OAAO,SAAS;AACvB,MAAI;AACJ,QAAM,MAAM,IAAI,CAAC;AACjB,MAAI,OAAO,gBAAgB;AACzB,WAAO;AACT,QAAM,SAAS,KAAK,WAAW,OAAO,SAAS,QAAQ,UAAU,OAAO,KAAK;AAC7E,MAAI,OAAO,YAAY,IAAI;AAC3B,MAAI,QAAQ;AACZ,WAAS,MAAM;AACb,aAAS;AACT,QAAI,SAAS,OAAO;AAClB,YAAMU,OAAM,YAAY,IAAI;AAC5B,YAAM,OAAOA,OAAM;AACnB,UAAI,QAAQ,KAAK,MAAM,OAAO,OAAO,MAAM;AAC3C,aAAOA;AACP,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAEA,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,SAAS,cAAc,QAAQ,UAAU,CAAC,GAAG;AAC3C,QAAM;AAAA,IACJ,UAAAT,YAAW;AAAA,IACX,WAAW;AAAA,EACb,IAAI;AACJ,QAAM,YAAY,SAAS,MAAM;AAC/B,QAAI;AACJ,YAAQ,KAAK,aAAa,MAAM,MAAM,OAAO,KAAKA,aAAY,OAAO,SAASA,UAAS,cAAc,MAAM;AAAA,EAC7G,CAAC;AACD,QAAM,eAAe,IAAI,KAAK;AAC9B,QAAM,gBAAgB,SAAS,MAAM;AACnC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,CAAC,MAAMA,aAAY,KAAKA,aAAY,UAAU,SAAS,KAAK,UAAU,KAAK;AAAA,EACpF,CAAC;AACD,QAAM,aAAa,SAAS,MAAM;AAChC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,CAAC,MAAMA,aAAY,KAAKA,aAAY,UAAU,SAAS,KAAK,UAAU,KAAK;AAAA,EACpF,CAAC;AACD,QAAM,oBAAoB,SAAS,MAAM;AACvC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,CAAC,MAAMA,aAAY,KAAKA,aAAY,UAAU,SAAS,KAAK,UAAU,KAAK;AAAA,EACpF,CAAC;AACD,QAAM,0BAA0B;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,CAAC,MAAMA,aAAY,KAAKA,SAAQ;AACvC,QAAM,cAAc,aAAa,MAAM,UAAU,SAASA,aAAY,cAAc,UAAU,UAAU,WAAW,UAAU,UAAU,kBAAkB,UAAU,MAAM;AACzK,QAAM,6BAA6B,MAAM;AACvC,QAAI;AACF,cAAQA,aAAY,OAAO,SAASA,UAAS,uBAAuB,OAAO,UAAU;AACvF,WAAO;AAAA,EACT;AACA,QAAM,sBAAsB,MAAM;AAChC,QAAI,kBAAkB,OAAO;AAC3B,UAAIA,aAAYA,UAAS,kBAAkB,KAAK,KAAK,MAAM;AACzD,eAAOA,UAAS,kBAAkB,KAAK;AAAA,MACzC,OAAO;AACL,cAAM,UAAU,UAAU;AAC1B,aAAK,WAAW,OAAO,SAAS,QAAQ,kBAAkB,KAAK,MAAM,MAAM;AACzE,iBAAO,QAAQ,QAAQ,kBAAkB,KAAK,CAAC;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,iBAAe,OAAO;AACpB,QAAI,CAAC,YAAY,SAAS,CAAC,aAAa;AACtC;AACF,QAAI,WAAW,OAAO;AACpB,WAAKA,aAAY,OAAO,SAASA,UAAS,WAAW,KAAK,MAAM,MAAM;AACpE,cAAMA,UAAS,WAAW,KAAK,EAAE;AAAA,MACnC,OAAO;AACL,cAAM,UAAU,UAAU;AAC1B,aAAK,WAAW,OAAO,SAAS,QAAQ,WAAW,KAAK,MAAM;AAC5D,gBAAM,QAAQ,WAAW,KAAK,EAAE;AAAA,MACpC;AAAA,IACF;AACA,iBAAa,QAAQ;AAAA,EACvB;AACA,iBAAe,QAAQ;AACrB,QAAI,CAAC,YAAY,SAAS,aAAa;AACrC;AACF,QAAI,oBAAoB;AACtB,YAAM,KAAK;AACb,UAAM,UAAU,UAAU;AAC1B,QAAI,cAAc,UAAU,WAAW,OAAO,SAAS,QAAQ,cAAc,KAAK,MAAM,MAAM;AAC5F,YAAM,QAAQ,cAAc,KAAK,EAAE;AACnC,mBAAa,QAAQ;AAAA,IACvB;AAAA,EACF;AACA,iBAAe,SAAS;AACtB,WAAO,aAAa,QAAQ,KAAK,IAAI,MAAM;AAAA,EAC7C;AACA,QAAM,kBAAkB,MAAM;AAC5B,UAAM,2BAA2B,oBAAoB;AACrD,QAAI,CAAC,4BAA4B,4BAA4B,2BAA2B;AACtF,mBAAa,QAAQ;AAAA,EACzB;AACA,mBAAiBA,WAAU,eAAe,iBAAiB,KAAK;AAChE,mBAAiB,MAAM,aAAa,SAAS,GAAG,eAAe,iBAAiB,KAAK;AACrF,MAAI;AACF,sBAAkB,IAAI;AACxB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,8BAA8B,SAAS;AAC9C,SAAO,SAAS,MAAM;AACpB,QAAI,QAAQ,OAAO;AACjB,aAAO;AAAA,QACL,SAAS;AAAA,UACP,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,UAC1B,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,UAC1B,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,UAC1B,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,QAC5B;AAAA,QACA,QAAQ;AAAA,UACN,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,UAC7B,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAAA,QAChC;AAAA,QACA,UAAU;AAAA,UACR,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,UAC7B,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAAA,QAChC;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,YACJ,YAAY,QAAQ,MAAM,KAAK,CAAC;AAAA,YAChC,UAAU,QAAQ,MAAM,KAAK,CAAC;AAAA,YAC9B,QAAQ,QAAQ,MAAM,QAAQ,EAAE;AAAA,UAClC;AAAA,UACA,OAAO;AAAA,YACL,YAAY,QAAQ,MAAM,KAAK,CAAC;AAAA,YAChC,UAAU,QAAQ,MAAM,KAAK,CAAC;AAAA,YAC9B,QAAQ,QAAQ,MAAM,QAAQ,EAAE;AAAA,UAClC;AAAA,QACF;AAAA,QACA,MAAM;AAAA,UACJ,IAAI,QAAQ,MAAM,QAAQ,EAAE;AAAA,UAC5B,MAAM,QAAQ,MAAM,QAAQ,EAAE;AAAA,UAC9B,MAAM,QAAQ,MAAM,QAAQ,EAAE;AAAA,UAC9B,OAAO,QAAQ,MAAM,QAAQ,EAAE;AAAA,QACjC;AAAA,QACA,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,QAC7B,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAAA,MAChC;AAAA,IACF;AACA,WAAO;AAAA,EACT,CAAC;AACH;AACA,SAAS,WAAW,UAAU,CAAC,GAAG;AAChC,QAAM;AAAA,IACJ,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,cAAc,aAAa,MAAM,aAAa,iBAAiB,SAAS;AAC9E,QAAM,WAAW,IAAI,CAAC,CAAC;AACvB,QAAM,kBAAkB,gBAAgB;AACxC,QAAM,qBAAqB,gBAAgB;AAC3C,QAAM,mBAAmB,CAAC,YAAY;AACpC,UAAM,kBAAkB,CAAC;AACzB,UAAM,oBAAoB,uBAAuB,UAAU,QAAQ,oBAAoB;AACvF,QAAI;AACF,sBAAgB,KAAK,iBAAiB;AACxC,QAAI,QAAQ;AACV,sBAAgB,KAAK,GAAG,QAAQ,eAAe;AACjD,WAAO;AAAA,MACL,IAAI,QAAQ;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf,WAAW,QAAQ;AAAA,MACnB,SAAS,QAAQ;AAAA,MACjB,WAAW,QAAQ;AAAA,MACnB,mBAAmB,QAAQ;AAAA,MAC3B;AAAA,MACA,MAAM,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI;AAAA,MACrC,SAAS,QAAQ,QAAQ,IAAI,CAAC,YAAY,EAAE,SAAS,OAAO,SAAS,SAAS,OAAO,SAAS,OAAO,OAAO,MAAM,EAAE;AAAA,IACtH;AAAA,EACF;AACA,QAAM,qBAAqB,MAAM;AAC/B,UAAM,aAAa,aAAa,OAAO,SAAS,UAAU,YAAY,MAAM,CAAC;AAC7E,eAAW,WAAW,WAAW;AAC/B,UAAI,WAAW,SAAS,MAAM,QAAQ,KAAK;AACzC,iBAAS,MAAM,QAAQ,KAAK,IAAI,iBAAiB,OAAO;AAAA,IAC5D;AAAA,EACF;AACA,QAAM,EAAE,UAAU,OAAO,OAAO,IAAI,SAAS,kBAAkB;AAC/D,QAAM,qBAAqB,CAAC,YAAY;AACtC,QAAI,CAAC,SAAS,MAAM,KAAK,CAAC,EAAE,MAAM,MAAM,UAAU,QAAQ,KAAK,GAAG;AAChE,eAAS,MAAM,KAAK,iBAAiB,OAAO,CAAC;AAC7C,sBAAgB,QAAQ,QAAQ,KAAK;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AACA,QAAM,wBAAwB,CAAC,YAAY;AACzC,aAAS,QAAQ,SAAS,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,QAAQ,KAAK;AACvE,uBAAmB,QAAQ,QAAQ,KAAK;AAAA,EAC1C;AACA,mBAAiB,oBAAoB,CAAC,MAAM,mBAAmB,EAAE,OAAO,CAAC;AACzE,mBAAiB,uBAAuB,CAAC,MAAM,sBAAsB,EAAE,OAAO,CAAC;AAC/E,eAAa,MAAM;AACjB,UAAM,aAAa,aAAa,OAAO,SAAS,UAAU,YAAY,MAAM,CAAC;AAC7E,eAAW,WAAW,WAAW;AAC/B,UAAI,WAAW,SAAS,MAAM,QAAQ,KAAK;AACzC,2BAAmB,OAAO;AAAA,IAC9B;AAAA,EACF,CAAC;AACD,QAAM;AACN,SAAO;AAAA,IACL;AAAA,IACA,aAAa,gBAAgB;AAAA,IAC7B,gBAAgB,mBAAmB;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,eAAe,UAAU,CAAC,GAAG;AACpC,QAAM;AAAA,IACJ,qBAAqB;AAAA,IACrB,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,cAAc,aAAa,MAAM,aAAa,iBAAiB,SAAS;AAC9E,QAAM,YAAY,IAAI,IAAI;AAC1B,QAAM,QAAQ,WAAW,IAAI;AAC7B,QAAM,SAAS,IAAI;AAAA,IACjB,UAAU;AAAA,IACV,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,OAAO;AAAA,EACT,CAAC;AACD,WAAS,eAAe,UAAU;AAChC,cAAU,QAAQ,SAAS;AAC3B,WAAO,QAAQ,SAAS;AACxB,UAAM,QAAQ;AAAA,EAChB;AACA,MAAI;AACJ,WAAS,SAAS;AAChB,QAAI,YAAY,OAAO;AACrB,gBAAU,UAAU,YAAY;AAAA,QAC9B;AAAA,QACA,CAAC,QAAQ,MAAM,QAAQ;AAAA,QACvB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI;AACF,WAAO;AACT,WAAS,QAAQ;AACf,QAAI,WAAW;AACb,gBAAU,YAAY,WAAW,OAAO;AAAA,EAC5C;AACA,oBAAkB,MAAM;AACtB,UAAM;AAAA,EACR,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB,CAAC,aAAa,aAAa,UAAU,WAAW,cAAc,OAAO;AAC7F,IAAM,YAAY;AAClB,SAAS,QAAQ,UAAU,WAAW,UAAU,CAAC,GAAG;AAClD,QAAM;AAAA,IACJ,eAAe;AAAA,IACf,4BAA4B;AAAA,IAC5B,QAAAF,UAAS;AAAA,IACT,QAAAC,UAAS;AAAA,IACT,cAAc,eAAe,EAAE;AAAA,EACjC,IAAI;AACJ,QAAM,OAAO,IAAI,YAAY;AAC7B,QAAM,aAAa,IAAI,UAAU,CAAC;AAClC,MAAI;AACJ,QAAM,QAAQ,MAAM;AAClB,SAAK,QAAQ;AACb,iBAAa,KAAK;AAClB,YAAQ,WAAW,MAAM,KAAK,QAAQ,MAAM,OAAO;AAAA,EACrD;AACA,QAAM,UAAU;AAAA,IACd;AAAA,IACA,MAAM;AACJ,iBAAW,QAAQ,UAAU;AAC7B,YAAM;AAAA,IACR;AAAA,EACF;AACA,MAAIA,SAAQ;AACV,UAAMC,YAAWD,QAAO;AACxB,eAAW,SAASD;AAClB,uBAAiBC,SAAQ,OAAO,SAAS,EAAE,SAAS,KAAK,CAAC;AAC5D,QAAI,2BAA2B;AAC7B,uBAAiBC,WAAU,oBAAoB,MAAM;AACnD,YAAI,CAACA,UAAS;AACZ,kBAAQ;AAAA,MACZ,CAAC;AAAA,IACH;AACA,UAAM;AAAA,EACR;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAe,UAAU,SAAS;AAChC,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,MAAM,IAAI,MAAM;AACtB,UAAM,EAAE,KAAK,QAAQ,OAAO,OAAO,OAAO,SAAS,aAAa,eAAe,IAAI;AACnF,QAAI,MAAM;AACV,QAAI;AACF,UAAI,SAAS;AACf,QAAI;AACF,UAAI,QAAQ;AACd,QAAI;AACF,UAAI,YAAY;AAClB,QAAI;AACF,UAAI,UAAU;AAChB,QAAI;AACF,UAAI,cAAc;AACpB,QAAI;AACF,UAAI,iBAAiB;AACvB,QAAI,SAAS,MAAM,QAAQ,GAAG;AAC9B,QAAI,UAAU;AAAA,EAChB,CAAC;AACH;AACA,SAAS,SAAS,SAAS,oBAAoB,CAAC,GAAG;AACjD,QAAM,QAAQ;AAAA,IACZ,MAAM,UAAU,QAAQ,OAAO,CAAC;AAAA,IAChC;AAAA,IACA;AAAA,MACE,gBAAgB;AAAA,MAChB,GAAG;AAAA,IACL;AAAA,EACF;AACA;AAAA,IACE,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,MAAM,QAAQ,kBAAkB,KAAK;AAAA,IAC3C,EAAE,MAAM,KAAK;AAAA,EACf;AACA,SAAO;AACT;AAEA,SAAS,eAAe,IAAI;AAC1B,MAAI,OAAO,WAAW,eAAe,cAAc;AACjD,WAAO,GAAG,SAAS;AACrB,MAAI,OAAO,aAAa,eAAe,cAAc;AACnD,WAAO,GAAG;AACZ,SAAO;AACT;AAEA,IAAM,iCAAiC;AACvC,SAAS,UAAU,SAAS,UAAU,CAAC,GAAG;AACxC,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,IACA,uBAAuB;AAAA,MACrB,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,QAAAD,UAAS;AAAA,IACT,UAAU,CAAC,MAAM;AACf,cAAQ,MAAM,CAAC;AAAA,IACjB;AAAA,EACF,IAAI;AACJ,QAAM,YAAY,IAAI,CAAC;AACvB,QAAM,YAAY,IAAI,CAAC;AACvB,QAAM,IAAI,SAAS;AAAA,IACjB,MAAM;AACJ,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,IAAI,IAAI;AACN,MAAAW,UAAS,IAAI,MAAM;AAAA,IACrB;AAAA,EACF,CAAC;AACD,QAAM,IAAI,SAAS;AAAA,IACjB,MAAM;AACJ,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,IAAI,IAAI;AACN,MAAAA,UAAS,QAAQ,EAAE;AAAA,IACrB;AAAA,EACF,CAAC;AACD,WAASA,UAAS,IAAI,IAAI;AACxB,QAAI,IAAI,IAAI,IAAI;AAChB,QAAI,CAACX;AACH;AACF,UAAM,WAAW,QAAQ,OAAO;AAChC,QAAI,CAAC;AACH;AACF,KAAC,KAAK,oBAAoB,WAAWA,QAAO,SAAS,OAAO,aAAa,OAAO,SAAS,GAAG,SAAS;AAAA,MACnG,MAAM,KAAK,QAAQ,EAAE,MAAM,OAAO,KAAK,EAAE;AAAA,MACzC,OAAO,KAAK,QAAQ,EAAE,MAAM,OAAO,KAAK,EAAE;AAAA,MAC1C,UAAU,QAAQ,QAAQ;AAAA,IAC5B,CAAC;AACD,UAAM,oBAAoB,KAAK,YAAY,OAAO,SAAS,SAAS,aAAa,OAAO,SAAS,GAAG,qBAAqB,YAAY,OAAO,SAAS,SAAS,oBAAoB;AAClL,QAAI,KAAK;AACP,gBAAU,QAAQ,gBAAgB;AACpC,QAAI,KAAK;AACP,gBAAU,QAAQ,gBAAgB;AAAA,EACtC;AACA,QAAM,cAAc,IAAI,KAAK;AAC7B,QAAM,eAAe,SAAS;AAAA,IAC5B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,EACV,CAAC;AACD,QAAM,aAAa,SAAS;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,EACV,CAAC;AACD,QAAM,cAAc,CAAC,MAAM;AACzB,QAAI,CAAC,YAAY;AACf;AACF,gBAAY,QAAQ;AACpB,eAAW,OAAO;AAClB,eAAW,QAAQ;AACnB,eAAW,MAAM;AACjB,eAAW,SAAS;AACpB,WAAO,CAAC;AAAA,EACV;AACA,QAAM,uBAAuB,cAAc,aAAa,WAAW,IAAI;AACvE,QAAM,kBAAkB,CAAC,WAAW;AAClC,QAAI;AACJ,QAAI,CAACA;AACH;AACF,UAAM,OAAO,KAAK,UAAU,OAAO,SAAS,OAAO,aAAa,OAAO,SAAS,GAAG,qBAAqB,UAAU,OAAO,SAAS,OAAO,oBAAoB,aAAa,MAAM;AAChL,UAAM,EAAE,SAAS,cAAc,IAAI,iBAAiB,EAAE;AACtD,UAAM,aAAa,GAAG;AACtB,eAAW,OAAO,aAAa,UAAU;AACzC,eAAW,QAAQ,aAAa,UAAU;AAC1C,UAAM,OAAO,KAAK,IAAI,UAAU,MAAM,OAAO,QAAQ;AACrD,UAAM,QAAQ,KAAK,IAAI,UAAU,IAAI,GAAG,eAAe,GAAG,eAAe,OAAO,SAAS,KAAK;AAC9F,QAAI,YAAY,UAAU,kBAAkB,eAAe;AACzD,mBAAa,OAAO;AACpB,mBAAa,QAAQ;AAAA,IACvB,OAAO;AACL,mBAAa,OAAO;AACpB,mBAAa,QAAQ;AAAA,IACvB;AACA,cAAU,QAAQ;AAClB,QAAI,YAAY,GAAG;AACnB,QAAI,WAAWA,QAAO,YAAY,CAAC;AACjC,kBAAYA,QAAO,SAAS,KAAK;AACnC,eAAW,MAAM,YAAY,UAAU;AACvC,eAAW,SAAS,YAAY,UAAU;AAC1C,UAAM,MAAM,KAAK,IAAI,SAAS,MAAM,OAAO,OAAO;AAClD,UAAM,SAAS,KAAK,IAAI,SAAS,IAAI,GAAG,gBAAgB,GAAG,gBAAgB,OAAO,UAAU,KAAK;AACjG,QAAI,YAAY,UAAU,kBAAkB,kBAAkB;AAC5D,mBAAa,MAAM;AACnB,mBAAa,SAAS;AAAA,IACxB,OAAO;AACL,mBAAa,MAAM;AACnB,mBAAa,SAAS;AAAA,IACxB;AACA,cAAU,QAAQ;AAAA,EACpB;AACA,QAAM,kBAAkB,CAAC,MAAM;AAC7B,QAAI;AACJ,QAAI,CAACA;AACH;AACF,UAAM,eAAe,KAAK,EAAE,OAAO,oBAAoB,OAAO,KAAK,EAAE;AACrE,oBAAgB,WAAW;AAC3B,gBAAY,QAAQ;AACpB,yBAAqB,CAAC;AACtB,aAAS,CAAC;AAAA,EACZ;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,WAAW,cAAc,iBAAiB,UAAU,MAAM,KAAK,IAAI;AAAA,IACnE;AAAA,EACF;AACA,eAAa,MAAM;AACjB,QAAI;AACF,YAAM,WAAW,QAAQ,OAAO;AAChC,UAAI,CAAC;AACH;AACF,sBAAgB,QAAQ;AAAA,IAC1B,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF,CAAC;AACD;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AACR,YAAM,WAAW,QAAQ,OAAO;AAChC,UAAIA,WAAU;AACZ,wBAAgB,QAAQ;AAAA,IAC5B;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,SAAS,YAAY,UAAU,CAAC,GAAG;AAC5D,MAAI;AACJ,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,cAAc,MAAM;AAAA,EACtB,IAAI;AACJ,QAAM,QAAQ,SAAS;AAAA,IACrB;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,QAAQ;AAAA,QACN,CAAC,SAAS,IAAI,KAAK,QAAQ,aAAa,OAAO,KAAK;AAAA,QACpD,GAAG,QAAQ;AAAA,MACb;AAAA,IACF;AAAA,EACF,CAAC;AACD,QAAM,UAAU,IAAI;AACpB,QAAM,YAAY,SAAS,MAAM,CAAC,CAAC,QAAQ,KAAK;AAChD,QAAM,kBAAkB,SAAS,MAAM;AACrC,WAAO,eAAe,QAAQ,OAAO,CAAC;AAAA,EACxC,CAAC;AACD,QAAM,mBAAmB,qBAAqB,eAAe;AAC7D,WAAS,eAAe;AACtB,UAAM,QAAQ;AACd,QAAI,CAAC,gBAAgB,SAAS,CAAC,iBAAiB,SAAS,CAAC,YAAY,gBAAgB,KAAK;AACzF;AACF,UAAM,EAAE,cAAc,cAAc,aAAa,YAAY,IAAI,gBAAgB;AACjF,UAAM,aAAa,cAAc,YAAY,cAAc,QAAQ,gBAAgB,eAAe,eAAe;AACjH,QAAI,MAAM,aAAa,SAAS,KAAK,YAAY;AAC/C,UAAI,CAAC,QAAQ,OAAO;AAClB,gBAAQ,QAAQ,QAAQ,IAAI;AAAA,UAC1B,WAAW,KAAK;AAAA,UAChB,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,QAAQ,CAAC;AAAA,QACxD,CAAC,EAAE,QAAQ,MAAM;AACf,kBAAQ,QAAQ;AAChB,mBAAS,MAAM,aAAa,CAAC;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACA,QAAM,OAAO;AAAA,IACX,MAAM,CAAC,MAAM,aAAa,SAAS,GAAG,iBAAiB,KAAK;AAAA,IAC5D;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA,iBAAe,IAAI;AACnB,SAAO;AAAA,IACL;AAAA,IACA,QAAQ;AACN,eAAS,MAAM,aAAa,CAAC;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,IAAM,gBAAgB,CAAC,aAAa,WAAW,WAAW,OAAO;AACjE,SAAS,eAAe,UAAU,UAAU,CAAC,GAAG;AAC9C,QAAM;AAAA,IACJ,QAAAD,UAAS;AAAA,IACT,UAAAE,YAAW;AAAA,IACX,UAAU;AAAA,EACZ,IAAI;AACJ,QAAM,QAAQ,IAAI,OAAO;AACzB,MAAIA,WAAU;AACZ,IAAAF,QAAO,QAAQ,CAAC,kBAAkB;AAChC,uBAAiBE,WAAU,eAAe,CAAC,QAAQ;AACjD,YAAI,OAAO,IAAI,qBAAqB;AAClC,gBAAM,QAAQ,IAAI,iBAAiB,QAAQ;AAAA,MAC/C,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,KAAK,cAAc,UAAU,CAAC,GAAG;AACxD,QAAM,EAAE,QAAAD,UAAS,cAAc,IAAI;AACnC,SAAO,WAAW,KAAK,cAAcA,WAAU,OAAO,SAASA,QAAO,cAAc,OAAO;AAC7F;AAEA,IAAM,2BAA2B;AAAA,EAC/B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACT;AAEA,SAAS,aAAa,UAAU,CAAC,GAAG;AAClC,QAAM;AAAA,IACJ,UAAU,cAAc;AAAA,IACxB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,IACV,eAAe;AAAA,EACjB,IAAI;AACJ,QAAM,UAAU,SAAyB,oBAAI,IAAI,CAAC;AAClD,QAAM,MAAM;AAAA,IACV,SAAS;AACP,aAAO,CAAC;AAAA,IACV;AAAA,IACA;AAAA,EACF;AACA,QAAM,OAAO,cAAc,SAAS,GAAG,IAAI;AAC3C,QAAM,WAA2B,oBAAI,IAAI;AACzC,QAAM,WAA2B,oBAAI,IAAI;AACzC,WAAS,QAAQ,KAAK,OAAO;AAC3B,QAAI,OAAO,MAAM;AACf,UAAI;AACF,aAAK,GAAG,IAAI;AAAA;AAEZ,aAAK,GAAG,EAAE,QAAQ;AAAA,IACtB;AAAA,EACF;AACA,WAAS,QAAQ;AACf,YAAQ,MAAM;AACd,eAAW,OAAO;AAChB,cAAQ,KAAK,KAAK;AAAA,EACtB;AACA,WAAS,WAAW,GAAG,OAAO;AAC5B,QAAI,IAAI;AACR,UAAM,OAAO,KAAK,EAAE,QAAQ,OAAO,SAAS,GAAG,YAAY;AAC3D,UAAM,QAAQ,KAAK,EAAE,SAAS,OAAO,SAAS,GAAG,YAAY;AAC7D,UAAM,SAAS,CAAC,MAAM,GAAG,EAAE,OAAO,OAAO;AACzC,QAAI,KAAK;AACP,UAAI;AACF,gBAAQ,IAAI,GAAG;AAAA;AAEf,gBAAQ,OAAO,GAAG;AAAA,IACtB;AACA,eAAW,QAAQ,QAAQ;AACzB,eAAS,IAAI,IAAI;AACjB,cAAQ,MAAM,KAAK;AAAA,IACrB;AACA,QAAI,QAAQ,UAAU,CAAC,OAAO;AAC5B,eAAS,QAAQ,CAAC,SAAS;AACzB,gBAAQ,OAAO,IAAI;AACnB,gBAAQ,MAAM,KAAK;AAAA,MACrB,CAAC;AACD,eAAS,MAAM;AAAA,IACjB,WAAW,OAAO,EAAE,qBAAqB,cAAc,EAAE,iBAAiB,MAAM,KAAK,OAAO;AAC1F,OAAC,GAAG,SAAS,GAAG,MAAM,EAAE,QAAQ,CAAC,SAAS,SAAS,IAAI,IAAI,CAAC;AAAA,IAC9D;AAAA,EACF;AACA,mBAAiB,QAAQ,WAAW,CAAC,MAAM;AACzC,eAAW,GAAG,IAAI;AAClB,WAAO,aAAa,CAAC;AAAA,EACvB,GAAG,EAAE,QAAQ,CAAC;AACd,mBAAiB,QAAQ,SAAS,CAAC,MAAM;AACvC,eAAW,GAAG,KAAK;AACnB,WAAO,aAAa,CAAC;AAAA,EACvB,GAAG,EAAE,QAAQ,CAAC;AACd,mBAAiB,QAAQ,OAAO,EAAE,SAAS,KAAK,CAAC;AACjD,mBAAiB,SAAS,OAAO,EAAE,SAAS,KAAK,CAAC;AAClD,QAAM,QAAQ,IAAI;AAAA,IAChB;AAAA,IACA;AAAA,MACE,IAAI,SAAS,MAAM,KAAK;AACtB,YAAI,OAAO,SAAS;AAClB,iBAAO,QAAQ,IAAI,SAAS,MAAM,GAAG;AACvC,eAAO,KAAK,YAAY;AACxB,YAAI,QAAQ;AACV,iBAAO,SAAS,IAAI;AACtB,YAAI,EAAE,QAAQ,OAAO;AACnB,cAAI,QAAQ,KAAK,IAAI,GAAG;AACtB,kBAAMY,QAAO,KAAK,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACrD,iBAAK,IAAI,IAAI,SAAS,MAAMA,MAAK,MAAM,CAAC,QAAQ,QAAQ,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,UACtE,OAAO;AACL,iBAAK,IAAI,IAAI,IAAI,KAAK;AAAA,UACxB;AAAA,QACF;AACA,cAAM,IAAI,QAAQ,IAAI,SAAS,MAAM,GAAG;AACxC,eAAO,cAAc,QAAQ,CAAC,IAAI;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,WAAW,QAAQ,IAAI;AAC9B,MAAI,QAAQ,MAAM;AAChB,OAAG,QAAQ,MAAM,CAAC;AACtB;AACA,SAAS,iBAAiB,YAAY;AACpC,MAAI,SAAS,CAAC;AACd,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE;AACvC,aAAS,CAAC,GAAG,QAAQ,CAAC,WAAW,MAAM,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC;AAC/D,SAAO;AACT;AACA,SAAS,cAAc,QAAQ;AAC7B,SAAO,MAAM,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM,gCAAgC,GAAG,QAAQ,EAAE,IAAI,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM,gCAAgC,EAAE;AACpN;AACA,IAAM,iBAAiB;AAAA,EACrB,KAAK;AAAA,EACL,QAAQ,CAAC;AACX;AACA,SAAS,iBAAiB,QAAQ,UAAU,CAAC,GAAG;AAC9C,WAASP,OAAM,MAAM;AACrB,YAAU;AAAA,IACR,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACA,QAAM;AAAA,IACJ,UAAAJ,YAAW;AAAA,EACb,IAAI;AACJ,QAAM,cAAc,IAAI,CAAC;AACzB,QAAM,WAAW,IAAI,CAAC;AACtB,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,SAAS,IAAI,CAAC;AACpB,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,QAAQ,IAAI,KAAK;AACvB,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,OAAO,IAAI,CAAC;AAClB,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,WAAW,IAAI,CAAC,CAAC;AACvB,QAAM,SAAS,IAAI,CAAC,CAAC;AACrB,QAAM,gBAAgB,IAAI,EAAE;AAC5B,QAAM,qBAAqB,IAAI,KAAK;AACpC,QAAM,QAAQ,IAAI,KAAK;AACvB,QAAM,2BAA2BA,aAAY,6BAA6BA;AAC1E,QAAM,mBAAmB,gBAAgB;AACzC,QAAM,qBAAqB,gBAAgB;AAC3C,QAAM,eAAe,CAAC,UAAU;AAC9B,eAAW,QAAQ,CAAC,OAAO;AACzB,UAAI,OAAO;AACT,cAAM,KAAK,OAAO,UAAU,WAAW,QAAQ,MAAM;AACrD,WAAG,WAAW,EAAE,EAAE,OAAO;AAAA,MAC3B,OAAO;AACL,iBAAS,IAAI,GAAG,IAAI,GAAG,WAAW,QAAQ,EAAE;AAC1C,aAAG,WAAW,CAAC,EAAE,OAAO;AAAA,MAC5B;AACA,oBAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACA,QAAM,cAAc,CAAC,OAAO,gBAAgB,SAAS;AACnD,eAAW,QAAQ,CAAC,OAAO;AACzB,YAAM,KAAK,OAAO,UAAU,WAAW,QAAQ,MAAM;AACrD,UAAI;AACF,qBAAa;AACf,SAAG,WAAW,EAAE,EAAE,OAAO;AACzB,oBAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACA,QAAM,yBAAyB,MAAM;AACnC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,iBAAW,QAAQ,OAAO,OAAO;AAC/B,YAAI,0BAA0B;AAC5B,cAAI,CAAC,mBAAmB,OAAO;AAC7B,eAAG,wBAAwB,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,UACzD,OAAO;AACL,YAAAA,UAAS,qBAAqB,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM;AAAA,UAC5D;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,cAAY,MAAM;AAChB,QAAI,CAACA;AACH;AACF,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,UAAM,MAAM,QAAQ,QAAQ,GAAG;AAC/B,QAAI,UAAU,CAAC;AACf,QAAI,CAAC;AACH;AACF,QAAI,OAAO,QAAQ;AACjB,gBAAU,CAAC,EAAE,IAAI,CAAC;AAAA,aACX,MAAM,QAAQ,GAAG;AACxB,gBAAU;AAAA,aACH,SAAS,GAAG;AACnB,gBAAU,CAAC,GAAG;AAChB,OAAG,iBAAiB,QAAQ,EAAE,QAAQ,CAAC,MAAM;AAC3C,QAAE,oBAAoB,SAAS,iBAAiB,OAAO;AACvD,QAAE,OAAO;AAAA,IACX,CAAC;AACD,YAAQ,QAAQ,CAAC,EAAE,KAAK,MAAM,KAAK,MAAM;AACvC,YAAM,SAASA,UAAS,cAAc,QAAQ;AAC9C,aAAO,aAAa,OAAO,IAAI;AAC/B,aAAO,aAAa,QAAQ,QAAQ,EAAE;AACtC,aAAO,iBAAiB,SAAS,iBAAiB,OAAO;AACzD,SAAG,YAAY,MAAM;AAAA,IACvB,CAAC;AACD,OAAG,KAAK;AAAA,EACV,CAAC;AACD,oBAAkB,MAAM;AACtB,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,OAAG,iBAAiB,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,SAAS,iBAAiB,OAAO,CAAC;AAAA,EACvG,CAAC;AACD,QAAM,CAAC,QAAQ,MAAM,GAAG,MAAM;AAC5B,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,OAAG,SAAS,OAAO;AAAA,EACrB,CAAC;AACD,QAAM,CAAC,QAAQ,KAAK,GAAG,MAAM;AAC3B,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,OAAG,QAAQ,MAAM;AAAA,EACnB,CAAC;AACD,QAAM,CAAC,QAAQ,IAAI,GAAG,MAAM;AAC1B,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,OAAG,eAAe,KAAK;AAAA,EACzB,CAAC;AACD,cAAY,MAAM;AAChB,QAAI,CAACA;AACH;AACF,UAAM,aAAa,QAAQ,QAAQ,MAAM;AACzC,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC,cAAc,CAAC,WAAW,UAAU,CAAC;AACxC;AACF,OAAG,iBAAiB,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;AACtD,eAAW,QAAQ,CAAC,EAAE,SAAS,WAAW,MAAM,OAAO,KAAK,QAAQ,GAAG,MAAM;AAC3E,YAAM,QAAQA,UAAS,cAAc,OAAO;AAC5C,YAAM,UAAU,aAAa;AAC7B,YAAM,OAAO;AACb,YAAM,QAAQ;AACd,YAAM,MAAM;AACZ,YAAM,UAAU;AAChB,UAAI,MAAM;AACR,sBAAc,QAAQ;AACxB,SAAG,YAAY,KAAK;AAAA,IACtB,CAAC;AAAA,EACH,CAAC;AACD,QAAM,EAAE,eAAe,yBAAyB,IAAI,eAAe,aAAa,CAAC,SAAS;AACxF,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,OAAG,cAAc;AAAA,EACnB,CAAC;AACD,QAAM,EAAE,eAAe,qBAAqB,IAAI,eAAe,SAAS,CAAC,cAAc;AACrF,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,QAAI,WAAW;AACb,SAAG,KAAK,EAAE,MAAM,CAAC,MAAM;AACrB,2BAAmB,QAAQ,CAAC;AAC5B,cAAM;AAAA,MACR,CAAC;AAAA,IACH,OAAO;AACL,SAAG,MAAM;AAAA,IACX;AAAA,EACF,CAAC;AACD,mBAAiB,QAAQ,cAAc,MAAM,yBAAyB,MAAM,YAAY,QAAQ,QAAQ,MAAM,EAAE,WAAW,CAAC;AAC5H,mBAAiB,QAAQ,kBAAkB,MAAM,SAAS,QAAQ,QAAQ,MAAM,EAAE,QAAQ;AAC1F,mBAAiB,QAAQ,YAAY,MAAM,SAAS,QAAQ,iBAAiB,QAAQ,MAAM,EAAE,QAAQ,CAAC;AACtG,mBAAiB,QAAQ,WAAW,MAAM,QAAQ,QAAQ,IAAI;AAC9D,mBAAiB,QAAQ,UAAU,MAAM,QAAQ,QAAQ,KAAK;AAC9D,mBAAiB,QAAQ,CAAC,WAAW,WAAW,GAAG,MAAM;AACvD,YAAQ,QAAQ;AAChB,yBAAqB,MAAM,QAAQ,QAAQ,KAAK;AAAA,EAClD,CAAC;AACD,mBAAiB,QAAQ,cAAc,MAAM,QAAQ,QAAQ,KAAK;AAClE,mBAAiB,QAAQ,WAAW,MAAM;AACxC,YAAQ,QAAQ;AAChB,UAAM,QAAQ;AACd,yBAAqB,MAAM,QAAQ,QAAQ,IAAI;AAAA,EACjD,CAAC;AACD,mBAAiB,QAAQ,cAAc,MAAM,KAAK,QAAQ,QAAQ,MAAM,EAAE,YAAY;AACtF,mBAAiB,QAAQ,WAAW,MAAM,QAAQ,QAAQ,IAAI;AAC9D,mBAAiB,QAAQ,SAAS,MAAM,MAAM,QAAQ,IAAI;AAC1D,mBAAiB,QAAQ,SAAS,MAAM,qBAAqB,MAAM,QAAQ,QAAQ,KAAK,CAAC;AACzF,mBAAiB,QAAQ,QAAQ,MAAM,qBAAqB,MAAM,QAAQ,QAAQ,IAAI,CAAC;AACvF,mBAAiB,QAAQ,yBAAyB,MAAM,mBAAmB,QAAQ,IAAI;AACvF,mBAAiB,QAAQ,yBAAyB,MAAM,mBAAmB,QAAQ,KAAK;AACxF,mBAAiB,QAAQ,gBAAgB,MAAM;AAC7C,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,WAAO,QAAQ,GAAG;AAClB,UAAM,QAAQ,GAAG;AAAA,EACnB,CAAC;AACD,QAAM,YAAY,CAAC;AACnB,QAAM,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM;AACjC,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,CAAC;AACH;AACF,SAAK;AACL,cAAU,CAAC,IAAI,iBAAiB,GAAG,YAAY,YAAY,MAAM,OAAO,QAAQ,cAAc,GAAG,UAAU,CAAC;AAC5G,cAAU,CAAC,IAAI,iBAAiB,GAAG,YAAY,eAAe,MAAM,OAAO,QAAQ,cAAc,GAAG,UAAU,CAAC;AAC/G,cAAU,CAAC,IAAI,iBAAiB,GAAG,YAAY,UAAU,MAAM,OAAO,QAAQ,cAAc,GAAG,UAAU,CAAC;AAAA,EAC5G,CAAC;AACD,oBAAkB,MAAM,UAAU,QAAQ,CAAC,aAAa,SAAS,CAAC,CAAC;AACnE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA,eAAe,iBAAiB;AAAA,IAChC,iBAAiB,mBAAmB;AAAA,EACtC;AACF;AAEA,SAAS,mBAAmB;AAC1B,QAAM,OAAO,gBAAgB,CAAC,CAAC;AAC/B,SAAO;AAAA,IACL,KAAK,CAAC,QAAQ,KAAK,GAAG;AAAA,IACtB,KAAK,CAAC,KAAK,UAAU,IAAI,MAAM,KAAK,KAAK;AAAA,IACzC,KAAK,CAAC,QAAQ,OAAO,MAAM,GAAG;AAAA,IAC9B,QAAQ,CAAC,QAAQ,IAAI,MAAM,GAAG;AAAA,IAC9B,OAAO,MAAM;AACX,aAAO,KAAK,IAAI,EAAE,QAAQ,CAAC,QAAQ;AACjC,YAAI,MAAM,GAAG;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AACF;AACA,SAAS,WAAW,UAAU,SAAS;AACrC,QAAM,YAAY,MAAM;AACtB,QAAI,WAAW,OAAO,SAAS,QAAQ;AACrC,aAAO,gBAAgB,QAAQ,KAAK;AACtC,QAAI;AACF,aAAO,iBAAiB;AAC1B,WAAO,gBAAgC,oBAAI,IAAI,CAAC;AAAA,EAClD;AACA,QAAM,QAAQ,UAAU;AACxB,QAAM,cAAc,IAAI,UAAU,WAAW,OAAO,SAAS,QAAQ,UAAU,QAAQ,OAAO,GAAG,IAAI,IAAI,KAAK,UAAU,IAAI;AAC5H,QAAM,YAAY,CAAC,QAAQ,SAAS;AAClC,UAAM,IAAI,KAAK,SAAS,GAAG,IAAI,CAAC;AAChC,WAAO,MAAM,IAAI,GAAG;AAAA,EACtB;AACA,QAAM,WAAW,IAAI,SAAS,UAAU,YAAY,GAAG,IAAI,GAAG,GAAG,IAAI;AACrE,QAAM,aAAa,IAAI,SAAS;AAC9B,UAAM,OAAO,YAAY,GAAG,IAAI,CAAC;AAAA,EACnC;AACA,QAAM,YAAY,MAAM;AACtB,UAAM,MAAM;AAAA,EACd;AACA,QAAM,WAAW,IAAI,SAAS;AAC5B,UAAM,MAAM,YAAY,GAAG,IAAI;AAC/B,QAAI,MAAM,IAAI,GAAG;AACf,aAAO,MAAM,IAAI,GAAG;AACtB,WAAO,UAAU,KAAK,GAAG,IAAI;AAAA,EAC/B;AACA,WAAS,OAAO;AAChB,WAAS,SAAS;AAClB,WAAS,QAAQ;AACjB,WAAS,cAAc;AACvB,WAAS,QAAQ;AACjB,SAAO;AACT;AAEA,SAAS,UAAU,UAAU,CAAC,GAAG;AAC/B,QAAM,SAAS,IAAI;AACnB,QAAM,cAAc,aAAa,MAAM,OAAO,gBAAgB,eAAe,YAAY,WAAW;AACpG,MAAI,YAAY,OAAO;AACrB,UAAM,EAAE,WAAW,IAAI,IAAI;AAC3B,kBAAc,MAAM;AAClB,aAAO,QAAQ,YAAY;AAAA,IAC7B,GAAG,UAAU,EAAE,WAAW,QAAQ,WAAW,mBAAmB,QAAQ,kBAAkB,CAAC;AAAA,EAC7F;AACA,SAAO,EAAE,aAAa,OAAO;AAC/B;AAEA,IAAM,4BAA4B;AAAA,EAChC,MAAM,CAAC,UAAU,CAAC,MAAM,OAAO,MAAM,KAAK;AAAA,EAC1C,QAAQ,CAAC,UAAU,CAAC,MAAM,SAAS,MAAM,OAAO;AAAA,EAChD,QAAQ,CAAC,UAAU,CAAC,MAAM,SAAS,MAAM,OAAO;AAAA,EAChD,UAAU,CAAC,UAAU,iBAAiB,QAAQ,OAAO,CAAC,MAAM,WAAW,MAAM,SAAS;AACxF;AACA,SAAS,SAAS,UAAU,CAAC,GAAG;AAC9B,QAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,mBAAmB;AAAA,IACnB,eAAe,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,IAC5B,QAAAD,UAAS;AAAA,IACT,SAASA;AAAA,IACT,SAAS;AAAA,IACT;AAAA,EACF,IAAI;AACJ,MAAI,kBAAkB;AACtB,QAAM,IAAI,IAAI,aAAa,CAAC;AAC5B,QAAM,IAAI,IAAI,aAAa,CAAC;AAC5B,QAAM,aAAa,IAAI,IAAI;AAC3B,QAAM,YAAY,OAAO,SAAS,aAAa,OAAO,0BAA0B,IAAI;AACpF,QAAM,eAAe,CAAC,UAAU;AAC9B,UAAM,SAAS,UAAU,KAAK;AAC9B,sBAAkB;AAClB,QAAI,QAAQ;AACV,OAAC,EAAE,OAAO,EAAE,KAAK,IAAI;AACrB,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF;AACA,QAAM,eAAe,CAAC,UAAU;AAC9B,QAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,YAAM,SAAS,UAAU,MAAM,QAAQ,CAAC,CAAC;AACzC,UAAI,QAAQ;AACV,SAAC,EAAE,OAAO,EAAE,KAAK,IAAI;AACrB,mBAAW,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC,mBAAmB,CAACA;AACvB;AACF,UAAM,MAAM,UAAU,eAAe;AACrC,QAAI,2BAA2B,cAAc,KAAK;AAChD,QAAE,QAAQ,IAAI,CAAC,IAAIA,QAAO;AAC1B,QAAE,QAAQ,IAAI,CAAC,IAAIA,QAAO;AAAA,IAC5B;AAAA,EACF;AACA,QAAM,QAAQ,MAAM;AAClB,MAAE,QAAQ,aAAa;AACvB,MAAE,QAAQ,aAAa;AAAA,EACzB;AACA,QAAM,sBAAsB,cAAc,CAAC,UAAU,YAAY,MAAM,aAAa,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,aAAa,KAAK;AAC/H,QAAM,sBAAsB,cAAc,CAAC,UAAU,YAAY,MAAM,aAAa,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,aAAa,KAAK;AAC/H,QAAM,uBAAuB,cAAc,MAAM,YAAY,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,MAAM,cAAc;AAC9G,MAAI,QAAQ;AACV,UAAM,kBAAkB,EAAE,SAAS,KAAK;AACxC,qBAAiB,QAAQ,CAAC,aAAa,UAAU,GAAG,qBAAqB,eAAe;AACxF,QAAI,SAAS,SAAS,YAAY;AAChC,uBAAiB,QAAQ,CAAC,cAAc,WAAW,GAAG,qBAAqB,eAAe;AAC1F,UAAI;AACF,yBAAiB,QAAQ,YAAY,OAAO,eAAe;AAAA,IAC/D;AACA,QAAI,UAAU,SAAS;AACrB,uBAAiBA,SAAQ,UAAU,sBAAsB,EAAE,SAAS,KAAK,CAAC;AAAA,EAC9E;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,QAAQ,UAAU,CAAC,GAAG;AAC/C,QAAM;AAAA,IACJ,gBAAgB;AAAA,IAChB,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,EAAE,GAAG,GAAG,WAAW,IAAI,SAAS,OAAO;AAC7C,QAAM,YAAY,IAAI,UAAU,OAAO,SAASA,WAAU,OAAO,SAASA,QAAO,SAAS,IAAI;AAC9F,QAAM,WAAW,IAAI,CAAC;AACtB,QAAM,WAAW,IAAI,CAAC;AACtB,QAAM,mBAAmB,IAAI,CAAC;AAC9B,QAAM,mBAAmB,IAAI,CAAC;AAC9B,QAAM,gBAAgB,IAAI,CAAC;AAC3B,QAAM,eAAe,IAAI,CAAC;AAC1B,QAAM,YAAY,IAAI,IAAI;AAC1B,MAAI,OAAO,MAAM;AAAA,EACjB;AACA,MAAIA,SAAQ;AACV,WAAO;AAAA,MACL,CAAC,WAAW,GAAG,CAAC;AAAA,MAChB,MAAM;AACJ,cAAM,KAAK,aAAa,SAAS;AACjC,YAAI,CAAC,MAAM,EAAE,cAAc;AACzB;AACF,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,IAAI,GAAG,sBAAsB;AAC7B,yBAAiB,QAAQ,QAAQ,SAAS,SAASA,QAAO,cAAc;AACxE,yBAAiB,QAAQ,OAAO,SAAS,SAASA,QAAO,cAAc;AACvE,sBAAc,QAAQ;AACtB,qBAAa,QAAQ;AACrB,cAAM,MAAM,EAAE,QAAQ,iBAAiB;AACvC,cAAM,MAAM,EAAE,QAAQ,iBAAiB;AACvC,kBAAU,QAAQ,UAAU,KAAK,WAAW,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,MAAM;AAC5F,YAAI,iBAAiB,CAAC,UAAU,OAAO;AACrC,mBAAS,QAAQ;AACjB,mBAAS,QAAQ;AAAA,QACnB;AAAA,MACF;AAAA,MACA,EAAE,WAAW,KAAK;AAAA,IACpB;AACA,qBAAiB,UAAU,cAAc,MAAM;AAC7C,gBAAU,QAAQ;AAAA,IACpB,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,UAAU,CAAC,GAAG;AACrC,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,IACV,eAAe;AAAA,IACf,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,aAAa,IAAI,IAAI;AAC3B,MAAI,CAACA,SAAQ;AACX,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,YAAY,CAAC,YAAY,MAAM;AACnC,YAAQ,QAAQ;AAChB,eAAW,QAAQ;AAAA,EACrB;AACA,QAAM,aAAa,MAAM;AACvB,YAAQ,QAAQ;AAChB,eAAW,QAAQ;AAAA,EACrB;AACA,QAAM,SAAS,SAAS,MAAM,aAAa,QAAQ,MAAM,KAAKA,OAAM;AACpE,mBAAiB,QAAQ,aAAa,UAAU,OAAO,GAAG,EAAE,SAAS,MAAM,QAAQ,CAAC;AACpF,mBAAiBA,SAAQ,cAAc,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAC7E,mBAAiBA,SAAQ,WAAW,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAC1E,MAAI,MAAM;AACR,qBAAiB,QAAQ,aAAa,UAAU,OAAO,GAAG,EAAE,SAAS,MAAM,QAAQ,CAAC;AACpF,qBAAiBA,SAAQ,QAAQ,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AACvE,qBAAiBA,SAAQ,WAAW,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC5E;AACA,MAAI,OAAO;AACT,qBAAiB,QAAQ,cAAc,UAAU,OAAO,GAAG,EAAE,SAAS,MAAM,QAAQ,CAAC;AACrF,qBAAiBA,SAAQ,YAAY,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAC3E,qBAAiBA,SAAQ,eAAe,YAAY,EAAE,SAAS,MAAM,QAAQ,CAAC;AAAA,EAChF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,UAAU,CAAC,GAAG;AAC1C,QAAM,EAAE,QAAAA,UAAS,cAAc,IAAI;AACnC,QAAM,YAAYA,WAAU,OAAO,SAASA,QAAO;AACnD,QAAM,cAAc,aAAa,MAAM,aAAa,cAAc,SAAS;AAC3E,QAAM,WAAW,IAAI,aAAa,OAAO,SAAS,UAAU,QAAQ;AACpE,mBAAiBA,SAAQ,kBAAkB,MAAM;AAC/C,QAAI;AACF,eAAS,QAAQ,UAAU;AAAA,EAC/B,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW,UAAU,CAAC,GAAG;AAChC,QAAM,EAAE,QAAAA,UAAS,cAAc,IAAI;AACnC,QAAM,YAAYA,WAAU,OAAO,SAASA,QAAO;AACnD,QAAM,cAAc,aAAa,MAAM,aAAa,gBAAgB,SAAS;AAC7E,QAAM,WAAW,IAAI,IAAI;AACzB,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,YAAY,IAAI,MAAM;AAC5B,QAAM,WAAW,IAAI,MAAM;AAC3B,QAAM,WAAW,IAAI,MAAM;AAC3B,QAAM,cAAc,IAAI,MAAM;AAC9B,QAAM,MAAM,IAAI,MAAM;AACtB,QAAM,gBAAgB,IAAI,MAAM;AAChC,QAAM,OAAO,IAAI,SAAS;AAC1B,QAAM,aAAa,YAAY,SAAS,UAAU;AAClD,WAAS,2BAA2B;AAClC,QAAI,CAAC;AACH;AACF,aAAS,QAAQ,UAAU;AAC3B,cAAU,QAAQ,SAAS,QAAQ,SAAS,KAAK,IAAI;AACrD,aAAS,QAAQ,SAAS,QAAQ,KAAK,IAAI,IAAI;AAC/C,QAAI,YAAY;AACd,eAAS,QAAQ,WAAW;AAC5B,kBAAY,QAAQ,WAAW;AAC/B,oBAAc,QAAQ,WAAW;AACjC,UAAI,QAAQ,WAAW;AACvB,eAAS,QAAQ,WAAW;AAC5B,WAAK,QAAQ,WAAW;AAAA,IAC1B;AAAA,EACF;AACA,MAAIA,SAAQ;AACV,qBAAiBA,SAAQ,WAAW,MAAM;AACxC,eAAS,QAAQ;AACjB,gBAAU,QAAQ,KAAK,IAAI;AAAA,IAC7B,CAAC;AACD,qBAAiBA,SAAQ,UAAU,MAAM;AACvC,eAAS,QAAQ;AACjB,eAAS,QAAQ,KAAK,IAAI;AAAA,IAC5B,CAAC;AAAA,EACH;AACA,MAAI;AACF,qBAAiB,YAAY,UAAU,0BAA0B,KAAK;AACxE,2BAAyB;AACzB,SAAO;AAAA,IACL,aAAa,SAAS,WAAW;AAAA,IACjC,UAAU,SAAS,QAAQ;AAAA,IAC3B,UAAU,SAAS,QAAQ;AAAA,IAC3B,WAAW,SAAS,SAAS;AAAA,IAC7B,UAAU,SAAS,QAAQ;AAAA,IAC3B,UAAU,SAAS,QAAQ;AAAA,IAC3B,aAAa,SAAS,WAAW;AAAA,IACjC,eAAe,SAAS,aAAa;AAAA,IACrC,KAAK,SAAS,GAAG;AAAA,IACjB,MAAM,SAAS,IAAI;AAAA,EACrB;AACF;AAEA,SAAS,OAAO,UAAU,CAAC,GAAG;AAC5B,QAAM;AAAA,IACJ,UAAU,iBAAiB;AAAA,IAC3B,WAAW;AAAA,EACb,IAAI;AACJ,QAAMU,OAAM,IAAoB,oBAAI,KAAK,CAAC;AAC1C,QAAM,SAAS,MAAMA,KAAI,QAAwB,oBAAI,KAAK;AAC1D,QAAM,WAAW,aAAa,0BAA0B,SAAS,QAAQ,EAAE,WAAW,KAAK,CAAC,IAAI,cAAc,QAAQ,UAAU,EAAE,WAAW,KAAK,CAAC;AACnJ,MAAI,gBAAgB;AAClB,WAAO;AAAA,MACL,KAAAA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF,OAAO;AACL,WAAOA;AAAA,EACT;AACF;AAEA,SAAS,aAAa,QAAQ;AAC5B,QAAM,MAAM,IAAI;AAChB,QAAM,UAAU,MAAM;AACpB,QAAI,IAAI;AACN,UAAI,gBAAgB,IAAI,KAAK;AAC/B,QAAI,QAAQ;AAAA,EACd;AACA;AAAA,IACE,MAAM,QAAQ,MAAM;AAAA,IACpB,CAAC,cAAc;AACb,cAAQ;AACR,UAAI;AACF,YAAI,QAAQ,IAAI,gBAAgB,SAAS;AAAA,IAC7C;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA,oBAAkB,OAAO;AACzB,SAAO,SAAS,GAAG;AACrB;AAEA,SAAS,SAAS,OAAO,KAAK,KAAK;AACjC,MAAI,OAAO,UAAU,cAAc,WAAW,KAAK;AACjD,WAAO,SAAS,MAAM,MAAM,QAAQ,KAAK,GAAG,QAAQ,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;AACzE,QAAM,SAAS,IAAI,KAAK;AACxB,SAAO,SAAS;AAAA,IACd,MAAM;AACJ,aAAO,OAAO,QAAQ,MAAM,OAAO,OAAO,QAAQ,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,IACtE;AAAA,IACA,IAAI,QAAQ;AACV,aAAO,QAAQ,MAAM,QAAQ,QAAQ,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;AAEA,SAAS,oBAAoB,SAAS;AACpC,QAAM;AAAA,IACJ,QAAQ,OAAO;AAAA,IACf,WAAW;AAAA,IACX,OAAO;AAAA,IACP,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,EACtB,IAAI;AACJ,QAAM,kBAAkB,SAAS,UAAU,GAAG,OAAO,iBAAiB;AACtE,QAAM,YAAY,SAAS,MAAM,KAAK;AAAA,IACpC;AAAA,IACA,KAAK,KAAK,QAAQ,KAAK,IAAI,QAAQ,eAAe,CAAC;AAAA,EACrD,CAAC;AACD,QAAM,cAAc,SAAS,MAAM,GAAG,SAAS;AAC/C,QAAM,cAAc,SAAS,MAAM,YAAY,UAAU,CAAC;AAC1D,QAAM,aAAa,SAAS,MAAM,YAAY,UAAU,UAAU,KAAK;AACvE,MAAI,MAAM,IAAI,GAAG;AACf,YAAQ,MAAM,aAAa;AAAA,MACzB,WAAW,WAAW,IAAI,IAAI,QAAQ;AAAA,IACxC,CAAC;AAAA,EACH;AACA,MAAI,MAAM,QAAQ,GAAG;AACnB,YAAQ,UAAU,iBAAiB;AAAA,MACjC,WAAW,WAAW,QAAQ,IAAI,QAAQ;AAAA,IAC5C,CAAC;AAAA,EACH;AACA,WAAS,OAAO;AACd,gBAAY;AAAA,EACd;AACA,WAAS,OAAO;AACd,gBAAY;AAAA,EACd;AACA,QAAM,cAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,aAAa,MAAM;AACvB,iBAAa,SAAS,WAAW,CAAC;AAAA,EACpC,CAAC;AACD,QAAM,iBAAiB,MAAM;AAC3B,qBAAiB,SAAS,WAAW,CAAC;AAAA,EACxC,CAAC;AACD,QAAM,WAAW,MAAM;AACrB,sBAAkB,SAAS,WAAW,CAAC;AAAA,EACzC,CAAC;AACD,SAAO;AACT;AAEA,SAAS,UAAU,UAAU,CAAC,GAAG;AAC/B,QAAM,EAAE,SAAS,IAAI,WAAW,OAAO;AACvC,SAAO;AACT;AAEA,SAAS,aAAa,UAAU,CAAC,GAAG;AAClC,QAAM,EAAE,QAAAV,UAAS,cAAc,IAAI;AACnC,QAAM,SAAS,IAAI,KAAK;AACxB,QAAM,UAAU,CAAC,UAAU;AACzB,QAAI,CAACA;AACH;AACF,YAAQ,SAASA,QAAO;AACxB,UAAM,OAAO,MAAM,iBAAiB,MAAM;AAC1C,WAAO,QAAQ,CAAC;AAAA,EAClB;AACA,MAAIA,SAAQ;AACV,qBAAiBA,SAAQ,YAAY,SAAS,EAAE,SAAS,KAAK,CAAC;AAC/D,qBAAiBA,QAAO,UAAU,cAAc,SAAS,EAAE,SAAS,KAAK,CAAC;AAC1E,qBAAiBA,QAAO,UAAU,cAAc,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,EAC5E;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,UAAU,CAAC,GAAG;AAC1C,QAAM;AAAA,IACJ,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,cAAc,aAAa,MAAMA,WAAU,YAAYA,WAAU,iBAAiBA,QAAO,MAAM;AACrG,QAAM,oBAAoB,YAAY,QAAQA,QAAO,OAAO,cAAc,CAAC;AAC3E,QAAM,cAAc,IAAI,kBAAkB,IAAI;AAC9C,QAAM,QAAQ,IAAI,kBAAkB,SAAS,CAAC;AAC9C,MAAI,YAAY,OAAO;AACrB,qBAAiBA,SAAQ,qBAAqB,MAAM;AAClD,kBAAY,QAAQ,kBAAkB;AACtC,YAAM,QAAQ,kBAAkB;AAAA,IAClC,CAAC;AAAA,EACH;AACA,QAAM,kBAAkB,CAAC,SAAS;AAChC,QAAI,YAAY,SAAS,OAAO,kBAAkB,SAAS;AACzD,aAAO,kBAAkB,KAAK,IAAI;AACpC,WAAO,QAAQ,OAAO,IAAI,MAAM,eAAe,CAAC;AAAA,EAClD;AACA,QAAM,oBAAoB,MAAM;AAC9B,QAAI,YAAY,SAAS,OAAO,kBAAkB,WAAW;AAC3D,wBAAkB,OAAO;AAAA,EAC7B;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,YAAY,QAAQ,UAAU,CAAC,GAAG;AACzC,QAAM;AAAA,IACJ,8BAA8B,CAAC,MAAM;AAAA,IACrC,8BAA8B,CAAC,MAAM;AAAA,IACrC,kBAAkB,CAAC,MAAM;AAAA,IACzB,kBAAkB,CAAC,MAAM;AAAA,IACzB,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,cAAc,SAAS,qBAAqB,EAAE,QAAAA,QAAO,CAAC,CAAC;AAC7D,QAAM,oBAAoB,SAAS,qBAAqB,EAAE,QAAAA,QAAO,CAAC,CAAC;AACnE,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,cAAc;AAAA,IACd,eAAe;AAAA,EACjB,IAAI,kBAAkB,QAAQ,EAAE,eAAe,OAAO,QAAAA,QAAO,CAAC;AAC9D,QAAM,SAAS,SAAS,MAAM;AAC5B,QAAI,YAAY,gBAAgB,YAAY,SAAS,QAAQ,YAAY,UAAU,KAAK,YAAY,SAAS,QAAQ,YAAY,UAAU,IAAI;AAC7I,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,CAAC;AACD,QAAM,OAAO,SAAS,MAAM;AAC1B,QAAI,OAAO,UAAU,qBAAqB;AACxC,UAAI;AACJ,cAAQ,kBAAkB,aAAa;AAAA,QACrC,KAAK;AACH,kBAAQ,YAAY,QAAQ;AAC5B;AAAA,QACF,KAAK;AACH,kBAAQ,CAAC,YAAY,QAAQ;AAC7B;AAAA,QACF,KAAK;AACH,kBAAQ,CAAC,YAAY,OAAO;AAC5B;AAAA,QACF,KAAK;AACH,kBAAQ,YAAY,OAAO;AAC3B;AAAA,QACF;AACE,kBAAQ,CAAC,YAAY,OAAO;AAAA,MAChC;AACA,aAAO,4BAA4B,KAAK;AAAA,IAC1C,OAAO;AACL,YAAM,QAAQ,EAAE,EAAE,QAAQ,OAAO,QAAQ,KAAK,OAAO;AACrD,aAAO,gBAAgB,KAAK;AAAA,IAC9B;AAAA,EACF,CAAC;AACD,QAAM,OAAO,SAAS,MAAM;AAC1B,QAAI,OAAO,UAAU,qBAAqB;AACxC,UAAI;AACJ,cAAQ,kBAAkB,aAAa;AAAA,QACrC,KAAK;AACH,kBAAQ,YAAY,OAAO;AAC3B;AAAA,QACF,KAAK;AACH,kBAAQ,CAAC,YAAY,OAAO;AAC5B;AAAA,QACF,KAAK;AACH,kBAAQ,YAAY,QAAQ;AAC5B;AAAA,QACF,KAAK;AACH,kBAAQ,CAAC,YAAY,QAAQ;AAC7B;AAAA,QACF;AACE,kBAAQ,YAAY,QAAQ;AAAA,MAChC;AACA,aAAO,4BAA4B,KAAK;AAAA,IAC1C,OAAO;AACL,YAAM,SAAS,EAAE,QAAQ,MAAM,QAAQ,KAAK,MAAM;AAClD,aAAO,gBAAgB,KAAK;AAAA,IAC9B;AAAA,EACF,CAAC;AACD,SAAO,EAAE,MAAM,MAAM,OAAO;AAC9B;AAEA,SAAS,iBAAiB,UAAU,kBAAkB,GAAG;AACvD,QAAM,gBAAgB,WAAW;AACjC,QAAM,SAAS,MAAM;AACnB,UAAM,KAAK,aAAa,OAAO;AAC/B,QAAI;AACF,oBAAc,QAAQ,GAAG;AAAA,EAC7B;AACA,eAAa,MAAM;AACnB,QAAM,MAAM,QAAQ,OAAO,GAAG,MAAM;AACpC,SAAO;AACT;AAEA,SAAS,uBAAuB,SAAS,UAAU;AACjD,QAAM;AAAA,IACJ,QAAAA,UAAS;AAAA,IACT,YAAY;AAAA,IACZ,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,cAAc,aAAa,MAAMA,WAAU,yBAAyBA,OAAM;AAChF,MAAI;AACJ,QAAM,OAAO,MAAM;AACjB,gBAAY,OAAO,SAAS,SAAS,WAAW;AAAA,EAClD;AACA,QAAM,QAAQ,MAAM;AAClB,QAAI,YAAY,OAAO;AACrB,WAAK;AACL,iBAAW,IAAI,oBAAoB,QAAQ;AAC3C,eAAS,QAAQ,kBAAkB;AAAA,IACrC;AAAA,EACF;AACA,oBAAkB,IAAI;AACtB,MAAI;AACF,UAAM;AACR,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,eAAe;AAAA,EACnB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AACf;AACA,IAAM,OAAuB,OAAO,KAAK,YAAY;AACrD,SAAS,WAAW,UAAU,CAAC,GAAG;AAChC,QAAM;AAAA,IACJ,SAAS;AAAA,EACX,IAAI;AACJ,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,QAAQ,IAAI,QAAQ,gBAAgB,CAAC,CAAC;AAC5C,SAAO,OAAO,MAAM,OAAO,cAAc,MAAM,KAAK;AACpD,QAAM,UAAU,CAAC,UAAU;AACzB,aAAS,QAAQ;AACjB,QAAI,QAAQ,gBAAgB,CAAC,QAAQ,aAAa,SAAS,MAAM,WAAW;AAC1E;AACF,UAAM,QAAQ,WAAW,OAAO,MAAM,KAAK;AAAA,EAC7C;AACA,MAAI,QAAQ;AACV,UAAM,kBAAkB,EAAE,SAAS,KAAK;AACxC,qBAAiB,QAAQ,CAAC,eAAe,eAAe,WAAW,GAAG,SAAS,eAAe;AAC9F,qBAAiB,QAAQ,gBAAgB,MAAM,SAAS,QAAQ,OAAO,eAAe;AAAA,EACxF;AACA,SAAO;AAAA,IACL,GAAGS,QAAO,KAAK;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,eAAe,QAAQ,UAAU,CAAC,GAAG;AAC5C,QAAM,EAAE,UAAAR,YAAW,gBAAgB,IAAI;AACvC,QAAM,cAAc,aAAa,MAAMA,aAAY,wBAAwBA,SAAQ;AACnF,QAAM,UAAU,IAAI;AACpB,QAAM,iBAAiB,IAAI;AAC3B,MAAI;AACJ,MAAI,YAAY,OAAO;AACrB,qBAAiBA,WAAU,qBAAqB,MAAM;AACpD,UAAI;AACJ,YAAM,kBAAkB,KAAKA,UAAS,uBAAuB,OAAO,KAAK,QAAQ;AACjF,UAAI,iBAAiB,mBAAmB,eAAe;AACrD,gBAAQ,QAAQA,UAAS;AACzB,YAAI,CAAC,QAAQ;AACX,0BAAgB,eAAe,QAAQ;AAAA,MAC3C;AAAA,IACF,CAAC;AACD,qBAAiBA,WAAU,oBAAoB,MAAM;AACnD,UAAI;AACJ,YAAM,kBAAkB,KAAKA,UAAS,uBAAuB,OAAO,KAAK,QAAQ;AACjF,UAAI,iBAAiB,mBAAmB,eAAe;AACrD,cAAM,SAASA,UAAS,qBAAqB,YAAY;AACzD,cAAM,IAAI,MAAM,aAAa,MAAM,gBAAgB;AAAA,MACrD;AAAA,IACF,CAAC;AAAA,EACH;AACA,iBAAe,KAAK,GAAG;AACrB,QAAI;AACJ,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,MAAM,oDAAoD;AACtE,mBAAe,QAAQ,aAAa,QAAQ,EAAE,gBAAgB;AAC9D,oBAAgB,aAAa,SAAS,KAAK,aAAa,MAAM,MAAM,OAAO,KAAK,eAAe,QAAQ,aAAa,CAAC;AACrH,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,2BAA2B;AAC7C,kBAAc,mBAAmB;AACjC,WAAO,MAAM,MAAM,OAAO,EAAE,KAAK,aAAa;AAAA,EAChD;AACA,iBAAe,SAAS;AACtB,QAAI,CAAC,QAAQ;AACX,aAAO;AACT,IAAAA,UAAS,gBAAgB;AACzB,UAAM,MAAM,OAAO,EAAE,SAAS;AAC9B,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,QAAQ,UAAU,CAAC,GAAG;AAC7C,QAAM,YAAYI,OAAM,MAAM;AAC9B,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,EACtB,IAAI;AACJ,QAAM,WAAW,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AACxC,QAAM,iBAAiB,CAAC,GAAG,MAAM;AAC/B,aAAS,IAAI;AACb,aAAS,IAAI;AAAA,EACf;AACA,QAAM,SAAS,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AACtC,QAAM,eAAe,CAAC,GAAG,MAAM;AAC7B,WAAO,IAAI;AACX,WAAO,IAAI;AAAA,EACb;AACA,QAAM,YAAY,SAAS,MAAM,SAAS,IAAI,OAAO,CAAC;AACtD,QAAM,YAAY,SAAS,MAAM,SAAS,IAAI,OAAO,CAAC;AACtD,QAAM,EAAE,KAAK,IAAI,IAAI;AACrB,QAAM,sBAAsB,SAAS,MAAM,IAAI,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,CAAC,KAAK,SAAS;AACvG,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,gBAAgB,IAAI,KAAK;AAC/B,QAAM,YAAY,SAAS,MAAM;AAC/B,QAAI,CAAC,oBAAoB;AACvB,aAAO;AACT,QAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,GAAG;AAC/C,aAAO,UAAU,QAAQ,IAAI,SAAS;AAAA,IACxC,OAAO;AACL,aAAO,UAAU,QAAQ,IAAI,OAAO;AAAA,IACtC;AAAA,EACF,CAAC;AACD,QAAM,iBAAiB,CAAC,MAAM;AAC5B,QAAI,IAAI,IAAI;AACZ,UAAM,oBAAoB,EAAE,YAAY;AACxC,UAAM,kBAAkB,EAAE,YAAY;AACtC,YAAQ,MAAM,MAAM,KAAK,QAAQ,iBAAiB,OAAO,SAAS,GAAG,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,qBAAqB,oBAAoB,OAAO,KAAK;AAAA,EACpK;AACA,QAAM,QAAQ;AAAA,IACZ,iBAAiB,QAAQ,eAAe,CAAC,MAAM;AAC7C,UAAI,CAAC,eAAe,CAAC;AACnB;AACF,oBAAc,QAAQ;AACtB,YAAM,cAAc,EAAE;AACtB,qBAAe,OAAO,SAAS,YAAY,kBAAkB,EAAE,SAAS;AACxE,YAAM,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI;AACnC,qBAAe,GAAG,CAAC;AACnB,mBAAa,GAAG,CAAC;AACjB,sBAAgB,OAAO,SAAS,aAAa,CAAC;AAAA,IAChD,CAAC;AAAA,IACD,iBAAiB,QAAQ,eAAe,CAAC,MAAM;AAC7C,UAAI,CAAC,eAAe,CAAC;AACnB;AACF,UAAI,CAAC,cAAc;AACjB;AACF,YAAM,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI;AACnC,mBAAa,GAAG,CAAC;AACjB,UAAI,CAAC,UAAU,SAAS,oBAAoB;AAC1C,kBAAU,QAAQ;AACpB,UAAI,UAAU;AACZ,mBAAW,OAAO,SAAS,QAAQ,CAAC;AAAA,IACxC,CAAC;AAAA,IACD,iBAAiB,QAAQ,aAAa,CAAC,MAAM;AAC3C,UAAI,CAAC,eAAe,CAAC;AACnB;AACF,UAAI,UAAU;AACZ,sBAAc,OAAO,SAAS,WAAW,GAAG,UAAU,KAAK;AAC7D,oBAAc,QAAQ;AACtB,gBAAU,QAAQ;AAAA,IACpB,CAAC;AAAA,EACH;AACA,eAAa,MAAM;AACjB,QAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAChC,KAAC,MAAM,KAAK,UAAU,UAAU,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,YAAY,gBAAgB,MAAM;AAClH,QAAI,mBAAmB;AACrB,OAAC,MAAM,KAAK,UAAU,UAAU,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,YAAY,uBAAuB,MAAM;AACzH,OAAC,MAAM,KAAK,UAAU,UAAU,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,YAAY,mBAAmB,MAAM;AACrH,OAAC,MAAM,KAAK,UAAU,UAAU,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,YAAY,eAAe,MAAM;AAAA,IACnH;AAAA,EACF,CAAC;AACD,QAAM,OAAO,MAAM,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3C,SAAO;AAAA,IACL,WAAW,SAAS,SAAS;AAAA,IAC7B,WAAW,SAAS,SAAS;AAAA,IAC7B,UAAU,SAAS,QAAQ;AAAA,IAC3B,QAAQ,SAAS,MAAM;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,wBAAwB,SAAS;AACxC,QAAM,UAAU,cAAc,iCAAiC,OAAO;AACtE,QAAM,SAAS,cAAc,gCAAgC,OAAO;AACpE,SAAO,SAAS,MAAM;AACpB,QAAI,OAAO;AACT,aAAO;AACT,QAAI,QAAQ;AACV,aAAO;AACT,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,qBAAqB,SAAS;AACrC,QAAM,SAAS,cAAc,4BAA4B,OAAO;AAChE,QAAM,SAAS,cAAc,4BAA4B,OAAO;AAChE,QAAM,WAAW,cAAc,8BAA8B,OAAO;AACpE,SAAO,SAAS,MAAM;AACpB,QAAI,OAAO;AACT,aAAO;AACT,QAAI,OAAO;AACT,aAAO;AACT,QAAI,SAAS;AACX,aAAO;AACT,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,sBAAsB,UAAU,CAAC,GAAG;AAC3C,QAAM,EAAE,QAAAL,UAAS,cAAc,IAAI;AACnC,MAAI,CAACA;AACH,WAAO,IAAI,CAAC,IAAI,CAAC;AACnB,QAAM,YAAYA,QAAO;AACzB,QAAM,QAAQ,IAAI,UAAU,SAAS;AACrC,mBAAiBA,SAAQ,kBAAkB,MAAM;AAC/C,UAAM,QAAQ,UAAU;AAAA,EAC1B,CAAC;AACD,SAAO;AACT;AAEA,SAAS,0BAA0B,SAAS;AAC1C,QAAM,YAAY,cAAc,oCAAoC,OAAO;AAC3E,SAAO,SAAS,MAAM;AACpB,QAAI,UAAU;AACZ,aAAO;AACT,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,YAAY,OAAO,cAAc;AACxC,QAAM,WAAW,WAAW,YAAY;AACxC;AAAA,IACEK,OAAM,KAAK;AAAA,IACX,CAAC,GAAG,aAAa;AACf,eAAS,QAAQ;AAAA,IACnB;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AACA,SAAO,SAAS,QAAQ;AAC1B;AAEA,IAAM,aAAa;AACnB,IAAM,eAAe;AACrB,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,SAAS,oBAAoB;AAC3B,QAAM,MAAM,IAAI,EAAE;AAClB,QAAM,QAAQ,IAAI,EAAE;AACpB,QAAM,SAAS,IAAI,EAAE;AACrB,QAAM,OAAO,IAAI,EAAE;AACnB,MAAI,UAAU;AACZ,UAAM,YAAY,UAAU,UAAU;AACtC,UAAM,cAAc,UAAU,YAAY;AAC1C,UAAM,eAAe,UAAU,aAAa;AAC5C,UAAM,aAAa,UAAU,WAAW;AACxC,cAAU,QAAQ;AAClB,gBAAY,QAAQ;AACpB,iBAAa,QAAQ;AACrB,eAAW,QAAQ;AACnB,WAAO;AACP,qBAAiB,UAAU,cAAc,MAAM,CAAC;AAAA,EAClD;AACA,WAAS,SAAS;AAChB,QAAI,QAAQ,SAAS,UAAU;AAC/B,UAAM,QAAQ,SAAS,YAAY;AACnC,WAAO,QAAQ,SAAS,aAAa;AACrC,SAAK,QAAQ,SAAS,WAAW;AAAA,EACnC;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AACA,SAAS,SAAS,UAAU;AAC1B,SAAO,iBAAiB,SAAS,eAAe,EAAE,iBAAiB,QAAQ;AAC7E;AAEA,SAAS,aAAa,KAAK,WAAW,MAAM,UAAU,CAAC,GAAG;AACxD,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAAJ,YAAW;AAAA,IACX,QAAQ,CAAC;AAAA,EACX,IAAI;AACJ,QAAM,YAAY,IAAI,IAAI;AAC1B,MAAI,WAAW;AACf,QAAM,aAAa,CAAC,sBAAsB,IAAI,QAAQ,CAAC,SAAS,WAAW;AACzE,UAAM,qBAAqB,CAAC,QAAQ;AAClC,gBAAU,QAAQ;AAClB,cAAQ,GAAG;AACX,aAAO;AAAA,IACT;AACA,QAAI,CAACA,WAAU;AACb,cAAQ,KAAK;AACb;AAAA,IACF;AACA,QAAI,eAAe;AACnB,QAAI,KAAKA,UAAS,cAAc,eAAe,QAAQ,GAAG,CAAC,IAAI;AAC/D,QAAI,CAAC,IAAI;AACP,WAAKA,UAAS,cAAc,QAAQ;AACpC,SAAG,OAAO;AACV,SAAG,QAAQ;AACX,SAAG,MAAM,QAAQ,GAAG;AACpB,UAAI;AACF,WAAG,QAAQ;AACb,UAAI;AACF,WAAG,cAAc;AACnB,UAAI;AACF,WAAG,WAAW;AAChB,UAAI;AACF,WAAG,iBAAiB;AACtB,aAAO,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM,MAAM,OAAO,SAAS,GAAG,aAAa,MAAM,KAAK,CAAC;AACnG,qBAAe;AAAA,IACjB,WAAW,GAAG,aAAa,aAAa,GAAG;AACzC,yBAAmB,EAAE;AAAA,IACvB;AACA,OAAG,iBAAiB,SAAS,CAAC,UAAU,OAAO,KAAK,CAAC;AACrD,OAAG,iBAAiB,SAAS,CAAC,UAAU,OAAO,KAAK,CAAC;AACrD,OAAG,iBAAiB,QAAQ,MAAM;AAChC,SAAG,aAAa,eAAe,MAAM;AACrC,eAAS,EAAE;AACX,yBAAmB,EAAE;AAAA,IACvB,CAAC;AACD,QAAI;AACF,WAAKA,UAAS,KAAK,YAAY,EAAE;AACnC,QAAI,CAAC;AACH,yBAAmB,EAAE;AAAA,EACzB,CAAC;AACD,QAAM,OAAO,CAAC,oBAAoB,SAAS;AACzC,QAAI,CAAC;AACH,iBAAW,WAAW,iBAAiB;AACzC,WAAO;AAAA,EACT;AACA,QAAM,SAAS,MAAM;AACnB,QAAI,CAACA;AACH;AACF,eAAW;AACX,QAAI,UAAU;AACZ,gBAAU,QAAQ;AACpB,UAAM,KAAKA,UAAS,cAAc,eAAe,QAAQ,GAAG,CAAC,IAAI;AACjE,QAAI;AACF,MAAAA,UAAS,KAAK,YAAY,EAAE;AAAA,EAChC;AACA,MAAI,aAAa,CAAC;AAChB,iBAAa,IAAI;AACnB,MAAI,CAAC;AACH,mBAAe,MAAM;AACvB,SAAO,EAAE,WAAW,MAAM,OAAO;AACnC;AAEA,SAAS,oBAAoB,KAAK;AAChC,QAAM,QAAQ,OAAO,iBAAiB,GAAG;AACzC,MAAI,MAAM,cAAc,YAAY,MAAM,cAAc,YAAY,MAAM,cAAc,UAAU,IAAI,cAAc,IAAI,eAAe,MAAM,cAAc,UAAU,IAAI,eAAe,IAAI,cAAc;AACxM,WAAO;AAAA,EACT,OAAO;AACL,UAAM,SAAS,IAAI;AACnB,QAAI,CAAC,UAAU,OAAO,YAAY;AAChC,aAAO;AACT,WAAO,oBAAoB,MAAM;AAAA,EACnC;AACF;AACA,SAAS,eAAe,UAAU;AAChC,QAAM,IAAI,YAAY,OAAO;AAC7B,QAAM,UAAU,EAAE;AAClB,MAAI,oBAAoB,OAAO;AAC7B,WAAO;AACT,MAAI,EAAE,QAAQ,SAAS;AACrB,WAAO;AACT,MAAI,EAAE;AACJ,MAAE,eAAe;AACnB,SAAO;AACT;AACA,IAAM,oBAAoC,oBAAI,QAAQ;AACtD,SAAS,cAAc,SAAS,eAAe,OAAO;AACpD,QAAM,WAAW,IAAI,YAAY;AACjC,MAAI,wBAAwB;AAC5B,MAAI,kBAAkB;AACtB,QAAMI,OAAM,OAAO,GAAG,CAAC,OAAO;AAC5B,UAAM,SAAS,eAAe,QAAQ,EAAE,CAAC;AACzC,QAAI,QAAQ;AACV,YAAM,MAAM;AACZ,UAAI,CAAC,kBAAkB,IAAI,GAAG;AAC5B,0BAAkB,IAAI,KAAK,IAAI,MAAM,QAAQ;AAC/C,UAAI,IAAI,MAAM,aAAa;AACzB,0BAAkB,IAAI,MAAM;AAC9B,UAAI,IAAI,MAAM,aAAa;AACzB,eAAO,SAAS,QAAQ;AAC1B,UAAI,SAAS;AACX,eAAO,IAAI,MAAM,WAAW;AAAA,IAChC;AAAA,EACF,GAAG;AAAA,IACD,WAAW;AAAA,EACb,CAAC;AACD,QAAM,OAAO,MAAM;AACjB,UAAM,KAAK,eAAe,QAAQ,OAAO,CAAC;AAC1C,QAAI,CAAC,MAAM,SAAS;AAClB;AACF,QAAI,OAAO;AACT,8BAAwB;AAAA,QACtB;AAAA,QACA;AAAA,QACA,CAAC,MAAM;AACL,yBAAe,CAAC;AAAA,QAClB;AAAA,QACA,EAAE,SAAS,MAAM;AAAA,MACnB;AAAA,IACF;AACA,OAAG,MAAM,WAAW;AACpB,aAAS,QAAQ;AAAA,EACnB;AACA,QAAM,SAAS,MAAM;AACnB,UAAM,KAAK,eAAe,QAAQ,OAAO,CAAC;AAC1C,QAAI,CAAC,MAAM,CAAC,SAAS;AACnB;AACF,QAAI;AACF,+BAAyB,OAAO,SAAS,sBAAsB;AACjE,OAAG,MAAM,WAAW;AACpB,sBAAkB,OAAO,EAAE;AAC3B,aAAS,QAAQ;AAAA,EACnB;AACA,oBAAkB,MAAM;AACxB,SAAO,SAAS;AAAA,IACd,MAAM;AACJ,aAAO,SAAS;AAAA,IAClB;AAAA,IACA,IAAI,GAAG;AACL,UAAI;AACF,aAAK;AAAA,UACF,QAAO;AAAA,IACd;AAAA,EACF,CAAC;AACH;AAEA,SAAS,kBAAkB,KAAK,cAAc,UAAU,CAAC,GAAG;AAC1D,QAAM,EAAE,QAAAL,UAAS,cAAc,IAAI;AACnC,SAAO,WAAW,KAAK,cAAcA,WAAU,OAAO,SAASA,QAAO,gBAAgB,OAAO;AAC/F;AAEA,SAAS,SAAS,eAAe,CAAC,GAAG,UAAU,CAAC,GAAG;AACjD,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,aAAa;AACnB,QAAM,cAAc,aAAa,MAAM,cAAc,cAAc,UAAU;AAC7E,QAAM,QAAQ,OAAO,kBAAkB,CAAC,MAAM;AAC5C,QAAI,YAAY,OAAO;AACrB,YAAM,OAAO;AAAA,QACX,GAAG,QAAQ,YAAY;AAAA,QACvB,GAAG,QAAQ,eAAe;AAAA,MAC5B;AACA,UAAI,UAAU;AACd,UAAI,KAAK,SAAS,WAAW;AAC3B,kBAAU,WAAW,SAAS,EAAE,OAAO,KAAK,MAAM,CAAC;AACrD,UAAI;AACF,eAAO,WAAW,MAAM,IAAI;AAAA,IAChC;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,gBAAgB,CAAC,QAAQ,cAAc,OAAO,KAAK,SAAS;AAClE,IAAM,iBAAiB,CAAC,GAAG,MAAM,IAAI;AACrC,SAAS,aAAa,MAAM;AAC1B,MAAI,IAAI,IAAI,IAAI;AAChB,QAAM,CAAC,MAAM,IAAI;AACjB,MAAI,YAAY;AAChB,MAAI,UAAU,CAAC;AACf,MAAI,KAAK,WAAW,GAAG;AACrB,QAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAC/B,gBAAU,KAAK,CAAC;AAChB,mBAAa,KAAK,QAAQ,cAAc,OAAO,KAAK;AAAA,IACtD,OAAO;AACL,mBAAa,KAAK,KAAK,CAAC,MAAM,OAAO,KAAK;AAAA,IAC5C;AAAA,EACF,WAAW,KAAK,SAAS,GAAG;AAC1B,iBAAa,KAAK,KAAK,CAAC,MAAM,OAAO,KAAK;AAC1C,eAAW,KAAK,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC;AAAA,EAC3C;AACA,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,SAAS;AAAA,EACX,IAAI;AACJ,MAAI,CAAC;AACH,WAAO,SAAS,MAAM,OAAO,CAAC,GAAG,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC;AAC/D,cAAY,MAAM;AAChB,UAAM,SAAS,OAAO,QAAQ,MAAM,GAAG,SAAS;AAChD,QAAI,MAAM,MAAM;AACd,aAAO,QAAQ;AAAA;AAEf,aAAO,OAAO,GAAG,OAAO,QAAQ,GAAG,MAAM;AAAA,EAC7C,CAAC;AACD,SAAO;AACT;AAEA,SAAS,qBAAqB,UAAU,CAAC,GAAG;AAC1C,QAAM;AAAA,IACJ,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,OAAOK,OAAM,QAAQ,QAAQ,OAAO;AAC1C,QAAM,cAAc,IAAI,KAAK;AAC7B,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,SAAS,IAAI,EAAE;AACrB,QAAM,QAAQ,WAAW,MAAM;AAC/B,QAAM,SAAS,CAAC,QAAQ,CAAC,YAAY,UAAU;AAC7C,gBAAY,QAAQ;AAAA,EACtB;AACA,QAAM,QAAQ,MAAM;AAClB,gBAAY,QAAQ;AAAA,EACtB;AACA,QAAM,OAAO,MAAM;AACjB,gBAAY,QAAQ;AAAA,EACtB;AACA,QAAM,oBAAoBL,YAAWA,QAAO,qBAAqBA,QAAO;AACxE,QAAM,cAAc,aAAa,MAAM,iBAAiB;AACxD,MAAI;AACJ,MAAI,YAAY,OAAO;AACrB,kBAAc,IAAI,kBAAkB;AACpC,gBAAY,aAAa;AACzB,gBAAY,iBAAiB;AAC7B,gBAAY,OAAO,QAAQ,IAAI;AAC/B,gBAAY,kBAAkB;AAC9B,gBAAY,UAAU,MAAM;AAC1B,cAAQ,QAAQ;AAAA,IAClB;AACA,UAAM,MAAM,CAAC,UAAU;AACrB,UAAI,eAAe,CAAC,YAAY;AAC9B,oBAAY,OAAO;AAAA,IACvB,CAAC;AACD,gBAAY,WAAW,CAAC,UAAU;AAChC,YAAM,gBAAgB,MAAM,QAAQ,MAAM,WAAW;AACrD,YAAM,EAAE,WAAW,IAAI,cAAc,CAAC;AACtC,cAAQ,QAAQ,cAAc;AAC9B,aAAO,QAAQ;AACf,YAAM,QAAQ;AAAA,IAChB;AACA,gBAAY,UAAU,CAAC,UAAU;AAC/B,YAAM,QAAQ;AAAA,IAChB;AACA,gBAAY,QAAQ,MAAM;AACxB,kBAAY,QAAQ;AACpB,kBAAY,OAAO,QAAQ,IAAI;AAAA,IACjC;AACA,UAAM,aAAa,MAAM;AACvB,UAAI,YAAY;AACd,oBAAY,MAAM;AAAA;AAElB,oBAAY,KAAK;AAAA,IACrB,CAAC;AAAA,EACH;AACA,oBAAkB,MAAM;AACtB,gBAAY,QAAQ;AAAA,EACtB,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,MAAM,UAAU,CAAC,GAAG;AAC9C,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,QAAQA,WAAUA,QAAO;AAC/B,QAAM,cAAc,aAAa,MAAM,KAAK;AAC5C,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,SAAS,IAAI,MAAM;AACzB,QAAM,aAAaK,OAAM,QAAQ,EAAE;AACnC,QAAM,OAAOA,OAAM,QAAQ,QAAQ,OAAO;AAC1C,QAAM,QAAQ,WAAW,MAAM;AAC/B,QAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,UAAU;AAC3C,cAAU,QAAQ;AAAA,EACpB;AACA,QAAM,yBAAyB,CAAC,eAAe;AAC7C,eAAW,OAAO,QAAQ,IAAI;AAC9B,eAAW,QAAQ,QAAQ,QAAQ,KAAK,KAAK;AAC7C,eAAW,QAAQ,QAAQ,KAAK;AAChC,eAAW,OAAO,QAAQ,IAAI;AAC9B,eAAW,SAAS;AACpB,eAAW,UAAU,MAAM;AACzB,gBAAU,QAAQ;AAClB,aAAO,QAAQ;AAAA,IACjB;AACA,eAAW,UAAU,MAAM;AACzB,gBAAU,QAAQ;AAClB,aAAO,QAAQ;AAAA,IACjB;AACA,eAAW,WAAW,MAAM;AAC1B,gBAAU,QAAQ;AAClB,aAAO,QAAQ;AAAA,IACjB;AACA,eAAW,QAAQ,MAAM;AACvB,gBAAU,QAAQ;AAClB,aAAO,QAAQ;AAAA,IACjB;AACA,eAAW,UAAU,CAAC,UAAU;AAC9B,YAAM,QAAQ;AAAA,IAChB;AAAA,EACF;AACA,QAAM,YAAY,SAAS,MAAM;AAC/B,cAAU,QAAQ;AAClB,WAAO,QAAQ;AACf,UAAM,eAAe,IAAI,yBAAyB,WAAW,KAAK;AAClE,2BAAuB,YAAY;AACnC,WAAO;AAAA,EACT,CAAC;AACD,QAAM,QAAQ,MAAM;AAClB,UAAM,OAAO;AACb,QAAI;AACF,YAAM,MAAM,UAAU,KAAK;AAAA,EAC/B;AACA,QAAM,OAAO,MAAM;AACjB,UAAM,OAAO;AACb,cAAU,QAAQ;AAAA,EACpB;AACA,MAAI,YAAY,OAAO;AACrB,2BAAuB,UAAU,KAAK;AACtC,UAAM,MAAM,CAAC,UAAU;AACrB,UAAI,UAAU,SAAS,CAAC,UAAU;AAChC,kBAAU,MAAM,OAAO;AAAA,IAC3B,CAAC;AACD,QAAI,QAAQ,OAAO;AACjB,YAAM,QAAQ,OAAO,MAAM;AACzB,cAAM,OAAO;AAAA,MACf,CAAC;AAAA,IACH;AACA,UAAM,WAAW,MAAM;AACrB,UAAI,UAAU;AACZ,cAAM,OAAO;AAAA;AAEb,cAAM,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AACA,oBAAkB,MAAM;AACtB,cAAU,QAAQ;AAAA,EACpB,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW,OAAO,aAAa;AACtC,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,YAAY,SAAS,MAAM,MAAM,QAAQ,SAAS,KAAK,IAAI,SAAS,QAAQ,OAAO,KAAK,SAAS,KAAK,CAAC;AAC7G,QAAM,QAAQ,IAAI,UAAU,MAAM,QAAQ,eAAe,OAAO,cAAc,UAAU,MAAM,CAAC,CAAC,CAAC;AACjG,QAAM,UAAU,SAAS,MAAM,GAAG,MAAM,KAAK,CAAC;AAC9C,QAAM,UAAU,SAAS,MAAM,MAAM,UAAU,CAAC;AAChD,QAAM,SAAS,SAAS,MAAM,MAAM,UAAU,UAAU,MAAM,SAAS,CAAC;AACxE,QAAM,OAAO,SAAS,MAAM,UAAU,MAAM,MAAM,QAAQ,CAAC,CAAC;AAC5D,QAAM,WAAW,SAAS,MAAM,UAAU,MAAM,MAAM,QAAQ,CAAC,CAAC;AAChE,WAAS,GAAG,QAAQ;AAClB,QAAI,MAAM,QAAQ,SAAS,KAAK;AAC9B,aAAO,SAAS,MAAM,MAAM;AAC9B,WAAO,SAAS,MAAM,UAAU,MAAM,MAAM,CAAC;AAAA,EAC/C;AACA,WAASQ,KAAI,MAAM;AACjB,QAAI,CAAC,UAAU,MAAM,SAAS,IAAI;AAChC;AACF,WAAO,GAAG,UAAU,MAAM,QAAQ,IAAI,CAAC;AAAA,EACzC;AACA,WAAS,KAAK,MAAM;AAClB,QAAI,UAAU,MAAM,SAAS,IAAI;AAC/B,YAAM,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,EAC9C;AACA,WAAS,WAAW;AAClB,QAAI,OAAO;AACT;AACF,UAAM;AAAA,EACR;AACA,WAAS,eAAe;AACtB,QAAI,QAAQ;AACV;AACF,UAAM;AAAA,EACR;AACA,WAAS,SAAS,MAAM;AACtB,QAAI,QAAQ,IAAI;AACd,WAAK,IAAI;AAAA,EACb;AACA,WAAS,OAAO,MAAM;AACpB,WAAO,UAAU,MAAM,QAAQ,IAAI,MAAM,MAAM,QAAQ;AAAA,EACzD;AACA,WAAS,WAAW,MAAM;AACxB,WAAO,UAAU,MAAM,QAAQ,IAAI,MAAM,MAAM,QAAQ;AAAA,EACzD;AACA,WAAS,UAAU,MAAM;AACvB,WAAO,UAAU,MAAM,QAAQ,IAAI,MAAM,MAAM;AAAA,EACjD;AACA,WAAS,SAAS,MAAM;AACtB,WAAO,MAAM,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,EACnD;AACA,WAAS,QAAQ,MAAM;AACrB,WAAO,MAAM,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,EACnD;AACA,SAAO;AAAA,IACL,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,KAAK,cAAc,SAAS,UAAU,CAAC,GAAG;AACjE,MAAI;AACJ,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,yBAAyB;AAAA,IACzB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,IACA,QAAAb,UAAS;AAAA,IACT;AAAA,IACA,UAAU,CAAC,MAAM;AACf,cAAQ,MAAM,CAAC;AAAA,IACjB;AAAA,EACF,IAAI;AACJ,QAAM,UAAU,QAAQ,YAAY;AACpC,QAAM,OAAO,oBAAoB,OAAO;AACxC,QAAM,QAAQ,UAAU,aAAa,KAAK,YAAY;AACtD,QAAM,cAAc,KAAK,QAAQ,eAAe,OAAO,KAAK,mBAAmB,IAAI;AACnF,MAAI,CAAC,SAAS;AACZ,QAAI;AACF,gBAAU,cAAc,0BAA0B,MAAM;AACtD,YAAI;AACJ,gBAAQ,MAAM,kBAAkB,OAAO,SAAS,IAAI;AAAA,MACtD,CAAC,EAAE;AAAA,IACL,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,iBAAe,KAAK,OAAO;AACzB,QAAI,CAAC,WAAW,SAAS,MAAM,QAAQ;AACrC;AACF,QAAI;AACF,YAAM,WAAW,QAAQ,MAAM,WAAW,MAAM,QAAQ,QAAQ,GAAG;AACnE,UAAI,YAAY,MAAM;AACpB,aAAK,QAAQ;AACb,YAAI,iBAAiB,YAAY;AAC/B,gBAAM,QAAQ,QAAQ,KAAK,MAAM,WAAW,MAAM,OAAO,CAAC;AAAA,MAC9D,WAAW,eAAe;AACxB,cAAM,QAAQ,MAAM,WAAW,KAAK,QAAQ;AAC5C,YAAI,OAAO,kBAAkB;AAC3B,eAAK,QAAQ,cAAc,OAAO,OAAO;AAAA,iBAClC,SAAS,YAAY,CAAC,MAAM,QAAQ,KAAK;AAChD,eAAK,QAAQ,EAAE,GAAG,SAAS,GAAG,MAAM;AAAA,YACjC,MAAK,QAAQ;AAAA,MACpB,OAAO;AACL,aAAK,QAAQ,MAAM,WAAW,KAAK,QAAQ;AAAA,MAC7C;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AACA,OAAK;AACL,MAAIA,WAAU;AACZ,qBAAiBA,SAAQ,WAAW,CAAC,MAAM,QAAQ,QAAQ,EAAE,KAAK,MAAM,KAAK,CAAC,CAAC,CAAC;AAClF,MAAI,SAAS;AACX;AAAA,MACE;AAAA,MACA,YAAY;AACV,YAAI;AACF,cAAI,KAAK,SAAS;AAChB,kBAAM,QAAQ,WAAW,GAAG;AAAA;AAE5B,kBAAM,QAAQ,QAAQ,KAAK,MAAM,WAAW,MAAM,KAAK,KAAK,CAAC;AAAA,QACjE,SAAS,GAAG;AACV,kBAAQ,CAAC;AAAA,QACX;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAI,MAAM;AACV,SAAS,YAAY,KAAK,UAAU,CAAC,GAAG;AACtC,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM;AAAA,IACJ,UAAAC,YAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,KAAK,mBAAmB,EAAE,GAAG;AAAA,EAC/B,IAAI;AACJ,QAAM,SAAS,IAAI,GAAG;AACtB,MAAI,OAAO,MAAM;AAAA,EACjB;AACA,QAAM,OAAO,MAAM;AACjB,QAAI,CAACA;AACH;AACF,UAAM,KAAKA,UAAS,eAAe,EAAE,KAAKA,UAAS,cAAc,OAAO;AACxE,QAAI,CAAC,GAAG,aAAa;AACnB,SAAG,KAAK;AACR,UAAI,QAAQ;AACV,WAAG,QAAQ,QAAQ;AACrB,MAAAA,UAAS,KAAK,YAAY,EAAE;AAAA,IAC9B;AACA,QAAI,SAAS;AACX;AACF,WAAO;AAAA,MACL;AAAA,MACA,CAAC,UAAU;AACT,WAAG,cAAc;AAAA,MACnB;AAAA,MACA,EAAE,WAAW,KAAK;AAAA,IACpB;AACA,aAAS,QAAQ;AAAA,EACnB;AACA,QAAM,SAAS,MAAM;AACnB,QAAI,CAACA,aAAY,CAAC,SAAS;AACzB;AACF,SAAK;AACL,IAAAA,UAAS,KAAK,YAAYA,UAAS,eAAe,EAAE,CAAC;AACrD,aAAS,QAAQ;AAAA,EACnB;AACA,MAAI,aAAa,CAAC;AAChB,iBAAa,IAAI;AACnB,MAAI,CAAC;AACH,sBAAkB,MAAM;AAC1B,SAAO;AAAA,IACL;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,SAAS,QAAQ;AAAA,EAC7B;AACF;AAEA,SAAS,SAAS,QAAQ,UAAU,CAAC,GAAG;AACtC,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,QAAAD,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,cAAc,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAC3C,QAAM,YAAY,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AACzC,QAAM,QAAQ,SAAS,MAAM,YAAY,IAAI,UAAU,CAAC;AACxD,QAAM,QAAQ,SAAS,MAAM,YAAY,IAAI,UAAU,CAAC;AACxD,QAAM,EAAE,KAAK,IAAI,IAAI;AACrB,QAAM,sBAAsB,SAAS,MAAM,IAAI,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,CAAC,KAAK,SAAS;AAC/F,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,YAAY,SAAS,MAAM;AAC/B,QAAI,CAAC,oBAAoB;AACvB,aAAO;AACT,QAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,GAAG;AACvC,aAAO,MAAM,QAAQ,IAAI,SAAS;AAAA,IACpC,OAAO;AACL,aAAO,MAAM,QAAQ,IAAI,OAAO;AAAA,IAClC;AAAA,EACF,CAAC;AACD,QAAM,sBAAsB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO;AAC9E,QAAM,oBAAoB,CAAC,GAAG,MAAM;AAClC,gBAAY,IAAI;AAChB,gBAAY,IAAI;AAAA,EAClB;AACA,QAAM,kBAAkB,CAAC,GAAG,MAAM;AAChC,cAAU,IAAI;AACd,cAAU,IAAI;AAAA,EAChB;AACA,MAAI;AACJ,QAAM,0BAA0B,yBAAyBA,WAAU,OAAO,SAASA,QAAO,QAAQ;AAClG,MAAI,CAAC;AACH,sBAAkB,0BAA0B,EAAE,SAAS,OAAO,SAAS,KAAK,IAAI,EAAE,SAAS,KAAK;AAAA;AAEhG,sBAAkB,0BAA0B,EAAE,SAAS,KAAK,IAAI,EAAE,SAAS,MAAM;AACnF,QAAM,aAAa,CAAC,MAAM;AACxB,QAAI,UAAU;AACZ,oBAAc,OAAO,SAAS,WAAW,GAAG,UAAU,KAAK;AAC7D,cAAU,QAAQ;AAAA,EACpB;AACA,QAAM,QAAQ;AAAA,IACZ,iBAAiB,QAAQ,cAAc,CAAC,MAAM;AAC5C,UAAI,EAAE,QAAQ,WAAW;AACvB;AACF,UAAI,gBAAgB,WAAW,CAAC,gBAAgB;AAC9C,UAAE,eAAe;AACnB,YAAM,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC;AACpC,wBAAkB,GAAG,CAAC;AACtB,sBAAgB,GAAG,CAAC;AACpB,sBAAgB,OAAO,SAAS,aAAa,CAAC;AAAA,IAChD,GAAG,eAAe;AAAA,IAClB,iBAAiB,QAAQ,aAAa,CAAC,MAAM;AAC3C,UAAI,EAAE,QAAQ,WAAW;AACvB;AACF,YAAM,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC;AACpC,sBAAgB,GAAG,CAAC;AACpB,UAAI,CAAC,UAAU,SAAS,oBAAoB;AAC1C,kBAAU,QAAQ;AACpB,UAAI,UAAU;AACZ,mBAAW,OAAO,SAAS,QAAQ,CAAC;AAAA,IACxC,GAAG,eAAe;AAAA,IAClB,iBAAiB,QAAQ,CAAC,YAAY,aAAa,GAAG,YAAY,eAAe;AAAA,EACnF;AACA,QAAM,OAAO,MAAM,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,EACF;AACF;AACA,SAAS,yBAAyBC,WAAU;AAC1C,MAAI,CAACA;AACH,WAAO;AACT,MAAI,kBAAkB;AACtB,QAAM,eAAe;AAAA,IACnB,IAAI,UAAU;AACZ,wBAAkB;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AACA,EAAAA,UAAS,iBAAiB,KAAK,MAAM,YAAY;AACjD,EAAAA,UAAS,oBAAoB,KAAK,IAAI;AACtC,SAAO;AACT;AAEA,SAAS,sBAAsB;AAC7B,QAAM,OAAO,IAAI,CAAC,CAAC;AACnB,OAAK,MAAM,MAAM,CAAC,OAAO;AACvB,QAAI;AACF,WAAK,MAAM,KAAK,EAAE;AAAA,EACtB;AACA,iBAAe,MAAM;AACnB,SAAK,MAAM,SAAS;AAAA,EACtB,CAAC;AACD,SAAO;AACT;AAEA,SAAS,iBAAiB,UAAU,CAAC,GAAG;AACtC,QAAM;AAAA,IACJ,UAAAA,YAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,eAAe;AAAA,EACjB,IAAI;AACJ,WAASE,YAAW;AAClB,QAAI,IAAI;AACR,YAAQ,MAAM,KAAKF,aAAY,OAAO,SAASA,UAAS,cAAc,QAAQ,MAAM,OAAO,SAAS,GAAG,aAAa,KAAK,MAAM,OAAO,KAAK;AAAA,EAC7I;AACA,QAAM,MAAM,IAAIE,UAAS,CAAC;AAC1B,eAAa,MAAM,IAAI,QAAQA,UAAS,CAAC;AACzC,MAAI,WAAWF,WAAU;AACvB;AAAA,MACEA,UAAS,cAAc,QAAQ;AAAA,MAC/B,MAAM,IAAI,QAAQE,UAAS;AAAA,MAC3B,EAAE,YAAY,KAAK;AAAA,IACrB;AAAA,EACF;AACA,SAAO,SAAS;AAAA,IACd,MAAM;AACJ,aAAO,IAAI;AAAA,IACb;AAAA,IACA,IAAI,GAAG;AACL,UAAI,IAAI;AACR,UAAI,QAAQ;AACZ,UAAI,CAACF;AACH;AACF,UAAI,IAAI;AACN,SAAC,KAAKA,UAAS,cAAc,QAAQ,MAAM,OAAO,SAAS,GAAG,aAAa,OAAO,IAAI,KAAK;AAAA;AAE3F,SAAC,KAAKA,UAAS,cAAc,QAAQ,MAAM,OAAO,SAAS,GAAG,gBAAgB,KAAK;AAAA,IACvF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,uBAAuB,WAAW;AACzC,MAAI;AACJ,QAAM,cAAc,KAAK,UAAU,eAAe,OAAO,KAAK;AAC9D,SAAO,MAAM,KAAK,EAAE,QAAQ,WAAW,GAAG,CAAC,GAAG,MAAM,UAAU,WAAW,CAAC,CAAC;AAC7E;AACA,SAAS,iBAAiB,UAAU,CAAC,GAAG;AACtC,QAAM;AAAA,IACJ,QAAAD,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,YAAY,IAAI,IAAI;AAC1B,QAAM,OAAO,SAAS,MAAM;AAC1B,QAAI,IAAI;AACR,YAAQ,MAAM,KAAK,UAAU,UAAU,OAAO,SAAS,GAAG,SAAS,MAAM,OAAO,KAAK;AAAA,EACvF,CAAC;AACD,QAAM,SAAS,SAAS,MAAM,UAAU,QAAQ,uBAAuB,UAAU,KAAK,IAAI,CAAC,CAAC;AAC5F,QAAM,QAAQ,SAAS,MAAM,OAAO,MAAM,IAAI,CAAC,UAAU,MAAM,sBAAsB,CAAC,CAAC;AACvF,WAAS,oBAAoB;AAC3B,cAAU,QAAQ;AAClB,QAAIA;AACF,gBAAU,QAAQA,QAAO,aAAa;AAAA,EAC1C;AACA,MAAIA;AACF,qBAAiBA,QAAO,UAAU,mBAAmB,iBAAiB;AACxE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,SAAS;AACpC,MAAI;AACJ,QAAM,WAAW,IAAI,WAAW,OAAO,SAAS,QAAQ,OAAO;AAC/D,QAAM,QAAQ,IAAI,WAAW,OAAO,SAAS,QAAQ,KAAK;AAC1D,QAAM,aAAa,KAAK,WAAW,OAAO,SAAS,QAAQ,cAAc,OAAO,KAAK;AACrF,QAAM,uBAAuB,IAAI,CAAC;AAClC,QAAM,mBAAmB,IAAI,CAAC;AAC9B,WAAS,gBAAgB;AACvB,QAAI;AACJ,QAAI,CAAC,SAAS;AACZ;AACF,QAAI,SAAS;AACb,aAAS,MAAM,MAAM,SAAS,IAAI;AAClC,yBAAqB,SAAS,MAAM,SAAS,UAAU,OAAO,SAAS,IAAI;AAC3E,UAAM,eAAe,QAAQ,WAAW,OAAO,SAAS,QAAQ,WAAW;AAC3E,QAAI;AACF,mBAAa,MAAM,SAAS,IAAI,GAAG,qBAAqB,KAAK;AAAA;AAE7D,eAAS,GAAG,qBAAqB,KAAK;AACxC,aAAS,MAAM,MAAM,SAAS,IAAI;AAAA,EACpC;AACA,QAAM,CAAC,OAAO,QAAQ,GAAG,MAAM,SAAS,aAAa,GAAG,EAAE,WAAW,KAAK,CAAC;AAC3E,QAAM,sBAAsB,MAAM;AAChC,QAAI;AACJ,YAAQ,MAAM,WAAW,OAAO,SAAS,QAAQ,aAAa,OAAO,SAAS,IAAI,KAAK,OAAO;AAAA,EAChG,CAAC;AACD,oBAAkB,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM;AACjD,QAAI,iBAAiB,UAAU,YAAY;AACzC;AACF,qBAAiB,QAAQ,YAAY;AACrC,kBAAc;AAAA,EAChB,CAAC;AACD,MAAI,WAAW,OAAO,SAAS,QAAQ;AACrC,UAAM,QAAQ,OAAO,eAAe,EAAE,WAAW,MAAM,MAAM,KAAK,CAAC;AACrE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB,QAAQ,UAAU,CAAC,GAAG;AACpD,QAAM,EAAE,WAAW,KAAK,WAAW,KAAK,IAAI;AAC5C,QAAM,SAAS,eAAe,UAAU,QAAQ;AAChD,QAAM,UAAU,cAAc,QAAQ,EAAE,GAAG,SAAS,aAAa,OAAO,CAAC;AACzE,SAAO;AAAA,IACL,GAAG;AAAA,EACL;AACF;AAEA,IAAM,gBAAgB;AAAA,EACpB,EAAE,KAAK,KAAK,OAAO,KAAK,MAAM,SAAS;AAAA,EACvC,EAAE,KAAK,OAAO,OAAO,KAAK,MAAM,SAAS;AAAA,EACzC,EAAE,KAAK,MAAM,OAAO,MAAM,MAAM,OAAO;AAAA,EACvC,EAAE,KAAK,QAAQ,OAAO,OAAO,MAAM,MAAM;AAAA,EACzC,EAAE,KAAK,SAAS,OAAO,QAAQ,MAAM,OAAO;AAAA,EAC5C,EAAE,KAAK,SAAS,OAAO,QAAQ,MAAM,QAAQ;AAAA,EAC7C,EAAE,KAAK,OAAO,mBAAmB,OAAO,SAAS,MAAM,OAAO;AAChE;AACA,IAAM,mBAAmB;AAAA,EACvB,SAAS;AAAA,EACT,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS;AAAA,EAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;AAAA,EAC3C,OAAO,CAAC,GAAG,SAAS,MAAM,IAAI,OAAO,eAAe,eAAe,GAAG,CAAC,SAAS,IAAI,IAAI,MAAM,EAAE;AAAA,EAChG,MAAM,CAAC,GAAG,SAAS,MAAM,IAAI,OAAO,cAAc,cAAc,GAAG,CAAC,QAAQ,IAAI,IAAI,MAAM,EAAE;AAAA,EAC5F,KAAK,CAAC,GAAG,SAAS,MAAM,IAAI,OAAO,cAAc,aAAa,GAAG,CAAC,OAAO,IAAI,IAAI,MAAM,EAAE;AAAA,EACzF,MAAM,CAAC,GAAG,SAAS,MAAM,IAAI,OAAO,cAAc,cAAc,GAAG,CAAC,QAAQ,IAAI,IAAI,MAAM,EAAE;AAAA,EAC5F,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,IAAI,IAAI,MAAM,EAAE;AAAA,EACzC,QAAQ,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,IAAI,MAAM,EAAE;AAAA,EAC7C,QAAQ,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,IAAI,MAAM,EAAE;AAAA,EAC7C,SAAS;AACX;AACA,SAAS,kBAAkB,MAAM;AAC/B,SAAO,KAAK,YAAY,EAAE,MAAM,GAAG,EAAE;AACvC;AACA,SAAS,WAAW,MAAM,UAAU,CAAC,GAAG;AACtC,QAAM;AAAA,IACJ,UAAU,iBAAiB;AAAA,IAC3B,iBAAiB;AAAA,EACnB,IAAI;AACJ,QAAM,EAAE,KAAAU,MAAK,GAAG,SAAS,IAAI,OAAO,EAAE,UAAU,gBAAgB,UAAU,KAAK,CAAC;AAChF,QAAM,UAAU,SAAS,MAAM,cAAc,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,SAAS,QAAQA,IAAG,CAAC,CAAC;AAC5F,MAAI,gBAAgB;AAClB,WAAO;AAAA,MACL;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AACF;AACA,SAAS,cAAc,MAAM,UAAU,CAAC,GAAGA,OAAM,KAAK,IAAI,GAAG;AAC3D,MAAI;AACJ,QAAM;AAAA,IACJ;AAAA,IACA,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,EACb,IAAI;AACJ,QAAM,UAAU,OAAO,aAAa,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,QAAQ,IAAI,KAAK,QAAQ;AAC1F,QAAM,OAAO,CAACA,OAAM,CAAC;AACrB,QAAM,UAAU,KAAK,IAAI,IAAI;AAC7B,WAASP,UAAS,OAAO,MAAM;AAC7B,WAAO,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK;AAAA,EAC7C;AACA,WAAS,OAAO,OAAO,MAAM;AAC3B,UAAM,MAAMA,UAAS,OAAO,IAAI;AAChC,UAAM,OAAO,QAAQ;AACrB,UAAM,MAAM,YAAY,KAAK,MAAM,KAAK,IAAI;AAC5C,WAAO,YAAY,OAAO,SAAS,UAAU,KAAK,IAAI;AAAA,EACxD;AACA,WAAS,YAAY,MAAM,KAAK,QAAQ;AACtC,UAAM,YAAY,SAAS,IAAI;AAC/B,QAAI,OAAO,cAAc;AACvB,aAAO,UAAU,KAAK,MAAM;AAC9B,WAAO,UAAU,QAAQ,OAAO,IAAI,SAAS,CAAC;AAAA,EAChD;AACA,MAAI,UAAU,OAAO,CAAC;AACpB,WAAO,SAAS;AAClB,MAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,WAAO,kBAAkB,IAAI,KAAK,IAAI,CAAC;AACzC,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,WAAW,KAAK,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,OAAO,SAAS,GAAG;AAC/E,QAAI,WAAW,UAAU;AACvB,aAAO,kBAAkB,IAAI,KAAK,IAAI,CAAC;AAAA,EAC3C;AACA,aAAW,CAAC,KAAK,IAAI,KAAK,MAAM,QAAQ,GAAG;AACzC,UAAM,MAAMA,UAAS,MAAM,IAAI;AAC/B,QAAI,OAAO,KAAK,MAAM,MAAM,CAAC;AAC3B,aAAO,OAAO,MAAM,MAAM,MAAM,CAAC,CAAC;AACpC,QAAI,UAAU,KAAK;AACjB,aAAO,OAAO,MAAM,IAAI;AAAA,EAC5B;AACA,SAAO,SAAS;AAClB;AAEA,SAAS,eAAe,IAAI,UAAU,oBAAoB;AACxD,QAAM,EAAE,MAAM,IAAI,aAAa,MAAM,UAAU,EAAE,WAAW,MAAM,CAAC;AACnE,QAAM,WAAW,IAAI,KAAK;AAC1B,iBAAe,OAAO;AACpB,QAAI,CAAC,SAAS;AACZ;AACF,UAAM,GAAG;AACT,UAAM;AAAA,EACR;AACA,WAAS,SAAS;AAChB,QAAI,CAAC,SAAS,OAAO;AACnB,eAAS,QAAQ;AACjB,WAAK;AAAA,IACP;AAAA,EACF;AACA,WAAS,QAAQ;AACf,aAAS,QAAQ;AAAA,EACnB;AACA,MAAI,sBAAsB,OAAO,SAAS,mBAAmB;AAC3D,WAAO;AACT,oBAAkB,KAAK;AACvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,aAAa,UAAU,CAAC,GAAG;AAClC,QAAM;AAAA,IACJ,UAAU,iBAAiB;AAAA,IAC3B,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,IACX;AAAA,EACF,IAAI;AACJ,QAAM,KAAK,IAAI,UAAU,IAAI,MAAM;AACnC,QAAM,SAAS,MAAM,GAAG,QAAQ,UAAU,IAAI;AAC9C,QAAM,KAAK,WAAW,MAAM;AAC1B,WAAO;AACP,aAAS,GAAG,KAAK;AAAA,EACnB,IAAI;AACJ,QAAM,WAAW,aAAa,0BAA0B,SAAS,IAAI,EAAE,UAAU,CAAC,IAAI,cAAc,IAAI,UAAU,EAAE,UAAU,CAAC;AAC/H,MAAI,gBAAgB;AAClB,WAAO;AAAA,MACL,WAAW;AAAA,MACX,GAAG;AAAA,IACL;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,SAAS,WAAW,MAAM,UAAU,CAAC,GAAG;AAC/C,MAAI,IAAI,IAAI;AACZ,QAAM;AAAA,IACJ,UAAAF,YAAW;AAAA,IACX,mBAAmB,CAAC,MAAM;AAAA,EAC5B,IAAI;AACJ,QAAM,iBAAiB,KAAKA,aAAY,OAAO,SAASA,UAAS,UAAU,OAAO,KAAK;AACvF,QAAM,QAAQI,QAAO,KAAK,YAAY,OAAO,WAAWJ,aAAY,OAAO,SAASA,UAAS,UAAU,OAAO,KAAK,IAAI;AACvH,QAAMa,cAAa,YAAY,OAAO,aAAa;AACnD,WAAS,OAAO,GAAG;AACjB,QAAI,EAAE,mBAAmB;AACvB,aAAO;AACT,UAAM,WAAW,QAAQ,iBAAiB;AAC1C,WAAO,OAAO,aAAa,aAAa,SAAS,CAAC,IAAI,QAAQ,QAAQ,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC1F;AACA;AAAA,IACE;AAAA,IACA,CAAC,GAAG,MAAM;AACR,UAAI,MAAM,KAAKb;AACb,QAAAA,UAAS,QAAQ,OAAO,OAAO,MAAM,WAAW,IAAI,EAAE;AAAA,IAC1D;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA,MAAI,QAAQ,WAAW,CAAC,QAAQ,iBAAiBA,aAAY,CAACa,aAAY;AACxE;AAAA,OACG,KAAKb,UAAS,SAAS,OAAO,SAAS,GAAG,cAAc,OAAO;AAAA,MAChE,MAAM;AACJ,YAAIA,aAAYA,UAAS,UAAU,MAAM;AACvC,gBAAM,QAAQ,OAAOA,UAAS,KAAK;AAAA,MACvC;AAAA,MACA,EAAE,WAAW,KAAK;AAAA,IACpB;AAAA,EACF;AACA,qBAAmB,MAAM;AACvB,QAAI,kBAAkB;AACpB,YAAM,gBAAgB,iBAAiB,eAAe,MAAM,SAAS,EAAE;AACvE,UAAI,iBAAiB,QAAQA;AAC3B,QAAAA,UAAS,QAAQ;AAAA,IACrB;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAEA,IAAM,qBAAqB;AAAA,EACzB,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAC7B,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAC9B,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAChC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;AAAA,EAC5B,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC;AAAA,EAC7B,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAChC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAC9B,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAC/B,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EACjC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC;AAAA,EAC7B,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;AAAA,EAC9B,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EACjC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAC9B,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAC/B,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EACjC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC;AAAA,EAC5B,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC;AAAA,EAC7B,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAChC,YAAY,CAAC,MAAM,GAAG,GAAG,IAAI;AAAA,EAC7B,aAAa,CAAC,GAAG,MAAM,MAAM,CAAC;AAAA,EAC9B,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,EAChC,YAAY,CAAC,MAAM,GAAG,MAAM,KAAK;AAAA,EACjC,aAAa,CAAC,MAAM,MAAM,MAAM,CAAC;AAAA,EACjC,eAAe,CAAC,MAAM,MAAM,MAAM,GAAG;AACvC;AACA,IAAM,oBAAoC,OAAO,OAAO,CAAC,GAAG,EAAE,QAAQ,SAAS,GAAG,kBAAkB;AACpG,SAAS,qBAAqB,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG;AAC9C,QAAM,IAAI,CAAC,IAAI,OAAO,IAAI,IAAI,KAAK,IAAI;AACvC,QAAM,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI;AACnC,QAAM,IAAI,CAAC,OAAO,IAAI;AACtB,QAAM,aAAa,CAAC,GAAG,IAAI,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK;AAC9E,QAAM,WAAW,CAAC,GAAG,IAAI,OAAO,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE;AAChF,QAAM,WAAW,CAAC,MAAM;AACtB,QAAI,UAAU;AACd,aAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC1B,YAAM,eAAe,SAAS,SAAS,IAAI,EAAE;AAC7C,UAAI,iBAAiB;AACnB,eAAO;AACT,YAAM,WAAW,WAAW,SAAS,IAAI,EAAE,IAAI;AAC/C,iBAAW,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AACA,SAAO,CAAC,MAAM,OAAO,MAAM,OAAO,KAAK,IAAI,WAAW,SAAS,CAAC,GAAG,IAAI,EAAE;AAC3E;AACA,SAAS,KAAK,GAAG,GAAG,OAAO;AACzB,SAAO,IAAI,SAAS,IAAI;AAC1B;AACA,SAAS,MAAM,GAAG;AAChB,UAAQ,OAAO,MAAM,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/C;AACA,SAAS,kBAAkB,QAAQ,MAAM,IAAI,UAAU,CAAC,GAAG;AACzD,MAAI,IAAI;AACR,QAAM,UAAU,QAAQ,IAAI;AAC5B,QAAM,QAAQ,QAAQ,EAAE;AACxB,QAAM,KAAK,MAAM,OAAO;AACxB,QAAM,KAAK,MAAM,KAAK;AACtB,QAAM,YAAY,KAAK,QAAQ,QAAQ,QAAQ,MAAM,OAAO,KAAK;AACjE,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,QAAQ,KAAK,IAAI,IAAI;AAC3B,QAAM,QAAQ,OAAO,QAAQ,eAAe,aAAa,QAAQ,cAAc,KAAK,QAAQ,QAAQ,UAAU,MAAM,OAAO,KAAK;AAChI,QAAM,OAAO,OAAO,UAAU,aAAa,QAAQ,qBAAqB,KAAK;AAC7E,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,WAAO,QAAQ;AACf,UAAM,OAAO,MAAM;AACjB,UAAI;AACJ,WAAK,MAAM,QAAQ,UAAU,OAAO,SAAS,IAAI,KAAK,OAAO,GAAG;AAC9D,gBAAQ;AACR;AAAA,MACF;AACA,YAAMS,OAAM,KAAK,IAAI;AACrB,YAAM,QAAQ,MAAMA,OAAM,aAAa,QAAQ;AAC/C,YAAM,MAAM,MAAM,OAAO,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AACvE,UAAI,MAAM,QAAQ,OAAO,KAAK;AAC5B,eAAO,QAAQ,IAAI,IAAI,CAAC,GAAG,MAAM;AAC/B,cAAI,KAAK;AACT,iBAAO,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,MAAM,IAAI,MAAM,GAAG,CAAC,MAAM,OAAO,MAAM,GAAG,KAAK;AAAA,QACrF,CAAC;AAAA,eACM,OAAO,OAAO,UAAU;AAC/B,eAAO,QAAQ,IAAI,CAAC;AACtB,UAAIA,OAAM,OAAO;AACf,8BAAsB,IAAI;AAAA,MAC5B,OAAO;AACL,eAAO,QAAQ;AACf,gBAAQ;AAAA,MACV;AAAA,IACF;AACA,SAAK;AAAA,EACP,CAAC;AACH;AACA,SAAS,cAAc,QAAQ,UAAU,CAAC,GAAG;AAC3C,MAAI,YAAY;AAChB,QAAM,YAAY,MAAM;AACtB,UAAM,IAAI,QAAQ,MAAM;AACxB,WAAO,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,OAAO;AAAA,EAClD;AACA,QAAM,YAAY,IAAI,UAAU,CAAC;AACjC,QAAM,WAAW,OAAO,OAAO;AAC7B,QAAI,IAAI;AACR,QAAI,QAAQ,QAAQ,QAAQ;AAC1B;AACF,UAAM,KAAK,EAAE;AACb,QAAI,QAAQ;AACV,YAAM,eAAe,QAAQ,QAAQ,KAAK,CAAC;AAC7C,QAAI,OAAO;AACT;AACF,UAAM,QAAQ,MAAM,QAAQ,EAAE,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAE;AAC9D,KAAC,KAAK,QAAQ,cAAc,OAAO,SAAS,GAAG,KAAK,OAAO;AAC3D,UAAM,kBAAkB,WAAW,UAAU,OAAO,OAAO;AAAA,MACzD,GAAG;AAAA,MACH,OAAO,MAAM;AACX,YAAI;AACJ,eAAO,OAAO,eAAe,MAAM,QAAQ,UAAU,OAAO,SAAS,IAAI,KAAK,OAAO;AAAA,MACvF;AAAA,IACF,CAAC;AACD,KAAC,KAAK,QAAQ,eAAe,OAAO,SAAS,GAAG,KAAK,OAAO;AAAA,EAC9D,GAAG,EAAE,MAAM,KAAK,CAAC;AACjB,QAAM,MAAM,QAAQ,QAAQ,QAAQ,GAAG,CAAC,aAAa;AACnD,QAAI,UAAU;AACZ;AACA,gBAAU,QAAQ,UAAU;AAAA,IAC9B;AAAA,EACF,CAAC;AACD,oBAAkB,MAAM;AACtB;AAAA,EACF,CAAC;AACD,SAAO,SAAS,MAAM,QAAQ,QAAQ,QAAQ,IAAI,UAAU,IAAI,UAAU,KAAK;AACjF;AAEA,SAAS,mBAAmB,OAAO,WAAW,UAAU,CAAC,GAAG;AAC1D,QAAM;AAAA,IACJ,eAAe,CAAC;AAAA,IAChB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,OAAO,cAAc;AAAA,IACrB,QAAAV,UAAS;AAAA,EACX,IAAI;AACJ,MAAI,CAACA;AACH,WAAO,SAAS,YAAY;AAC9B,QAAM,QAAQ,SAAS,CAAC,CAAC;AACzB,WAAS,eAAe;AACtB,QAAI,SAAS,WAAW;AACtB,aAAOA,QAAO,SAAS,UAAU;AAAA,IACnC,WAAW,SAAS,QAAQ;AAC1B,YAAM,OAAOA,QAAO,SAAS,QAAQ;AACrC,YAAM,QAAQ,KAAK,QAAQ,GAAG;AAC9B,aAAO,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA,IACzC,OAAO;AACL,cAAQA,QAAO,SAAS,QAAQ,IAAI,QAAQ,MAAM,EAAE;AAAA,IACtD;AAAA,EACF;AACA,WAAS,eAAe,QAAQ;AAC9B,UAAM,cAAc,OAAO,SAAS;AACpC,QAAI,SAAS;AACX,aAAO,GAAG,cAAc,IAAI,WAAW,KAAK,EAAE,GAAGA,QAAO,SAAS,QAAQ,EAAE;AAC7E,QAAI,SAAS;AACX,aAAO,GAAGA,QAAO,SAAS,UAAU,EAAE,GAAG,cAAc,IAAI,WAAW,KAAK,EAAE;AAC/E,UAAM,OAAOA,QAAO,SAAS,QAAQ;AACrC,UAAM,QAAQ,KAAK,QAAQ,GAAG;AAC9B,QAAI,QAAQ;AACV,aAAO,GAAG,KAAK,MAAM,GAAG,KAAK,CAAC,GAAG,cAAc,IAAI,WAAW,KAAK,EAAE;AACvE,WAAO,GAAG,IAAI,GAAG,cAAc,IAAI,WAAW,KAAK,EAAE;AAAA,EACvD;AACA,WAAS,OAAO;AACd,WAAO,IAAI,gBAAgB,aAAa,CAAC;AAAA,EAC3C;AACA,WAAS,YAAY,QAAQ;AAC3B,UAAM,aAAa,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AAC7C,eAAW,OAAO,OAAO,KAAK,GAAG;AAC/B,YAAM,eAAe,OAAO,OAAO,GAAG;AACtC,YAAM,GAAG,IAAI,aAAa,SAAS,IAAI,eAAe,OAAO,IAAI,GAAG,KAAK;AACzE,iBAAW,OAAO,GAAG;AAAA,IACvB;AACA,UAAM,KAAK,UAAU,EAAE,QAAQ,CAAC,QAAQ,OAAO,MAAM,GAAG,CAAC;AAAA,EAC3D;AACA,QAAM,EAAE,OAAO,OAAO,IAAI;AAAA,IACxB;AAAA,IACA,MAAM;AACJ,YAAM,SAAS,IAAI,gBAAgB,EAAE;AACrC,aAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,cAAM,WAAW,MAAM,GAAG;AAC1B,YAAI,MAAM,QAAQ,QAAQ;AACxB,mBAAS,QAAQ,CAAC,UAAU,OAAO,OAAO,KAAK,KAAK,CAAC;AAAA,iBAC9C,uBAAuB,YAAY;AAC1C,iBAAO,OAAO,GAAG;AAAA,iBACV,qBAAqB,CAAC;AAC7B,iBAAO,OAAO,GAAG;AAAA;AAEjB,iBAAO,IAAI,KAAK,QAAQ;AAAA,MAC5B,CAAC;AACD,YAAM,MAAM;AAAA,IACd;AAAA,IACA,EAAE,MAAM,KAAK;AAAA,EACf;AACA,WAAS,MAAM,QAAQ,cAAc;AACnC,UAAM;AACN,QAAI;AACF,kBAAY,MAAM;AACpB,IAAAA,QAAO,QAAQ;AAAA,MACbA,QAAO,QAAQ;AAAA,MACfA,QAAO,SAAS;AAAA,MAChBA,QAAO,SAAS,WAAW,eAAe,MAAM;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AACA,WAAS,YAAY;AACnB,QAAI,CAAC;AACH;AACF,UAAM,KAAK,GAAG,IAAI;AAAA,EACpB;AACA,mBAAiBA,SAAQ,YAAY,WAAW,KAAK;AACrD,MAAI,SAAS;AACX,qBAAiBA,SAAQ,cAAc,WAAW,KAAK;AACzD,QAAM,UAAU,KAAK;AACrB,MAAI,QAAQ,KAAK,EAAE,KAAK,EAAE;AACxB,gBAAY,OAAO;AAAA;AAEnB,WAAO,OAAO,OAAO,YAAY;AACnC,SAAO;AACT;AAEA,SAAS,aAAa,UAAU,CAAC,GAAG;AAClC,MAAI,IAAI;AACR,QAAM,UAAU,KAAK,KAAK,QAAQ,YAAY,OAAO,KAAK,KAAK;AAC/D,QAAM,aAAa,KAAK,KAAK,QAAQ,eAAe,OAAO,KAAK,IAAI;AACpE,QAAM,cAAc,IAAI,QAAQ,WAAW;AAC3C,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,cAAc,aAAa,MAAM;AACrC,QAAI;AACJ,YAAQ,MAAM,aAAa,OAAO,SAAS,UAAU,iBAAiB,OAAO,SAAS,IAAI;AAAA,EAC5F,CAAC;AACD,QAAM,SAAS,WAAW;AAC1B,WAAS,iBAAiB,MAAM;AAC9B,YAAQ,MAAM;AAAA,MACZ,KAAK,SAAS;AACZ,YAAI,YAAY;AACd,iBAAO,YAAY,MAAM,SAAS;AACpC;AAAA,MACF;AAAA,MACA,KAAK,SAAS;AACZ,YAAI,YAAY;AACd,iBAAO,YAAY,MAAM,SAAS;AACpC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,iBAAe,SAAS;AACtB,QAAI,CAAC,YAAY,SAAS,OAAO;AAC/B;AACF,WAAO,QAAQ,MAAM,UAAU,aAAa,aAAa;AAAA,MACvD,OAAO,iBAAiB,OAAO;AAAA,MAC/B,OAAO,iBAAiB,OAAO;AAAA,IACjC,CAAC;AACD,WAAO,OAAO;AAAA,EAChB;AACA,WAAS,QAAQ;AACf,QAAI;AACJ,KAAC,MAAM,OAAO,UAAU,OAAO,SAAS,IAAI,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/E,WAAO,QAAQ;AAAA,EACjB;AACA,WAAS,OAAO;AACd,UAAM;AACN,YAAQ,QAAQ;AAAA,EAClB;AACA,iBAAe,QAAQ;AACrB,UAAM,OAAO;AACb,QAAI,OAAO;AACT,cAAQ,QAAQ;AAClB,WAAO,OAAO;AAAA,EAChB;AACA,iBAAe,UAAU;AACvB,UAAM;AACN,WAAO,MAAM,MAAM;AAAA,EACrB;AACA;AAAA,IACE;AAAA,IACA,CAAC,MAAM;AACL,UAAI;AACF,eAAO;AAAA,UACJ,OAAM;AAAA,IACb;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,UAAI,WAAW,SAAS,OAAO;AAC7B,gBAAQ;AAAA,IACZ;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AACA,oBAAkB,MAAM;AACtB,SAAK;AAAA,EACP,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,UAAU,OAAO,KAAK,MAAM,UAAU,CAAC,GAAG;AACjD,MAAI,IAAI,IAAI,IAAI,IAAI;AACpB,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,KAAK,mBAAmB;AAC9B,QAAM,QAAQ,SAAS,MAAM,OAAO,SAAS,GAAG,WAAW,KAAK,MAAM,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,KAAK,EAAE,QAAQ,MAAM,KAAK,MAAM,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,KAAK,MAAM,OAAO,SAAS,GAAG,KAAK;AACtQ,MAAI,QAAQ;AACZ,MAAI,CAAC,KAAK;AACR,QAAI,QAAQ;AACV,YAAM,gBAAgB,MAAM,KAAK,MAAM,OAAO,SAAS,GAAG,UAAU,OAAO,SAAS,GAAG,aAAa,OAAO,SAAS,GAAG;AACvH,aAAO,gBAAgB,OAAO,SAAS,aAAa,UAAU;AAC9D,UAAI,CAAC;AACH,iBAAS,gBAAgB,OAAO,SAAS,aAAa,UAAU;AAAA,IACpE,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF;AACA,UAAQ,SAAS,UAAU,IAAI,SAAS,CAAC;AACzC,QAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,MAAM,OAAO,UAAU,aAAa,MAAM,GAAG,IAAI,YAAY,GAAG;AAClG,QAAMG,YAAW,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,QAAQ,MAAM,GAAG,CAAC,IAAI;AACjE,QAAM,cAAc,CAAC,UAAU;AAC7B,QAAI,YAAY;AACd,UAAI,WAAW,KAAK;AAClB,cAAM,OAAO,KAAK;AAAA,IACtB,OAAO;AACL,YAAM,OAAO,KAAK;AAAA,IACpB;AAAA,EACF;AACA,MAAI,SAAS;AACX,UAAM,eAAeA,UAAS;AAC9B,UAAM,QAAQ,IAAI,YAAY;AAC9B,QAAI,aAAa;AACjB;AAAA,MACE,MAAM,MAAM,GAAG;AAAA,MACf,CAAC,MAAM;AACL,YAAI,CAAC,YAAY;AACf,uBAAa;AACb,gBAAM,QAAQ,QAAQ,CAAC;AACvB,mBAAS,MAAM,aAAa,KAAK;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AACA;AAAA,MACE;AAAA,MACA,CAAC,MAAM;AACL,YAAI,CAAC,eAAe,MAAM,MAAM,GAAG,KAAK;AACtC,sBAAY,CAAC;AAAA,MACjB;AAAA,MACA,EAAE,KAAK;AAAA,IACT;AACA,WAAO;AAAA,EACT,OAAO;AACL,WAAO,SAAS;AAAA,MACd,MAAM;AACJ,eAAOA,UAAS;AAAA,MAClB;AAAA,MACA,IAAI,OAAO;AACT,oBAAY,KAAK;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,SAAS,WAAW,OAAO,MAAM,UAAU,CAAC,GAAG;AAC7C,QAAM,MAAM,CAAC;AACb,aAAW,OAAO,OAAO;AACvB,QAAI,GAAG,IAAI;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,WAAW,SAAS;AAC3B,QAAM;AAAA,IACJ,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EACd,IAAI,WAAW,CAAC;AAChB,QAAM,cAAc,aAAa,MAAM,OAAO,cAAc,eAAe,aAAa,SAAS;AACjG,QAAM,aAAaE,OAAM,OAAO;AAChC,MAAI;AACJ,QAAM,UAAU,CAAC,WAAW,WAAW,UAAU;AAC/C,QAAI,YAAY;AACd,gBAAU,QAAQ,QAAQ;AAAA,EAC9B;AACA,QAAM,OAAO,MAAM;AACjB,QAAI,YAAY;AACd,gBAAU,QAAQ,CAAC;AACrB,wBAAoB,OAAO,SAAS,iBAAiB,MAAM;AAAA,EAC7D;AACA,MAAI,WAAW,GAAG;AAChB,uBAAmB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,mBAAmB;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,eAAe,MAAM,SAAS;AACrC,QAAM,EAAE,gBAAgB,cAAc,UAAAM,WAAU,gBAAgB,aAAa,aAAa,IAAI,gBAAgB,UAAU,uBAAuB,SAAS,IAAI,IAAI,yBAAyB,SAAS,IAAI;AACtM,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAAA;AAAA,IACA,gBAAgB;AAAA,MACd,KAAK;AAAA,MACL,UAAU,MAAM;AACd,uBAAe;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;AACA,SAAS,wBAAwB,MAAM;AACrC,QAAM,eAAe,IAAI,IAAI;AAC7B,QAAM,OAAO,eAAe,YAAY;AACxC,QAAM,cAAc,IAAI,CAAC,CAAC;AAC1B,QAAM,SAAS,WAAW,IAAI;AAC9B,QAAM,QAAQ,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,CAAC;AACvC,SAAO,EAAE,OAAO,QAAQ,aAAa,MAAM,aAAa;AAC1D;AACA,SAAS,sBAAsB,OAAO,QAAQ,UAAU;AACtD,SAAO,CAAC,kBAAkB;AACxB,QAAI,OAAO,aAAa;AACtB,aAAO,KAAK,KAAK,gBAAgB,QAAQ;AAC3C,UAAM,EAAE,QAAQ,EAAE,IAAI,MAAM;AAC5B,QAAI,MAAM;AACV,QAAI,WAAW;AACf,aAAS,IAAI,OAAO,IAAI,OAAO,MAAM,QAAQ,KAAK;AAChD,YAAM,OAAO,SAAS,CAAC;AACvB,aAAO;AACP,iBAAW;AACX,UAAI,MAAM;AACR;AAAA,IACJ;AACA,WAAO,WAAW;AAAA,EACpB;AACF;AACA,SAAS,gBAAgB,QAAQ,UAAU;AACzC,SAAO,CAAC,oBAAoB;AAC1B,QAAI,OAAO,aAAa;AACtB,aAAO,KAAK,MAAM,kBAAkB,QAAQ,IAAI;AAClD,QAAI,MAAM;AACV,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,OAAO,MAAM,QAAQ,KAAK;AAC5C,YAAM,OAAO,SAAS,CAAC;AACvB,aAAO;AACP,UAAI,OAAO,iBAAiB;AAC1B,iBAAS;AACT;AAAA,MACF;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AACF;AACA,SAAS,qBAAqB,MAAM,UAAU,WAAW,iBAAiB,EAAE,cAAc,OAAO,aAAa,OAAO,GAAG;AACtH,SAAO,MAAM;AACX,UAAM,UAAU,aAAa;AAC7B,QAAI,SAAS;AACX,YAAM,SAAS,UAAU,SAAS,aAAa,QAAQ,YAAY,QAAQ,UAAU;AACrF,YAAM,eAAe,gBAAgB,SAAS,aAAa,QAAQ,eAAe,QAAQ,WAAW;AACrG,YAAM,OAAO,SAAS;AACtB,YAAM,KAAK,SAAS,eAAe;AACnC,YAAM,QAAQ;AAAA,QACZ,OAAO,OAAO,IAAI,IAAI;AAAA,QACtB,KAAK,KAAK,OAAO,MAAM,SAAS,OAAO,MAAM,SAAS;AAAA,MACxD;AACA,kBAAY,QAAQ,OAAO,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,KAAK,WAAW;AAAA,QAC9F,MAAM;AAAA,QACN,OAAO,QAAQ,MAAM,MAAM;AAAA,MAC7B,EAAE;AAAA,IACJ;AAAA,EACF;AACF;AACA,SAAS,kBAAkB,UAAU,QAAQ;AAC3C,SAAO,CAAC,UAAU;AAChB,QAAI,OAAO,aAAa,UAAU;AAChC,YAAM,QAAQ,QAAQ;AACtB,aAAO;AAAA,IACT;AACA,UAAM,OAAO,OAAO,MAAM,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,MAAM,MAAM,SAAS,CAAC,GAAG,CAAC;AACpF,WAAO;AAAA,EACT;AACF;AACA,SAAS,iBAAiB,MAAM,MAAM,cAAc,gBAAgB;AAClE,QAAM,CAAC,KAAK,OAAO,KAAK,QAAQ,MAAM,YAAY,GAAG,MAAM;AACzD,mBAAe;AAAA,EACjB,CAAC;AACH;AACA,SAAS,wBAAwB,UAAU,QAAQ;AACjD,SAAO,SAAS,MAAM;AACpB,QAAI,OAAO,aAAa;AACtB,aAAO,OAAO,MAAM,SAAS;AAC/B,WAAO,OAAO,MAAM,OAAO,CAAC,KAAK,GAAG,UAAU,MAAM,SAAS,KAAK,GAAG,CAAC;AAAA,EACxE,CAAC;AACH;AACA,IAAM,wCAAwC;AAAA,EAC5C,YAAY;AAAA,EACZ,UAAU;AACZ;AACA,SAAS,eAAe,MAAM,gBAAgB,aAAa,cAAc;AACvE,SAAO,CAAC,UAAU;AAChB,QAAI,aAAa,OAAO;AACtB,mBAAa,MAAM,sCAAsC,IAAI,CAAC,IAAI,YAAY,KAAK;AACnF,qBAAe;AAAA,IACjB;AAAA,EACF;AACF;AACA,SAAS,yBAAyB,SAAS,MAAM;AAC/C,QAAM,YAAY,wBAAwB,IAAI;AAC9C,QAAM,EAAE,OAAO,QAAQ,aAAa,MAAM,aAAa,IAAI;AAC3D,QAAM,iBAAiB,EAAE,WAAW,OAAO;AAC3C,QAAM,EAAE,WAAW,WAAW,EAAE,IAAI;AACpC,QAAM,kBAAkB,sBAAsB,OAAO,QAAQ,SAAS;AACtE,QAAM,YAAY,gBAAgB,QAAQ,SAAS;AACnD,QAAM,iBAAiB,qBAAqB,cAAc,UAAU,WAAW,iBAAiB,SAAS;AACzG,QAAM,kBAAkB,kBAAkB,WAAW,MAAM;AAC3D,QAAM,aAAa,SAAS,MAAM,gBAAgB,MAAM,MAAM,KAAK,CAAC;AACpE,QAAM,aAAa,wBAAwB,WAAW,MAAM;AAC5D,mBAAiB,MAAM,MAAM,cAAc,cAAc;AACzD,QAAMA,YAAW,eAAe,cAAc,gBAAgB,iBAAiB,YAAY;AAC3F,QAAM,eAAe,SAAS,MAAM;AAClC,WAAO;AAAA,MACL,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,OAAO,GAAG,WAAW,QAAQ,WAAW,KAAK;AAAA,QAC7C,YAAY,GAAG,WAAW,KAAK;AAAA,QAC/B,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACL,UAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AACA,SAAS,uBAAuB,SAAS,MAAM;AAC7C,QAAM,YAAY,wBAAwB,IAAI;AAC9C,QAAM,EAAE,OAAO,QAAQ,aAAa,MAAM,aAAa,IAAI;AAC3D,QAAM,iBAAiB,EAAE,WAAW,OAAO;AAC3C,QAAM,EAAE,YAAY,WAAW,EAAE,IAAI;AACrC,QAAM,kBAAkB,sBAAsB,OAAO,QAAQ,UAAU;AACvE,QAAM,YAAY,gBAAgB,QAAQ,UAAU;AACpD,QAAM,iBAAiB,qBAAqB,YAAY,UAAU,WAAW,iBAAiB,SAAS;AACvG,QAAM,iBAAiB,kBAAkB,YAAY,MAAM;AAC3D,QAAM,YAAY,SAAS,MAAM,eAAe,MAAM,MAAM,KAAK,CAAC;AAClE,QAAM,cAAc,wBAAwB,YAAY,MAAM;AAC9D,mBAAiB,MAAM,MAAM,cAAc,cAAc;AACzD,QAAMA,YAAW,eAAe,YAAY,gBAAgB,gBAAgB,YAAY;AACxF,QAAM,eAAe,SAAS,MAAM;AAClC,WAAO;AAAA,MACL,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,GAAG,YAAY,QAAQ,UAAU,KAAK;AAAA,QAC9C,WAAW,GAAG,UAAU,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA,UAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,YAAY,UAAU,CAAC,GAAG;AACjC,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,UAAAV,YAAW;AAAA,EACb,IAAI;AACJ,QAAM,gBAAgB,IAAI,KAAK;AAC/B,QAAM,WAAW,WAAW,IAAI;AAChC,QAAM,qBAAqB,sBAAsB,EAAE,UAAAA,UAAS,CAAC;AAC7D,QAAM,cAAc,aAAa,MAAM,aAAa,cAAc,SAAS;AAC3E,QAAM,WAAW,SAAS,MAAM,CAAC,CAAC,SAAS,SAAS,mBAAmB,UAAU,SAAS;AAC1F,MAAI,YAAY,OAAO;AACrB,qBAAiB,UAAU,WAAW,MAAM;AAC1C,UAAI,IAAI;AACR,oBAAc,SAAS,MAAM,KAAK,SAAS,UAAU,OAAO,SAAS,GAAG,SAAS,OAAO,KAAK;AAAA,IAC/F,CAAC;AACD;AAAA,MACE,MAAM,mBAAmB,UAAU,cAAcA,aAAY,OAAO,SAASA,UAAS,qBAAqB,aAAa,cAAc;AAAA,MACtI,CAAC,SAAS;AACR,sBAAc,QAAQ;AACtB,qBAAa,IAAI;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACA,iBAAe,aAAa,MAAM;AAChC,QAAI;AACJ,YAAQ,KAAK,SAAS,UAAU,OAAO,SAAS,GAAG,QAAQ;AAC3D,aAAS,QAAQ,YAAY,QAAQ,MAAM,UAAU,SAAS,QAAQ,IAAI,IAAI;AAAA,EAChF;AACA,iBAAe,QAAQ,MAAM;AAC3B,QAAI,mBAAmB,UAAU;AAC/B,YAAM,aAAa,IAAI;AAAA;AAEvB,oBAAc,QAAQ;AAAA,EAC1B;AACA,iBAAe,UAAU;AACvB,kBAAc,QAAQ;AACtB,UAAM,IAAI,SAAS;AACnB,aAAS,QAAQ;AACjB,WAAO,KAAK,OAAO,SAAS,EAAE,QAAQ;AAAA,EACxC;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,UAAU,CAAC,GAAG;AACxC,QAAM;AAAA,IACJ,QAAAD,UAAS;AAAA,IACT,oBAAoB,yBAAyB;AAAA,EAC/C,IAAI;AACJ,QAAM,gCAAgC;AACtC,QAAM,cAAc,aAAa,MAAM;AACrC,QAAI,CAACA,WAAU,EAAE,kBAAkBA;AACjC,aAAO;AACT,QAAI;AACF,UAAI,aAAa,EAAE;AAAA,IACrB,SAAS,GAAG;AACV,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,CAAC;AACD,QAAM,oBAAoB,IAAI,YAAY,SAAS,gBAAgB,gBAAgB,aAAa,eAAe,SAAS;AACxH,QAAM,eAAe,IAAI,IAAI;AAC7B,QAAM,oBAAoB,YAAY;AACpC,QAAI,CAAC,YAAY;AACf;AACF,QAAI,CAAC,kBAAkB,SAAS,aAAa,eAAe,UAAU;AACpE,YAAM,SAAS,MAAM,aAAa,kBAAkB;AACpD,UAAI,WAAW;AACb,0BAAkB,QAAQ;AAAA,IAC9B;AACA,WAAO,kBAAkB;AAAA,EAC3B;AACA,QAAM,EAAE,IAAI,SAAS,SAAS,aAAa,IAAI,gBAAgB;AAC/D,QAAM,EAAE,IAAI,QAAQ,SAAS,YAAY,IAAI,gBAAgB;AAC7D,QAAM,EAAE,IAAI,SAAS,SAAS,aAAa,IAAI,gBAAgB;AAC/D,QAAM,EAAE,IAAI,SAAS,SAAS,aAAa,IAAI,gBAAgB;AAC/D,QAAM,OAAO,OAAO,cAAc;AAChC,QAAI,CAAC,YAAY,SAAS,CAAC,kBAAkB;AAC3C;AACF,UAAM,WAAW,OAAO,OAAO,CAAC,GAAG,+BAA+B,SAAS;AAC3E,iBAAa,QAAQ,IAAI,aAAa,SAAS,SAAS,IAAI,QAAQ;AACpE,iBAAa,MAAM,UAAU;AAC7B,iBAAa,MAAM,SAAS;AAC5B,iBAAa,MAAM,UAAU;AAC7B,iBAAa,MAAM,UAAU;AAC7B,WAAO,aAAa;AAAA,EACtB;AACA,QAAM,QAAQ,MAAM;AAClB,QAAI,aAAa;AACf,mBAAa,MAAM,MAAM;AAC3B,iBAAa,QAAQ;AAAA,EACvB;AACA,MAAI;AACF,iBAAa,iBAAiB;AAChC,oBAAkB,KAAK;AACvB,MAAI,YAAY,SAASA,SAAQ;AAC/B,UAAMC,YAAWD,QAAO;AACxB,qBAAiBC,WAAU,oBAAoB,CAAC,MAAM;AACpD,QAAE,eAAe;AACjB,UAAIA,UAAS,oBAAoB,WAAW;AAC1C,cAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,uBAAuB;AAC7B,SAAS,qBAAqB,SAAS;AACrC,MAAI,YAAY;AACd,WAAO,CAAC;AACV,SAAO;AACT;AACA,SAAS,aAAa,KAAK,UAAU,CAAC,GAAG;AACvC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY,CAAC;AAAA,EACf,IAAI;AACJ,QAAM,OAAO,IAAI,IAAI;AACrB,QAAM,SAAS,IAAI,QAAQ;AAC3B,QAAM,QAAQ,IAAI;AAClB,QAAM,SAASI,OAAM,GAAG;AACxB,MAAI;AACJ,MAAI;AACJ,MAAI,mBAAmB;AACvB,MAAI,UAAU;AACd,MAAI,eAAe,CAAC;AACpB,MAAI;AACJ,QAAM,cAAc,MAAM;AACxB,QAAI,aAAa,UAAU,MAAM,SAAS,OAAO,UAAU,QAAQ;AACjE,iBAAW,UAAU;AACnB,cAAM,MAAM,KAAK,MAAM;AACzB,qBAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACA,QAAM,iBAAiB,MAAM;AAC3B,iBAAa,eAAe;AAC5B,sBAAkB;AAAA,EACpB;AACA,QAAM,QAAQ,CAAC,OAAO,KAAK,WAAW;AACpC,QAAI,CAAC,YAAY,CAAC,MAAM;AACtB;AACF,uBAAmB;AACnB,mBAAe;AACf,sBAAkB,OAAO,SAAS,eAAe;AACjD,UAAM,MAAM,MAAM,MAAM,MAAM;AAC9B,UAAM,QAAQ;AAAA,EAChB;AACA,QAAM,OAAO,CAAC,OAAO,YAAY,SAAS;AACxC,QAAI,CAAC,MAAM,SAAS,OAAO,UAAU,QAAQ;AAC3C,UAAI;AACF,qBAAa,KAAK,KAAK;AACzB,aAAO;AAAA,IACT;AACA,gBAAY;AACZ,UAAM,MAAM,KAAK,KAAK;AACtB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,MAAM;AAClB,QAAI,oBAAoB,OAAO,OAAO,UAAU;AAC9C;AACF,UAAM,KAAK,IAAI,UAAU,OAAO,OAAO,SAAS;AAChD,UAAM,QAAQ;AACd,WAAO,QAAQ;AACf,OAAG,SAAS,MAAM;AAChB,aAAO,QAAQ;AACf,gBAAU;AACV,qBAAe,OAAO,SAAS,YAAY,EAAE;AAC7C,yBAAmB,OAAO,SAAS,gBAAgB;AACnD,kBAAY;AAAA,IACd;AACA,OAAG,UAAU,CAAC,OAAO;AACnB,aAAO,QAAQ;AACf,wBAAkB,OAAO,SAAS,eAAe,IAAI,EAAE;AACvD,UAAI,CAAC,oBAAoB,QAAQ,kBAAkB,MAAM,SAAS,QAAQ,OAAO,MAAM,QAAQ;AAC7F,cAAM;AAAA,UACJ,UAAU;AAAA,UACV,QAAQ;AAAA,UACR;AAAA,QACF,IAAI,qBAAqB,QAAQ,aAAa;AAC9C,YAAI,OAAO,YAAY,aAAa,UAAU,KAAK,UAAU,UAAU;AACrE,qBAAW;AACX,qBAAW,OAAO,KAAK;AAAA,QACzB,WAAW,OAAO,YAAY,cAAc,QAAQ,GAAG;AACrD,qBAAW,OAAO,KAAK;AAAA,QACzB,OAAO;AACL,sBAAY,OAAO,SAAS,SAAS;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AACA,OAAG,UAAU,CAAC,MAAM;AAClB,iBAAW,OAAO,SAAS,QAAQ,IAAI,CAAC;AAAA,IAC1C;AACA,OAAG,YAAY,CAAC,MAAM;AACpB,UAAI,QAAQ,WAAW;AACrB,uBAAe;AACf,cAAM;AAAA,UACJ,UAAU;AAAA,UACV,kBAAkB;AAAA,QACpB,IAAI,qBAAqB,QAAQ,SAAS;AAC1C,YAAI,EAAE,SAAS;AACb;AAAA,MACJ;AACA,WAAK,QAAQ,EAAE;AACf,mBAAa,OAAO,SAAS,UAAU,IAAI,CAAC;AAAA,IAC9C;AAAA,EACF;AACA,MAAI,QAAQ,WAAW;AACrB,UAAM;AAAA,MACJ,UAAU;AAAA,MACV,WAAW;AAAA,MACX,cAAc;AAAA,IAChB,IAAI,qBAAqB,QAAQ,SAAS;AAC1C,UAAM,EAAE,OAAO,OAAO,IAAI;AAAA,MACxB,MAAM;AACJ,aAAK,SAAS,KAAK;AACnB,YAAI,mBAAmB;AACrB;AACF,0BAAkB,WAAW,MAAM;AACjC,gBAAM;AACN,6BAAmB;AAAA,QACrB,GAAG,WAAW;AAAA,MAChB;AAAA,MACA;AAAA,MACA,EAAE,WAAW,MAAM;AAAA,IACrB;AACA,qBAAiB;AACjB,sBAAkB;AAAA,EACpB;AACA,MAAI,WAAW;AACb,QAAI;AACF,uBAAiB,gBAAgB,MAAM,MAAM,CAAC;AAChD,sBAAkB,KAAK;AAAA,EACzB;AACA,QAAM,OAAO,MAAM;AACjB,QAAI,CAAC,YAAY,CAAC;AAChB;AACF,UAAM;AACN,uBAAmB;AACnB,cAAU;AACV,UAAM;AAAA,EACR;AACA,MAAI;AACF,SAAK;AACP,QAAM,QAAQ,IAAI;AAClB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAI;AAAA,EACN;AACF;AAEA,SAAS,aAAa,MAAM,eAAe,SAAS;AAClD,QAAM;AAAA,IACJ,QAAAL,UAAS;AAAA,EACX,IAAI,WAAW,OAAO,UAAU,CAAC;AACjC,QAAM,OAAO,IAAI,IAAI;AACrB,QAAM,SAAS,WAAW;AAC1B,QAAM,OAAO,IAAI,SAAS;AACxB,QAAI,CAAC,OAAO;AACV;AACF,WAAO,MAAM,YAAY,GAAG,IAAI;AAAA,EAClC;AACA,QAAM,YAAY,SAAS,aAAa;AACtC,QAAI,CAAC,OAAO;AACV;AACF,WAAO,MAAM,UAAU;AAAA,EACzB;AACA,MAAIA,SAAQ;AACV,QAAI,OAAO,SAAS;AAClB,aAAO,QAAQ,IAAI,OAAO,MAAM,aAAa;AAAA,aACtC,OAAO,SAAS;AACvB,aAAO,QAAQ,KAAK;AAAA;AAEpB,aAAO,QAAQ;AACjB,WAAO,MAAM,YAAY,CAAC,MAAM;AAC9B,WAAK,QAAQ,EAAE;AAAA,IACjB;AACA,sBAAkB,MAAM;AACtB,UAAI,OAAO;AACT,eAAO,MAAM,UAAU;AAAA,IAC3B,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW,MAAM,WAAW;AACnC,MAAI,KAAK,WAAW,KAAK,UAAU,WAAW;AAC5C,WAAO;AACT,QAAM,aAAa,KAAK,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,EAAE,SAAS;AAC1D,QAAM,qBAAqB,UAAU,OAAO,CAAC,QAAQ,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,OAAO;AAC1F,UAAM,MAAM,GAAG,SAAS;AACxB,QAAI,IAAI,KAAK,EAAE,WAAW,UAAU,GAAG;AACrC,aAAO;AAAA,IACT,OAAO;AACL,YAAM,OAAO,GAAG;AAChB,aAAO,SAAS,IAAI,MAAM,GAAG;AAAA,IAC/B;AAAA,EACF,CAAC,EAAE,KAAK,GAAG;AACX,QAAM,eAAe,iBAAiB,UAAU;AAChD,SAAO,GAAG,WAAW,KAAK,MAAM,KAAK,KAAK,YAAY,IAAI,kBAAkB;AAC9E;AAEA,SAAS,UAAU,UAAU;AAC3B,SAAO,CAAC,MAAM;AACZ,UAAM,eAAe,EAAE,KAAK,CAAC;AAC7B,WAAO,QAAQ,QAAQ,SAAS,MAAM,QAAQ,YAAY,CAAC,EAAE,KAAK,CAAC,WAAW;AAC5E,kBAAY,CAAC,WAAW,MAAM,CAAC;AAAA,IACjC,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,kBAAY,CAAC,SAAS,KAAK,CAAC;AAAA,IAC9B,CAAC;AAAA,EACH;AACF;AAEA,SAAS,oBAAoB,IAAI,MAAM,WAAW;AAChD,QAAM,WAAW,GAAG,WAAW,MAAM,SAAS,CAAC,gBAAgB,SAAS,KAAK,EAAE;AAC/E,QAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC7D,QAAM,MAAM,IAAI,gBAAgB,IAAI;AACpC,SAAO;AACT;AAEA,SAAS,eAAe,IAAI,UAAU,CAAC,GAAG;AACxC,QAAM;AAAA,IACJ,eAAe,CAAC;AAAA,IAChB,oBAAoB,CAAC;AAAA,IACrB;AAAA,IACA,QAAAA,UAAS;AAAA,EACX,IAAI;AACJ,QAAM,SAAS,IAAI;AACnB,QAAM,eAAe,IAAI,SAAS;AAClC,QAAM,UAAU,IAAI,CAAC,CAAC;AACtB,QAAM,YAAY,IAAI;AACtB,QAAM,kBAAkB,CAAC,SAAS,cAAc;AAC9C,QAAI,OAAO,SAAS,OAAO,MAAM,QAAQA,SAAQ;AAC/C,aAAO,MAAM,UAAU;AACvB,UAAI,gBAAgB,OAAO,MAAM,IAAI;AACrC,cAAQ,QAAQ,CAAC;AACjB,aAAO,QAAQ;AACf,MAAAA,QAAO,aAAa,UAAU,KAAK;AACnC,mBAAa,QAAQ;AAAA,IACvB;AAAA,EACF;AACA,kBAAgB;AAChB,oBAAkB,eAAe;AACjC,QAAM,iBAAiB,MAAM;AAC3B,UAAM,UAAU,oBAAoB,IAAI,cAAc,iBAAiB;AACvE,UAAM,YAAY,IAAI,OAAO,OAAO;AACpC,cAAU,OAAO;AACjB,cAAU,YAAY,CAAC,MAAM;AAC3B,YAAM,EAAE,UAAU,MAAM;AAAA,MACxB,GAAG,SAAS,MAAM;AAAA,MAClB,EAAE,IAAI,QAAQ;AACd,YAAM,CAAC,QAAQ,MAAM,IAAI,EAAE;AAC3B,cAAQ,QAAQ;AAAA,QACd,KAAK;AACH,kBAAQ,MAAM;AACd,0BAAgB,MAAM;AACtB;AAAA,QACF;AACE,iBAAO,MAAM;AACb,0BAAgB,OAAO;AACvB;AAAA,MACJ;AAAA,IACF;AACA,cAAU,UAAU,CAAC,MAAM;AACzB,YAAM,EAAE,SAAS,MAAM;AAAA,MACvB,EAAE,IAAI,QAAQ;AACd,QAAE,eAAe;AACjB,aAAO,CAAC;AACR,sBAAgB,OAAO;AAAA,IACzB;AACA,QAAI,SAAS;AACX,gBAAU,QAAQ;AAAA,QAChB,MAAM,gBAAgB,iBAAiB;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,QAAM,aAAa,IAAI,WAAW,IAAI,QAAQ,CAAC,SAAS,WAAW;AACjE,QAAI;AACJ,YAAQ,QAAQ;AAAA,MACd;AAAA,MACA;AAAA,IACF;AACA,KAAC,KAAK,OAAO,UAAU,OAAO,SAAS,GAAG,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACnE,iBAAa,QAAQ;AAAA,EACvB,CAAC;AACD,QAAM,WAAW,IAAI,WAAW;AAC9B,QAAI,aAAa,UAAU,WAAW;AACpC,cAAQ;AAAA,QACN;AAAA,MACF;AACA,aAAO,QAAQ,OAAO;AAAA,IACxB;AACA,WAAO,QAAQ,eAAe;AAC9B,WAAO,WAAW,GAAG,MAAM;AAAA,EAC7B;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,eAAe,UAAU,CAAC,GAAG;AACpC,QAAM,EAAE,QAAAA,UAAS,cAAc,IAAI;AACnC,MAAI,CAACA;AACH,WAAO,IAAI,KAAK;AAClB,QAAM,UAAU,IAAIA,QAAO,SAAS,SAAS,CAAC;AAC9C,mBAAiBA,SAAQ,QAAQ,MAAM;AACrC,YAAQ,QAAQ;AAAA,EAClB,CAAC;AACD,mBAAiBA,SAAQ,SAAS,MAAM;AACtC,YAAQ,QAAQ;AAAA,EAClB,CAAC;AACD,SAAO;AACT;AAEA,SAAS,gBAAgB,UAAU,CAAC,GAAG;AACrC,QAAM,EAAE,QAAAA,UAAS,eAAe,WAAW,OAAO,IAAI;AACtD,MAAI,CAACA,SAAQ;AACX,WAAO;AAAA,MACL,GAAG,IAAI,CAAC;AAAA,MACR,GAAG,IAAI,CAAC;AAAA,IACV;AAAA,EACF;AACA,QAAM,YAAY,IAAIA,QAAO,OAAO;AACpC,QAAM,YAAY,IAAIA,QAAO,OAAO;AACpC,QAAM,IAAI,SAAS;AAAA,IACjB,MAAM;AACJ,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,IAAI,IAAI;AACN,eAAS,EAAE,MAAM,IAAI,SAAS,CAAC;AAAA,IACjC;AAAA,EACF,CAAC;AACD,QAAM,IAAI,SAAS;AAAA,IACjB,MAAM;AACJ,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,IAAI,IAAI;AACN,eAAS,EAAE,KAAK,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,EACF,CAAC;AACD;AAAA,IACEA;AAAA,IACA;AAAA,IACA,MAAM;AACJ,gBAAU,QAAQA,QAAO;AACzB,gBAAU,QAAQA,QAAO;AAAA,IAC3B;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AACA,SAAO,EAAE,GAAG,EAAE;AAChB;AAEA,SAAS,cAAc,UAAU,CAAC,GAAG;AACnC,QAAM;AAAA,IACJ,QAAAA,UAAS;AAAA,IACT,eAAe,OAAO;AAAA,IACtB,gBAAgB,OAAO;AAAA,IACvB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACT,IAAI;AACJ,QAAM,QAAQ,IAAI,YAAY;AAC9B,QAAM,SAAS,IAAI,aAAa;AAChC,QAAM,SAAS,MAAM;AACnB,QAAIA,SAAQ;AACV,UAAI,SAAS,SAAS;AACpB,cAAM,QAAQA,QAAO;AACrB,eAAO,QAAQA,QAAO;AAAA,MACxB,WAAW,kBAAkB;AAC3B,cAAM,QAAQA,QAAO;AACrB,eAAO,QAAQA,QAAO;AAAA,MACxB,OAAO;AACL,cAAM,QAAQA,QAAO,SAAS,gBAAgB;AAC9C,eAAO,QAAQA,QAAO,SAAS,gBAAgB;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACP,eAAa,MAAM;AACnB,mBAAiB,UAAU,QAAQ,EAAE,SAAS,KAAK,CAAC;AACpD,MAAI,mBAAmB;AACrB,UAAM,UAAU,cAAc,yBAAyB;AACvD,UAAM,SAAS,MAAM,OAAO,CAAC;AAAA,EAC/B;AACA,SAAO,EAAE,OAAO,OAAO;AACzB;", - "names": ["get", "set", "ref", "keys", "invoke", "toRef", "toRefs", "events", "window", "document", "timestamp", "getValue", "defaults", "toRef", "set", "onUpdated", "preventDefault", "toRefs", "now", "scrollTo", "keys", "get", "isReadonly"] -} diff --git a/website/src/.vitepress/cache/deps/package.json b/website/src/.vitepress/cache/deps/package.json deleted file mode 100644 index 3dbc1ca5..00000000 --- a/website/src/.vitepress/cache/deps/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/website/src/.vitepress/cache/deps/vitepress___@vue_devtools-api.js b/website/src/.vitepress/cache/deps/vitepress___@vue_devtools-api.js deleted file mode 100644 index 1bb799b5..00000000 --- a/website/src/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +++ /dev/null @@ -1,5026 +0,0 @@ -// node_modules/.pnpm/@vue+devtools-shared@7.6.1/node_modules/@vue/devtools-shared/dist/index.js -var __create = Object.create -var __defProp = Object.defineProperty -var __getOwnPropDesc = Object.getOwnPropertyDescriptor -var __getOwnPropNames = Object.getOwnPropertyNames -var __getProtoOf = Object.getPrototypeOf -var __hasOwnProp = Object.prototype.hasOwnProperty -var __esm = (fn, res) => - function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])((fn = 0))), res - } -var __commonJS = (cb, mod) => - function __require() { - return ( - mod || - (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), - mod.exports - ) - } -var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable - }) - } - return to -} -var __toESM = (mod, isNodeMode, target2) => ( - (target2 = mod != null ? __create(__getProtoOf(mod)) : {}), - __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule - ? __defProp(target2, 'default', { value: mod, enumerable: true }) - : target2, - mod - ) -) -var init_esm_shims = __esm({ - '../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.14__@swc+core@1.5.29_jiti@2.0.0__utvtwgyeu6xd57udthcnogp47u/node_modules/tsup/assets/esm_shims.js'() { - 'use strict' - } -}) -var require_rfdc = __commonJS({ - '../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js'( - exports, - module - ) { - 'use strict' - init_esm_shims() - module.exports = rfdc2 - function copyBuffer(cur) { - if (cur instanceof Buffer) { - return Buffer.from(cur) - } - return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length) - } - function rfdc2(opts) { - opts = opts || {} - if (opts.circles) return rfdcCircles(opts) - const constructorHandlers = /* @__PURE__ */ new Map() - constructorHandlers.set(Date, o => new Date(o)) - constructorHandlers.set( - Map, - (o, fn) => new Map(cloneArray(Array.from(o), fn)) - ) - constructorHandlers.set( - Set, - (o, fn) => new Set(cloneArray(Array.from(o), fn)) - ) - if (opts.constructorHandlers) { - for (const handler2 of opts.constructorHandlers) { - constructorHandlers.set(handler2[0], handler2[1]) - } - } - let handler = null - return opts.proto ? cloneProto : clone - function cloneArray(a, fn) { - const keys = Object.keys(a) - const a2 = new Array(keys.length) - for (let i = 0; i < keys.length; i++) { - const k = keys[i] - const cur = a[k] - if (typeof cur !== 'object' || cur === null) { - a2[k] = cur - } else if ( - cur.constructor !== Object && - (handler = constructorHandlers.get(cur.constructor)) - ) { - a2[k] = handler(cur, fn) - } else if (ArrayBuffer.isView(cur)) { - a2[k] = copyBuffer(cur) - } else { - a2[k] = fn(cur) - } - } - return a2 - } - function clone(o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, clone) - if ( - o.constructor !== Object && - (handler = constructorHandlers.get(o.constructor)) - ) { - return handler(o, clone) - } - const o2 = {} - for (const k in o) { - if (Object.hasOwnProperty.call(o, k) === false) continue - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if ( - cur.constructor !== Object && - (handler = constructorHandlers.get(cur.constructor)) - ) { - o2[k] = handler(cur, clone) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - o2[k] = clone(cur) - } - } - return o2 - } - function cloneProto(o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, cloneProto) - if ( - o.constructor !== Object && - (handler = constructorHandlers.get(o.constructor)) - ) { - return handler(o, cloneProto) - } - const o2 = {} - for (const k in o) { - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if ( - cur.constructor !== Object && - (handler = constructorHandlers.get(cur.constructor)) - ) { - o2[k] = handler(cur, cloneProto) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - o2[k] = cloneProto(cur) - } - } - return o2 - } - } - function rfdcCircles(opts) { - const refs = [] - const refsNew = [] - const constructorHandlers = /* @__PURE__ */ new Map() - constructorHandlers.set(Date, o => new Date(o)) - constructorHandlers.set( - Map, - (o, fn) => new Map(cloneArray(Array.from(o), fn)) - ) - constructorHandlers.set( - Set, - (o, fn) => new Set(cloneArray(Array.from(o), fn)) - ) - if (opts.constructorHandlers) { - for (const handler2 of opts.constructorHandlers) { - constructorHandlers.set(handler2[0], handler2[1]) - } - } - let handler = null - return opts.proto ? cloneProto : clone - function cloneArray(a, fn) { - const keys = Object.keys(a) - const a2 = new Array(keys.length) - for (let i = 0; i < keys.length; i++) { - const k = keys[i] - const cur = a[k] - if (typeof cur !== 'object' || cur === null) { - a2[k] = cur - } else if ( - cur.constructor !== Object && - (handler = constructorHandlers.get(cur.constructor)) - ) { - a2[k] = handler(cur, fn) - } else if (ArrayBuffer.isView(cur)) { - a2[k] = copyBuffer(cur) - } else { - const index = refs.indexOf(cur) - if (index !== -1) { - a2[k] = refsNew[index] - } else { - a2[k] = fn(cur) - } - } - } - return a2 - } - function clone(o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, clone) - if ( - o.constructor !== Object && - (handler = constructorHandlers.get(o.constructor)) - ) { - return handler(o, clone) - } - const o2 = {} - refs.push(o) - refsNew.push(o2) - for (const k in o) { - if (Object.hasOwnProperty.call(o, k) === false) continue - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if ( - cur.constructor !== Object && - (handler = constructorHandlers.get(cur.constructor)) - ) { - o2[k] = handler(cur, clone) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - const i = refs.indexOf(cur) - if (i !== -1) { - o2[k] = refsNew[i] - } else { - o2[k] = clone(cur) - } - } - } - refs.pop() - refsNew.pop() - return o2 - } - function cloneProto(o) { - if (typeof o !== 'object' || o === null) return o - if (Array.isArray(o)) return cloneArray(o, cloneProto) - if ( - o.constructor !== Object && - (handler = constructorHandlers.get(o.constructor)) - ) { - return handler(o, cloneProto) - } - const o2 = {} - refs.push(o) - refsNew.push(o2) - for (const k in o) { - const cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if ( - cur.constructor !== Object && - (handler = constructorHandlers.get(cur.constructor)) - ) { - o2[k] = handler(cur, cloneProto) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - const i = refs.indexOf(cur) - if (i !== -1) { - o2[k] = refsNew[i] - } else { - o2[k] = cloneProto(cur) - } - } - } - refs.pop() - refsNew.pop() - return o2 - } - } - } -}) -init_esm_shims() -init_esm_shims() -init_esm_shims() -var isBrowser = typeof navigator !== 'undefined' -var target = - typeof window !== 'undefined' - ? window - : typeof globalThis !== 'undefined' - ? globalThis - : typeof global !== 'undefined' - ? global - : {} -var isInChromePanel = - typeof target.chrome !== 'undefined' && !!target.chrome.devtools -var isInIframe = isBrowser && target.self !== target.top -var _a -var isInElectron = - typeof navigator !== 'undefined' && - ((_a = navigator.userAgent) == null - ? void 0 - : _a.toLowerCase().includes('electron')) -var isNuxtApp = typeof window !== 'undefined' && !!window.__NUXT__ -init_esm_shims() -var import_rfdc = __toESM(require_rfdc(), 1) -var classifyRE = /(?:^|[-_/])(\w)/g -function toUpper(_, c) { - return c ? c.toUpperCase() : '' -} -function classify(str) { - return str && `${str}`.replace(classifyRE, toUpper) -} -function basename(filename, ext) { - let normalizedFilename = filename.replace(/^[a-z]:/i, '').replace(/\\/g, '/') - if (normalizedFilename.endsWith(`index${ext}`)) { - normalizedFilename = normalizedFilename.replace(`/index${ext}`, ext) - } - const lastSlashIndex = normalizedFilename.lastIndexOf('/') - const baseNameWithExt = normalizedFilename.substring(lastSlashIndex + 1) - if (ext) { - const extIndex = baseNameWithExt.lastIndexOf(ext) - return baseNameWithExt.substring(0, extIndex) - } - return '' -} -var HTTP_URL_RE = /^https?:\/\// -function isUrlString(str) { - return str.startsWith('/') || HTTP_URL_RE.test(str) -} -var deepClone = (0, import_rfdc.default)({ circles: true }) - -// node_modules/.pnpm/perfect-debounce@1.0.0/node_modules/perfect-debounce/dist/index.mjs -var DEBOUNCE_DEFAULTS = { - trailing: true -} -function debounce(fn, wait = 25, options = {}) { - options = { ...DEBOUNCE_DEFAULTS, ...options } - if (!Number.isFinite(wait)) { - throw new TypeError('Expected `wait` to be a finite number') - } - let leadingValue - let timeout - let resolveList = [] - let currentPromise - let trailingArgs - const applyFn = (_this, args) => { - currentPromise = _applyPromised(fn, _this, args) - currentPromise.finally(() => { - currentPromise = null - if (options.trailing && trailingArgs && !timeout) { - const promise = applyFn(_this, trailingArgs) - trailingArgs = null - return promise - } - }) - return currentPromise - } - return function (...args) { - if (currentPromise) { - if (options.trailing) { - trailingArgs = args - } - return currentPromise - } - return new Promise(resolve => { - const shouldCallNow = !timeout && options.leading - clearTimeout(timeout) - timeout = setTimeout(() => { - timeout = null - const promise = options.leading ? leadingValue : applyFn(this, args) - for (const _resolve of resolveList) { - _resolve(promise) - } - resolveList = [] - }, wait) - if (shouldCallNow) { - leadingValue = applyFn(this, args) - resolve(leadingValue) - } else { - resolveList.push(resolve) - } - }) - } -} -async function _applyPromised(fn, _this, args) { - return await fn.apply(_this, args) -} - -// node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs -function flatHooks(configHooks, hooks2 = {}, parentName) { - for (const key in configHooks) { - const subHook = configHooks[key] - const name = parentName ? `${parentName}:${key}` : key - if (typeof subHook === 'object' && subHook !== null) { - flatHooks(subHook, hooks2, name) - } else if (typeof subHook === 'function') { - hooks2[name] = subHook - } - } - return hooks2 -} -var defaultTask = { run: function_ => function_() } -var _createTask = () => defaultTask -var createTask = - typeof console.createTask !== 'undefined' ? console.createTask : _createTask -function serialTaskCaller(hooks2, args) { - const name = args.shift() - const task = createTask(name) - return hooks2.reduce( - (promise, hookFunction) => - promise.then(() => task.run(() => hookFunction(...args))), - Promise.resolve() - ) -} -function parallelTaskCaller(hooks2, args) { - const name = args.shift() - const task = createTask(name) - return Promise.all(hooks2.map(hook2 => task.run(() => hook2(...args)))) -} -function callEachWith(callbacks, arg0) { - for (const callback of [...callbacks]) { - callback(arg0) - } -} -var Hookable = class { - constructor() { - this._hooks = {} - this._before = void 0 - this._after = void 0 - this._deprecatedMessages = void 0 - this._deprecatedHooks = {} - this.hook = this.hook.bind(this) - this.callHook = this.callHook.bind(this) - this.callHookWith = this.callHookWith.bind(this) - } - hook(name, function_, options = {}) { - if (!name || typeof function_ !== 'function') { - return () => {} - } - const originalName = name - let dep - while (this._deprecatedHooks[name]) { - dep = this._deprecatedHooks[name] - name = dep.to - } - if (dep && !options.allowDeprecated) { - let message = dep.message - if (!message) { - message = - `${originalName} hook has been deprecated` + - (dep.to ? `, please use ${dep.to}` : '') - } - if (!this._deprecatedMessages) { - this._deprecatedMessages = /* @__PURE__ */ new Set() - } - if (!this._deprecatedMessages.has(message)) { - console.warn(message) - this._deprecatedMessages.add(message) - } - } - if (!function_.name) { - try { - Object.defineProperty(function_, 'name', { - get: () => '_' + name.replace(/\W+/g, '_') + '_hook_cb', - configurable: true - }) - } catch {} - } - this._hooks[name] = this._hooks[name] || [] - this._hooks[name].push(function_) - return () => { - if (function_) { - this.removeHook(name, function_) - function_ = void 0 - } - } - } - hookOnce(name, function_) { - let _unreg - let _function = (...arguments_) => { - if (typeof _unreg === 'function') { - _unreg() - } - _unreg = void 0 - _function = void 0 - return function_(...arguments_) - } - _unreg = this.hook(name, _function) - return _unreg - } - removeHook(name, function_) { - if (this._hooks[name]) { - const index = this._hooks[name].indexOf(function_) - if (index !== -1) { - this._hooks[name].splice(index, 1) - } - if (this._hooks[name].length === 0) { - delete this._hooks[name] - } - } - } - deprecateHook(name, deprecated) { - this._deprecatedHooks[name] = - typeof deprecated === 'string' ? { to: deprecated } : deprecated - const _hooks = this._hooks[name] || [] - delete this._hooks[name] - for (const hook2 of _hooks) { - this.hook(name, hook2) - } - } - deprecateHooks(deprecatedHooks) { - Object.assign(this._deprecatedHooks, deprecatedHooks) - for (const name in deprecatedHooks) { - this.deprecateHook(name, deprecatedHooks[name]) - } - } - addHooks(configHooks) { - const hooks2 = flatHooks(configHooks) - const removeFns = Object.keys(hooks2).map(key => - this.hook(key, hooks2[key]) - ) - return () => { - for (const unreg of removeFns.splice(0, removeFns.length)) { - unreg() - } - } - } - removeHooks(configHooks) { - const hooks2 = flatHooks(configHooks) - for (const key in hooks2) { - this.removeHook(key, hooks2[key]) - } - } - removeAllHooks() { - for (const key in this._hooks) { - delete this._hooks[key] - } - } - callHook(name, ...arguments_) { - arguments_.unshift(name) - return this.callHookWith(serialTaskCaller, name, ...arguments_) - } - callHookParallel(name, ...arguments_) { - arguments_.unshift(name) - return this.callHookWith(parallelTaskCaller, name, ...arguments_) - } - callHookWith(caller, name, ...arguments_) { - const event = - this._before || this._after - ? { name, args: arguments_, context: {} } - : void 0 - if (this._before) { - callEachWith(this._before, event) - } - const result = caller( - name in this._hooks ? [...this._hooks[name]] : [], - arguments_ - ) - if (result instanceof Promise) { - return result.finally(() => { - if (this._after && event) { - callEachWith(this._after, event) - } - }) - } - if (this._after && event) { - callEachWith(this._after, event) - } - return result - } - beforeEach(function_) { - this._before = this._before || [] - this._before.push(function_) - return () => { - if (this._before !== void 0) { - const index = this._before.indexOf(function_) - if (index !== -1) { - this._before.splice(index, 1) - } - } - } - } - afterEach(function_) { - this._after = this._after || [] - this._after.push(function_) - return () => { - if (this._after !== void 0) { - const index = this._after.indexOf(function_) - if (index !== -1) { - this._after.splice(index, 1) - } - } - } - } -} -function createHooks() { - return new Hookable() -} - -// node_modules/.pnpm/birpc@0.2.19/node_modules/birpc/dist/index.mjs -var { clearTimeout: clearTimeout2, setTimeout: setTimeout2 } = globalThis -var random = Math.random.bind(Math) - -// node_modules/.pnpm/@vue+devtools-kit@7.6.1/node_modules/@vue/devtools-kit/dist/index.js -var __create2 = Object.create -var __defProp2 = Object.defineProperty -var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor -var __getOwnPropNames2 = Object.getOwnPropertyNames -var __getProtoOf2 = Object.getPrototypeOf -var __hasOwnProp2 = Object.prototype.hasOwnProperty -var __esm2 = (fn, res) => - function __init() { - return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])((fn = 0))), res - } -var __commonJS2 = (cb, mod) => - function __require() { - return ( - mod || - (0, cb[__getOwnPropNames2(cb)[0]])( - (mod = { exports: {} }).exports, - mod - ), - mod.exports - ) - } -var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable - }) - } - return to -} -var __toESM2 = (mod, isNodeMode, target22) => ( - (target22 = mod != null ? __create2(__getProtoOf2(mod)) : {}), - __copyProps2( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule - ? __defProp2(target22, 'default', { value: mod, enumerable: true }) - : target22, - mod - ) -) -var init_esm_shims2 = __esm2({ - '../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.14__@swc+core@1.5.29_jiti@2.0.0__utvtwgyeu6xd57udthcnogp47u/node_modules/tsup/assets/esm_shims.js'() { - 'use strict' - } -}) -var require_speakingurl = __commonJS2({ - '../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js'( - exports, - module - ) { - 'use strict' - init_esm_shims2() - ;(function (root) { - 'use strict' - var charMap = { - // latin - À: 'A', - Á: 'A', - Â: 'A', - Ã: 'A', - Ä: 'Ae', - Å: 'A', - Æ: 'AE', - Ç: 'C', - È: 'E', - É: 'E', - Ê: 'E', - Ë: 'E', - Ì: 'I', - Í: 'I', - Î: 'I', - Ï: 'I', - Ð: 'D', - Ñ: 'N', - Ò: 'O', - Ó: 'O', - Ô: 'O', - Õ: 'O', - Ö: 'Oe', - Ő: 'O', - Ø: 'O', - Ù: 'U', - Ú: 'U', - Û: 'U', - Ü: 'Ue', - Ű: 'U', - Ý: 'Y', - Þ: 'TH', - ß: 'ss', - à: 'a', - á: 'a', - â: 'a', - ã: 'a', - ä: 'ae', - å: 'a', - æ: 'ae', - ç: 'c', - è: 'e', - é: 'e', - ê: 'e', - ë: 'e', - ì: 'i', - í: 'i', - î: 'i', - ï: 'i', - ð: 'd', - ñ: 'n', - ò: 'o', - ó: 'o', - ô: 'o', - õ: 'o', - ö: 'oe', - ő: 'o', - ø: 'o', - ù: 'u', - ú: 'u', - û: 'u', - ü: 'ue', - ű: 'u', - ý: 'y', - þ: 'th', - ÿ: 'y', - ẞ: 'SS', - // language specific - // Arabic - ا: 'a', - أ: 'a', - إ: 'i', - آ: 'aa', - ؤ: 'u', - ئ: 'e', - ء: 'a', - ب: 'b', - ت: 't', - ث: 'th', - ج: 'j', - ح: 'h', - خ: 'kh', - د: 'd', - ذ: 'th', - ر: 'r', - ز: 'z', - س: 's', - ش: 'sh', - ص: 's', - ض: 'dh', - ط: 't', - ظ: 'z', - ع: 'a', - غ: 'gh', - ف: 'f', - ق: 'q', - ك: 'k', - ل: 'l', - م: 'm', - ن: 'n', - ه: 'h', - و: 'w', - ي: 'y', - ى: 'a', - ة: 'h', - ﻻ: 'la', - ﻷ: 'laa', - ﻹ: 'lai', - ﻵ: 'laa', - // Persian additional characters than Arabic - گ: 'g', - چ: 'ch', - پ: 'p', - ژ: 'zh', - ک: 'k', - ی: 'y', - // Arabic diactrics - 'َ': 'a', - 'ً': 'an', - 'ِ': 'e', - 'ٍ': 'en', - 'ُ': 'u', - 'ٌ': 'on', - 'ْ': '', - // Arabic numbers - '٠': '0', - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - // Persian numbers - '۰': '0', - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - // Burmese consonants - က: 'k', - ခ: 'kh', - ဂ: 'g', - ဃ: 'ga', - င: 'ng', - စ: 's', - ဆ: 'sa', - ဇ: 'z', - စျ: 'za', - ည: 'ny', - ဋ: 't', - ဌ: 'ta', - ဍ: 'd', - ဎ: 'da', - ဏ: 'na', - တ: 't', - ထ: 'ta', - ဒ: 'd', - ဓ: 'da', - န: 'n', - ပ: 'p', - ဖ: 'pa', - ဗ: 'b', - ဘ: 'ba', - မ: 'm', - ယ: 'y', - ရ: 'ya', - လ: 'l', - ဝ: 'w', - သ: 'th', - ဟ: 'h', - ဠ: 'la', - အ: 'a', - // consonant character combos - 'ြ': 'y', - 'ျ': 'ya', - 'ွ': 'w', - 'ြွ': 'yw', - 'ျွ': 'ywa', - 'ှ': 'h', - // independent vowels - ဧ: 'e', - '၏': '-e', - ဣ: 'i', - ဤ: '-i', - ဉ: 'u', - ဦ: '-u', - ဩ: 'aw', - သြော: 'aw', - ဪ: 'aw', - // numbers - '၀': '0', - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - // virama and tone marks which are silent in transliteration - '္': '', - '့': '', - 'း': '', - // Czech - č: 'c', - ď: 'd', - ě: 'e', - ň: 'n', - ř: 'r', - š: 's', - ť: 't', - ů: 'u', - ž: 'z', - Č: 'C', - Ď: 'D', - Ě: 'E', - Ň: 'N', - Ř: 'R', - Š: 'S', - Ť: 'T', - Ů: 'U', - Ž: 'Z', - // Dhivehi - ހ: 'h', - ށ: 'sh', - ނ: 'n', - ރ: 'r', - ބ: 'b', - ޅ: 'lh', - ކ: 'k', - އ: 'a', - ވ: 'v', - މ: 'm', - ފ: 'f', - ދ: 'dh', - ތ: 'th', - ލ: 'l', - ގ: 'g', - ޏ: 'gn', - ސ: 's', - ޑ: 'd', - ޒ: 'z', - ޓ: 't', - ޔ: 'y', - ޕ: 'p', - ޖ: 'j', - ޗ: 'ch', - ޘ: 'tt', - ޙ: 'hh', - ޚ: 'kh', - ޛ: 'th', - ޜ: 'z', - ޝ: 'sh', - ޞ: 's', - ޟ: 'd', - ޠ: 't', - ޡ: 'z', - ޢ: 'a', - ޣ: 'gh', - ޤ: 'q', - ޥ: 'w', - 'ަ': 'a', - 'ާ': 'aa', - 'ި': 'i', - 'ީ': 'ee', - 'ު': 'u', - 'ޫ': 'oo', - 'ެ': 'e', - 'ޭ': 'ey', - 'ޮ': 'o', - 'ޯ': 'oa', - 'ް': '', - // Georgian https://en.wikipedia.org/wiki/Romanization_of_Georgian - // National system (2002) - ა: 'a', - ბ: 'b', - გ: 'g', - დ: 'd', - ე: 'e', - ვ: 'v', - ზ: 'z', - თ: 't', - ი: 'i', - კ: 'k', - ლ: 'l', - მ: 'm', - ნ: 'n', - ო: 'o', - პ: 'p', - ჟ: 'zh', - რ: 'r', - ს: 's', - ტ: 't', - უ: 'u', - ფ: 'p', - ქ: 'k', - ღ: 'gh', - ყ: 'q', - შ: 'sh', - ჩ: 'ch', - ც: 'ts', - ძ: 'dz', - წ: 'ts', - ჭ: 'ch', - ხ: 'kh', - ჯ: 'j', - ჰ: 'h', - // Greek - α: 'a', - β: 'v', - γ: 'g', - δ: 'd', - ε: 'e', - ζ: 'z', - η: 'i', - θ: 'th', - ι: 'i', - κ: 'k', - λ: 'l', - μ: 'm', - ν: 'n', - ξ: 'ks', - ο: 'o', - π: 'p', - ρ: 'r', - σ: 's', - τ: 't', - υ: 'y', - φ: 'f', - χ: 'x', - ψ: 'ps', - ω: 'o', - ά: 'a', - έ: 'e', - ί: 'i', - ό: 'o', - ύ: 'y', - ή: 'i', - ώ: 'o', - ς: 's', - ϊ: 'i', - ΰ: 'y', - ϋ: 'y', - ΐ: 'i', - Α: 'A', - Β: 'B', - Γ: 'G', - Δ: 'D', - Ε: 'E', - Ζ: 'Z', - Η: 'I', - Θ: 'TH', - Ι: 'I', - Κ: 'K', - Λ: 'L', - Μ: 'M', - Ν: 'N', - Ξ: 'KS', - Ο: 'O', - Π: 'P', - Ρ: 'R', - Σ: 'S', - Τ: 'T', - Υ: 'Y', - Φ: 'F', - Χ: 'X', - Ψ: 'PS', - Ω: 'O', - Ά: 'A', - Έ: 'E', - Ί: 'I', - Ό: 'O', - Ύ: 'Y', - Ή: 'I', - Ώ: 'O', - Ϊ: 'I', - Ϋ: 'Y', - // Latvian - ā: 'a', - // 'č': 'c', // duplicate - ē: 'e', - ģ: 'g', - ī: 'i', - ķ: 'k', - ļ: 'l', - ņ: 'n', - // 'š': 's', // duplicate - ū: 'u', - // 'ž': 'z', // duplicate - Ā: 'A', - // 'Č': 'C', // duplicate - Ē: 'E', - Ģ: 'G', - Ī: 'I', - Ķ: 'k', - Ļ: 'L', - Ņ: 'N', - // 'Š': 'S', // duplicate - Ū: 'U', - // 'Ž': 'Z', // duplicate - // Macedonian - Ќ: 'Kj', - ќ: 'kj', - Љ: 'Lj', - љ: 'lj', - Њ: 'Nj', - њ: 'nj', - Тс: 'Ts', - тс: 'ts', - // Polish - ą: 'a', - ć: 'c', - ę: 'e', - ł: 'l', - ń: 'n', - // 'ó': 'o', // duplicate - ś: 's', - ź: 'z', - ż: 'z', - Ą: 'A', - Ć: 'C', - Ę: 'E', - Ł: 'L', - Ń: 'N', - Ś: 'S', - Ź: 'Z', - Ż: 'Z', - // Ukranian - Є: 'Ye', - І: 'I', - Ї: 'Yi', - Ґ: 'G', - є: 'ye', - і: 'i', - ї: 'yi', - ґ: 'g', - // Romanian - ă: 'a', - Ă: 'A', - ș: 's', - Ș: 'S', - // 'ş': 's', // duplicate - // 'Ş': 'S', // duplicate - ț: 't', - Ț: 'T', - ţ: 't', - Ţ: 'T', - // Russian https://en.wikipedia.org/wiki/Romanization_of_Russian - // ICAO - а: 'a', - б: 'b', - в: 'v', - г: 'g', - д: 'd', - е: 'e', - ё: 'yo', - ж: 'zh', - з: 'z', - и: 'i', - й: 'i', - к: 'k', - л: 'l', - м: 'm', - н: 'n', - о: 'o', - п: 'p', - р: 'r', - с: 's', - т: 't', - у: 'u', - ф: 'f', - х: 'kh', - ц: 'c', - ч: 'ch', - ш: 'sh', - щ: 'sh', - ъ: '', - ы: 'y', - ь: '', - э: 'e', - ю: 'yu', - я: 'ya', - А: 'A', - Б: 'B', - В: 'V', - Г: 'G', - Д: 'D', - Е: 'E', - Ё: 'Yo', - Ж: 'Zh', - З: 'Z', - И: 'I', - Й: 'I', - К: 'K', - Л: 'L', - М: 'M', - Н: 'N', - О: 'O', - П: 'P', - Р: 'R', - С: 'S', - Т: 'T', - У: 'U', - Ф: 'F', - Х: 'Kh', - Ц: 'C', - Ч: 'Ch', - Ш: 'Sh', - Щ: 'Sh', - Ъ: '', - Ы: 'Y', - Ь: '', - Э: 'E', - Ю: 'Yu', - Я: 'Ya', - // Serbian - ђ: 'dj', - ј: 'j', - // 'љ': 'lj', // duplicate - // 'њ': 'nj', // duplicate - ћ: 'c', - џ: 'dz', - Ђ: 'Dj', - Ј: 'j', - // 'Љ': 'Lj', // duplicate - // 'Њ': 'Nj', // duplicate - Ћ: 'C', - Џ: 'Dz', - // Slovak - ľ: 'l', - ĺ: 'l', - ŕ: 'r', - Ľ: 'L', - Ĺ: 'L', - Ŕ: 'R', - // Turkish - ş: 's', - Ş: 'S', - ı: 'i', - İ: 'I', - // 'ç': 'c', // duplicate - // 'Ç': 'C', // duplicate - // 'ü': 'u', // duplicate, see langCharMap - // 'Ü': 'U', // duplicate, see langCharMap - // 'ö': 'o', // duplicate, see langCharMap - // 'Ö': 'O', // duplicate, see langCharMap - ğ: 'g', - Ğ: 'G', - // Vietnamese - ả: 'a', - Ả: 'A', - ẳ: 'a', - Ẳ: 'A', - ẩ: 'a', - Ẩ: 'A', - đ: 'd', - Đ: 'D', - ẹ: 'e', - Ẹ: 'E', - ẽ: 'e', - Ẽ: 'E', - ẻ: 'e', - Ẻ: 'E', - ế: 'e', - Ế: 'E', - ề: 'e', - Ề: 'E', - ệ: 'e', - Ệ: 'E', - ễ: 'e', - Ễ: 'E', - ể: 'e', - Ể: 'E', - ỏ: 'o', - ọ: 'o', - Ọ: 'o', - ố: 'o', - Ố: 'O', - ồ: 'o', - Ồ: 'O', - ổ: 'o', - Ổ: 'O', - ộ: 'o', - Ộ: 'O', - ỗ: 'o', - Ỗ: 'O', - ơ: 'o', - Ơ: 'O', - ớ: 'o', - Ớ: 'O', - ờ: 'o', - Ờ: 'O', - ợ: 'o', - Ợ: 'O', - ỡ: 'o', - Ỡ: 'O', - Ở: 'o', - ở: 'o', - ị: 'i', - Ị: 'I', - ĩ: 'i', - Ĩ: 'I', - ỉ: 'i', - Ỉ: 'i', - ủ: 'u', - Ủ: 'U', - ụ: 'u', - Ụ: 'U', - ũ: 'u', - Ũ: 'U', - ư: 'u', - Ư: 'U', - ứ: 'u', - Ứ: 'U', - ừ: 'u', - Ừ: 'U', - ự: 'u', - Ự: 'U', - ữ: 'u', - Ữ: 'U', - ử: 'u', - Ử: 'ư', - ỷ: 'y', - Ỷ: 'y', - ỳ: 'y', - Ỳ: 'Y', - ỵ: 'y', - Ỵ: 'Y', - ỹ: 'y', - Ỹ: 'Y', - ạ: 'a', - Ạ: 'A', - ấ: 'a', - Ấ: 'A', - ầ: 'a', - Ầ: 'A', - ậ: 'a', - Ậ: 'A', - ẫ: 'a', - Ẫ: 'A', - // 'ă': 'a', // duplicate - // 'Ă': 'A', // duplicate - ắ: 'a', - Ắ: 'A', - ằ: 'a', - Ằ: 'A', - ặ: 'a', - Ặ: 'A', - ẵ: 'a', - Ẵ: 'A', - '⓪': '0', - '①': '1', - '②': '2', - '③': '3', - '④': '4', - '⑤': '5', - '⑥': '6', - '⑦': '7', - '⑧': '8', - '⑨': '9', - '⑩': '10', - '⑪': '11', - '⑫': '12', - '⑬': '13', - '⑭': '14', - '⑮': '15', - '⑯': '16', - '⑰': '17', - '⑱': '18', - '⑲': '18', - '⑳': '18', - '⓵': '1', - '⓶': '2', - '⓷': '3', - '⓸': '4', - '⓹': '5', - '⓺': '6', - '⓻': '7', - '⓼': '8', - '⓽': '9', - '⓾': '10', - '⓿': '0', - '⓫': '11', - '⓬': '12', - '⓭': '13', - '⓮': '14', - '⓯': '15', - '⓰': '16', - '⓱': '17', - '⓲': '18', - '⓳': '19', - '⓴': '20', - 'Ⓐ': 'A', - 'Ⓑ': 'B', - 'Ⓒ': 'C', - 'Ⓓ': 'D', - 'Ⓔ': 'E', - 'Ⓕ': 'F', - 'Ⓖ': 'G', - 'Ⓗ': 'H', - 'Ⓘ': 'I', - 'Ⓙ': 'J', - 'Ⓚ': 'K', - 'Ⓛ': 'L', - 'Ⓜ': 'M', - 'Ⓝ': 'N', - 'Ⓞ': 'O', - 'Ⓟ': 'P', - 'Ⓠ': 'Q', - 'Ⓡ': 'R', - 'Ⓢ': 'S', - 'Ⓣ': 'T', - 'Ⓤ': 'U', - 'Ⓥ': 'V', - 'Ⓦ': 'W', - 'Ⓧ': 'X', - 'Ⓨ': 'Y', - 'Ⓩ': 'Z', - 'ⓐ': 'a', - 'ⓑ': 'b', - 'ⓒ': 'c', - 'ⓓ': 'd', - 'ⓔ': 'e', - 'ⓕ': 'f', - 'ⓖ': 'g', - 'ⓗ': 'h', - 'ⓘ': 'i', - 'ⓙ': 'j', - 'ⓚ': 'k', - 'ⓛ': 'l', - 'ⓜ': 'm', - 'ⓝ': 'n', - 'ⓞ': 'o', - 'ⓟ': 'p', - 'ⓠ': 'q', - 'ⓡ': 'r', - 'ⓢ': 's', - 'ⓣ': 't', - 'ⓤ': 'u', - 'ⓦ': 'v', - 'ⓥ': 'w', - 'ⓧ': 'x', - 'ⓨ': 'y', - 'ⓩ': 'z', - // symbols - '“': '"', - '”': '"', - '‘': "'", - '’': "'", - '∂': 'd', - ƒ: 'f', - '™': '(TM)', - '©': '(C)', - œ: 'oe', - Œ: 'OE', - '®': '(R)', - '†': '+', - '℠': '(SM)', - '…': '...', - '˚': 'o', - º: 'o', - ª: 'a', - '•': '*', - '၊': ',', - '။': '.', - // currency - $: 'USD', - '€': 'EUR', - '₢': 'BRN', - '₣': 'FRF', - '£': 'GBP', - '₤': 'ITL', - '₦': 'NGN', - '₧': 'ESP', - '₩': 'KRW', - '₪': 'ILS', - '₫': 'VND', - '₭': 'LAK', - '₮': 'MNT', - '₯': 'GRD', - '₱': 'ARS', - '₲': 'PYG', - '₳': 'ARA', - '₴': 'UAH', - '₵': 'GHS', - '¢': 'cent', - '¥': 'CNY', - 元: 'CNY', - 円: 'YEN', - '﷼': 'IRR', - '₠': 'EWE', - '฿': 'THB', - '₨': 'INR', - '₹': 'INR', - '₰': 'PF', - '₺': 'TRY', - '؋': 'AFN', - '₼': 'AZN', - лв: 'BGN', - '៛': 'KHR', - '₡': 'CRC', - '₸': 'KZT', - ден: 'MKD', - zł: 'PLN', - '₽': 'RUB', - '₾': 'GEL' - } - var lookAheadCharArray = [ - // burmese - '်', - // Dhivehi - 'ް' - ] - var diatricMap = { - // Burmese - // dependent vowels - 'ာ': 'a', - 'ါ': 'a', - 'ေ': 'e', - 'ဲ': 'e', - 'ိ': 'i', - 'ီ': 'i', - 'ို': 'o', - 'ု': 'u', - 'ူ': 'u', - 'ေါင်': 'aung', - 'ော': 'aw', - 'ော်': 'aw', - 'ေါ': 'aw', - 'ေါ်': 'aw', - '်': '်', - // this is special case but the character will be converted to latin in the code - က်: 'et', - 'ိုက်': 'aik', - 'ောက်': 'auk', - င်: 'in', - 'ိုင်': 'aing', - 'ောင်': 'aung', - စ်: 'it', - ည်: 'i', - တ်: 'at', - 'ိတ်': 'eik', - 'ုတ်': 'ok', - 'ွတ်': 'ut', - 'ေတ်': 'it', - ဒ်: 'd', - 'ိုဒ်': 'ok', - 'ုဒ်': 'ait', - န်: 'an', - 'ာန်': 'an', - 'ိန်': 'ein', - 'ုန်': 'on', - 'ွန်': 'un', - ပ်: 'at', - 'ိပ်': 'eik', - 'ုပ်': 'ok', - 'ွပ်': 'ut', - န်ုပ်: 'nub', - မ်: 'an', - 'ိမ်': 'ein', - 'ုမ်': 'on', - 'ွမ်': 'un', - ယ်: 'e', - 'ိုလ်': 'ol', - ဉ်: 'in', - 'ံ': 'an', - 'ိံ': 'ein', - 'ုံ': 'on', - // Dhivehi - 'ައް': 'ah', - 'ަށް': 'ah' - } - var langCharMap = { - en: {}, - // default language - az: { - // Azerbaijani - ç: 'c', - ə: 'e', - ğ: 'g', - ı: 'i', - ö: 'o', - ş: 's', - ü: 'u', - Ç: 'C', - Ə: 'E', - Ğ: 'G', - İ: 'I', - Ö: 'O', - Ş: 'S', - Ü: 'U' - }, - cs: { - // Czech - č: 'c', - ď: 'd', - ě: 'e', - ň: 'n', - ř: 'r', - š: 's', - ť: 't', - ů: 'u', - ž: 'z', - Č: 'C', - Ď: 'D', - Ě: 'E', - Ň: 'N', - Ř: 'R', - Š: 'S', - Ť: 'T', - Ů: 'U', - Ž: 'Z' - }, - fi: { - // Finnish - // 'å': 'a', duplicate see charMap/latin - // 'Å': 'A', duplicate see charMap/latin - ä: 'a', - // ok - Ä: 'A', - // ok - ö: 'o', - // ok - Ö: 'O' - // ok - }, - hu: { - // Hungarian - ä: 'a', - // ok - Ä: 'A', - // ok - // 'á': 'a', duplicate see charMap/latin - // 'Á': 'A', duplicate see charMap/latin - ö: 'o', - // ok - Ö: 'O', - // ok - // 'ő': 'o', duplicate see charMap/latin - // 'Ő': 'O', duplicate see charMap/latin - ü: 'u', - Ü: 'U', - ű: 'u', - Ű: 'U' - }, - lt: { - // Lithuanian - ą: 'a', - č: 'c', - ę: 'e', - ė: 'e', - į: 'i', - š: 's', - ų: 'u', - ū: 'u', - ž: 'z', - Ą: 'A', - Č: 'C', - Ę: 'E', - Ė: 'E', - Į: 'I', - Š: 'S', - Ų: 'U', - Ū: 'U' - }, - lv: { - // Latvian - ā: 'a', - č: 'c', - ē: 'e', - ģ: 'g', - ī: 'i', - ķ: 'k', - ļ: 'l', - ņ: 'n', - š: 's', - ū: 'u', - ž: 'z', - Ā: 'A', - Č: 'C', - Ē: 'E', - Ģ: 'G', - Ī: 'i', - Ķ: 'k', - Ļ: 'L', - Ņ: 'N', - Š: 'S', - Ū: 'u', - Ž: 'Z' - }, - pl: { - // Polish - ą: 'a', - ć: 'c', - ę: 'e', - ł: 'l', - ń: 'n', - ó: 'o', - ś: 's', - ź: 'z', - ż: 'z', - Ą: 'A', - Ć: 'C', - Ę: 'e', - Ł: 'L', - Ń: 'N', - Ó: 'O', - Ś: 'S', - Ź: 'Z', - Ż: 'Z' - }, - sv: { - // Swedish - // 'å': 'a', duplicate see charMap/latin - // 'Å': 'A', duplicate see charMap/latin - ä: 'a', - // ok - Ä: 'A', - // ok - ö: 'o', - // ok - Ö: 'O' - // ok - }, - sk: { - // Slovak - ä: 'a', - Ä: 'A' - }, - sr: { - // Serbian - љ: 'lj', - њ: 'nj', - Љ: 'Lj', - Њ: 'Nj', - đ: 'dj', - Đ: 'Dj' - }, - tr: { - // Turkish - Ü: 'U', - Ö: 'O', - ü: 'u', - ö: 'o' - } - } - var symbolMap = { - ar: { - '∆': 'delta', - '∞': 'la-nihaya', - '♥': 'hob', - '&': 'wa', - '|': 'aw', - '<': 'aqal-men', - '>': 'akbar-men', - '∑': 'majmou', - '¤': 'omla' - }, - az: {}, - ca: { - '∆': 'delta', - '∞': 'infinit', - '♥': 'amor', - '&': 'i', - '|': 'o', - '<': 'menys que', - '>': 'mes que', - '∑': 'suma dels', - '¤': 'moneda' - }, - cs: { - '∆': 'delta', - '∞': 'nekonecno', - '♥': 'laska', - '&': 'a', - '|': 'nebo', - '<': 'mensi nez', - '>': 'vetsi nez', - '∑': 'soucet', - '¤': 'mena' - }, - de: { - '∆': 'delta', - '∞': 'unendlich', - '♥': 'Liebe', - '&': 'und', - '|': 'oder', - '<': 'kleiner als', - '>': 'groesser als', - '∑': 'Summe von', - '¤': 'Waehrung' - }, - dv: { - '∆': 'delta', - '∞': 'kolunulaa', - '♥': 'loabi', - '&': 'aai', - '|': 'noonee', - '<': 'ah vure kuda', - '>': 'ah vure bodu', - '∑': 'jumula', - '¤': 'faisaa' - }, - en: { - '∆': 'delta', - '∞': 'infinity', - '♥': 'love', - '&': 'and', - '|': 'or', - '<': 'less than', - '>': 'greater than', - '∑': 'sum', - '¤': 'currency' - }, - es: { - '∆': 'delta', - '∞': 'infinito', - '♥': 'amor', - '&': 'y', - '|': 'u', - '<': 'menos que', - '>': 'mas que', - '∑': 'suma de los', - '¤': 'moneda' - }, - fa: { - '∆': 'delta', - '∞': 'bi-nahayat', - '♥': 'eshgh', - '&': 'va', - '|': 'ya', - '<': 'kamtar-az', - '>': 'bishtar-az', - '∑': 'majmooe', - '¤': 'vahed' - }, - fi: { - '∆': 'delta', - '∞': 'aarettomyys', - '♥': 'rakkaus', - '&': 'ja', - '|': 'tai', - '<': 'pienempi kuin', - '>': 'suurempi kuin', - '∑': 'summa', - '¤': 'valuutta' - }, - fr: { - '∆': 'delta', - '∞': 'infiniment', - '♥': 'Amour', - '&': 'et', - '|': 'ou', - '<': 'moins que', - '>': 'superieure a', - '∑': 'somme des', - '¤': 'monnaie' - }, - ge: { - '∆': 'delta', - '∞': 'usasruloba', - '♥': 'siqvaruli', - '&': 'da', - '|': 'an', - '<': 'naklebi', - '>': 'meti', - '∑': 'jami', - '¤': 'valuta' - }, - gr: {}, - hu: { - '∆': 'delta', - '∞': 'vegtelen', - '♥': 'szerelem', - '&': 'es', - '|': 'vagy', - '<': 'kisebb mint', - '>': 'nagyobb mint', - '∑': 'szumma', - '¤': 'penznem' - }, - it: { - '∆': 'delta', - '∞': 'infinito', - '♥': 'amore', - '&': 'e', - '|': 'o', - '<': 'minore di', - '>': 'maggiore di', - '∑': 'somma', - '¤': 'moneta' - }, - lt: { - '∆': 'delta', - '∞': 'begalybe', - '♥': 'meile', - '&': 'ir', - '|': 'ar', - '<': 'maziau nei', - '>': 'daugiau nei', - '∑': 'suma', - '¤': 'valiuta' - }, - lv: { - '∆': 'delta', - '∞': 'bezgaliba', - '♥': 'milestiba', - '&': 'un', - '|': 'vai', - '<': 'mazak neka', - '>': 'lielaks neka', - '∑': 'summa', - '¤': 'valuta' - }, - my: { - '∆': 'kwahkhyaet', - '∞': 'asaonasme', - '♥': 'akhyait', - '&': 'nhin', - '|': 'tho', - '<': 'ngethaw', - '>': 'kyithaw', - '∑': 'paungld', - '¤': 'ngwekye' - }, - mk: {}, - nl: { - '∆': 'delta', - '∞': 'oneindig', - '♥': 'liefde', - '&': 'en', - '|': 'of', - '<': 'kleiner dan', - '>': 'groter dan', - '∑': 'som', - '¤': 'valuta' - }, - pl: { - '∆': 'delta', - '∞': 'nieskonczonosc', - '♥': 'milosc', - '&': 'i', - '|': 'lub', - '<': 'mniejsze niz', - '>': 'wieksze niz', - '∑': 'suma', - '¤': 'waluta' - }, - pt: { - '∆': 'delta', - '∞': 'infinito', - '♥': 'amor', - '&': 'e', - '|': 'ou', - '<': 'menor que', - '>': 'maior que', - '∑': 'soma', - '¤': 'moeda' - }, - ro: { - '∆': 'delta', - '∞': 'infinit', - '♥': 'dragoste', - '&': 'si', - '|': 'sau', - '<': 'mai mic ca', - '>': 'mai mare ca', - '∑': 'suma', - '¤': 'valuta' - }, - ru: { - '∆': 'delta', - '∞': 'beskonechno', - '♥': 'lubov', - '&': 'i', - '|': 'ili', - '<': 'menshe', - '>': 'bolshe', - '∑': 'summa', - '¤': 'valjuta' - }, - sk: { - '∆': 'delta', - '∞': 'nekonecno', - '♥': 'laska', - '&': 'a', - '|': 'alebo', - '<': 'menej ako', - '>': 'viac ako', - '∑': 'sucet', - '¤': 'mena' - }, - sr: {}, - tr: { - '∆': 'delta', - '∞': 'sonsuzluk', - '♥': 'ask', - '&': 've', - '|': 'veya', - '<': 'kucuktur', - '>': 'buyuktur', - '∑': 'toplam', - '¤': 'para birimi' - }, - uk: { - '∆': 'delta', - '∞': 'bezkinechnist', - '♥': 'lubov', - '&': 'i', - '|': 'abo', - '<': 'menshe', - '>': 'bilshe', - '∑': 'suma', - '¤': 'valjuta' - }, - vn: { - '∆': 'delta', - '∞': 'vo cuc', - '♥': 'yeu', - '&': 'va', - '|': 'hoac', - '<': 'nho hon', - '>': 'lon hon', - '∑': 'tong', - '¤': 'tien te' - } - } - var uricChars = [';', '?', ':', '@', '&', '=', '+', '$', ',', '/'].join( - '' - ) - var uricNoSlashChars = [';', '?', ':', '@', '&', '=', '+', '$', ','].join( - '' - ) - var markChars = ['.', '!', '~', '*', "'", '(', ')'].join('') - var getSlug = function getSlug2(input, opts) { - var separator = '-' - var result = '' - var diatricString = '' - var convertSymbols = true - var customReplacements = {} - var maintainCase - var titleCase - var truncate - var uricFlag - var uricNoSlashFlag - var markFlag - var symbol - var langChar - var lucky - var i - var ch - var l - var lastCharWasSymbol - var lastCharWasDiatric - var allowedChars = '' - if (typeof input !== 'string') { - return '' - } - if (typeof opts === 'string') { - separator = opts - } - symbol = symbolMap.en - langChar = langCharMap.en - if (typeof opts === 'object') { - maintainCase = opts.maintainCase || false - customReplacements = - opts.custom && typeof opts.custom === 'object' - ? opts.custom - : customReplacements - truncate = (+opts.truncate > 1 && opts.truncate) || false - uricFlag = opts.uric || false - uricNoSlashFlag = opts.uricNoSlash || false - markFlag = opts.mark || false - convertSymbols = - opts.symbols === false || opts.lang === false ? false : true - separator = opts.separator || separator - if (uricFlag) { - allowedChars += uricChars - } - if (uricNoSlashFlag) { - allowedChars += uricNoSlashChars - } - if (markFlag) { - allowedChars += markChars - } - symbol = - opts.lang && symbolMap[opts.lang] && convertSymbols - ? symbolMap[opts.lang] - : convertSymbols - ? symbolMap.en - : {} - langChar = - opts.lang && langCharMap[opts.lang] - ? langCharMap[opts.lang] - : opts.lang === false || opts.lang === true - ? {} - : langCharMap.en - if ( - opts.titleCase && - typeof opts.titleCase.length === 'number' && - Array.prototype.toString.call(opts.titleCase) - ) { - opts.titleCase.forEach(function (v) { - customReplacements[v + ''] = v + '' - }) - titleCase = true - } else { - titleCase = !!opts.titleCase - } - if ( - opts.custom && - typeof opts.custom.length === 'number' && - Array.prototype.toString.call(opts.custom) - ) { - opts.custom.forEach(function (v) { - customReplacements[v + ''] = v + '' - }) - } - Object.keys(customReplacements).forEach(function (v) { - var r - if (v.length > 1) { - r = new RegExp('\\b' + escapeChars(v) + '\\b', 'gi') - } else { - r = new RegExp(escapeChars(v), 'gi') - } - input = input.replace(r, customReplacements[v]) - }) - for (ch in customReplacements) { - allowedChars += ch - } - } - allowedChars += separator - allowedChars = escapeChars(allowedChars) - input = input.replace(/(^\s+|\s+$)/g, '') - lastCharWasSymbol = false - lastCharWasDiatric = false - for (i = 0, l = input.length; i < l; i++) { - ch = input[i] - if (isReplacedCustomChar(ch, customReplacements)) { - lastCharWasSymbol = false - } else if (langChar[ch]) { - ch = - lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) - ? ' ' + langChar[ch] - : langChar[ch] - lastCharWasSymbol = false - } else if (ch in charMap) { - if (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) { - diatricString += ch - ch = '' - } else if (lastCharWasDiatric === true) { - ch = diatricMap[diatricString] + charMap[ch] - diatricString = '' - } else { - ch = - lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) - ? ' ' + charMap[ch] - : charMap[ch] - } - lastCharWasSymbol = false - lastCharWasDiatric = false - } else if (ch in diatricMap) { - diatricString += ch - ch = '' - if (i === l - 1) { - ch = diatricMap[diatricString] - } - lastCharWasDiatric = true - } else if ( - // process symbol chars - symbol[ch] && - !(uricFlag && uricChars.indexOf(ch) !== -1) && - !(uricNoSlashFlag && uricNoSlashChars.indexOf(ch) !== -1) - ) { - ch = - lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) - ? separator + symbol[ch] - : symbol[ch] - ch += - input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) - ? separator - : '' - lastCharWasSymbol = true - } else { - if (lastCharWasDiatric === true) { - ch = diatricMap[diatricString] + ch - diatricString = '' - lastCharWasDiatric = false - } else if ( - lastCharWasSymbol && - (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/)) - ) { - ch = ' ' + ch - } - lastCharWasSymbol = false - } - result += ch.replace( - new RegExp('[^\\w\\s' + allowedChars + '_-]', 'g'), - separator - ) - } - if (titleCase) { - result = result.replace(/(\w)(\S*)/g, function (_, i2, r) { - var j = i2.toUpperCase() + (r !== null ? r : '') - return Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0 - ? j - : j.toLowerCase() - }) - } - result = result - .replace(/\s+/g, separator) - .replace(new RegExp('\\' + separator + '+', 'g'), separator) - .replace( - new RegExp('(^\\' + separator + '+|\\' + separator + '+$)', 'g'), - '' - ) - if (truncate && result.length > truncate) { - lucky = result.charAt(truncate) === separator - result = result.slice(0, truncate) - if (!lucky) { - result = result.slice(0, result.lastIndexOf(separator)) - } - } - if (!maintainCase && !titleCase) { - result = result.toLowerCase() - } - return result - } - var createSlug = function createSlug2(opts) { - return function getSlugWithConfig(input) { - return getSlug(input, opts) - } - } - var escapeChars = function escapeChars2(input) { - return input.replace(/[-\\^$*+?.()|[\]{}\/]/g, '\\$&') - } - var isReplacedCustomChar = function (ch, customReplacements) { - for (var c in customReplacements) { - if (customReplacements[c] === ch) { - return true - } - } - } - if (typeof module !== 'undefined' && module.exports) { - module.exports = getSlug - module.exports.createSlug = createSlug - } else if (typeof define !== 'undefined' && define.amd) { - define([], function () { - return getSlug - }) - } else { - try { - if (root.getSlug || root.createSlug) { - throw 'speakingurl: globals exists /(getSlug|createSlug)/' - } else { - root.getSlug = getSlug - root.createSlug = createSlug - } - } catch (e) {} - } - })(exports) - } -}) -var require_speakingurl2 = __commonJS2({ - '../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js'( - exports, - module - ) { - 'use strict' - init_esm_shims2() - module.exports = require_speakingurl() - } -}) -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -function isReadonly(value) { - return !!( - value && - value[ - '__v_isReadonly' - /* IS_READONLY */ - ] - ) -} -function isReactive(value) { - if (isReadonly(value)) { - return isReactive( - value[ - '__v_raw' - /* RAW */ - ] - ) - } - return !!( - value && - value[ - '__v_isReactive' - /* IS_REACTIVE */ - ] - ) -} -function isRef(r) { - return !!(r && r.__v_isRef === true) -} -function toRaw(observed) { - const raw = - observed && - observed[ - '__v_raw' - /* RAW */ - ] - return raw ? toRaw(raw) : observed -} -var Fragment = Symbol.for('v-fgt') -init_esm_shims2() -function getComponentTypeName(options) { - var _a25 - const name = - options.name || - options._componentTag || - options.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ || - options.__name - if ( - name === 'index' && - ((_a25 = options.__file) == null ? void 0 : _a25.endsWith('index.vue')) - ) { - return '' - } - return name -} -function getComponentFileName(options) { - const file = options.__file - if (file) return classify(basename(file, '.vue')) -} -function saveComponentGussedName(instance, name) { - instance.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ = name - return name -} -function getAppRecord(instance) { - if (instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__) - return instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__ - else if (instance.root) - return instance.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__ -} -async function getComponentId(options) { - const { app, uid, instance } = options - try { - if (instance.__VUE_DEVTOOLS_NEXT_UID__) - return instance.__VUE_DEVTOOLS_NEXT_UID__ - const appRecord = await getAppRecord(app) - if (!appRecord) return null - const isRoot = appRecord.rootInstance === instance - return `${appRecord.id}:${isRoot ? 'root' : uid}` - } catch (e) {} -} -function isFragment(instance) { - var _a25, _b25 - const subTreeType = (_a25 = instance.subTree) == null ? void 0 : _a25.type - const appRecord = getAppRecord(instance) - if (appRecord) { - return ( - ((_b25 = appRecord == null ? void 0 : appRecord.types) == null - ? void 0 - : _b25.Fragment) === subTreeType - ) - } - return false -} -function getInstanceName(instance) { - var _a25, _b25, _c - const name = getComponentTypeName( - (instance == null ? void 0 : instance.type) || {} - ) - if (name) return name - if ((instance == null ? void 0 : instance.root) === instance) return 'Root' - for (const key in (_b25 = - (_a25 = instance.parent) == null ? void 0 : _a25.type) == null - ? void 0 - : _b25.components) { - if ( - instance.parent.type.components[key] === - (instance == null ? void 0 : instance.type) - ) - return saveComponentGussedName(instance, key) - } - for (const key in (_c = instance.appContext) == null - ? void 0 - : _c.components) { - if ( - instance.appContext.components[key] === - (instance == null ? void 0 : instance.type) - ) - return saveComponentGussedName(instance, key) - } - const fileName = getComponentFileName( - (instance == null ? void 0 : instance.type) || {} - ) - if (fileName) return fileName - return 'Anonymous Component' -} -function getComponentInstance(appRecord, instanceId) { - instanceId = instanceId || `${appRecord.id}:root` - const instance = appRecord.instanceMap.get(instanceId) - return instance || appRecord.instanceMap.get(':root') -} -var StateEditor = class { - constructor() { - this.refEditor = new RefStateEditor() - } - set(object, path, value, cb) { - const sections = Array.isArray(path) ? path : path.split('.') - const markRef = false - while (sections.length > 1) { - const section = sections.shift() - if (object instanceof Map) object = object.get(section) - if (object instanceof Set) object = Array.from(object.values())[section] - else object = object[section] - if (this.refEditor.isRef(object)) object = this.refEditor.get(object) - } - const field = sections[0] - const item = this.refEditor.get(object)[field] - if (cb) { - cb(object, field, value) - } else { - if (this.refEditor.isRef(item)) this.refEditor.set(item, value) - else if (markRef) object[field] = value - else object[field] = value - } - } - get(object, path) { - const sections = Array.isArray(path) ? path : path.split('.') - for (let i = 0; i < sections.length; i++) { - if (object instanceof Map) object = object.get(sections[i]) - else object = object[sections[i]] - if (this.refEditor.isRef(object)) object = this.refEditor.get(object) - if (!object) return void 0 - } - return object - } - has(object, path, parent = false) { - if (typeof object === 'undefined') return false - const sections = Array.isArray(path) ? path.slice() : path.split('.') - const size = !parent ? 1 : 2 - while (object && sections.length > size) { - const section = sections.shift() - object = object[section] - if (this.refEditor.isRef(object)) object = this.refEditor.get(object) - } - return ( - object != null && - Object.prototype.hasOwnProperty.call(object, sections[0]) - ) - } - createDefaultSetCallback(state) { - return (object, field, value) => { - if (state.remove || state.newKey) { - if (Array.isArray(object)) object.splice(field, 1) - else if (toRaw(object) instanceof Map) object.delete(field) - else if (toRaw(object) instanceof Set) - object.delete(Array.from(object.values())[field]) - else Reflect.deleteProperty(object, field) - } - if (!state.remove) { - const target22 = object[state.newKey || field] - if (this.refEditor.isRef(target22)) this.refEditor.set(target22, value) - else if (toRaw(object) instanceof Map) - object.set(state.newKey || field, value) - else if (toRaw(object) instanceof Set) object.add(value) - else object[state.newKey || field] = value - } - } - } -} -var RefStateEditor = class { - set(ref, value) { - if (isRef(ref)) { - ref.value = value - } else { - if (ref instanceof Set && Array.isArray(value)) { - ref.clear() - value.forEach(v => ref.add(v)) - return - } - const currentKeys = Object.keys(value) - if (ref instanceof Map) { - const previousKeysSet2 = new Set(ref.keys()) - currentKeys.forEach(key => { - ref.set(key, Reflect.get(value, key)) - previousKeysSet2.delete(key) - }) - previousKeysSet2.forEach(key => ref.delete(key)) - return - } - const previousKeysSet = new Set(Object.keys(ref)) - currentKeys.forEach(key => { - Reflect.set(ref, key, Reflect.get(value, key)) - previousKeysSet.delete(key) - }) - previousKeysSet.forEach(key => Reflect.deleteProperty(ref, key)) - } - } - get(ref) { - return isRef(ref) ? ref.value : ref - } - isRef(ref) { - return isRef(ref) || isReactive(ref) - } -} -var stateEditor = new StateEditor() -init_esm_shims2() -function getRootElementsFromComponentInstance(instance) { - if (isFragment(instance)) return getFragmentRootElements(instance.subTree) - if (!instance.subTree) return [] - return [instance.subTree.el] -} -function getFragmentRootElements(vnode) { - if (!vnode.children) return [] - const list = [] - vnode.children.forEach(childVnode => { - if (childVnode.component) - list.push(...getRootElementsFromComponentInstance(childVnode.component)) - else if (childVnode == null ? void 0 : childVnode.el) - list.push(childVnode.el) - }) - return list -} -init_esm_shims2() -init_esm_shims2() -function createRect() { - const rect = { - top: 0, - bottom: 0, - left: 0, - right: 0, - get width() { - return rect.right - rect.left - }, - get height() { - return rect.bottom - rect.top - } - } - return rect -} -var range -function getTextRect(node) { - if (!range) range = document.createRange() - range.selectNode(node) - return range.getBoundingClientRect() -} -function getFragmentRect(vnode) { - const rect = createRect() - if (!vnode.children) return rect - for (let i = 0, l = vnode.children.length; i < l; i++) { - const childVnode = vnode.children[i] - let childRect - if (childVnode.component) { - childRect = getComponentBoundingRect(childVnode.component) - } else if (childVnode.el) { - const el = childVnode.el - if (el.nodeType === 1 || el.getBoundingClientRect) - childRect = el.getBoundingClientRect() - else if (el.nodeType === 3 && el.data.trim()) childRect = getTextRect(el) - } - if (childRect) mergeRects(rect, childRect) - } - return rect -} -function mergeRects(a, b) { - if (!a.top || b.top < a.top) a.top = b.top - if (!a.bottom || b.bottom > a.bottom) a.bottom = b.bottom - if (!a.left || b.left < a.left) a.left = b.left - if (!a.right || b.right > a.right) a.right = b.right - return a -} -var DEFAULT_RECT = { - top: 0, - left: 0, - right: 0, - bottom: 0, - width: 0, - height: 0 -} -function getComponentBoundingRect(instance) { - const el = instance.subTree.el - if (typeof window === 'undefined') { - return DEFAULT_RECT - } - if (isFragment(instance)) return getFragmentRect(instance.subTree) - else if ((el == null ? void 0 : el.nodeType) === 1) - return el == null ? void 0 : el.getBoundingClientRect() - else if (instance.subTree.component) - return getComponentBoundingRect(instance.subTree.component) - else return DEFAULT_RECT -} -var CONTAINER_ELEMENT_ID = '__vue-devtools-component-inspector__' -var CARD_ELEMENT_ID = '__vue-devtools-component-inspector__card__' -var COMPONENT_NAME_ELEMENT_ID = '__vue-devtools-component-inspector__name__' -var INDICATOR_ELEMENT_ID = '__vue-devtools-component-inspector__indicator__' -var containerStyles = { - display: 'block', - zIndex: 2147483640, - position: 'fixed', - backgroundColor: '#42b88325', - border: '1px solid #42b88350', - borderRadius: '5px', - transition: 'all 0.1s ease-in', - pointerEvents: 'none' -} -var cardStyles = { - fontFamily: 'Arial, Helvetica, sans-serif', - padding: '5px 8px', - borderRadius: '4px', - textAlign: 'left', - position: 'absolute', - left: 0, - color: '#e9e9e9', - fontSize: '14px', - fontWeight: 600, - lineHeight: '24px', - backgroundColor: '#42b883', - boxShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)' -} -var indicatorStyles = { - display: 'inline-block', - fontWeight: 400, - fontStyle: 'normal', - fontSize: '12px', - opacity: 0.7 -} -function getContainerElement() { - return document.getElementById(CONTAINER_ELEMENT_ID) -} -function getCardElement() { - return document.getElementById(CARD_ELEMENT_ID) -} -function getIndicatorElement() { - return document.getElementById(INDICATOR_ELEMENT_ID) -} -function getNameElement() { - return document.getElementById(COMPONENT_NAME_ELEMENT_ID) -} -function getStyles(bounds) { - return { - left: `${Math.round(bounds.left * 100) / 100}px`, - top: `${Math.round(bounds.top * 100) / 100}px`, - width: `${Math.round(bounds.width * 100) / 100}px`, - height: `${Math.round(bounds.height * 100) / 100}px` - } -} -function create(options) { - var _a25 - const containerEl = document.createElement('div') - containerEl.id = - (_a25 = options.elementId) != null ? _a25 : CONTAINER_ELEMENT_ID - Object.assign(containerEl.style, { - ...containerStyles, - ...getStyles(options.bounds), - ...options.style - }) - const cardEl = document.createElement('span') - cardEl.id = CARD_ELEMENT_ID - Object.assign(cardEl.style, { - ...cardStyles, - top: options.bounds.top < 35 ? 0 : '-35px' - }) - const nameEl = document.createElement('span') - nameEl.id = COMPONENT_NAME_ELEMENT_ID - nameEl.innerHTML = `<${options.name}> ` - const indicatorEl = document.createElement('i') - indicatorEl.id = INDICATOR_ELEMENT_ID - indicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${ - Math.round(options.bounds.height * 100) / 100 - }` - Object.assign(indicatorEl.style, indicatorStyles) - cardEl.appendChild(nameEl) - cardEl.appendChild(indicatorEl) - containerEl.appendChild(cardEl) - document.body.appendChild(containerEl) - return containerEl -} -function update(options) { - const containerEl = getContainerElement() - const cardEl = getCardElement() - const nameEl = getNameElement() - const indicatorEl = getIndicatorElement() - if (containerEl) { - Object.assign(containerEl.style, { - ...containerStyles, - ...getStyles(options.bounds) - }) - Object.assign(cardEl.style, { - top: options.bounds.top < 35 ? 0 : '-35px' - }) - nameEl.innerHTML = `<${options.name}> ` - indicatorEl.innerHTML = `${ - Math.round(options.bounds.width * 100) / 100 - } x ${Math.round(options.bounds.height * 100) / 100}` - } -} -function highlight(instance) { - const bounds = getComponentBoundingRect(instance) - const name = getInstanceName(instance) - const container = getContainerElement() - container ? update({ bounds, name }) : create({ bounds, name }) -} -function unhighlight() { - const el = getContainerElement() - if (el) el.style.display = 'none' -} -var inspectInstance = null -function inspectFn(e) { - const target22 = e.target - if (target22) { - const instance = target22.__vueParentComponent - if (instance) { - inspectInstance = instance - const el = instance.vnode.el - if (el) { - const bounds = getComponentBoundingRect(instance) - const name = getInstanceName(instance) - const container = getContainerElement() - container ? update({ bounds, name }) : create({ bounds, name }) - } - } - } -} -function selectComponentFn(e, cb) { - var _a25 - e.preventDefault() - e.stopPropagation() - if (inspectInstance) { - const app = (_a25 = activeAppRecord.value) == null ? void 0 : _a25.app - getComponentId({ - app, - uid: app.uid, - instance: inspectInstance - }).then(id => { - cb(id) - }) - } -} -var inspectComponentHighLighterSelectFn = null -function cancelInspectComponentHighLighter() { - unhighlight() - window.removeEventListener('mouseover', inspectFn) - window.removeEventListener('click', inspectComponentHighLighterSelectFn, true) - inspectComponentHighLighterSelectFn = null -} -function inspectComponentHighLighter() { - window.addEventListener('mouseover', inspectFn) - return new Promise(resolve => { - function onSelect(e) { - e.preventDefault() - e.stopPropagation() - selectComponentFn(e, id => { - window.removeEventListener('click', onSelect, true) - inspectComponentHighLighterSelectFn = null - window.removeEventListener('mouseover', inspectFn) - const el = getContainerElement() - if (el) el.style.display = 'none' - resolve(JSON.stringify({ id })) - }) - } - inspectComponentHighLighterSelectFn = onSelect - window.addEventListener('click', onSelect, true) - }) -} -function scrollToComponent(options) { - const instance = getComponentInstance(activeAppRecord.value, options.id) - if (instance) { - const [el] = getRootElementsFromComponentInstance(instance) - if (typeof el.scrollIntoView === 'function') { - el.scrollIntoView({ - behavior: 'smooth' - }) - } else { - const bounds = getComponentBoundingRect(instance) - const scrollTarget = document.createElement('div') - const styles = { - ...getStyles(bounds), - position: 'absolute' - } - Object.assign(scrollTarget.style, styles) - document.body.appendChild(scrollTarget) - scrollTarget.scrollIntoView({ - behavior: 'smooth' - }) - setTimeout(() => { - document.body.removeChild(scrollTarget) - }, 2e3) - } - setTimeout(() => { - const bounds = getComponentBoundingRect(instance) - if (bounds.width || bounds.height) { - const name = getInstanceName(instance) - const el2 = getContainerElement() - el2 - ? update({ ...options, name, bounds }) - : create({ ...options, name, bounds }) - setTimeout(() => { - if (el2) el2.style.display = 'none' - }, 1500) - } - }, 1200) - } -} -init_esm_shims2() -var _a2 -var _b -;(_b = (_a2 = target).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__) != null - ? _b - : (_a2.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = true) -function waitForInspectorInit(cb) { - let total = 0 - const timer = setInterval(() => { - if (target.__VUE_INSPECTOR__) { - clearInterval(timer) - total += 30 - cb() - } - if (total /* 5s */ >= 5e3) clearInterval(timer) - }, 30) -} -function setupInspector() { - const inspector = target.__VUE_INSPECTOR__ - const _openInEditor = inspector.openInEditor - inspector.openInEditor = async (...params) => { - inspector.disable() - _openInEditor(...params) - } -} -function getComponentInspector() { - return new Promise(resolve => { - function setup() { - setupInspector() - resolve(target.__VUE_INSPECTOR__) - } - if (!target.__VUE_INSPECTOR__) { - waitForInspectorInit(() => { - setup() - }) - } else { - setup() - } - }) -} -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var TIMELINE_LAYERS_STATE_STORAGE_ID = - '__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__' -function getTimelineLayersStateFromStorage() { - if ( - !isBrowser || - typeof localStorage === 'undefined' || - localStorage === null - ) { - return { - recordingState: false, - mouseEventEnabled: false, - keyboardEventEnabled: false, - componentEventEnabled: false, - performanceEventEnabled: false, - selected: '' - } - } - const state = localStorage.getItem(TIMELINE_LAYERS_STATE_STORAGE_ID) - return state - ? JSON.parse(state) - : { - recordingState: false, - mouseEventEnabled: false, - keyboardEventEnabled: false, - componentEventEnabled: false, - performanceEventEnabled: false, - selected: '' - } -} -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var _a22 -var _b2 -;(_b2 = (_a22 = target).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS) != null - ? _b2 - : (_a22.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS = []) -var devtoolsTimelineLayers = new Proxy( - target.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS, - { - get(target22, prop, receiver) { - return Reflect.get(target22, prop, receiver) - } - } -) -function addTimelineLayer(options, descriptor) { - devtoolsState.timelineLayersState[descriptor.id] = false - devtoolsTimelineLayers.push({ - ...options, - descriptorId: descriptor.id, - appRecord: getAppRecord(descriptor.app) - }) -} -var _a3 -var _b3 -;(_b3 = (_a3 = target).__VUE_DEVTOOLS_KIT_INSPECTOR__) != null - ? _b3 - : (_a3.__VUE_DEVTOOLS_KIT_INSPECTOR__ = []) -var devtoolsInspector = new Proxy(target.__VUE_DEVTOOLS_KIT_INSPECTOR__, { - get(target22, prop, receiver) { - return Reflect.get(target22, prop, receiver) - } -}) -var callInspectorUpdatedHook = debounce(() => { - devtoolsContext.hooks.callHook('sendInspectorToClient', getActiveInspectors()) -}) -function addInspector(inspector, descriptor) { - devtoolsInspector.push({ - options: inspector, - descriptor, - treeFilter: '', - selectedNodeId: '', - appRecord: getAppRecord(descriptor.app) - }) - callInspectorUpdatedHook() -} -function getActiveInspectors() { - return devtoolsInspector - .filter(inspector => inspector.descriptor.app === activeAppRecord.value.app) - .filter(inspector => inspector.descriptor.id !== 'components') - .map(inspector => { - var _a25 - const descriptor = inspector.descriptor - const options = inspector.options - return { - id: options.id, - label: options.label, - logo: descriptor.logo, - icon: `custom-ic-baseline-${ - (_a25 = options == null ? void 0 : options.icon) == null - ? void 0 - : _a25.replace(/_/g, '-') - }`, - packageName: descriptor.packageName, - homepage: descriptor.homepage, - pluginId: descriptor.id - } - }) -} -function getInspector(id, app) { - return devtoolsInspector.find( - inspector => - inspector.options.id === id && - (app ? inspector.descriptor.app === app : true) - ) -} -var DevToolsV6PluginAPIHookKeys = (DevToolsV6PluginAPIHookKeys2 => { - DevToolsV6PluginAPIHookKeys2['VISIT_COMPONENT_TREE'] = 'visitComponentTree' - DevToolsV6PluginAPIHookKeys2['INSPECT_COMPONENT'] = 'inspectComponent' - DevToolsV6PluginAPIHookKeys2['EDIT_COMPONENT_STATE'] = 'editComponentState' - DevToolsV6PluginAPIHookKeys2['GET_INSPECTOR_TREE'] = 'getInspectorTree' - DevToolsV6PluginAPIHookKeys2['GET_INSPECTOR_STATE'] = 'getInspectorState' - DevToolsV6PluginAPIHookKeys2['EDIT_INSPECTOR_STATE'] = 'editInspectorState' - DevToolsV6PluginAPIHookKeys2['INSPECT_TIMELINE_EVENT'] = - 'inspectTimelineEvent' - DevToolsV6PluginAPIHookKeys2['TIMELINE_CLEARED'] = 'timelineCleared' - DevToolsV6PluginAPIHookKeys2['SET_PLUGIN_SETTINGS'] = 'setPluginSettings' - return DevToolsV6PluginAPIHookKeys2 -})(DevToolsV6PluginAPIHookKeys || {}) -var DevToolsContextHookKeys = (DevToolsContextHookKeys2 => { - DevToolsContextHookKeys2['ADD_INSPECTOR'] = 'addInspector' - DevToolsContextHookKeys2['SEND_INSPECTOR_TREE'] = 'sendInspectorTree' - DevToolsContextHookKeys2['SEND_INSPECTOR_STATE'] = 'sendInspectorState' - DevToolsContextHookKeys2['CUSTOM_INSPECTOR_SELECT_NODE'] = - 'customInspectorSelectNode' - DevToolsContextHookKeys2['TIMELINE_LAYER_ADDED'] = 'timelineLayerAdded' - DevToolsContextHookKeys2['TIMELINE_EVENT_ADDED'] = 'timelineEventAdded' - DevToolsContextHookKeys2['GET_COMPONENT_INSTANCES'] = 'getComponentInstances' - DevToolsContextHookKeys2['GET_COMPONENT_BOUNDS'] = 'getComponentBounds' - DevToolsContextHookKeys2['GET_COMPONENT_NAME'] = 'getComponentName' - DevToolsContextHookKeys2['COMPONENT_HIGHLIGHT'] = 'componentHighlight' - DevToolsContextHookKeys2['COMPONENT_UNHIGHLIGHT'] = 'componentUnhighlight' - return DevToolsContextHookKeys2 -})(DevToolsContextHookKeys || {}) -var DevToolsMessagingHookKeys = (DevToolsMessagingHookKeys2 => { - DevToolsMessagingHookKeys2['SEND_INSPECTOR_TREE_TO_CLIENT'] = - 'sendInspectorTreeToClient' - DevToolsMessagingHookKeys2['SEND_INSPECTOR_STATE_TO_CLIENT'] = - 'sendInspectorStateToClient' - DevToolsMessagingHookKeys2['SEND_TIMELINE_EVENT_TO_CLIENT'] = - 'sendTimelineEventToClient' - DevToolsMessagingHookKeys2['SEND_INSPECTOR_TO_CLIENT'] = - 'sendInspectorToClient' - DevToolsMessagingHookKeys2['SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT'] = - 'sendActiveAppUpdatedToClient' - DevToolsMessagingHookKeys2['DEVTOOLS_STATE_UPDATED'] = 'devtoolsStateUpdated' - DevToolsMessagingHookKeys2['DEVTOOLS_CONNECTED_UPDATED'] = - 'devtoolsConnectedUpdated' - DevToolsMessagingHookKeys2['ROUTER_INFO_UPDATED'] = 'routerInfoUpdated' - return DevToolsMessagingHookKeys2 -})(DevToolsMessagingHookKeys || {}) -function createDevToolsCtxHooks() { - const hooks2 = createHooks() - hooks2.hook('addInspector', ({ inspector, plugin }) => { - addInspector(inspector, plugin.descriptor) - }) - const debounceSendInspectorTree = debounce( - async ({ inspectorId, plugin }) => { - var _a25 - if ( - !inspectorId || - !((_a25 = plugin == null ? void 0 : plugin.descriptor) == null - ? void 0 - : _a25.app) || - devtoolsState.highPerfModeEnabled - ) - return - const inspector = getInspector(inspectorId, plugin.descriptor.app) - const _payload = { - app: plugin.descriptor.app, - inspectorId, - filter: (inspector == null ? void 0 : inspector.treeFilter) || '', - rootNodes: [] - } - await new Promise(resolve => { - hooks2.callHookWith( - async callbacks => { - await Promise.all(callbacks.map(cb => cb(_payload))) - resolve() - }, - 'getInspectorTree' - /* GET_INSPECTOR_TREE */ - ) - }) - hooks2.callHookWith( - async callbacks => { - await Promise.all( - callbacks.map(cb => - cb({ - inspectorId, - rootNodes: _payload.rootNodes - }) - ) - ) - }, - 'sendInspectorTreeToClient' - /* SEND_INSPECTOR_TREE_TO_CLIENT */ - ) - }, - 120 - ) - hooks2.hook('sendInspectorTree', debounceSendInspectorTree) - const debounceSendInspectorState = debounce( - async ({ inspectorId, plugin }) => { - var _a25 - if ( - !inspectorId || - !((_a25 = plugin == null ? void 0 : plugin.descriptor) == null - ? void 0 - : _a25.app) || - devtoolsState.highPerfModeEnabled - ) - return - const inspector = getInspector(inspectorId, plugin.descriptor.app) - const _payload = { - app: plugin.descriptor.app, - inspectorId, - nodeId: (inspector == null ? void 0 : inspector.selectedNodeId) || '', - state: null - } - const ctx = { - currentTab: `custom-inspector:${inspectorId}` - } - if (_payload.nodeId) { - await new Promise(resolve => { - hooks2.callHookWith( - async callbacks => { - await Promise.all(callbacks.map(cb => cb(_payload, ctx))) - resolve() - }, - 'getInspectorState' - /* GET_INSPECTOR_STATE */ - ) - }) - } - hooks2.callHookWith( - async callbacks => { - await Promise.all( - callbacks.map(cb => - cb({ - inspectorId, - nodeId: _payload.nodeId, - state: _payload.state - }) - ) - ) - }, - 'sendInspectorStateToClient' - /* SEND_INSPECTOR_STATE_TO_CLIENT */ - ) - }, - 120 - ) - hooks2.hook('sendInspectorState', debounceSendInspectorState) - hooks2.hook( - 'customInspectorSelectNode', - ({ inspectorId, nodeId, plugin }) => { - const inspector = getInspector(inspectorId, plugin.descriptor.app) - if (!inspector) return - inspector.selectedNodeId = nodeId - } - ) - hooks2.hook('timelineLayerAdded', ({ options, plugin }) => { - addTimelineLayer(options, plugin.descriptor) - }) - hooks2.hook('timelineEventAdded', ({ options, plugin }) => { - var _a25 - const internalLayerIds = [ - 'performance', - 'component-event', - 'keyboard', - 'mouse' - ] - if ( - devtoolsState.highPerfModeEnabled || - (!((_a25 = devtoolsState.timelineLayersState) == null - ? void 0 - : _a25[plugin.descriptor.id]) && - !internalLayerIds.includes(options.layerId)) - ) - return - hooks2.callHookWith( - async callbacks => { - await Promise.all(callbacks.map(cb => cb(options))) - }, - 'sendTimelineEventToClient' - /* SEND_TIMELINE_EVENT_TO_CLIENT */ - ) - }) - hooks2.hook('getComponentInstances', async ({ app }) => { - const appRecord = app.__VUE_DEVTOOLS_NEXT_APP_RECORD__ - if (!appRecord) return null - const appId = appRecord.id.toString() - const instances = [...appRecord.instanceMap] - .filter(([key]) => key.split(':')[0] === appId) - .map(([, instance]) => instance) - return instances - }) - hooks2.hook('getComponentBounds', async ({ instance }) => { - const bounds = getComponentBoundingRect(instance) - return bounds - }) - hooks2.hook('getComponentName', ({ instance }) => { - const name = getInstanceName(instance) - return name - }) - hooks2.hook('componentHighlight', ({ uid }) => { - const instance = activeAppRecord.value.instanceMap.get(uid) - if (instance) { - highlight(instance) - } - }) - hooks2.hook('componentUnhighlight', () => { - unhighlight() - }) - return hooks2 -} -var _a4 -var _b4 -;(_b4 = (_a4 = target).__VUE_DEVTOOLS_KIT_APP_RECORDS__) != null - ? _b4 - : (_a4.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = []) -var _a5 -var _b5 -;(_b5 = (_a5 = target).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__) != null - ? _b5 - : (_a5.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ = {}) -var _a6 -var _b6 -;(_b6 = (_a6 = target).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__) != null - ? _b6 - : (_a6.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ = '') -var _a7 -var _b7 -;(_b7 = (_a7 = target).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__) != null - ? _b7 - : (_a7.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__ = []) -var _a8 -var _b8 -;(_b8 = (_a8 = target).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__) != null - ? _b8 - : (_a8.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ = []) -var STATE_KEY = '__VUE_DEVTOOLS_KIT_GLOBAL_STATE__' -function initStateFactory() { - return { - connected: false, - clientConnected: false, - vitePluginDetected: true, - appRecords: [], - activeAppRecordId: '', - tabs: [], - commands: [], - highPerfModeEnabled: true, - devtoolsClientDetected: {}, - perfUniqueGroupId: 0, - timelineLayersState: getTimelineLayersStateFromStorage() - } -} -var _a9 -var _b9 -;(_b9 = (_a9 = target)[STATE_KEY]) != null - ? _b9 - : (_a9[STATE_KEY] = initStateFactory()) -var callStateUpdatedHook = debounce(state => { - devtoolsContext.hooks.callHook('devtoolsStateUpdated', { state }) -}) -var callConnectedUpdatedHook = debounce((state, oldState) => { - devtoolsContext.hooks.callHook('devtoolsConnectedUpdated', { - state, - oldState - }) -}) -var devtoolsAppRecords = new Proxy(target.__VUE_DEVTOOLS_KIT_APP_RECORDS__, { - get(_target, prop, receiver) { - if (prop === 'value') return target.__VUE_DEVTOOLS_KIT_APP_RECORDS__ - return target.__VUE_DEVTOOLS_KIT_APP_RECORDS__[prop] - } -}) -var activeAppRecord = new Proxy(target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__, { - get(_target, prop, receiver) { - if (prop === 'value') return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ - else if (prop === 'id') - return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ - return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[prop] - } -}) -function updateAllStates() { - callStateUpdatedHook({ - ...target[STATE_KEY], - appRecords: devtoolsAppRecords.value, - activeAppRecordId: activeAppRecord.id, - tabs: target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__, - commands: target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ - }) -} -function setActiveAppRecord(app) { - target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ = app - updateAllStates() -} -function setActiveAppRecordId(id) { - target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ = id - updateAllStates() -} -var devtoolsState = new Proxy(target[STATE_KEY], { - get(target22, property) { - if (property === 'appRecords') { - return devtoolsAppRecords - } else if (property === 'activeAppRecordId') { - return activeAppRecord.id - } else if (property === 'tabs') { - return target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__ - } else if (property === 'commands') { - return target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ - } - return target[STATE_KEY][property] - }, - deleteProperty(target22, property) { - delete target22[property] - return true - }, - set(target22, property, value) { - const oldState = { ...target[STATE_KEY] } - target22[property] = value - target[STATE_KEY][property] = value - return true - } -}) -function onDevToolsConnected(fn) { - return new Promise(resolve => { - if (devtoolsState.connected) { - fn() - resolve() - } - devtoolsContext.hooks.hook('devtoolsConnectedUpdated', ({ state }) => { - if (state.connected) { - fn() - resolve() - } - }) - }) -} -var resolveIcon = icon => { - if (!icon) return - if (icon.startsWith('baseline-')) { - return `custom-ic-${icon}` - } - if (icon.startsWith('i-') || isUrlString(icon)) return icon - return `custom-ic-baseline-${icon}` -} -function addCustomTab(tab) { - const tabs = target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__ - if (tabs.some(t => t.name === tab.name)) return - tabs.push({ - ...tab, - icon: resolveIcon(tab.icon) - }) - updateAllStates() -} -function addCustomCommand(action) { - const commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ - if (commands.some(t => t.id === action.id)) return - commands.push({ - ...action, - icon: resolveIcon(action.icon), - children: action.children - ? action.children.map(child => ({ - ...child, - icon: resolveIcon(child.icon) - })) - : void 0 - }) - updateAllStates() -} -function removeCustomCommand(actionId) { - const commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ - const index = commands.findIndex(t => t.id === actionId) - if (index === -1) return - commands.splice(index, 1) - updateAllStates() -} -function openInEditor(options = {}) { - var _a25, _b25, _c - const { - file, - host, - baseUrl = window.location.origin, - line = 0, - column = 0 - } = options - if (file) { - if (host === 'chrome-extension') { - const fileName = file.replace(/\\/g, '\\\\') - const _baseUrl = - (_b25 = - (_a25 = window.VUE_DEVTOOLS_CONFIG) == null - ? void 0 - : _a25.openInEditorHost) != null - ? _b25 - : '/' - fetch(`${_baseUrl}__open-in-editor?file=${encodeURI(file)}`).then( - response => { - if (!response.ok) { - const msg = `Opening component ${fileName} failed` - console.log(`%c${msg}`, 'color:red') - } - } - ) - } else if (devtoolsState.vitePluginDetected) { - const _baseUrl = - (_c = target.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__) != null - ? _c - : baseUrl - target.__VUE_INSPECTOR__.openInEditor(_baseUrl, file, line, column) - } - } -} -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var _a10 -var _b10 -;(_b10 = (_a10 = target).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__) != null - ? _b10 - : (_a10.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__ = []) -var devtoolsPluginBuffer = new Proxy( - target.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__, - { - get(target22, prop, receiver) { - return Reflect.get(target22, prop, receiver) - } - } -) -function _getSettings(settings) { - const _settings = {} - Object.keys(settings).forEach(key => { - _settings[key] = settings[key].defaultValue - }) - return _settings -} -function getPluginLocalKey(pluginId) { - return `__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${pluginId}__` -} -function getPluginSettingsOptions(pluginId) { - var _a25, _b25, _c - const item = - (_b25 = - (_a25 = devtoolsPluginBuffer.find(item2 => { - var _a26 - return ( - item2[0].id === pluginId && - !!((_a26 = item2[0]) == null ? void 0 : _a26.settings) - ) - })) == null - ? void 0 - : _a25[0]) != null - ? _b25 - : null - return (_c = item == null ? void 0 : item.settings) != null ? _c : null -} -function getPluginSettings(pluginId, fallbackValue) { - var _a25, _b25, _c - const localKey = getPluginLocalKey(pluginId) - if (localKey) { - const localSettings = localStorage.getItem(localKey) - if (localSettings) { - return JSON.parse(localSettings) - } - } - if (pluginId) { - const item = - (_b25 = - (_a25 = devtoolsPluginBuffer.find(item2 => item2[0].id === pluginId)) == - null - ? void 0 - : _a25[0]) != null - ? _b25 - : null - return _getSettings( - (_c = item == null ? void 0 : item.settings) != null ? _c : {} - ) - } - return _getSettings(fallbackValue) -} -function initPluginSettings(pluginId, settings) { - const localKey = getPluginLocalKey(pluginId) - const localSettings = localStorage.getItem(localKey) - if (!localSettings) { - localStorage.setItem(localKey, JSON.stringify(_getSettings(settings))) - } -} -function setPluginSettings(pluginId, key, value) { - const localKey = getPluginLocalKey(pluginId) - const localSettings = localStorage.getItem(localKey) - const parsedLocalSettings = JSON.parse(localSettings || '{}') - const updated = { - ...parsedLocalSettings, - [key]: value - } - localStorage.setItem(localKey, JSON.stringify(updated)) - devtoolsContext.hooks.callHookWith( - callbacks => { - callbacks.forEach(cb => - cb({ - pluginId, - key, - oldValue: parsedLocalSettings[key], - newValue: value, - settings: updated - }) - ) - }, - 'setPluginSettings' - /* SET_PLUGIN_SETTINGS */ - ) -} -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var _a11 -var _b11 -var devtoolsHooks = - (_b11 = (_a11 = target).__VUE_DEVTOOLS_HOOK) != null - ? _b11 - : (_a11.__VUE_DEVTOOLS_HOOK = createHooks()) -var on = { - vueAppInit(fn) { - devtoolsHooks.hook('app:init', fn) - }, - vueAppUnmount(fn) { - devtoolsHooks.hook('app:unmount', fn) - }, - vueAppConnected(fn) { - devtoolsHooks.hook('app:connected', fn) - }, - componentAdded(fn) { - return devtoolsHooks.hook('component:added', fn) - }, - componentEmit(fn) { - return devtoolsHooks.hook('component:emit', fn) - }, - componentUpdated(fn) { - return devtoolsHooks.hook('component:updated', fn) - }, - componentRemoved(fn) { - return devtoolsHooks.hook('component:removed', fn) - }, - setupDevtoolsPlugin(fn) { - devtoolsHooks.hook('devtools-plugin:setup', fn) - }, - perfStart(fn) { - return devtoolsHooks.hook('perf:start', fn) - }, - perfEnd(fn) { - return devtoolsHooks.hook('perf:end', fn) - } -} -var hook = { - on, - setupDevToolsPlugin(pluginDescriptor, setupFn) { - return devtoolsHooks.callHook( - 'devtools-plugin:setup', - pluginDescriptor, - setupFn - ) - } -} -var DevToolsV6PluginAPI = class { - constructor({ plugin, ctx }) { - this.hooks = ctx.hooks - this.plugin = plugin - } - get on() { - return { - // component inspector - visitComponentTree: handler => { - this.hooks.hook('visitComponentTree', handler) - }, - inspectComponent: handler => { - this.hooks.hook('inspectComponent', handler) - }, - editComponentState: handler => { - this.hooks.hook('editComponentState', handler) - }, - // custom inspector - getInspectorTree: handler => { - this.hooks.hook('getInspectorTree', handler) - }, - getInspectorState: handler => { - this.hooks.hook('getInspectorState', handler) - }, - editInspectorState: handler => { - this.hooks.hook('editInspectorState', handler) - }, - // timeline - inspectTimelineEvent: handler => { - this.hooks.hook('inspectTimelineEvent', handler) - }, - timelineCleared: handler => { - this.hooks.hook('timelineCleared', handler) - }, - // settings - setPluginSettings: handler => { - this.hooks.hook('setPluginSettings', handler) - } - } - } - // component inspector - notifyComponentUpdate(instance) { - var _a25 - const inspector = getActiveInspectors().find( - i => i.packageName === this.plugin.descriptor.packageName - ) - if (inspector == null ? void 0 : inspector.id) { - if (instance) { - const args = [ - instance.appContext.app, - instance.uid, - (_a25 = instance.parent) == null ? void 0 : _a25.uid, - instance - ] - devtoolsHooks.callHook('component:updated', ...args) - } else { - devtoolsHooks.callHook( - 'component:updated' - /* COMPONENT_UPDATED */ - ) - } - this.hooks.callHook('sendInspectorState', { - inspectorId: inspector.id, - plugin: this.plugin - }) - } - } - // custom inspector - addInspector(options) { - this.hooks.callHook('addInspector', { - inspector: options, - plugin: this.plugin - }) - if (this.plugin.descriptor.settings) { - initPluginSettings(options.id, this.plugin.descriptor.settings) - } - } - sendInspectorTree(inspectorId) { - this.hooks.callHook('sendInspectorTree', { - inspectorId, - plugin: this.plugin - }) - } - sendInspectorState(inspectorId) { - this.hooks.callHook('sendInspectorState', { - inspectorId, - plugin: this.plugin - }) - } - selectInspectorNode(inspectorId, nodeId) { - this.hooks.callHook('customInspectorSelectNode', { - inspectorId, - nodeId, - plugin: this.plugin - }) - } - visitComponentTree(payload) { - return this.hooks.callHook('visitComponentTree', payload) - } - // timeline - now() { - return Date.now() - } - addTimelineLayer(options) { - this.hooks.callHook('timelineLayerAdded', { options, plugin: this.plugin }) - } - addTimelineEvent(options) { - this.hooks.callHook('timelineEventAdded', { options, plugin: this.plugin }) - } - // settings - getSettings(pluginId) { - return getPluginSettings( - pluginId != null ? pluginId : this.plugin.descriptor.id, - this.plugin.descriptor.settings - ) - } - // utilities - getComponentInstances(app) { - return this.hooks.callHook('getComponentInstances', { app }) - } - getComponentBounds(instance) { - return this.hooks.callHook('getComponentBounds', { instance }) - } - getComponentName(instance) { - return this.hooks.callHook('getComponentName', { instance }) - } - highlightElement(instance) { - const uid = instance.__VUE_DEVTOOLS_NEXT_UID__ - return this.hooks.callHook('componentHighlight', { uid }) - } - unhighlightElement() { - return this.hooks.callHook( - 'componentUnhighlight' - /* COMPONENT_UNHIGHLIGHT */ - ) - } -} -var DevToolsPluginAPI = DevToolsV6PluginAPI -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var UNDEFINED = '__vue_devtool_undefined__' -var INFINITY = '__vue_devtool_infinity__' -var NEGATIVE_INFINITY = '__vue_devtool_negative_infinity__' -var NAN = '__vue_devtool_nan__' -init_esm_shims2() -init_esm_shims2() -var tokenMap = { - [UNDEFINED]: 'undefined', - [NAN]: 'NaN', - [INFINITY]: 'Infinity', - [NEGATIVE_INFINITY]: '-Infinity' -} -var reversedTokenMap = Object.entries(tokenMap).reduce((acc, [key, value]) => { - acc[value] = key - return acc -}, {}) -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var _a12 -var _b12 -;(_b12 = (_a12 = target).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__) != null - ? _b12 - : (_a12.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__ = - /* @__PURE__ */ new Set()) -function setupDevToolsPlugin(pluginDescriptor, setupFn) { - return hook.setupDevToolsPlugin(pluginDescriptor, setupFn) -} -function callDevToolsPluginSetupFn(plugin, app) { - const [pluginDescriptor, setupFn] = plugin - if (pluginDescriptor.app !== app) return - const api = new DevToolsPluginAPI({ - plugin: { - setupFn, - descriptor: pluginDescriptor - }, - ctx: devtoolsContext - }) - if (pluginDescriptor.packageName === 'vuex') { - api.on.editInspectorState(payload => { - api.sendInspectorState(payload.inspectorId) - }) - } - setupFn(api) -} -function registerDevToolsPlugin(app) { - if (target.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(app)) return - target.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(app) - devtoolsPluginBuffer.forEach(plugin => { - callDevToolsPluginSetupFn(plugin, app) - }) -} -init_esm_shims2() -init_esm_shims2() -var ROUTER_KEY = '__VUE_DEVTOOLS_ROUTER__' -var ROUTER_INFO_KEY = '__VUE_DEVTOOLS_ROUTER_INFO__' -var _a13 -var _b13 -;(_b13 = (_a13 = target)[ROUTER_INFO_KEY]) != null - ? _b13 - : (_a13[ROUTER_INFO_KEY] = { - currentRoute: null, - routes: [] - }) -var _a14 -var _b14 -;(_b14 = (_a14 = target)[ROUTER_KEY]) != null ? _b14 : (_a14[ROUTER_KEY] = {}) -var devtoolsRouterInfo = new Proxy(target[ROUTER_INFO_KEY], { - get(target22, property) { - return target[ROUTER_INFO_KEY][property] - } -}) -var devtoolsRouter = new Proxy(target[ROUTER_KEY], { - get(target22, property) { - if (property === 'value') { - return target[ROUTER_KEY] - } - } -}) -function getRoutes(router) { - const routesMap = /* @__PURE__ */ new Map() - return ((router == null ? void 0 : router.getRoutes()) || []).filter( - i => !routesMap.has(i.path) && routesMap.set(i.path, 1) - ) -} -function filterRoutes(routes) { - return routes.map(item => { - let { path, name, children, meta } = item - if (children == null ? void 0 : children.length) - children = filterRoutes(children) - return { - path, - name, - children, - meta - } - }) -} -function filterCurrentRoute(route) { - if (route) { - const { fullPath, hash, href, path, name, matched, params, query } = route - return { - fullPath, - hash, - href, - path, - name, - params, - query, - matched: filterRoutes(matched) - } - } - return route -} -function normalizeRouterInfo(appRecord, activeAppRecord2) { - function init() { - var _a25 - const router = - (_a25 = appRecord.app) == null - ? void 0 - : _a25.config.globalProperties.$router - const currentRoute = filterCurrentRoute( - router == null ? void 0 : router.currentRoute.value - ) - const routes = filterRoutes(getRoutes(router)) - const c = console.warn - console.warn = () => {} - target[ROUTER_INFO_KEY] = { - currentRoute: currentRoute ? deepClone(currentRoute) : {}, - routes: deepClone(routes) - } - target[ROUTER_KEY] = router - console.warn = c - } - init() - hook.on.componentUpdated( - debounce(() => { - var _a25 - if ( - ((_a25 = activeAppRecord2.value) == null ? void 0 : _a25.app) !== - appRecord.app - ) - return - init() - if (devtoolsState.highPerfModeEnabled) return - devtoolsContext.hooks.callHook('routerInfoUpdated', { - state: target[ROUTER_INFO_KEY] - }) - }, 200) - ) -} -function createDevToolsApi(hooks2) { - return { - // get inspector tree - async getInspectorTree(payload) { - const _payload = { - ...payload, - app: activeAppRecord.value.app, - rootNodes: [] - } - await new Promise(resolve => { - hooks2.callHookWith( - async callbacks => { - await Promise.all(callbacks.map(cb => cb(_payload))) - resolve() - }, - 'getInspectorTree' - /* GET_INSPECTOR_TREE */ - ) - }) - return _payload.rootNodes - }, - // get inspector state - async getInspectorState(payload) { - const _payload = { - ...payload, - app: activeAppRecord.value.app, - state: null - } - const ctx = { - currentTab: `custom-inspector:${payload.inspectorId}` - } - await new Promise(resolve => { - hooks2.callHookWith( - async callbacks => { - await Promise.all(callbacks.map(cb => cb(_payload, ctx))) - resolve() - }, - 'getInspectorState' - /* GET_INSPECTOR_STATE */ - ) - }) - return _payload.state - }, - // edit inspector state - editInspectorState(payload) { - const stateEditor2 = new StateEditor() - const _payload = { - ...payload, - app: activeAppRecord.value.app, - set: (obj, path = payload.path, value = payload.state.value, cb) => { - stateEditor2.set( - obj, - path, - value, - cb || stateEditor2.createDefaultSetCallback(payload.state) - ) - } - } - hooks2.callHookWith( - callbacks => { - callbacks.forEach(cb => cb(_payload)) - }, - 'editInspectorState' - /* EDIT_INSPECTOR_STATE */ - ) - }, - // send inspector state - sendInspectorState(inspectorId) { - const inspector = getInspector(inspectorId) - hooks2.callHook('sendInspectorState', { - inspectorId, - plugin: { - descriptor: inspector.descriptor, - setupFn: () => ({}) - } - }) - }, - // inspect component inspector - inspectComponentInspector() { - return inspectComponentHighLighter() - }, - // cancel inspect component inspector - cancelInspectComponentInspector() { - return cancelInspectComponentHighLighter() - }, - // get component render code - getComponentRenderCode(id) { - const instance = getComponentInstance(activeAppRecord.value, id) - if (instance) - return !( - (instance == null ? void 0 : instance.type) instanceof Function - ) - ? instance.render.toString() - : instance.type.toString() - }, - // scroll to component - scrollToComponent(id) { - return scrollToComponent({ id }) - }, - // open in editor - openInEditor, - // get vue inspector - getVueInspector: getComponentInspector, - // toggle app - toggleApp(id) { - const appRecord = devtoolsAppRecords.value.find( - record => record.id === id - ) - if (appRecord) { - setActiveAppRecordId(id) - setActiveAppRecord(appRecord) - normalizeRouterInfo(appRecord, activeAppRecord) - callInspectorUpdatedHook() - registerDevToolsPlugin(appRecord.app) - } - }, - // inspect dom - inspectDOM(instanceId) { - const instance = getComponentInstance(activeAppRecord.value, instanceId) - if (instance) { - const [el] = getRootElementsFromComponentInstance(instance) - if (el) { - target.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__ = el - } - } - }, - updatePluginSettings(pluginId, key, value) { - setPluginSettings(pluginId, key, value) - }, - getPluginSettings(pluginId) { - return { - options: getPluginSettingsOptions(pluginId), - values: getPluginSettings(pluginId) - } - } - } -} -init_esm_shims2() -var _a15 -var _b15 -;(_b15 = (_a15 = target).__VUE_DEVTOOLS_ENV__) != null - ? _b15 - : (_a15.__VUE_DEVTOOLS_ENV__ = { - vitePluginDetected: false - }) -var hooks = createDevToolsCtxHooks() -var _a16 -var _b16 -;(_b16 = (_a16 = target).__VUE_DEVTOOLS_KIT_CONTEXT__) != null - ? _b16 - : (_a16.__VUE_DEVTOOLS_KIT_CONTEXT__ = { - hooks, - get state() { - return { - ...devtoolsState, - activeAppRecordId: activeAppRecord.id, - activeAppRecord: activeAppRecord.value, - appRecords: devtoolsAppRecords.value - } - }, - api: createDevToolsApi(hooks) - }) -var devtoolsContext = target.__VUE_DEVTOOLS_KIT_CONTEXT__ -init_esm_shims2() -var import_speakingurl = __toESM2(require_speakingurl2(), 1) -var _a17 -var _b17 -var appRecordInfo = - (_b17 = (_a17 = target).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__) != null - ? _b17 - : (_a17.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__ = { - id: 0, - appIds: /* @__PURE__ */ new Set() - }) -function onDevToolsClientConnected(fn) { - return new Promise(resolve => { - if (devtoolsState.connected && devtoolsState.clientConnected) { - fn() - resolve() - return - } - devtoolsContext.hooks.hook('devtoolsConnectedUpdated', ({ state }) => { - if (state.connected && state.clientConnected) { - fn() - resolve() - } - }) - }) -} -init_esm_shims2() -function toggleHighPerfMode(state) { - devtoolsState.highPerfModeEnabled = - state != null ? state : !devtoolsState.highPerfModeEnabled -} -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -function updateDevToolsClientDetected(params) { - devtoolsState.devtoolsClientDetected = { - ...devtoolsState.devtoolsClientDetected, - ...params - } - const devtoolsClientVisible = Object.values( - devtoolsState.devtoolsClientDetected - ).some(Boolean) - toggleHighPerfMode(!devtoolsClientVisible) -} -var _a18 -var _b18 -;(_b18 = (_a18 = target).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__) != null - ? _b18 - : (_a18.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__ = - updateDevToolsClientDetected) -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var DoubleIndexedKV = class { - constructor() { - this.keyToValue = /* @__PURE__ */ new Map() - this.valueToKey = /* @__PURE__ */ new Map() - } - set(key, value) { - this.keyToValue.set(key, value) - this.valueToKey.set(value, key) - } - getByKey(key) { - return this.keyToValue.get(key) - } - getByValue(value) { - return this.valueToKey.get(value) - } - clear() { - this.keyToValue.clear() - this.valueToKey.clear() - } -} -var Registry = class { - constructor(generateIdentifier) { - this.generateIdentifier = generateIdentifier - this.kv = new DoubleIndexedKV() - } - register(value, identifier) { - if (this.kv.getByValue(value)) { - return - } - if (!identifier) { - identifier = this.generateIdentifier(value) - } - this.kv.set(identifier, value) - } - clear() { - this.kv.clear() - } - getIdentifier(value) { - return this.kv.getByValue(value) - } - getValue(identifier) { - return this.kv.getByKey(identifier) - } -} -var ClassRegistry = class extends Registry { - constructor() { - super(c => c.name) - this.classToAllowedProps = /* @__PURE__ */ new Map() - } - register(value, options) { - if (typeof options === 'object') { - if (options.allowProps) { - this.classToAllowedProps.set(value, options.allowProps) - } - super.register(value, options.identifier) - } else { - super.register(value, options) - } - } - getAllowedProps(value) { - return this.classToAllowedProps.get(value) - } -} -init_esm_shims2() -init_esm_shims2() -function valuesOfObj(record) { - if ('values' in Object) { - return Object.values(record) - } - const values = [] - for (const key in record) { - if (record.hasOwnProperty(key)) { - values.push(record[key]) - } - } - return values -} -function find(record, predicate) { - const values = valuesOfObj(record) - if ('find' in values) { - return values.find(predicate) - } - const valuesNotNever = values - for (let i = 0; i < valuesNotNever.length; i++) { - const value = valuesNotNever[i] - if (predicate(value)) { - return value - } - } - return void 0 -} -function forEach(record, run) { - Object.entries(record).forEach(([key, value]) => run(value, key)) -} -function includes(arr, value) { - return arr.indexOf(value) !== -1 -} -function findArr(record, predicate) { - for (let i = 0; i < record.length; i++) { - const value = record[i] - if (predicate(value)) { - return value - } - } - return void 0 -} -var CustomTransformerRegistry = class { - constructor() { - this.transfomers = {} - } - register(transformer) { - this.transfomers[transformer.name] = transformer - } - findApplicable(v) { - return find(this.transfomers, transformer => transformer.isApplicable(v)) - } - findByName(name) { - return this.transfomers[name] - } -} -init_esm_shims2() -init_esm_shims2() -var getType = payload => Object.prototype.toString.call(payload).slice(8, -1) -var isUndefined = payload => typeof payload === 'undefined' -var isNull = payload => payload === null -var isPlainObject2 = payload => { - if (typeof payload !== 'object' || payload === null) return false - if (payload === Object.prototype) return false - if (Object.getPrototypeOf(payload) === null) return true - return Object.getPrototypeOf(payload) === Object.prototype -} -var isEmptyObject = payload => - isPlainObject2(payload) && Object.keys(payload).length === 0 -var isArray = payload => Array.isArray(payload) -var isString = payload => typeof payload === 'string' -var isNumber = payload => typeof payload === 'number' && !isNaN(payload) -var isBoolean = payload => typeof payload === 'boolean' -var isRegExp = payload => payload instanceof RegExp -var isMap = payload => payload instanceof Map -var isSet = payload => payload instanceof Set -var isSymbol = payload => getType(payload) === 'Symbol' -var isDate = payload => payload instanceof Date && !isNaN(payload.valueOf()) -var isError = payload => payload instanceof Error -var isNaNValue = payload => typeof payload === 'number' && isNaN(payload) -var isPrimitive2 = payload => - isBoolean(payload) || - isNull(payload) || - isUndefined(payload) || - isNumber(payload) || - isString(payload) || - isSymbol(payload) -var isBigint = payload => typeof payload === 'bigint' -var isInfinite = payload => payload === Infinity || payload === -Infinity -var isTypedArray = payload => - ArrayBuffer.isView(payload) && !(payload instanceof DataView) -var isURL = payload => payload instanceof URL -init_esm_shims2() -var escapeKey = key => key.replace(/\./g, '\\.') -var stringifyPath = path => path.map(String).map(escapeKey).join('.') -var parsePath = string => { - const result = [] - let segment = '' - for (let i = 0; i < string.length; i++) { - let char = string.charAt(i) - const isEscapedDot = char === '\\' && string.charAt(i + 1) === '.' - if (isEscapedDot) { - segment += '.' - i++ - continue - } - const isEndOfSegment = char === '.' - if (isEndOfSegment) { - result.push(segment) - segment = '' - continue - } - segment += char - } - const lastSegment = segment - result.push(lastSegment) - return result -} -init_esm_shims2() -function simpleTransformation( - isApplicable, - annotation, - transform, - untransform -) { - return { - isApplicable, - annotation, - transform, - untransform - } -} -var simpleRules = [ - simpleTransformation( - isUndefined, - 'undefined', - () => null, - () => void 0 - ), - simpleTransformation( - isBigint, - 'bigint', - v => v.toString(), - v => { - if (typeof BigInt !== 'undefined') { - return BigInt(v) - } - console.error('Please add a BigInt polyfill.') - return v - } - ), - simpleTransformation( - isDate, - 'Date', - v => v.toISOString(), - v => new Date(v) - ), - simpleTransformation( - isError, - 'Error', - (v, superJson) => { - const baseError = { - name: v.name, - message: v.message - } - superJson.allowedErrorProps.forEach(prop => { - baseError[prop] = v[prop] - }) - return baseError - }, - (v, superJson) => { - const e = new Error(v.message) - e.name = v.name - e.stack = v.stack - superJson.allowedErrorProps.forEach(prop => { - e[prop] = v[prop] - }) - return e - } - ), - simpleTransformation( - isRegExp, - 'regexp', - v => '' + v, - regex => { - const body = regex.slice(1, regex.lastIndexOf('/')) - const flags = regex.slice(regex.lastIndexOf('/') + 1) - return new RegExp(body, flags) - } - ), - simpleTransformation( - isSet, - 'set', - // (sets only exist in es6+) - // eslint-disable-next-line es5/no-es6-methods - v => [...v.values()], - v => new Set(v) - ), - simpleTransformation( - isMap, - 'map', - v => [...v.entries()], - v => new Map(v) - ), - simpleTransformation( - v => isNaNValue(v) || isInfinite(v), - 'number', - v => { - if (isNaNValue(v)) { - return 'NaN' - } - if (v > 0) { - return 'Infinity' - } else { - return '-Infinity' - } - }, - Number - ), - simpleTransformation( - v => v === 0 && 1 / v === -Infinity, - 'number', - () => { - return '-0' - }, - Number - ), - simpleTransformation( - isURL, - 'URL', - v => v.toString(), - v => new URL(v) - ) -] -function compositeTransformation( - isApplicable, - annotation, - transform, - untransform -) { - return { - isApplicable, - annotation, - transform, - untransform - } -} -var symbolRule = compositeTransformation( - (s, superJson) => { - if (isSymbol(s)) { - const isRegistered = !!superJson.symbolRegistry.getIdentifier(s) - return isRegistered - } - return false - }, - (s, superJson) => { - const identifier = superJson.symbolRegistry.getIdentifier(s) - return ['symbol', identifier] - }, - v => v.description, - (_, a, superJson) => { - const value = superJson.symbolRegistry.getValue(a[1]) - if (!value) { - throw new Error('Trying to deserialize unknown symbol') - } - return value - } -) -var constructorToName = [ - Int8Array, - Uint8Array, - Int16Array, - Uint16Array, - Int32Array, - Uint32Array, - Float32Array, - Float64Array, - Uint8ClampedArray -].reduce((obj, ctor) => { - obj[ctor.name] = ctor - return obj -}, {}) -var typedArrayRule = compositeTransformation( - isTypedArray, - v => ['typed-array', v.constructor.name], - v => [...v], - (v, a) => { - const ctor = constructorToName[a[1]] - if (!ctor) { - throw new Error('Trying to deserialize unknown typed array') - } - return new ctor(v) - } -) -function isInstanceOfRegisteredClass(potentialClass, superJson) { - if (potentialClass == null ? void 0 : potentialClass.constructor) { - const isRegistered = !!superJson.classRegistry.getIdentifier( - potentialClass.constructor - ) - return isRegistered - } - return false -} -var classRule = compositeTransformation( - isInstanceOfRegisteredClass, - (clazz, superJson) => { - const identifier = superJson.classRegistry.getIdentifier(clazz.constructor) - return ['class', identifier] - }, - (clazz, superJson) => { - const allowedProps = superJson.classRegistry.getAllowedProps( - clazz.constructor - ) - if (!allowedProps) { - return { ...clazz } - } - const result = {} - allowedProps.forEach(prop => { - result[prop] = clazz[prop] - }) - return result - }, - (v, a, superJson) => { - const clazz = superJson.classRegistry.getValue(a[1]) - if (!clazz) { - throw new Error( - 'Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564' - ) - } - return Object.assign(Object.create(clazz.prototype), v) - } -) -var customRule = compositeTransformation( - (value, superJson) => { - return !!superJson.customTransformerRegistry.findApplicable(value) - }, - (value, superJson) => { - const transformer = - superJson.customTransformerRegistry.findApplicable(value) - return ['custom', transformer.name] - }, - (value, superJson) => { - const transformer = - superJson.customTransformerRegistry.findApplicable(value) - return transformer.serialize(value) - }, - (v, a, superJson) => { - const transformer = superJson.customTransformerRegistry.findByName(a[1]) - if (!transformer) { - throw new Error('Trying to deserialize unknown custom value') - } - return transformer.deserialize(v) - } -) -var compositeRules = [classRule, symbolRule, customRule, typedArrayRule] -var transformValue = (value, superJson) => { - const applicableCompositeRule = findArr(compositeRules, rule => - rule.isApplicable(value, superJson) - ) - if (applicableCompositeRule) { - return { - value: applicableCompositeRule.transform(value, superJson), - type: applicableCompositeRule.annotation(value, superJson) - } - } - const applicableSimpleRule = findArr(simpleRules, rule => - rule.isApplicable(value, superJson) - ) - if (applicableSimpleRule) { - return { - value: applicableSimpleRule.transform(value, superJson), - type: applicableSimpleRule.annotation - } - } - return void 0 -} -var simpleRulesByAnnotation = {} -simpleRules.forEach(rule => { - simpleRulesByAnnotation[rule.annotation] = rule -}) -var untransformValue = (json, type, superJson) => { - if (isArray(type)) { - switch (type[0]) { - case 'symbol': - return symbolRule.untransform(json, type, superJson) - case 'class': - return classRule.untransform(json, type, superJson) - case 'custom': - return customRule.untransform(json, type, superJson) - case 'typed-array': - return typedArrayRule.untransform(json, type, superJson) - default: - throw new Error('Unknown transformation: ' + type) - } - } else { - const transformation = simpleRulesByAnnotation[type] - if (!transformation) { - throw new Error('Unknown transformation: ' + type) - } - return transformation.untransform(json, superJson) - } -} -init_esm_shims2() -var getNthKey = (value, n) => { - const keys = value.keys() - while (n > 0) { - keys.next() - n-- - } - return keys.next().value -} -function validatePath(path) { - if (includes(path, '__proto__')) { - throw new Error('__proto__ is not allowed as a property') - } - if (includes(path, 'prototype')) { - throw new Error('prototype is not allowed as a property') - } - if (includes(path, 'constructor')) { - throw new Error('constructor is not allowed as a property') - } -} -var getDeep = (object, path) => { - validatePath(path) - for (let i = 0; i < path.length; i++) { - const key = path[i] - if (isSet(object)) { - object = getNthKey(object, +key) - } else if (isMap(object)) { - const row = +key - const type = +path[++i] === 0 ? 'key' : 'value' - const keyOfRow = getNthKey(object, row) - switch (type) { - case 'key': - object = keyOfRow - break - case 'value': - object = object.get(keyOfRow) - break - } - } else { - object = object[key] - } - } - return object -} -var setDeep = (object, path, mapper) => { - validatePath(path) - if (path.length === 0) { - return mapper(object) - } - let parent = object - for (let i = 0; i < path.length - 1; i++) { - const key = path[i] - if (isArray(parent)) { - const index = +key - parent = parent[index] - } else if (isPlainObject2(parent)) { - parent = parent[key] - } else if (isSet(parent)) { - const row = +key - parent = getNthKey(parent, row) - } else if (isMap(parent)) { - const isEnd = i === path.length - 2 - if (isEnd) { - break - } - const row = +key - const type = +path[++i] === 0 ? 'key' : 'value' - const keyOfRow = getNthKey(parent, row) - switch (type) { - case 'key': - parent = keyOfRow - break - case 'value': - parent = parent.get(keyOfRow) - break - } - } - } - const lastKey = path[path.length - 1] - if (isArray(parent)) { - parent[+lastKey] = mapper(parent[+lastKey]) - } else if (isPlainObject2(parent)) { - parent[lastKey] = mapper(parent[lastKey]) - } - if (isSet(parent)) { - const oldValue = getNthKey(parent, +lastKey) - const newValue = mapper(oldValue) - if (oldValue !== newValue) { - parent.delete(oldValue) - parent.add(newValue) - } - } - if (isMap(parent)) { - const row = +path[path.length - 2] - const keyToRow = getNthKey(parent, row) - const type = +lastKey === 0 ? 'key' : 'value' - switch (type) { - case 'key': { - const newKey = mapper(keyToRow) - parent.set(newKey, parent.get(keyToRow)) - if (newKey !== keyToRow) { - parent.delete(keyToRow) - } - break - } - case 'value': { - parent.set(keyToRow, mapper(parent.get(keyToRow))) - break - } - } - } - return object -} -function traverse(tree, walker2, origin = []) { - if (!tree) { - return - } - if (!isArray(tree)) { - forEach(tree, (subtree, key) => - traverse(subtree, walker2, [...origin, ...parsePath(key)]) - ) - return - } - const [nodeValue, children] = tree - if (children) { - forEach(children, (child, key) => { - traverse(child, walker2, [...origin, ...parsePath(key)]) - }) - } - walker2(nodeValue, origin) -} -function applyValueAnnotations(plain, annotations, superJson) { - traverse(annotations, (type, path) => { - plain = setDeep(plain, path, v => untransformValue(v, type, superJson)) - }) - return plain -} -function applyReferentialEqualityAnnotations(plain, annotations) { - function apply(identicalPaths, path) { - const object = getDeep(plain, parsePath(path)) - identicalPaths.map(parsePath).forEach(identicalObjectPath => { - plain = setDeep(plain, identicalObjectPath, () => object) - }) - } - if (isArray(annotations)) { - const [root, other] = annotations - root.forEach(identicalPath => { - plain = setDeep(plain, parsePath(identicalPath), () => plain) - }) - if (other) { - forEach(other, apply) - } - } else { - forEach(annotations, apply) - } - return plain -} -var isDeep = (object, superJson) => - isPlainObject2(object) || - isArray(object) || - isMap(object) || - isSet(object) || - isInstanceOfRegisteredClass(object, superJson) -function addIdentity(object, path, identities) { - const existingSet = identities.get(object) - if (existingSet) { - existingSet.push(path) - } else { - identities.set(object, [path]) - } -} -function generateReferentialEqualityAnnotations(identitites, dedupe) { - const result = {} - let rootEqualityPaths = void 0 - identitites.forEach(paths => { - if (paths.length <= 1) { - return - } - if (!dedupe) { - paths = paths - .map(path => path.map(String)) - .sort((a, b) => a.length - b.length) - } - const [representativePath, ...identicalPaths] = paths - if (representativePath.length === 0) { - rootEqualityPaths = identicalPaths.map(stringifyPath) - } else { - result[stringifyPath(representativePath)] = - identicalPaths.map(stringifyPath) - } - }) - if (rootEqualityPaths) { - if (isEmptyObject(result)) { - return [rootEqualityPaths] - } else { - return [rootEqualityPaths, result] - } - } else { - return isEmptyObject(result) ? void 0 : result - } -} -var walker = ( - object, - identities, - superJson, - dedupe, - path = [], - objectsInThisPath = [], - seenObjects = /* @__PURE__ */ new Map() -) => { - var _a25 - const primitive = isPrimitive2(object) - if (!primitive) { - addIdentity(object, path, identities) - const seen = seenObjects.get(object) - if (seen) { - return dedupe - ? { - transformedValue: null - } - : seen - } - } - if (!isDeep(object, superJson)) { - const transformed2 = transformValue(object, superJson) - const result2 = transformed2 - ? { - transformedValue: transformed2.value, - annotations: [transformed2.type] - } - : { - transformedValue: object - } - if (!primitive) { - seenObjects.set(object, result2) - } - return result2 - } - if (includes(objectsInThisPath, object)) { - return { - transformedValue: null - } - } - const transformationResult = transformValue(object, superJson) - const transformed = - (_a25 = - transformationResult == null ? void 0 : transformationResult.value) != - null - ? _a25 - : object - const transformedValue = isArray(transformed) ? [] : {} - const innerAnnotations = {} - forEach(transformed, (value, index) => { - if ( - index === '__proto__' || - index === 'constructor' || - index === 'prototype' - ) { - throw new Error( - `Detected property ${index}. This is a prototype pollution risk, please remove it from your object.` - ) - } - const recursiveResult = walker( - value, - identities, - superJson, - dedupe, - [...path, index], - [...objectsInThisPath, object], - seenObjects - ) - transformedValue[index] = recursiveResult.transformedValue - if (isArray(recursiveResult.annotations)) { - innerAnnotations[index] = recursiveResult.annotations - } else if (isPlainObject2(recursiveResult.annotations)) { - forEach(recursiveResult.annotations, (tree, key) => { - innerAnnotations[escapeKey(index) + '.' + key] = tree - }) - } - }) - const result = isEmptyObject(innerAnnotations) - ? { - transformedValue, - annotations: !!transformationResult - ? [transformationResult.type] - : void 0 - } - : { - transformedValue, - annotations: !!transformationResult - ? [transformationResult.type, innerAnnotations] - : innerAnnotations - } - if (!primitive) { - seenObjects.set(object, result) - } - return result -} -init_esm_shims2() -init_esm_shims2() -function getType2(payload) { - return Object.prototype.toString.call(payload).slice(8, -1) -} -function isArray2(payload) { - return getType2(payload) === 'Array' -} -function isPlainObject3(payload) { - if (getType2(payload) !== 'Object') return false - const prototype = Object.getPrototypeOf(payload) - return ( - !!prototype && - prototype.constructor === Object && - prototype === Object.prototype - ) -} -function isNull2(payload) { - return getType2(payload) === 'Null' -} -function isOneOf(a, b, c, d, e) { - return value => - a(value) || - b(value) || - (!!c && c(value)) || - (!!d && d(value)) || - (!!e && e(value)) -} -function isUndefined2(payload) { - return getType2(payload) === 'Undefined' -} -var isNullOrUndefined = isOneOf(isNull2, isUndefined2) -function assignProp(carry, key, newVal, originalObject, includeNonenumerable) { - const propType = {}.propertyIsEnumerable.call(originalObject, key) - ? 'enumerable' - : 'nonenumerable' - if (propType === 'enumerable') carry[key] = newVal - if (includeNonenumerable && propType === 'nonenumerable') { - Object.defineProperty(carry, key, { - value: newVal, - enumerable: false, - writable: true, - configurable: true - }) - } -} -function copy(target22, options = {}) { - if (isArray2(target22)) { - return target22.map(item => copy(item, options)) - } - if (!isPlainObject3(target22)) { - return target22 - } - const props = Object.getOwnPropertyNames(target22) - const symbols = Object.getOwnPropertySymbols(target22) - return [...props, ...symbols].reduce((carry, key) => { - if (isArray2(options.props) && !options.props.includes(key)) { - return carry - } - const val = target22[key] - const newVal = copy(val, options) - assignProp(carry, key, newVal, target22, options.nonenumerable) - return carry - }, {}) -} -var SuperJSON = class { - /** - * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`. - */ - constructor({ dedupe = false } = {}) { - this.classRegistry = new ClassRegistry() - this.symbolRegistry = new Registry(s => { - var _a25 - return (_a25 = s.description) != null ? _a25 : '' - }) - this.customTransformerRegistry = new CustomTransformerRegistry() - this.allowedErrorProps = [] - this.dedupe = dedupe - } - serialize(object) { - const identities = /* @__PURE__ */ new Map() - const output = walker(object, identities, this, this.dedupe) - const res = { - json: output.transformedValue - } - if (output.annotations) { - res.meta = { - ...res.meta, - values: output.annotations - } - } - const equalityAnnotations = generateReferentialEqualityAnnotations( - identities, - this.dedupe - ) - if (equalityAnnotations) { - res.meta = { - ...res.meta, - referentialEqualities: equalityAnnotations - } - } - return res - } - deserialize(payload) { - const { json, meta } = payload - let result = copy(json) - if (meta == null ? void 0 : meta.values) { - result = applyValueAnnotations(result, meta.values, this) - } - if (meta == null ? void 0 : meta.referentialEqualities) { - result = applyReferentialEqualityAnnotations( - result, - meta.referentialEqualities - ) - } - return result - } - stringify(object) { - return JSON.stringify(this.serialize(object)) - } - parse(string) { - return this.deserialize(JSON.parse(string)) - } - registerClass(v, options) { - this.classRegistry.register(v, options) - } - registerSymbol(v, identifier) { - this.symbolRegistry.register(v, identifier) - } - registerCustom(transformer, name) { - this.customTransformerRegistry.register({ - name, - ...transformer - }) - } - allowErrorProps(...props) { - this.allowedErrorProps.push(...props) - } -} -SuperJSON.defaultInstance = new SuperJSON() -SuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind( - SuperJSON.defaultInstance -) -SuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind( - SuperJSON.defaultInstance -) -SuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind( - SuperJSON.defaultInstance -) -SuperJSON.parse = SuperJSON.defaultInstance.parse.bind( - SuperJSON.defaultInstance -) -SuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind( - SuperJSON.defaultInstance -) -SuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind( - SuperJSON.defaultInstance -) -SuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind( - SuperJSON.defaultInstance -) -SuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind( - SuperJSON.defaultInstance -) -var serialize = SuperJSON.serialize -var deserialize = SuperJSON.deserialize -var stringify = SuperJSON.stringify -var parse = SuperJSON.parse -var registerClass = SuperJSON.registerClass -var registerCustom = SuperJSON.registerCustom -var registerSymbol = SuperJSON.registerSymbol -var allowErrorProps = SuperJSON.allowErrorProps -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var _a19 -var _b19 -;(_b19 = (_a19 = target).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__) != null - ? _b19 - : (_a19.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__ = []) -var _a20 -var _b20 -;(_b20 = (_a20 = target).__VUE_DEVTOOLS_KIT_RPC_CLIENT__) != null - ? _b20 - : (_a20.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ = null) -var _a21 -var _b21 -;(_b21 = (_a21 = target).__VUE_DEVTOOLS_KIT_RPC_SERVER__) != null - ? _b21 - : (_a21.__VUE_DEVTOOLS_KIT_RPC_SERVER__ = null) -var _a222 -var _b22 -;(_b22 = (_a222 = target).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__) != null - ? _b22 - : (_a222.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ = null) -var _a23 -var _b23 -;(_b23 = (_a23 = target).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__) != null - ? _b23 - : (_a23.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ = null) -var _a24 -var _b24 -;(_b24 = (_a24 = target).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__) != null - ? _b24 - : (_a24.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__ = null) -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -init_esm_shims2() -var MAX_SERIALIZED_SIZE = 2 * 1024 * 1024 -export { - addCustomCommand, - addCustomTab, - onDevToolsClientConnected, - onDevToolsConnected, - removeCustomCommand, - setupDevToolsPlugin, - setupDevToolsPlugin as setupDevtoolsPlugin -} -//# sourceMappingURL=vitepress___@vue_devtools-api.js.map diff --git a/website/src/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map b/website/src/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map deleted file mode 100644 index 3b6107d3..00000000 --- a/website/src/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../node_modules/.pnpm/@vue+devtools-shared@7.6.1/node_modules/@vue/devtools-shared/dist/index.js", "../../../../node_modules/.pnpm/perfect-debounce@1.0.0/node_modules/perfect-debounce/dist/index.mjs", "../../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs", "../../../../node_modules/.pnpm/birpc@0.2.19/node_modules/birpc/dist/index.mjs", "../../../../node_modules/.pnpm/@vue+devtools-kit@7.6.1/node_modules/@vue/devtools-kit/dist/index.js"], - "sourcesContent": ["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target2) => (target2 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target2, \"default\", { value: mod, enumerable: true }) : target2,\n mod\n));\n\n// ../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.14__@swc+core@1.5.29_jiti@2.0.0__utvtwgyeu6xd57udthcnogp47u/node_modules/tsup/assets/esm_shims.js\nvar init_esm_shims = __esm({\n \"../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.14__@swc+core@1.5.29_jiti@2.0.0__utvtwgyeu6xd57udthcnogp47u/node_modules/tsup/assets/esm_shims.js\"() {\n \"use strict\";\n }\n});\n\n// ../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js\nvar require_rfdc = __commonJS({\n \"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js\"(exports, module) {\n \"use strict\";\n init_esm_shims();\n module.exports = rfdc2;\n function copyBuffer(cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur);\n }\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length);\n }\n function rfdc2(opts) {\n opts = opts || {};\n if (opts.circles) return rfdcCircles(opts);\n const constructorHandlers = /* @__PURE__ */ new Map();\n constructorHandlers.set(Date, (o) => new Date(o));\n constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)));\n constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)));\n if (opts.constructorHandlers) {\n for (const handler2 of opts.constructorHandlers) {\n constructorHandlers.set(handler2[0], handler2[1]);\n }\n }\n let handler = null;\n return opts.proto ? cloneProto : clone;\n function cloneArray(a, fn) {\n const keys = Object.keys(a);\n const a2 = new Array(keys.length);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n const cur = a[k];\n if (typeof cur !== \"object\" || cur === null) {\n a2[k] = cur;\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n a2[k] = handler(cur, fn);\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur);\n } else {\n a2[k] = fn(cur);\n }\n }\n return a2;\n }\n function clone(o) {\n if (typeof o !== \"object\" || o === null) return o;\n if (Array.isArray(o)) return cloneArray(o, clone);\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, clone);\n }\n const o2 = {};\n for (const k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue;\n const cur = o[k];\n if (typeof cur !== \"object\" || cur === null) {\n o2[k] = cur;\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, clone);\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur);\n } else {\n o2[k] = clone(cur);\n }\n }\n return o2;\n }\n function cloneProto(o) {\n if (typeof o !== \"object\" || o === null) return o;\n if (Array.isArray(o)) return cloneArray(o, cloneProto);\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, cloneProto);\n }\n const o2 = {};\n for (const k in o) {\n const cur = o[k];\n if (typeof cur !== \"object\" || cur === null) {\n o2[k] = cur;\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, cloneProto);\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur);\n } else {\n o2[k] = cloneProto(cur);\n }\n }\n return o2;\n }\n }\n function rfdcCircles(opts) {\n const refs = [];\n const refsNew = [];\n const constructorHandlers = /* @__PURE__ */ new Map();\n constructorHandlers.set(Date, (o) => new Date(o));\n constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)));\n constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)));\n if (opts.constructorHandlers) {\n for (const handler2 of opts.constructorHandlers) {\n constructorHandlers.set(handler2[0], handler2[1]);\n }\n }\n let handler = null;\n return opts.proto ? cloneProto : clone;\n function cloneArray(a, fn) {\n const keys = Object.keys(a);\n const a2 = new Array(keys.length);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n const cur = a[k];\n if (typeof cur !== \"object\" || cur === null) {\n a2[k] = cur;\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n a2[k] = handler(cur, fn);\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur);\n } else {\n const index = refs.indexOf(cur);\n if (index !== -1) {\n a2[k] = refsNew[index];\n } else {\n a2[k] = fn(cur);\n }\n }\n }\n return a2;\n }\n function clone(o) {\n if (typeof o !== \"object\" || o === null) return o;\n if (Array.isArray(o)) return cloneArray(o, clone);\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, clone);\n }\n const o2 = {};\n refs.push(o);\n refsNew.push(o2);\n for (const k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue;\n const cur = o[k];\n if (typeof cur !== \"object\" || cur === null) {\n o2[k] = cur;\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, clone);\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur);\n } else {\n const i = refs.indexOf(cur);\n if (i !== -1) {\n o2[k] = refsNew[i];\n } else {\n o2[k] = clone(cur);\n }\n }\n }\n refs.pop();\n refsNew.pop();\n return o2;\n }\n function cloneProto(o) {\n if (typeof o !== \"object\" || o === null) return o;\n if (Array.isArray(o)) return cloneArray(o, cloneProto);\n if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n return handler(o, cloneProto);\n }\n const o2 = {};\n refs.push(o);\n refsNew.push(o2);\n for (const k in o) {\n const cur = o[k];\n if (typeof cur !== \"object\" || cur === null) {\n o2[k] = cur;\n } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n o2[k] = handler(cur, cloneProto);\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur);\n } else {\n const i = refs.indexOf(cur);\n if (i !== -1) {\n o2[k] = refsNew[i];\n } else {\n o2[k] = cloneProto(cur);\n }\n }\n }\n refs.pop();\n refsNew.pop();\n return o2;\n }\n }\n }\n});\n\n// src/index.ts\ninit_esm_shims();\n\n// src/constants.ts\ninit_esm_shims();\nvar VIEW_MODE_STORAGE_KEY = \"__vue-devtools-view-mode__\";\nvar VITE_PLUGIN_DETECTED_STORAGE_KEY = \"__vue-devtools-vite-plugin-detected__\";\nvar VITE_PLUGIN_CLIENT_URL_STORAGE_KEY = \"__vue-devtools-vite-plugin-client-url__\";\nvar BROADCAST_CHANNEL_NAME = \"__vue-devtools-broadcast-channel__\";\n\n// src/env.ts\ninit_esm_shims();\nvar isBrowser = typeof navigator !== \"undefined\";\nvar target = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : typeof global !== \"undefined\" ? global : {};\nvar isInChromePanel = typeof target.chrome !== \"undefined\" && !!target.chrome.devtools;\nvar isInIframe = isBrowser && target.self !== target.top;\nvar _a;\nvar isInElectron = typeof navigator !== \"undefined\" && ((_a = navigator.userAgent) == null ? void 0 : _a.toLowerCase().includes(\"electron\"));\nvar isNuxtApp = typeof window !== \"undefined\" && !!window.__NUXT__;\nvar isInSeparateWindow = !isInIframe && !isInChromePanel && !isInElectron;\n\n// src/general.ts\ninit_esm_shims();\nvar import_rfdc = __toESM(require_rfdc(), 1);\nfunction NOOP() {\n}\nvar isNumeric = (str) => `${+str}` === str;\nvar isMacOS = () => (navigator == null ? void 0 : navigator.platform) ? navigator == null ? void 0 : navigator.platform.toLowerCase().includes(\"mac\") : /Macintosh/.test(navigator.userAgent);\nvar classifyRE = /(?:^|[-_/])(\\w)/g;\nvar camelizeRE = /-(\\w)/g;\nvar kebabizeRE = /([a-z0-9])([A-Z])/g;\nfunction toUpper(_, c) {\n return c ? c.toUpperCase() : \"\";\n}\nfunction classify(str) {\n return str && `${str}`.replace(classifyRE, toUpper);\n}\nfunction camelize(str) {\n return str && str.replace(camelizeRE, toUpper);\n}\nfunction kebabize(str) {\n return str && str.replace(kebabizeRE, (_, lowerCaseCharacter, upperCaseLetter) => {\n return `${lowerCaseCharacter}-${upperCaseLetter}`;\n }).toLowerCase();\n}\nfunction basename(filename, ext) {\n let normalizedFilename = filename.replace(/^[a-z]:/i, \"\").replace(/\\\\/g, \"/\");\n if (normalizedFilename.endsWith(`index${ext}`)) {\n normalizedFilename = normalizedFilename.replace(`/index${ext}`, ext);\n }\n const lastSlashIndex = normalizedFilename.lastIndexOf(\"/\");\n const baseNameWithExt = normalizedFilename.substring(lastSlashIndex + 1);\n if (ext) {\n const extIndex = baseNameWithExt.lastIndexOf(ext);\n return baseNameWithExt.substring(0, extIndex);\n }\n return \"\";\n}\nfunction sortByKey(state) {\n return state && state.slice().sort((a, b) => {\n if (a.key < b.key)\n return -1;\n if (a.key > b.key)\n return 1;\n return 0;\n });\n}\nvar HTTP_URL_RE = /^https?:\\/\\//;\nfunction isUrlString(str) {\n return str.startsWith(\"/\") || HTTP_URL_RE.test(str);\n}\nvar deepClone = (0, import_rfdc.default)({ circles: true });\nfunction randomStr() {\n return Math.random().toString(36).slice(2);\n}\nfunction isObject(value) {\n return typeof value === \"object\" && !Array.isArray(value) && value !== null;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isSet(value) {\n return value instanceof Set;\n}\nfunction isMap(value) {\n return value instanceof Map;\n}\nexport {\n BROADCAST_CHANNEL_NAME,\n NOOP,\n VIEW_MODE_STORAGE_KEY,\n VITE_PLUGIN_CLIENT_URL_STORAGE_KEY,\n VITE_PLUGIN_DETECTED_STORAGE_KEY,\n basename,\n camelize,\n classify,\n deepClone,\n isArray,\n isBrowser,\n isInChromePanel,\n isInElectron,\n isInIframe,\n isInSeparateWindow,\n isMacOS,\n isMap,\n isNumeric,\n isNuxtApp,\n isObject,\n isSet,\n isUrlString,\n kebabize,\n randomStr,\n sortByKey,\n target\n};\n", "const DEBOUNCE_DEFAULTS = {\n trailing: true\n};\nfunction debounce(fn, wait = 25, options = {}) {\n options = { ...DEBOUNCE_DEFAULTS, ...options };\n if (!Number.isFinite(wait)) {\n throw new TypeError(\"Expected `wait` to be a finite number\");\n }\n let leadingValue;\n let timeout;\n let resolveList = [];\n let currentPromise;\n let trailingArgs;\n const applyFn = (_this, args) => {\n currentPromise = _applyPromised(fn, _this, args);\n currentPromise.finally(() => {\n currentPromise = null;\n if (options.trailing && trailingArgs && !timeout) {\n const promise = applyFn(_this, trailingArgs);\n trailingArgs = null;\n return promise;\n }\n });\n return currentPromise;\n };\n return function(...args) {\n if (currentPromise) {\n if (options.trailing) {\n trailingArgs = args;\n }\n return currentPromise;\n }\n return new Promise((resolve) => {\n const shouldCallNow = !timeout && options.leading;\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n const promise = options.leading ? leadingValue : applyFn(this, args);\n for (const _resolve of resolveList) {\n _resolve(promise);\n }\n resolveList = [];\n }, wait);\n if (shouldCallNow) {\n leadingValue = applyFn(this, args);\n resolve(leadingValue);\n } else {\n resolveList.push(resolve);\n }\n });\n };\n}\nasync function _applyPromised(fn, _this, args) {\n return await fn.apply(_this, args);\n}\n\nexport { debounce };\n", "function flatHooks(configHooks, hooks = {}, parentName) {\n for (const key in configHooks) {\n const subHook = configHooks[key];\n const name = parentName ? `${parentName}:${key}` : key;\n if (typeof subHook === \"object\" && subHook !== null) {\n flatHooks(subHook, hooks, name);\n } else if (typeof subHook === \"function\") {\n hooks[name] = subHook;\n }\n }\n return hooks;\n}\nfunction mergeHooks(...hooks) {\n const finalHooks = {};\n for (const hook of hooks) {\n const flatenHook = flatHooks(hook);\n for (const key in flatenHook) {\n if (finalHooks[key]) {\n finalHooks[key].push(flatenHook[key]);\n } else {\n finalHooks[key] = [flatenHook[key]];\n }\n }\n }\n for (const key in finalHooks) {\n if (finalHooks[key].length > 1) {\n const array = finalHooks[key];\n finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));\n } else {\n finalHooks[key] = finalHooks[key][0];\n }\n }\n return finalHooks;\n}\nfunction serial(tasks, function_) {\n return tasks.reduce(\n (promise, task) => promise.then(() => function_(task)),\n Promise.resolve()\n );\n}\nconst defaultTask = { run: (function_) => function_() };\nconst _createTask = () => defaultTask;\nconst createTask = typeof console.createTask !== \"undefined\" ? console.createTask : _createTask;\nfunction serialTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),\n Promise.resolve()\n );\n}\nfunction parallelTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));\n}\nfunction serialCaller(hooks, arguments_) {\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),\n Promise.resolve()\n );\n}\nfunction parallelCaller(hooks, args) {\n return Promise.all(hooks.map((hook) => hook(...args || [])));\n}\nfunction callEachWith(callbacks, arg0) {\n for (const callback of [...callbacks]) {\n callback(arg0);\n }\n}\n\nclass Hookable {\n constructor() {\n this._hooks = {};\n this._before = void 0;\n this._after = void 0;\n this._deprecatedMessages = void 0;\n this._deprecatedHooks = {};\n this.hook = this.hook.bind(this);\n this.callHook = this.callHook.bind(this);\n this.callHookWith = this.callHookWith.bind(this);\n }\n hook(name, function_, options = {}) {\n if (!name || typeof function_ !== \"function\") {\n return () => {\n };\n }\n const originalName = name;\n let dep;\n while (this._deprecatedHooks[name]) {\n dep = this._deprecatedHooks[name];\n name = dep.to;\n }\n if (dep && !options.allowDeprecated) {\n let message = dep.message;\n if (!message) {\n message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : \"\");\n }\n if (!this._deprecatedMessages) {\n this._deprecatedMessages = /* @__PURE__ */ new Set();\n }\n if (!this._deprecatedMessages.has(message)) {\n console.warn(message);\n this._deprecatedMessages.add(message);\n }\n }\n if (!function_.name) {\n try {\n Object.defineProperty(function_, \"name\", {\n get: () => \"_\" + name.replace(/\\W+/g, \"_\") + \"_hook_cb\",\n configurable: true\n });\n } catch {\n }\n }\n this._hooks[name] = this._hooks[name] || [];\n this._hooks[name].push(function_);\n return () => {\n if (function_) {\n this.removeHook(name, function_);\n function_ = void 0;\n }\n };\n }\n hookOnce(name, function_) {\n let _unreg;\n let _function = (...arguments_) => {\n if (typeof _unreg === \"function\") {\n _unreg();\n }\n _unreg = void 0;\n _function = void 0;\n return function_(...arguments_);\n };\n _unreg = this.hook(name, _function);\n return _unreg;\n }\n removeHook(name, function_) {\n if (this._hooks[name]) {\n const index = this._hooks[name].indexOf(function_);\n if (index !== -1) {\n this._hooks[name].splice(index, 1);\n }\n if (this._hooks[name].length === 0) {\n delete this._hooks[name];\n }\n }\n }\n deprecateHook(name, deprecated) {\n this._deprecatedHooks[name] = typeof deprecated === \"string\" ? { to: deprecated } : deprecated;\n const _hooks = this._hooks[name] || [];\n delete this._hooks[name];\n for (const hook of _hooks) {\n this.hook(name, hook);\n }\n }\n deprecateHooks(deprecatedHooks) {\n Object.assign(this._deprecatedHooks, deprecatedHooks);\n for (const name in deprecatedHooks) {\n this.deprecateHook(name, deprecatedHooks[name]);\n }\n }\n addHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n const removeFns = Object.keys(hooks).map(\n (key) => this.hook(key, hooks[key])\n );\n return () => {\n for (const unreg of removeFns.splice(0, removeFns.length)) {\n unreg();\n }\n };\n }\n removeHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n for (const key in hooks) {\n this.removeHook(key, hooks[key]);\n }\n }\n removeAllHooks() {\n for (const key in this._hooks) {\n delete this._hooks[key];\n }\n }\n callHook(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(serialTaskCaller, name, ...arguments_);\n }\n callHookParallel(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(parallelTaskCaller, name, ...arguments_);\n }\n callHookWith(caller, name, ...arguments_) {\n const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;\n if (this._before) {\n callEachWith(this._before, event);\n }\n const result = caller(\n name in this._hooks ? [...this._hooks[name]] : [],\n arguments_\n );\n if (result instanceof Promise) {\n return result.finally(() => {\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n });\n }\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n return result;\n }\n beforeEach(function_) {\n this._before = this._before || [];\n this._before.push(function_);\n return () => {\n if (this._before !== void 0) {\n const index = this._before.indexOf(function_);\n if (index !== -1) {\n this._before.splice(index, 1);\n }\n }\n };\n }\n afterEach(function_) {\n this._after = this._after || [];\n this._after.push(function_);\n return () => {\n if (this._after !== void 0) {\n const index = this._after.indexOf(function_);\n if (index !== -1) {\n this._after.splice(index, 1);\n }\n }\n };\n }\n}\nfunction createHooks() {\n return new Hookable();\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction createDebugger(hooks, _options = {}) {\n const options = {\n inspect: isBrowser,\n group: isBrowser,\n filter: () => true,\n ..._options\n };\n const _filter = options.filter;\n const filter = typeof _filter === \"string\" ? (name) => name.startsWith(_filter) : _filter;\n const _tag = options.tag ? `[${options.tag}] ` : \"\";\n const logPrefix = (event) => _tag + event.name + \"\".padEnd(event._id, \"\\0\");\n const _idCtr = {};\n const unsubscribeBefore = hooks.beforeEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n _idCtr[event.name] = _idCtr[event.name] || 0;\n event._id = _idCtr[event.name]++;\n console.time(logPrefix(event));\n });\n const unsubscribeAfter = hooks.afterEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n if (options.group) {\n console.groupCollapsed(event.name);\n }\n if (options.inspect) {\n console.timeLog(logPrefix(event), event.args);\n } else {\n console.timeEnd(logPrefix(event));\n }\n if (options.group) {\n console.groupEnd();\n }\n _idCtr[event.name]--;\n });\n return {\n /** Stop debugging and remove listeners */\n close: () => {\n unsubscribeBefore();\n unsubscribeAfter();\n }\n };\n}\n\nexport { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };\n", "const DEFAULT_TIMEOUT = 6e4;\nfunction defaultSerialize(i) {\n return i;\n}\nconst defaultDeserialize = defaultSerialize;\nconst { clearTimeout, setTimeout } = globalThis;\nconst random = Math.random.bind(Math);\nfunction createBirpc(functions, options) {\n const {\n post,\n on,\n off = () => {\n },\n eventNames = [],\n serialize = defaultSerialize,\n deserialize = defaultDeserialize,\n resolver,\n bind = \"rpc\",\n timeout = DEFAULT_TIMEOUT\n } = options;\n const rpcPromiseMap = /* @__PURE__ */ new Map();\n let _promise;\n let closed = false;\n const rpc = new Proxy({}, {\n get(_, method) {\n if (method === \"$functions\")\n return functions;\n if (method === \"$close\")\n return close;\n if (method === \"then\" && !eventNames.includes(\"then\") && !(\"then\" in functions))\n return void 0;\n const sendEvent = (...args) => {\n post(serialize({ m: method, a: args, t: \"q\" }));\n };\n if (eventNames.includes(method)) {\n sendEvent.asEvent = sendEvent;\n return sendEvent;\n }\n const sendCall = async (...args) => {\n if (closed)\n throw new Error(`[birpc] rpc is closed, cannot call \"${method}\"`);\n if (_promise) {\n try {\n await _promise;\n } finally {\n _promise = void 0;\n }\n }\n return new Promise((resolve, reject) => {\n const id = nanoid();\n let timeoutId;\n if (timeout >= 0) {\n timeoutId = setTimeout(() => {\n try {\n options.onTimeoutError?.(method, args);\n throw new Error(`[birpc] timeout on calling \"${method}\"`);\n } catch (e) {\n reject(e);\n }\n rpcPromiseMap.delete(id);\n }, timeout);\n if (typeof timeoutId === \"object\")\n timeoutId = timeoutId.unref?.();\n }\n rpcPromiseMap.set(id, { resolve, reject, timeoutId, method });\n post(serialize({ m: method, a: args, i: id, t: \"q\" }));\n });\n };\n sendCall.asEvent = sendEvent;\n return sendCall;\n }\n });\n function close() {\n closed = true;\n rpcPromiseMap.forEach(({ reject, method }) => {\n reject(new Error(`[birpc] rpc is closed, cannot call \"${method}\"`));\n });\n rpcPromiseMap.clear();\n off(onMessage);\n }\n async function onMessage(data, ...extra) {\n const msg = deserialize(data);\n if (msg.t === \"q\") {\n const { m: method, a: args } = msg;\n let result, error;\n const fn = resolver ? resolver(method, functions[method]) : functions[method];\n if (!fn) {\n error = new Error(`[birpc] function \"${method}\" not found`);\n } else {\n try {\n result = await fn.apply(bind === \"rpc\" ? rpc : functions, args);\n } catch (e) {\n error = e;\n }\n }\n if (msg.i) {\n if (error && options.onError)\n options.onError(error, method, args);\n post(serialize({ t: \"s\", i: msg.i, r: result, e: error }), ...extra);\n }\n } else {\n const { i: ack, r: result, e: error } = msg;\n const promise = rpcPromiseMap.get(ack);\n if (promise) {\n clearTimeout(promise.timeoutId);\n if (error)\n promise.reject(error);\n else\n promise.resolve(result);\n }\n rpcPromiseMap.delete(ack);\n }\n }\n _promise = on(onMessage);\n return rpc;\n}\nconst cacheMap = /* @__PURE__ */ new WeakMap();\nfunction cachedMap(items, fn) {\n return items.map((i) => {\n let r = cacheMap.get(i);\n if (!r) {\n r = fn(i);\n cacheMap.set(i, r);\n }\n return r;\n });\n}\nfunction createBirpcGroup(functions, channels, options = {}) {\n const getChannels = () => typeof channels === \"function\" ? channels() : channels;\n const getClients = (channels2 = getChannels()) => cachedMap(channels2, (s) => createBirpc(functions, { ...options, ...s }));\n const broadcastProxy = new Proxy({}, {\n get(_, method) {\n const client = getClients();\n const callbacks = client.map((c) => c[method]);\n const sendCall = (...args) => {\n return Promise.all(callbacks.map((i) => i(...args)));\n };\n sendCall.asEvent = (...args) => {\n callbacks.map((i) => i.asEvent(...args));\n };\n return sendCall;\n }\n });\n function updateChannels(fn) {\n const channels2 = getChannels();\n fn?.(channels2);\n return getClients(channels2);\n }\n getClients();\n return {\n get clients() {\n return getClients();\n },\n functions,\n updateChannels,\n broadcast: broadcastProxy,\n /**\n * @deprecated use `broadcast`\n */\n // @ts-expect-error deprecated\n boardcast: broadcastProxy\n };\n}\nconst urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nfunction nanoid(size = 21) {\n let id = \"\";\n let i = size;\n while (i--)\n id += urlAlphabet[random() * 64 | 0];\n return id;\n}\n\nexport { DEFAULT_TIMEOUT, cachedMap, createBirpc, createBirpcGroup };\n", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target22) => (target22 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target22, \"default\", { value: mod, enumerable: true }) : target22,\n mod\n));\n\n// ../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.14__@swc+core@1.5.29_jiti@2.0.0__utvtwgyeu6xd57udthcnogp47u/node_modules/tsup/assets/esm_shims.js\nvar init_esm_shims = __esm({\n \"../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.14__@swc+core@1.5.29_jiti@2.0.0__utvtwgyeu6xd57udthcnogp47u/node_modules/tsup/assets/esm_shims.js\"() {\n \"use strict\";\n }\n});\n\n// ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js\nvar require_speakingurl = __commonJS({\n \"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js\"(exports, module) {\n \"use strict\";\n init_esm_shims();\n (function(root) {\n \"use strict\";\n var charMap = {\n // latin\n \"\\xC0\": \"A\",\n \"\\xC1\": \"A\",\n \"\\xC2\": \"A\",\n \"\\xC3\": \"A\",\n \"\\xC4\": \"Ae\",\n \"\\xC5\": \"A\",\n \"\\xC6\": \"AE\",\n \"\\xC7\": \"C\",\n \"\\xC8\": \"E\",\n \"\\xC9\": \"E\",\n \"\\xCA\": \"E\",\n \"\\xCB\": \"E\",\n \"\\xCC\": \"I\",\n \"\\xCD\": \"I\",\n \"\\xCE\": \"I\",\n \"\\xCF\": \"I\",\n \"\\xD0\": \"D\",\n \"\\xD1\": \"N\",\n \"\\xD2\": \"O\",\n \"\\xD3\": \"O\",\n \"\\xD4\": \"O\",\n \"\\xD5\": \"O\",\n \"\\xD6\": \"Oe\",\n \"\\u0150\": \"O\",\n \"\\xD8\": \"O\",\n \"\\xD9\": \"U\",\n \"\\xDA\": \"U\",\n \"\\xDB\": \"U\",\n \"\\xDC\": \"Ue\",\n \"\\u0170\": \"U\",\n \"\\xDD\": \"Y\",\n \"\\xDE\": \"TH\",\n \"\\xDF\": \"ss\",\n \"\\xE0\": \"a\",\n \"\\xE1\": \"a\",\n \"\\xE2\": \"a\",\n \"\\xE3\": \"a\",\n \"\\xE4\": \"ae\",\n \"\\xE5\": \"a\",\n \"\\xE6\": \"ae\",\n \"\\xE7\": \"c\",\n \"\\xE8\": \"e\",\n \"\\xE9\": \"e\",\n \"\\xEA\": \"e\",\n \"\\xEB\": \"e\",\n \"\\xEC\": \"i\",\n \"\\xED\": \"i\",\n \"\\xEE\": \"i\",\n \"\\xEF\": \"i\",\n \"\\xF0\": \"d\",\n \"\\xF1\": \"n\",\n \"\\xF2\": \"o\",\n \"\\xF3\": \"o\",\n \"\\xF4\": \"o\",\n \"\\xF5\": \"o\",\n \"\\xF6\": \"oe\",\n \"\\u0151\": \"o\",\n \"\\xF8\": \"o\",\n \"\\xF9\": \"u\",\n \"\\xFA\": \"u\",\n \"\\xFB\": \"u\",\n \"\\xFC\": \"ue\",\n \"\\u0171\": \"u\",\n \"\\xFD\": \"y\",\n \"\\xFE\": \"th\",\n \"\\xFF\": \"y\",\n \"\\u1E9E\": \"SS\",\n // language specific\n // Arabic\n \"\\u0627\": \"a\",\n \"\\u0623\": \"a\",\n \"\\u0625\": \"i\",\n \"\\u0622\": \"aa\",\n \"\\u0624\": \"u\",\n \"\\u0626\": \"e\",\n \"\\u0621\": \"a\",\n \"\\u0628\": \"b\",\n \"\\u062A\": \"t\",\n \"\\u062B\": \"th\",\n \"\\u062C\": \"j\",\n \"\\u062D\": \"h\",\n \"\\u062E\": \"kh\",\n \"\\u062F\": \"d\",\n \"\\u0630\": \"th\",\n \"\\u0631\": \"r\",\n \"\\u0632\": \"z\",\n \"\\u0633\": \"s\",\n \"\\u0634\": \"sh\",\n \"\\u0635\": \"s\",\n \"\\u0636\": \"dh\",\n \"\\u0637\": \"t\",\n \"\\u0638\": \"z\",\n \"\\u0639\": \"a\",\n \"\\u063A\": \"gh\",\n \"\\u0641\": \"f\",\n \"\\u0642\": \"q\",\n \"\\u0643\": \"k\",\n \"\\u0644\": \"l\",\n \"\\u0645\": \"m\",\n \"\\u0646\": \"n\",\n \"\\u0647\": \"h\",\n \"\\u0648\": \"w\",\n \"\\u064A\": \"y\",\n \"\\u0649\": \"a\",\n \"\\u0629\": \"h\",\n \"\\uFEFB\": \"la\",\n \"\\uFEF7\": \"laa\",\n \"\\uFEF9\": \"lai\",\n \"\\uFEF5\": \"laa\",\n // Persian additional characters than Arabic\n \"\\u06AF\": \"g\",\n \"\\u0686\": \"ch\",\n \"\\u067E\": \"p\",\n \"\\u0698\": \"zh\",\n \"\\u06A9\": \"k\",\n \"\\u06CC\": \"y\",\n // Arabic diactrics\n \"\\u064E\": \"a\",\n \"\\u064B\": \"an\",\n \"\\u0650\": \"e\",\n \"\\u064D\": \"en\",\n \"\\u064F\": \"u\",\n \"\\u064C\": \"on\",\n \"\\u0652\": \"\",\n // Arabic numbers\n \"\\u0660\": \"0\",\n \"\\u0661\": \"1\",\n \"\\u0662\": \"2\",\n \"\\u0663\": \"3\",\n \"\\u0664\": \"4\",\n \"\\u0665\": \"5\",\n \"\\u0666\": \"6\",\n \"\\u0667\": \"7\",\n \"\\u0668\": \"8\",\n \"\\u0669\": \"9\",\n // Persian numbers\n \"\\u06F0\": \"0\",\n \"\\u06F1\": \"1\",\n \"\\u06F2\": \"2\",\n \"\\u06F3\": \"3\",\n \"\\u06F4\": \"4\",\n \"\\u06F5\": \"5\",\n \"\\u06F6\": \"6\",\n \"\\u06F7\": \"7\",\n \"\\u06F8\": \"8\",\n \"\\u06F9\": \"9\",\n // Burmese consonants\n \"\\u1000\": \"k\",\n \"\\u1001\": \"kh\",\n \"\\u1002\": \"g\",\n \"\\u1003\": \"ga\",\n \"\\u1004\": \"ng\",\n \"\\u1005\": \"s\",\n \"\\u1006\": \"sa\",\n \"\\u1007\": \"z\",\n \"\\u1005\\u103B\": \"za\",\n \"\\u100A\": \"ny\",\n \"\\u100B\": \"t\",\n \"\\u100C\": \"ta\",\n \"\\u100D\": \"d\",\n \"\\u100E\": \"da\",\n \"\\u100F\": \"na\",\n \"\\u1010\": \"t\",\n \"\\u1011\": \"ta\",\n \"\\u1012\": \"d\",\n \"\\u1013\": \"da\",\n \"\\u1014\": \"n\",\n \"\\u1015\": \"p\",\n \"\\u1016\": \"pa\",\n \"\\u1017\": \"b\",\n \"\\u1018\": \"ba\",\n \"\\u1019\": \"m\",\n \"\\u101A\": \"y\",\n \"\\u101B\": \"ya\",\n \"\\u101C\": \"l\",\n \"\\u101D\": \"w\",\n \"\\u101E\": \"th\",\n \"\\u101F\": \"h\",\n \"\\u1020\": \"la\",\n \"\\u1021\": \"a\",\n // consonant character combos\n \"\\u103C\": \"y\",\n \"\\u103B\": \"ya\",\n \"\\u103D\": \"w\",\n \"\\u103C\\u103D\": \"yw\",\n \"\\u103B\\u103D\": \"ywa\",\n \"\\u103E\": \"h\",\n // independent vowels\n \"\\u1027\": \"e\",\n \"\\u104F\": \"-e\",\n \"\\u1023\": \"i\",\n \"\\u1024\": \"-i\",\n \"\\u1009\": \"u\",\n \"\\u1026\": \"-u\",\n \"\\u1029\": \"aw\",\n \"\\u101E\\u103C\\u1031\\u102C\": \"aw\",\n \"\\u102A\": \"aw\",\n // numbers\n \"\\u1040\": \"0\",\n \"\\u1041\": \"1\",\n \"\\u1042\": \"2\",\n \"\\u1043\": \"3\",\n \"\\u1044\": \"4\",\n \"\\u1045\": \"5\",\n \"\\u1046\": \"6\",\n \"\\u1047\": \"7\",\n \"\\u1048\": \"8\",\n \"\\u1049\": \"9\",\n // virama and tone marks which are silent in transliteration\n \"\\u1039\": \"\",\n \"\\u1037\": \"\",\n \"\\u1038\": \"\",\n // Czech\n \"\\u010D\": \"c\",\n \"\\u010F\": \"d\",\n \"\\u011B\": \"e\",\n \"\\u0148\": \"n\",\n \"\\u0159\": \"r\",\n \"\\u0161\": \"s\",\n \"\\u0165\": \"t\",\n \"\\u016F\": \"u\",\n \"\\u017E\": \"z\",\n \"\\u010C\": \"C\",\n \"\\u010E\": \"D\",\n \"\\u011A\": \"E\",\n \"\\u0147\": \"N\",\n \"\\u0158\": \"R\",\n \"\\u0160\": \"S\",\n \"\\u0164\": \"T\",\n \"\\u016E\": \"U\",\n \"\\u017D\": \"Z\",\n // Dhivehi\n \"\\u0780\": \"h\",\n \"\\u0781\": \"sh\",\n \"\\u0782\": \"n\",\n \"\\u0783\": \"r\",\n \"\\u0784\": \"b\",\n \"\\u0785\": \"lh\",\n \"\\u0786\": \"k\",\n \"\\u0787\": \"a\",\n \"\\u0788\": \"v\",\n \"\\u0789\": \"m\",\n \"\\u078A\": \"f\",\n \"\\u078B\": \"dh\",\n \"\\u078C\": \"th\",\n \"\\u078D\": \"l\",\n \"\\u078E\": \"g\",\n \"\\u078F\": \"gn\",\n \"\\u0790\": \"s\",\n \"\\u0791\": \"d\",\n \"\\u0792\": \"z\",\n \"\\u0793\": \"t\",\n \"\\u0794\": \"y\",\n \"\\u0795\": \"p\",\n \"\\u0796\": \"j\",\n \"\\u0797\": \"ch\",\n \"\\u0798\": \"tt\",\n \"\\u0799\": \"hh\",\n \"\\u079A\": \"kh\",\n \"\\u079B\": \"th\",\n \"\\u079C\": \"z\",\n \"\\u079D\": \"sh\",\n \"\\u079E\": \"s\",\n \"\\u079F\": \"d\",\n \"\\u07A0\": \"t\",\n \"\\u07A1\": \"z\",\n \"\\u07A2\": \"a\",\n \"\\u07A3\": \"gh\",\n \"\\u07A4\": \"q\",\n \"\\u07A5\": \"w\",\n \"\\u07A6\": \"a\",\n \"\\u07A7\": \"aa\",\n \"\\u07A8\": \"i\",\n \"\\u07A9\": \"ee\",\n \"\\u07AA\": \"u\",\n \"\\u07AB\": \"oo\",\n \"\\u07AC\": \"e\",\n \"\\u07AD\": \"ey\",\n \"\\u07AE\": \"o\",\n \"\\u07AF\": \"oa\",\n \"\\u07B0\": \"\",\n // Georgian https://en.wikipedia.org/wiki/Romanization_of_Georgian\n // National system (2002)\n \"\\u10D0\": \"a\",\n \"\\u10D1\": \"b\",\n \"\\u10D2\": \"g\",\n \"\\u10D3\": \"d\",\n \"\\u10D4\": \"e\",\n \"\\u10D5\": \"v\",\n \"\\u10D6\": \"z\",\n \"\\u10D7\": \"t\",\n \"\\u10D8\": \"i\",\n \"\\u10D9\": \"k\",\n \"\\u10DA\": \"l\",\n \"\\u10DB\": \"m\",\n \"\\u10DC\": \"n\",\n \"\\u10DD\": \"o\",\n \"\\u10DE\": \"p\",\n \"\\u10DF\": \"zh\",\n \"\\u10E0\": \"r\",\n \"\\u10E1\": \"s\",\n \"\\u10E2\": \"t\",\n \"\\u10E3\": \"u\",\n \"\\u10E4\": \"p\",\n \"\\u10E5\": \"k\",\n \"\\u10E6\": \"gh\",\n \"\\u10E7\": \"q\",\n \"\\u10E8\": \"sh\",\n \"\\u10E9\": \"ch\",\n \"\\u10EA\": \"ts\",\n \"\\u10EB\": \"dz\",\n \"\\u10EC\": \"ts\",\n \"\\u10ED\": \"ch\",\n \"\\u10EE\": \"kh\",\n \"\\u10EF\": \"j\",\n \"\\u10F0\": \"h\",\n // Greek\n \"\\u03B1\": \"a\",\n \"\\u03B2\": \"v\",\n \"\\u03B3\": \"g\",\n \"\\u03B4\": \"d\",\n \"\\u03B5\": \"e\",\n \"\\u03B6\": \"z\",\n \"\\u03B7\": \"i\",\n \"\\u03B8\": \"th\",\n \"\\u03B9\": \"i\",\n \"\\u03BA\": \"k\",\n \"\\u03BB\": \"l\",\n \"\\u03BC\": \"m\",\n \"\\u03BD\": \"n\",\n \"\\u03BE\": \"ks\",\n \"\\u03BF\": \"o\",\n \"\\u03C0\": \"p\",\n \"\\u03C1\": \"r\",\n \"\\u03C3\": \"s\",\n \"\\u03C4\": \"t\",\n \"\\u03C5\": \"y\",\n \"\\u03C6\": \"f\",\n \"\\u03C7\": \"x\",\n \"\\u03C8\": \"ps\",\n \"\\u03C9\": \"o\",\n \"\\u03AC\": \"a\",\n \"\\u03AD\": \"e\",\n \"\\u03AF\": \"i\",\n \"\\u03CC\": \"o\",\n \"\\u03CD\": \"y\",\n \"\\u03AE\": \"i\",\n \"\\u03CE\": \"o\",\n \"\\u03C2\": \"s\",\n \"\\u03CA\": \"i\",\n \"\\u03B0\": \"y\",\n \"\\u03CB\": \"y\",\n \"\\u0390\": \"i\",\n \"\\u0391\": \"A\",\n \"\\u0392\": \"B\",\n \"\\u0393\": \"G\",\n \"\\u0394\": \"D\",\n \"\\u0395\": \"E\",\n \"\\u0396\": \"Z\",\n \"\\u0397\": \"I\",\n \"\\u0398\": \"TH\",\n \"\\u0399\": \"I\",\n \"\\u039A\": \"K\",\n \"\\u039B\": \"L\",\n \"\\u039C\": \"M\",\n \"\\u039D\": \"N\",\n \"\\u039E\": \"KS\",\n \"\\u039F\": \"O\",\n \"\\u03A0\": \"P\",\n \"\\u03A1\": \"R\",\n \"\\u03A3\": \"S\",\n \"\\u03A4\": \"T\",\n \"\\u03A5\": \"Y\",\n \"\\u03A6\": \"F\",\n \"\\u03A7\": \"X\",\n \"\\u03A8\": \"PS\",\n \"\\u03A9\": \"O\",\n \"\\u0386\": \"A\",\n \"\\u0388\": \"E\",\n \"\\u038A\": \"I\",\n \"\\u038C\": \"O\",\n \"\\u038E\": \"Y\",\n \"\\u0389\": \"I\",\n \"\\u038F\": \"O\",\n \"\\u03AA\": \"I\",\n \"\\u03AB\": \"Y\",\n // Latvian\n \"\\u0101\": \"a\",\n // 'č': 'c', // duplicate\n \"\\u0113\": \"e\",\n \"\\u0123\": \"g\",\n \"\\u012B\": \"i\",\n \"\\u0137\": \"k\",\n \"\\u013C\": \"l\",\n \"\\u0146\": \"n\",\n // 'š': 's', // duplicate\n \"\\u016B\": \"u\",\n // 'ž': 'z', // duplicate\n \"\\u0100\": \"A\",\n // 'Č': 'C', // duplicate\n \"\\u0112\": \"E\",\n \"\\u0122\": \"G\",\n \"\\u012A\": \"I\",\n \"\\u0136\": \"k\",\n \"\\u013B\": \"L\",\n \"\\u0145\": \"N\",\n // 'Š': 'S', // duplicate\n \"\\u016A\": \"U\",\n // 'Ž': 'Z', // duplicate\n // Macedonian\n \"\\u040C\": \"Kj\",\n \"\\u045C\": \"kj\",\n \"\\u0409\": \"Lj\",\n \"\\u0459\": \"lj\",\n \"\\u040A\": \"Nj\",\n \"\\u045A\": \"nj\",\n \"\\u0422\\u0441\": \"Ts\",\n \"\\u0442\\u0441\": \"ts\",\n // Polish\n \"\\u0105\": \"a\",\n \"\\u0107\": \"c\",\n \"\\u0119\": \"e\",\n \"\\u0142\": \"l\",\n \"\\u0144\": \"n\",\n // 'ó': 'o', // duplicate\n \"\\u015B\": \"s\",\n \"\\u017A\": \"z\",\n \"\\u017C\": \"z\",\n \"\\u0104\": \"A\",\n \"\\u0106\": \"C\",\n \"\\u0118\": \"E\",\n \"\\u0141\": \"L\",\n \"\\u0143\": \"N\",\n \"\\u015A\": \"S\",\n \"\\u0179\": \"Z\",\n \"\\u017B\": \"Z\",\n // Ukranian\n \"\\u0404\": \"Ye\",\n \"\\u0406\": \"I\",\n \"\\u0407\": \"Yi\",\n \"\\u0490\": \"G\",\n \"\\u0454\": \"ye\",\n \"\\u0456\": \"i\",\n \"\\u0457\": \"yi\",\n \"\\u0491\": \"g\",\n // Romanian\n \"\\u0103\": \"a\",\n \"\\u0102\": \"A\",\n \"\\u0219\": \"s\",\n \"\\u0218\": \"S\",\n // 'ş': 's', // duplicate\n // 'Ş': 'S', // duplicate\n \"\\u021B\": \"t\",\n \"\\u021A\": \"T\",\n \"\\u0163\": \"t\",\n \"\\u0162\": \"T\",\n // Russian https://en.wikipedia.org/wiki/Romanization_of_Russian\n // ICAO\n \"\\u0430\": \"a\",\n \"\\u0431\": \"b\",\n \"\\u0432\": \"v\",\n \"\\u0433\": \"g\",\n \"\\u0434\": \"d\",\n \"\\u0435\": \"e\",\n \"\\u0451\": \"yo\",\n \"\\u0436\": \"zh\",\n \"\\u0437\": \"z\",\n \"\\u0438\": \"i\",\n \"\\u0439\": \"i\",\n \"\\u043A\": \"k\",\n \"\\u043B\": \"l\",\n \"\\u043C\": \"m\",\n \"\\u043D\": \"n\",\n \"\\u043E\": \"o\",\n \"\\u043F\": \"p\",\n \"\\u0440\": \"r\",\n \"\\u0441\": \"s\",\n \"\\u0442\": \"t\",\n \"\\u0443\": \"u\",\n \"\\u0444\": \"f\",\n \"\\u0445\": \"kh\",\n \"\\u0446\": \"c\",\n \"\\u0447\": \"ch\",\n \"\\u0448\": \"sh\",\n \"\\u0449\": \"sh\",\n \"\\u044A\": \"\",\n \"\\u044B\": \"y\",\n \"\\u044C\": \"\",\n \"\\u044D\": \"e\",\n \"\\u044E\": \"yu\",\n \"\\u044F\": \"ya\",\n \"\\u0410\": \"A\",\n \"\\u0411\": \"B\",\n \"\\u0412\": \"V\",\n \"\\u0413\": \"G\",\n \"\\u0414\": \"D\",\n \"\\u0415\": \"E\",\n \"\\u0401\": \"Yo\",\n \"\\u0416\": \"Zh\",\n \"\\u0417\": \"Z\",\n \"\\u0418\": \"I\",\n \"\\u0419\": \"I\",\n \"\\u041A\": \"K\",\n \"\\u041B\": \"L\",\n \"\\u041C\": \"M\",\n \"\\u041D\": \"N\",\n \"\\u041E\": \"O\",\n \"\\u041F\": \"P\",\n \"\\u0420\": \"R\",\n \"\\u0421\": \"S\",\n \"\\u0422\": \"T\",\n \"\\u0423\": \"U\",\n \"\\u0424\": \"F\",\n \"\\u0425\": \"Kh\",\n \"\\u0426\": \"C\",\n \"\\u0427\": \"Ch\",\n \"\\u0428\": \"Sh\",\n \"\\u0429\": \"Sh\",\n \"\\u042A\": \"\",\n \"\\u042B\": \"Y\",\n \"\\u042C\": \"\",\n \"\\u042D\": \"E\",\n \"\\u042E\": \"Yu\",\n \"\\u042F\": \"Ya\",\n // Serbian\n \"\\u0452\": \"dj\",\n \"\\u0458\": \"j\",\n // 'љ': 'lj', // duplicate\n // 'њ': 'nj', // duplicate\n \"\\u045B\": \"c\",\n \"\\u045F\": \"dz\",\n \"\\u0402\": \"Dj\",\n \"\\u0408\": \"j\",\n // 'Љ': 'Lj', // duplicate\n // 'Њ': 'Nj', // duplicate\n \"\\u040B\": \"C\",\n \"\\u040F\": \"Dz\",\n // Slovak\n \"\\u013E\": \"l\",\n \"\\u013A\": \"l\",\n \"\\u0155\": \"r\",\n \"\\u013D\": \"L\",\n \"\\u0139\": \"L\",\n \"\\u0154\": \"R\",\n // Turkish\n \"\\u015F\": \"s\",\n \"\\u015E\": \"S\",\n \"\\u0131\": \"i\",\n \"\\u0130\": \"I\",\n // 'ç': 'c', // duplicate\n // 'Ç': 'C', // duplicate\n // 'ü': 'u', // duplicate, see langCharMap\n // 'Ü': 'U', // duplicate, see langCharMap\n // 'ö': 'o', // duplicate, see langCharMap\n // 'Ö': 'O', // duplicate, see langCharMap\n \"\\u011F\": \"g\",\n \"\\u011E\": \"G\",\n // Vietnamese\n \"\\u1EA3\": \"a\",\n \"\\u1EA2\": \"A\",\n \"\\u1EB3\": \"a\",\n \"\\u1EB2\": \"A\",\n \"\\u1EA9\": \"a\",\n \"\\u1EA8\": \"A\",\n \"\\u0111\": \"d\",\n \"\\u0110\": \"D\",\n \"\\u1EB9\": \"e\",\n \"\\u1EB8\": \"E\",\n \"\\u1EBD\": \"e\",\n \"\\u1EBC\": \"E\",\n \"\\u1EBB\": \"e\",\n \"\\u1EBA\": \"E\",\n \"\\u1EBF\": \"e\",\n \"\\u1EBE\": \"E\",\n \"\\u1EC1\": \"e\",\n \"\\u1EC0\": \"E\",\n \"\\u1EC7\": \"e\",\n \"\\u1EC6\": \"E\",\n \"\\u1EC5\": \"e\",\n \"\\u1EC4\": \"E\",\n \"\\u1EC3\": \"e\",\n \"\\u1EC2\": \"E\",\n \"\\u1ECF\": \"o\",\n \"\\u1ECD\": \"o\",\n \"\\u1ECC\": \"o\",\n \"\\u1ED1\": \"o\",\n \"\\u1ED0\": \"O\",\n \"\\u1ED3\": \"o\",\n \"\\u1ED2\": \"O\",\n \"\\u1ED5\": \"o\",\n \"\\u1ED4\": \"O\",\n \"\\u1ED9\": \"o\",\n \"\\u1ED8\": \"O\",\n \"\\u1ED7\": \"o\",\n \"\\u1ED6\": \"O\",\n \"\\u01A1\": \"o\",\n \"\\u01A0\": \"O\",\n \"\\u1EDB\": \"o\",\n \"\\u1EDA\": \"O\",\n \"\\u1EDD\": \"o\",\n \"\\u1EDC\": \"O\",\n \"\\u1EE3\": \"o\",\n \"\\u1EE2\": \"O\",\n \"\\u1EE1\": \"o\",\n \"\\u1EE0\": \"O\",\n \"\\u1EDE\": \"o\",\n \"\\u1EDF\": \"o\",\n \"\\u1ECB\": \"i\",\n \"\\u1ECA\": \"I\",\n \"\\u0129\": \"i\",\n \"\\u0128\": \"I\",\n \"\\u1EC9\": \"i\",\n \"\\u1EC8\": \"i\",\n \"\\u1EE7\": \"u\",\n \"\\u1EE6\": \"U\",\n \"\\u1EE5\": \"u\",\n \"\\u1EE4\": \"U\",\n \"\\u0169\": \"u\",\n \"\\u0168\": \"U\",\n \"\\u01B0\": \"u\",\n \"\\u01AF\": \"U\",\n \"\\u1EE9\": \"u\",\n \"\\u1EE8\": \"U\",\n \"\\u1EEB\": \"u\",\n \"\\u1EEA\": \"U\",\n \"\\u1EF1\": \"u\",\n \"\\u1EF0\": \"U\",\n \"\\u1EEF\": \"u\",\n \"\\u1EEE\": \"U\",\n \"\\u1EED\": \"u\",\n \"\\u1EEC\": \"\\u01B0\",\n \"\\u1EF7\": \"y\",\n \"\\u1EF6\": \"y\",\n \"\\u1EF3\": \"y\",\n \"\\u1EF2\": \"Y\",\n \"\\u1EF5\": \"y\",\n \"\\u1EF4\": \"Y\",\n \"\\u1EF9\": \"y\",\n \"\\u1EF8\": \"Y\",\n \"\\u1EA1\": \"a\",\n \"\\u1EA0\": \"A\",\n \"\\u1EA5\": \"a\",\n \"\\u1EA4\": \"A\",\n \"\\u1EA7\": \"a\",\n \"\\u1EA6\": \"A\",\n \"\\u1EAD\": \"a\",\n \"\\u1EAC\": \"A\",\n \"\\u1EAB\": \"a\",\n \"\\u1EAA\": \"A\",\n // 'ă': 'a', // duplicate\n // 'Ă': 'A', // duplicate\n \"\\u1EAF\": \"a\",\n \"\\u1EAE\": \"A\",\n \"\\u1EB1\": \"a\",\n \"\\u1EB0\": \"A\",\n \"\\u1EB7\": \"a\",\n \"\\u1EB6\": \"A\",\n \"\\u1EB5\": \"a\",\n \"\\u1EB4\": \"A\",\n \"\\u24EA\": \"0\",\n \"\\u2460\": \"1\",\n \"\\u2461\": \"2\",\n \"\\u2462\": \"3\",\n \"\\u2463\": \"4\",\n \"\\u2464\": \"5\",\n \"\\u2465\": \"6\",\n \"\\u2466\": \"7\",\n \"\\u2467\": \"8\",\n \"\\u2468\": \"9\",\n \"\\u2469\": \"10\",\n \"\\u246A\": \"11\",\n \"\\u246B\": \"12\",\n \"\\u246C\": \"13\",\n \"\\u246D\": \"14\",\n \"\\u246E\": \"15\",\n \"\\u246F\": \"16\",\n \"\\u2470\": \"17\",\n \"\\u2471\": \"18\",\n \"\\u2472\": \"18\",\n \"\\u2473\": \"18\",\n \"\\u24F5\": \"1\",\n \"\\u24F6\": \"2\",\n \"\\u24F7\": \"3\",\n \"\\u24F8\": \"4\",\n \"\\u24F9\": \"5\",\n \"\\u24FA\": \"6\",\n \"\\u24FB\": \"7\",\n \"\\u24FC\": \"8\",\n \"\\u24FD\": \"9\",\n \"\\u24FE\": \"10\",\n \"\\u24FF\": \"0\",\n \"\\u24EB\": \"11\",\n \"\\u24EC\": \"12\",\n \"\\u24ED\": \"13\",\n \"\\u24EE\": \"14\",\n \"\\u24EF\": \"15\",\n \"\\u24F0\": \"16\",\n \"\\u24F1\": \"17\",\n \"\\u24F2\": \"18\",\n \"\\u24F3\": \"19\",\n \"\\u24F4\": \"20\",\n \"\\u24B6\": \"A\",\n \"\\u24B7\": \"B\",\n \"\\u24B8\": \"C\",\n \"\\u24B9\": \"D\",\n \"\\u24BA\": \"E\",\n \"\\u24BB\": \"F\",\n \"\\u24BC\": \"G\",\n \"\\u24BD\": \"H\",\n \"\\u24BE\": \"I\",\n \"\\u24BF\": \"J\",\n \"\\u24C0\": \"K\",\n \"\\u24C1\": \"L\",\n \"\\u24C2\": \"M\",\n \"\\u24C3\": \"N\",\n \"\\u24C4\": \"O\",\n \"\\u24C5\": \"P\",\n \"\\u24C6\": \"Q\",\n \"\\u24C7\": \"R\",\n \"\\u24C8\": \"S\",\n \"\\u24C9\": \"T\",\n \"\\u24CA\": \"U\",\n \"\\u24CB\": \"V\",\n \"\\u24CC\": \"W\",\n \"\\u24CD\": \"X\",\n \"\\u24CE\": \"Y\",\n \"\\u24CF\": \"Z\",\n \"\\u24D0\": \"a\",\n \"\\u24D1\": \"b\",\n \"\\u24D2\": \"c\",\n \"\\u24D3\": \"d\",\n \"\\u24D4\": \"e\",\n \"\\u24D5\": \"f\",\n \"\\u24D6\": \"g\",\n \"\\u24D7\": \"h\",\n \"\\u24D8\": \"i\",\n \"\\u24D9\": \"j\",\n \"\\u24DA\": \"k\",\n \"\\u24DB\": \"l\",\n \"\\u24DC\": \"m\",\n \"\\u24DD\": \"n\",\n \"\\u24DE\": \"o\",\n \"\\u24DF\": \"p\",\n \"\\u24E0\": \"q\",\n \"\\u24E1\": \"r\",\n \"\\u24E2\": \"s\",\n \"\\u24E3\": \"t\",\n \"\\u24E4\": \"u\",\n \"\\u24E6\": \"v\",\n \"\\u24E5\": \"w\",\n \"\\u24E7\": \"x\",\n \"\\u24E8\": \"y\",\n \"\\u24E9\": \"z\",\n // symbols\n \"\\u201C\": '\"',\n \"\\u201D\": '\"',\n \"\\u2018\": \"'\",\n \"\\u2019\": \"'\",\n \"\\u2202\": \"d\",\n \"\\u0192\": \"f\",\n \"\\u2122\": \"(TM)\",\n \"\\xA9\": \"(C)\",\n \"\\u0153\": \"oe\",\n \"\\u0152\": \"OE\",\n \"\\xAE\": \"(R)\",\n \"\\u2020\": \"+\",\n \"\\u2120\": \"(SM)\",\n \"\\u2026\": \"...\",\n \"\\u02DA\": \"o\",\n \"\\xBA\": \"o\",\n \"\\xAA\": \"a\",\n \"\\u2022\": \"*\",\n \"\\u104A\": \",\",\n \"\\u104B\": \".\",\n // currency\n \"$\": \"USD\",\n \"\\u20AC\": \"EUR\",\n \"\\u20A2\": \"BRN\",\n \"\\u20A3\": \"FRF\",\n \"\\xA3\": \"GBP\",\n \"\\u20A4\": \"ITL\",\n \"\\u20A6\": \"NGN\",\n \"\\u20A7\": \"ESP\",\n \"\\u20A9\": \"KRW\",\n \"\\u20AA\": \"ILS\",\n \"\\u20AB\": \"VND\",\n \"\\u20AD\": \"LAK\",\n \"\\u20AE\": \"MNT\",\n \"\\u20AF\": \"GRD\",\n \"\\u20B1\": \"ARS\",\n \"\\u20B2\": \"PYG\",\n \"\\u20B3\": \"ARA\",\n \"\\u20B4\": \"UAH\",\n \"\\u20B5\": \"GHS\",\n \"\\xA2\": \"cent\",\n \"\\xA5\": \"CNY\",\n \"\\u5143\": \"CNY\",\n \"\\u5186\": \"YEN\",\n \"\\uFDFC\": \"IRR\",\n \"\\u20A0\": \"EWE\",\n \"\\u0E3F\": \"THB\",\n \"\\u20A8\": \"INR\",\n \"\\u20B9\": \"INR\",\n \"\\u20B0\": \"PF\",\n \"\\u20BA\": \"TRY\",\n \"\\u060B\": \"AFN\",\n \"\\u20BC\": \"AZN\",\n \"\\u043B\\u0432\": \"BGN\",\n \"\\u17DB\": \"KHR\",\n \"\\u20A1\": \"CRC\",\n \"\\u20B8\": \"KZT\",\n \"\\u0434\\u0435\\u043D\": \"MKD\",\n \"z\\u0142\": \"PLN\",\n \"\\u20BD\": \"RUB\",\n \"\\u20BE\": \"GEL\"\n };\n var lookAheadCharArray = [\n // burmese\n \"\\u103A\",\n // Dhivehi\n \"\\u07B0\"\n ];\n var diatricMap = {\n // Burmese\n // dependent vowels\n \"\\u102C\": \"a\",\n \"\\u102B\": \"a\",\n \"\\u1031\": \"e\",\n \"\\u1032\": \"e\",\n \"\\u102D\": \"i\",\n \"\\u102E\": \"i\",\n \"\\u102D\\u102F\": \"o\",\n \"\\u102F\": \"u\",\n \"\\u1030\": \"u\",\n \"\\u1031\\u102B\\u1004\\u103A\": \"aung\",\n \"\\u1031\\u102C\": \"aw\",\n \"\\u1031\\u102C\\u103A\": \"aw\",\n \"\\u1031\\u102B\": \"aw\",\n \"\\u1031\\u102B\\u103A\": \"aw\",\n \"\\u103A\": \"\\u103A\",\n // this is special case but the character will be converted to latin in the code\n \"\\u1000\\u103A\": \"et\",\n \"\\u102D\\u102F\\u1000\\u103A\": \"aik\",\n \"\\u1031\\u102C\\u1000\\u103A\": \"auk\",\n \"\\u1004\\u103A\": \"in\",\n \"\\u102D\\u102F\\u1004\\u103A\": \"aing\",\n \"\\u1031\\u102C\\u1004\\u103A\": \"aung\",\n \"\\u1005\\u103A\": \"it\",\n \"\\u100A\\u103A\": \"i\",\n \"\\u1010\\u103A\": \"at\",\n \"\\u102D\\u1010\\u103A\": \"eik\",\n \"\\u102F\\u1010\\u103A\": \"ok\",\n \"\\u103D\\u1010\\u103A\": \"ut\",\n \"\\u1031\\u1010\\u103A\": \"it\",\n \"\\u1012\\u103A\": \"d\",\n \"\\u102D\\u102F\\u1012\\u103A\": \"ok\",\n \"\\u102F\\u1012\\u103A\": \"ait\",\n \"\\u1014\\u103A\": \"an\",\n \"\\u102C\\u1014\\u103A\": \"an\",\n \"\\u102D\\u1014\\u103A\": \"ein\",\n \"\\u102F\\u1014\\u103A\": \"on\",\n \"\\u103D\\u1014\\u103A\": \"un\",\n \"\\u1015\\u103A\": \"at\",\n \"\\u102D\\u1015\\u103A\": \"eik\",\n \"\\u102F\\u1015\\u103A\": \"ok\",\n \"\\u103D\\u1015\\u103A\": \"ut\",\n \"\\u1014\\u103A\\u102F\\u1015\\u103A\": \"nub\",\n \"\\u1019\\u103A\": \"an\",\n \"\\u102D\\u1019\\u103A\": \"ein\",\n \"\\u102F\\u1019\\u103A\": \"on\",\n \"\\u103D\\u1019\\u103A\": \"un\",\n \"\\u101A\\u103A\": \"e\",\n \"\\u102D\\u102F\\u101C\\u103A\": \"ol\",\n \"\\u1009\\u103A\": \"in\",\n \"\\u1036\": \"an\",\n \"\\u102D\\u1036\": \"ein\",\n \"\\u102F\\u1036\": \"on\",\n // Dhivehi\n \"\\u07A6\\u0787\\u07B0\": \"ah\",\n \"\\u07A6\\u0781\\u07B0\": \"ah\"\n };\n var langCharMap = {\n \"en\": {},\n // default language\n \"az\": {\n // Azerbaijani\n \"\\xE7\": \"c\",\n \"\\u0259\": \"e\",\n \"\\u011F\": \"g\",\n \"\\u0131\": \"i\",\n \"\\xF6\": \"o\",\n \"\\u015F\": \"s\",\n \"\\xFC\": \"u\",\n \"\\xC7\": \"C\",\n \"\\u018F\": \"E\",\n \"\\u011E\": \"G\",\n \"\\u0130\": \"I\",\n \"\\xD6\": \"O\",\n \"\\u015E\": \"S\",\n \"\\xDC\": \"U\"\n },\n \"cs\": {\n // Czech\n \"\\u010D\": \"c\",\n \"\\u010F\": \"d\",\n \"\\u011B\": \"e\",\n \"\\u0148\": \"n\",\n \"\\u0159\": \"r\",\n \"\\u0161\": \"s\",\n \"\\u0165\": \"t\",\n \"\\u016F\": \"u\",\n \"\\u017E\": \"z\",\n \"\\u010C\": \"C\",\n \"\\u010E\": \"D\",\n \"\\u011A\": \"E\",\n \"\\u0147\": \"N\",\n \"\\u0158\": \"R\",\n \"\\u0160\": \"S\",\n \"\\u0164\": \"T\",\n \"\\u016E\": \"U\",\n \"\\u017D\": \"Z\"\n },\n \"fi\": {\n // Finnish\n // 'å': 'a', duplicate see charMap/latin\n // 'Å': 'A', duplicate see charMap/latin\n \"\\xE4\": \"a\",\n // ok\n \"\\xC4\": \"A\",\n // ok\n \"\\xF6\": \"o\",\n // ok\n \"\\xD6\": \"O\"\n // ok\n },\n \"hu\": {\n // Hungarian\n \"\\xE4\": \"a\",\n // ok\n \"\\xC4\": \"A\",\n // ok\n // 'á': 'a', duplicate see charMap/latin\n // 'Á': 'A', duplicate see charMap/latin\n \"\\xF6\": \"o\",\n // ok\n \"\\xD6\": \"O\",\n // ok\n // 'ő': 'o', duplicate see charMap/latin\n // 'Ő': 'O', duplicate see charMap/latin\n \"\\xFC\": \"u\",\n \"\\xDC\": \"U\",\n \"\\u0171\": \"u\",\n \"\\u0170\": \"U\"\n },\n \"lt\": {\n // Lithuanian\n \"\\u0105\": \"a\",\n \"\\u010D\": \"c\",\n \"\\u0119\": \"e\",\n \"\\u0117\": \"e\",\n \"\\u012F\": \"i\",\n \"\\u0161\": \"s\",\n \"\\u0173\": \"u\",\n \"\\u016B\": \"u\",\n \"\\u017E\": \"z\",\n \"\\u0104\": \"A\",\n \"\\u010C\": \"C\",\n \"\\u0118\": \"E\",\n \"\\u0116\": \"E\",\n \"\\u012E\": \"I\",\n \"\\u0160\": \"S\",\n \"\\u0172\": \"U\",\n \"\\u016A\": \"U\"\n },\n \"lv\": {\n // Latvian\n \"\\u0101\": \"a\",\n \"\\u010D\": \"c\",\n \"\\u0113\": \"e\",\n \"\\u0123\": \"g\",\n \"\\u012B\": \"i\",\n \"\\u0137\": \"k\",\n \"\\u013C\": \"l\",\n \"\\u0146\": \"n\",\n \"\\u0161\": \"s\",\n \"\\u016B\": \"u\",\n \"\\u017E\": \"z\",\n \"\\u0100\": \"A\",\n \"\\u010C\": \"C\",\n \"\\u0112\": \"E\",\n \"\\u0122\": \"G\",\n \"\\u012A\": \"i\",\n \"\\u0136\": \"k\",\n \"\\u013B\": \"L\",\n \"\\u0145\": \"N\",\n \"\\u0160\": \"S\",\n \"\\u016A\": \"u\",\n \"\\u017D\": \"Z\"\n },\n \"pl\": {\n // Polish\n \"\\u0105\": \"a\",\n \"\\u0107\": \"c\",\n \"\\u0119\": \"e\",\n \"\\u0142\": \"l\",\n \"\\u0144\": \"n\",\n \"\\xF3\": \"o\",\n \"\\u015B\": \"s\",\n \"\\u017A\": \"z\",\n \"\\u017C\": \"z\",\n \"\\u0104\": \"A\",\n \"\\u0106\": \"C\",\n \"\\u0118\": \"e\",\n \"\\u0141\": \"L\",\n \"\\u0143\": \"N\",\n \"\\xD3\": \"O\",\n \"\\u015A\": \"S\",\n \"\\u0179\": \"Z\",\n \"\\u017B\": \"Z\"\n },\n \"sv\": {\n // Swedish\n // 'å': 'a', duplicate see charMap/latin\n // 'Å': 'A', duplicate see charMap/latin\n \"\\xE4\": \"a\",\n // ok\n \"\\xC4\": \"A\",\n // ok\n \"\\xF6\": \"o\",\n // ok\n \"\\xD6\": \"O\"\n // ok\n },\n \"sk\": {\n // Slovak\n \"\\xE4\": \"a\",\n \"\\xC4\": \"A\"\n },\n \"sr\": {\n // Serbian\n \"\\u0459\": \"lj\",\n \"\\u045A\": \"nj\",\n \"\\u0409\": \"Lj\",\n \"\\u040A\": \"Nj\",\n \"\\u0111\": \"dj\",\n \"\\u0110\": \"Dj\"\n },\n \"tr\": {\n // Turkish\n \"\\xDC\": \"U\",\n \"\\xD6\": \"O\",\n \"\\xFC\": \"u\",\n \"\\xF6\": \"o\"\n }\n };\n var symbolMap = {\n \"ar\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"la-nihaya\",\n \"\\u2665\": \"hob\",\n \"&\": \"wa\",\n \"|\": \"aw\",\n \"<\": \"aqal-men\",\n \">\": \"akbar-men\",\n \"\\u2211\": \"majmou\",\n \"\\xA4\": \"omla\"\n },\n \"az\": {},\n \"ca\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"infinit\",\n \"\\u2665\": \"amor\",\n \"&\": \"i\",\n \"|\": \"o\",\n \"<\": \"menys que\",\n \">\": \"mes que\",\n \"\\u2211\": \"suma dels\",\n \"\\xA4\": \"moneda\"\n },\n \"cs\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"nekonecno\",\n \"\\u2665\": \"laska\",\n \"&\": \"a\",\n \"|\": \"nebo\",\n \"<\": \"mensi nez\",\n \">\": \"vetsi nez\",\n \"\\u2211\": \"soucet\",\n \"\\xA4\": \"mena\"\n },\n \"de\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"unendlich\",\n \"\\u2665\": \"Liebe\",\n \"&\": \"und\",\n \"|\": \"oder\",\n \"<\": \"kleiner als\",\n \">\": \"groesser als\",\n \"\\u2211\": \"Summe von\",\n \"\\xA4\": \"Waehrung\"\n },\n \"dv\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"kolunulaa\",\n \"\\u2665\": \"loabi\",\n \"&\": \"aai\",\n \"|\": \"noonee\",\n \"<\": \"ah vure kuda\",\n \">\": \"ah vure bodu\",\n \"\\u2211\": \"jumula\",\n \"\\xA4\": \"faisaa\"\n },\n \"en\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"infinity\",\n \"\\u2665\": \"love\",\n \"&\": \"and\",\n \"|\": \"or\",\n \"<\": \"less than\",\n \">\": \"greater than\",\n \"\\u2211\": \"sum\",\n \"\\xA4\": \"currency\"\n },\n \"es\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"infinito\",\n \"\\u2665\": \"amor\",\n \"&\": \"y\",\n \"|\": \"u\",\n \"<\": \"menos que\",\n \">\": \"mas que\",\n \"\\u2211\": \"suma de los\",\n \"\\xA4\": \"moneda\"\n },\n \"fa\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"bi-nahayat\",\n \"\\u2665\": \"eshgh\",\n \"&\": \"va\",\n \"|\": \"ya\",\n \"<\": \"kamtar-az\",\n \">\": \"bishtar-az\",\n \"\\u2211\": \"majmooe\",\n \"\\xA4\": \"vahed\"\n },\n \"fi\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"aarettomyys\",\n \"\\u2665\": \"rakkaus\",\n \"&\": \"ja\",\n \"|\": \"tai\",\n \"<\": \"pienempi kuin\",\n \">\": \"suurempi kuin\",\n \"\\u2211\": \"summa\",\n \"\\xA4\": \"valuutta\"\n },\n \"fr\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"infiniment\",\n \"\\u2665\": \"Amour\",\n \"&\": \"et\",\n \"|\": \"ou\",\n \"<\": \"moins que\",\n \">\": \"superieure a\",\n \"\\u2211\": \"somme des\",\n \"\\xA4\": \"monnaie\"\n },\n \"ge\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"usasruloba\",\n \"\\u2665\": \"siqvaruli\",\n \"&\": \"da\",\n \"|\": \"an\",\n \"<\": \"naklebi\",\n \">\": \"meti\",\n \"\\u2211\": \"jami\",\n \"\\xA4\": \"valuta\"\n },\n \"gr\": {},\n \"hu\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"vegtelen\",\n \"\\u2665\": \"szerelem\",\n \"&\": \"es\",\n \"|\": \"vagy\",\n \"<\": \"kisebb mint\",\n \">\": \"nagyobb mint\",\n \"\\u2211\": \"szumma\",\n \"\\xA4\": \"penznem\"\n },\n \"it\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"infinito\",\n \"\\u2665\": \"amore\",\n \"&\": \"e\",\n \"|\": \"o\",\n \"<\": \"minore di\",\n \">\": \"maggiore di\",\n \"\\u2211\": \"somma\",\n \"\\xA4\": \"moneta\"\n },\n \"lt\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"begalybe\",\n \"\\u2665\": \"meile\",\n \"&\": \"ir\",\n \"|\": \"ar\",\n \"<\": \"maziau nei\",\n \">\": \"daugiau nei\",\n \"\\u2211\": \"suma\",\n \"\\xA4\": \"valiuta\"\n },\n \"lv\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"bezgaliba\",\n \"\\u2665\": \"milestiba\",\n \"&\": \"un\",\n \"|\": \"vai\",\n \"<\": \"mazak neka\",\n \">\": \"lielaks neka\",\n \"\\u2211\": \"summa\",\n \"\\xA4\": \"valuta\"\n },\n \"my\": {\n \"\\u2206\": \"kwahkhyaet\",\n \"\\u221E\": \"asaonasme\",\n \"\\u2665\": \"akhyait\",\n \"&\": \"nhin\",\n \"|\": \"tho\",\n \"<\": \"ngethaw\",\n \">\": \"kyithaw\",\n \"\\u2211\": \"paungld\",\n \"\\xA4\": \"ngwekye\"\n },\n \"mk\": {},\n \"nl\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"oneindig\",\n \"\\u2665\": \"liefde\",\n \"&\": \"en\",\n \"|\": \"of\",\n \"<\": \"kleiner dan\",\n \">\": \"groter dan\",\n \"\\u2211\": \"som\",\n \"\\xA4\": \"valuta\"\n },\n \"pl\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"nieskonczonosc\",\n \"\\u2665\": \"milosc\",\n \"&\": \"i\",\n \"|\": \"lub\",\n \"<\": \"mniejsze niz\",\n \">\": \"wieksze niz\",\n \"\\u2211\": \"suma\",\n \"\\xA4\": \"waluta\"\n },\n \"pt\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"infinito\",\n \"\\u2665\": \"amor\",\n \"&\": \"e\",\n \"|\": \"ou\",\n \"<\": \"menor que\",\n \">\": \"maior que\",\n \"\\u2211\": \"soma\",\n \"\\xA4\": \"moeda\"\n },\n \"ro\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"infinit\",\n \"\\u2665\": \"dragoste\",\n \"&\": \"si\",\n \"|\": \"sau\",\n \"<\": \"mai mic ca\",\n \">\": \"mai mare ca\",\n \"\\u2211\": \"suma\",\n \"\\xA4\": \"valuta\"\n },\n \"ru\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"beskonechno\",\n \"\\u2665\": \"lubov\",\n \"&\": \"i\",\n \"|\": \"ili\",\n \"<\": \"menshe\",\n \">\": \"bolshe\",\n \"\\u2211\": \"summa\",\n \"\\xA4\": \"valjuta\"\n },\n \"sk\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"nekonecno\",\n \"\\u2665\": \"laska\",\n \"&\": \"a\",\n \"|\": \"alebo\",\n \"<\": \"menej ako\",\n \">\": \"viac ako\",\n \"\\u2211\": \"sucet\",\n \"\\xA4\": \"mena\"\n },\n \"sr\": {},\n \"tr\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"sonsuzluk\",\n \"\\u2665\": \"ask\",\n \"&\": \"ve\",\n \"|\": \"veya\",\n \"<\": \"kucuktur\",\n \">\": \"buyuktur\",\n \"\\u2211\": \"toplam\",\n \"\\xA4\": \"para birimi\"\n },\n \"uk\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"bezkinechnist\",\n \"\\u2665\": \"lubov\",\n \"&\": \"i\",\n \"|\": \"abo\",\n \"<\": \"menshe\",\n \">\": \"bilshe\",\n \"\\u2211\": \"suma\",\n \"\\xA4\": \"valjuta\"\n },\n \"vn\": {\n \"\\u2206\": \"delta\",\n \"\\u221E\": \"vo cuc\",\n \"\\u2665\": \"yeu\",\n \"&\": \"va\",\n \"|\": \"hoac\",\n \"<\": \"nho hon\",\n \">\": \"lon hon\",\n \"\\u2211\": \"tong\",\n \"\\xA4\": \"tien te\"\n }\n };\n var uricChars = [\";\", \"?\", \":\", \"@\", \"&\", \"=\", \"+\", \"$\", \",\", \"/\"].join(\"\");\n var uricNoSlashChars = [\";\", \"?\", \":\", \"@\", \"&\", \"=\", \"+\", \"$\", \",\"].join(\"\");\n var markChars = [\".\", \"!\", \"~\", \"*\", \"'\", \"(\", \")\"].join(\"\");\n var getSlug = function getSlug2(input, opts) {\n var separator = \"-\";\n var result = \"\";\n var diatricString = \"\";\n var convertSymbols = true;\n var customReplacements = {};\n var maintainCase;\n var titleCase;\n var truncate;\n var uricFlag;\n var uricNoSlashFlag;\n var markFlag;\n var symbol;\n var langChar;\n var lucky;\n var i;\n var ch;\n var l;\n var lastCharWasSymbol;\n var lastCharWasDiatric;\n var allowedChars = \"\";\n if (typeof input !== \"string\") {\n return \"\";\n }\n if (typeof opts === \"string\") {\n separator = opts;\n }\n symbol = symbolMap.en;\n langChar = langCharMap.en;\n if (typeof opts === \"object\") {\n maintainCase = opts.maintainCase || false;\n customReplacements = opts.custom && typeof opts.custom === \"object\" ? opts.custom : customReplacements;\n truncate = +opts.truncate > 1 && opts.truncate || false;\n uricFlag = opts.uric || false;\n uricNoSlashFlag = opts.uricNoSlash || false;\n markFlag = opts.mark || false;\n convertSymbols = opts.symbols === false || opts.lang === false ? false : true;\n separator = opts.separator || separator;\n if (uricFlag) {\n allowedChars += uricChars;\n }\n if (uricNoSlashFlag) {\n allowedChars += uricNoSlashChars;\n }\n if (markFlag) {\n allowedChars += markChars;\n }\n symbol = opts.lang && symbolMap[opts.lang] && convertSymbols ? symbolMap[opts.lang] : convertSymbols ? symbolMap.en : {};\n langChar = opts.lang && langCharMap[opts.lang] ? langCharMap[opts.lang] : opts.lang === false || opts.lang === true ? {} : langCharMap.en;\n if (opts.titleCase && typeof opts.titleCase.length === \"number\" && Array.prototype.toString.call(opts.titleCase)) {\n opts.titleCase.forEach(function(v) {\n customReplacements[v + \"\"] = v + \"\";\n });\n titleCase = true;\n } else {\n titleCase = !!opts.titleCase;\n }\n if (opts.custom && typeof opts.custom.length === \"number\" && Array.prototype.toString.call(opts.custom)) {\n opts.custom.forEach(function(v) {\n customReplacements[v + \"\"] = v + \"\";\n });\n }\n Object.keys(customReplacements).forEach(function(v) {\n var r;\n if (v.length > 1) {\n r = new RegExp(\"\\\\b\" + escapeChars(v) + \"\\\\b\", \"gi\");\n } else {\n r = new RegExp(escapeChars(v), \"gi\");\n }\n input = input.replace(r, customReplacements[v]);\n });\n for (ch in customReplacements) {\n allowedChars += ch;\n }\n }\n allowedChars += separator;\n allowedChars = escapeChars(allowedChars);\n input = input.replace(/(^\\s+|\\s+$)/g, \"\");\n lastCharWasSymbol = false;\n lastCharWasDiatric = false;\n for (i = 0, l = input.length; i < l; i++) {\n ch = input[i];\n if (isReplacedCustomChar(ch, customReplacements)) {\n lastCharWasSymbol = false;\n } else if (langChar[ch]) {\n ch = lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) ? \" \" + langChar[ch] : langChar[ch];\n lastCharWasSymbol = false;\n } else if (ch in charMap) {\n if (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) {\n diatricString += ch;\n ch = \"\";\n } else if (lastCharWasDiatric === true) {\n ch = diatricMap[diatricString] + charMap[ch];\n diatricString = \"\";\n } else {\n ch = lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) ? \" \" + charMap[ch] : charMap[ch];\n }\n lastCharWasSymbol = false;\n lastCharWasDiatric = false;\n } else if (ch in diatricMap) {\n diatricString += ch;\n ch = \"\";\n if (i === l - 1) {\n ch = diatricMap[diatricString];\n }\n lastCharWasDiatric = true;\n } else if (\n // process symbol chars\n symbol[ch] && !(uricFlag && uricChars.indexOf(ch) !== -1) && !(uricNoSlashFlag && uricNoSlashChars.indexOf(ch) !== -1)\n ) {\n ch = lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) ? separator + symbol[ch] : symbol[ch];\n ch += input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) ? separator : \"\";\n lastCharWasSymbol = true;\n } else {\n if (lastCharWasDiatric === true) {\n ch = diatricMap[diatricString] + ch;\n diatricString = \"\";\n lastCharWasDiatric = false;\n } else if (lastCharWasSymbol && (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/))) {\n ch = \" \" + ch;\n }\n lastCharWasSymbol = false;\n }\n result += ch.replace(new RegExp(\"[^\\\\w\\\\s\" + allowedChars + \"_-]\", \"g\"), separator);\n }\n if (titleCase) {\n result = result.replace(/(\\w)(\\S*)/g, function(_, i2, r) {\n var j = i2.toUpperCase() + (r !== null ? r : \"\");\n return Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0 ? j : j.toLowerCase();\n });\n }\n result = result.replace(/\\s+/g, separator).replace(new RegExp(\"\\\\\" + separator + \"+\", \"g\"), separator).replace(new RegExp(\"(^\\\\\" + separator + \"+|\\\\\" + separator + \"+$)\", \"g\"), \"\");\n if (truncate && result.length > truncate) {\n lucky = result.charAt(truncate) === separator;\n result = result.slice(0, truncate);\n if (!lucky) {\n result = result.slice(0, result.lastIndexOf(separator));\n }\n }\n if (!maintainCase && !titleCase) {\n result = result.toLowerCase();\n }\n return result;\n };\n var createSlug = function createSlug2(opts) {\n return function getSlugWithConfig(input) {\n return getSlug(input, opts);\n };\n };\n var escapeChars = function escapeChars2(input) {\n return input.replace(/[-\\\\^$*+?.()|[\\]{}\\/]/g, \"\\\\$&\");\n };\n var isReplacedCustomChar = function(ch, customReplacements) {\n for (var c in customReplacements) {\n if (customReplacements[c] === ch) {\n return true;\n }\n }\n };\n if (typeof module !== \"undefined\" && module.exports) {\n module.exports = getSlug;\n module.exports.createSlug = createSlug;\n } else if (typeof define !== \"undefined\" && define.amd) {\n define([], function() {\n return getSlug;\n });\n } else {\n try {\n if (root.getSlug || root.createSlug) {\n throw \"speakingurl: globals exists /(getSlug|createSlug)/\";\n } else {\n root.getSlug = getSlug;\n root.createSlug = createSlug;\n }\n } catch (e) {\n }\n }\n })(exports);\n }\n});\n\n// ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js\nvar require_speakingurl2 = __commonJS({\n \"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js\"(exports, module) {\n \"use strict\";\n init_esm_shims();\n module.exports = require_speakingurl();\n }\n});\n\n// src/index.ts\ninit_esm_shims();\n\n// src/core/index.ts\ninit_esm_shims();\nimport { isNuxtApp, target as target13 } from \"@vue/devtools-shared\";\n\n// src/compat/index.ts\ninit_esm_shims();\nimport { target } from \"@vue/devtools-shared\";\nfunction onLegacyDevToolsPluginApiAvailable(cb) {\n if (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__) {\n cb();\n return;\n }\n Object.defineProperty(target, \"__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__\", {\n set(value) {\n if (value)\n cb();\n },\n configurable: true\n });\n}\n\n// src/ctx/index.ts\ninit_esm_shims();\nimport { target as target11 } from \"@vue/devtools-shared\";\n\n// src/ctx/api.ts\ninit_esm_shims();\nimport { target as target9 } from \"@vue/devtools-shared\";\n\n// src/core/component/state/editor.ts\ninit_esm_shims();\n\n// src/shared/stub-vue.ts\ninit_esm_shims();\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* IS_READONLY */]);\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* RAW */]);\n }\n return !!(value && value[\"__v_isReactive\" /* IS_REACTIVE */]);\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* RAW */];\n return raw ? toRaw(raw) : observed;\n}\nvar Fragment = Symbol.for(\"v-fgt\");\n\n// src/core/component/utils/index.ts\ninit_esm_shims();\nimport { basename, classify } from \"@vue/devtools-shared\";\nfunction getComponentTypeName(options) {\n var _a25;\n const name = options.name || options._componentTag || options.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ || options.__name;\n if (name === \"index\" && ((_a25 = options.__file) == null ? void 0 : _a25.endsWith(\"index.vue\"))) {\n return \"\";\n }\n return name;\n}\nfunction getComponentFileName(options) {\n const file = options.__file;\n if (file)\n return classify(basename(file, \".vue\"));\n}\nfunction getComponentName(options) {\n const name = options.displayName || options.name || options._componentTag;\n if (name)\n return name;\n return getComponentFileName(options);\n}\nfunction saveComponentGussedName(instance, name) {\n instance.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ = name;\n return name;\n}\nfunction getAppRecord(instance) {\n if (instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__)\n return instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n else if (instance.root)\n return instance.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n}\nasync function getComponentId(options) {\n const { app, uid, instance } = options;\n try {\n if (instance.__VUE_DEVTOOLS_NEXT_UID__)\n return instance.__VUE_DEVTOOLS_NEXT_UID__;\n const appRecord = await getAppRecord(app);\n if (!appRecord)\n return null;\n const isRoot = appRecord.rootInstance === instance;\n return `${appRecord.id}:${isRoot ? \"root\" : uid}`;\n } catch (e) {\n }\n}\nfunction isFragment(instance) {\n var _a25, _b25;\n const subTreeType = (_a25 = instance.subTree) == null ? void 0 : _a25.type;\n const appRecord = getAppRecord(instance);\n if (appRecord) {\n return ((_b25 = appRecord == null ? void 0 : appRecord.types) == null ? void 0 : _b25.Fragment) === subTreeType;\n }\n return false;\n}\nfunction isBeingDestroyed(instance) {\n return instance._isBeingDestroyed || instance.isUnmounted;\n}\nfunction getInstanceName(instance) {\n var _a25, _b25, _c;\n const name = getComponentTypeName((instance == null ? void 0 : instance.type) || {});\n if (name)\n return name;\n if ((instance == null ? void 0 : instance.root) === instance)\n return \"Root\";\n for (const key in (_b25 = (_a25 = instance.parent) == null ? void 0 : _a25.type) == null ? void 0 : _b25.components) {\n if (instance.parent.type.components[key] === (instance == null ? void 0 : instance.type))\n return saveComponentGussedName(instance, key);\n }\n for (const key in (_c = instance.appContext) == null ? void 0 : _c.components) {\n if (instance.appContext.components[key] === (instance == null ? void 0 : instance.type))\n return saveComponentGussedName(instance, key);\n }\n const fileName = getComponentFileName((instance == null ? void 0 : instance.type) || {});\n if (fileName)\n return fileName;\n return \"Anonymous Component\";\n}\nfunction getUniqueComponentId(instance) {\n var _a25, _b25, _c;\n const appId = (_c = (_b25 = (_a25 = instance == null ? void 0 : instance.appContext) == null ? void 0 : _a25.app) == null ? void 0 : _b25.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__) != null ? _c : 0;\n const instanceId = instance === (instance == null ? void 0 : instance.root) ? \"root\" : instance.uid;\n return `${appId}:${instanceId}`;\n}\nfunction getRenderKey(value) {\n if (value == null)\n return \"\";\n if (typeof value === \"number\")\n return value;\n else if (typeof value === \"string\")\n return `'${value}'`;\n else if (Array.isArray(value))\n return \"Array\";\n else\n return \"Object\";\n}\nfunction returnError(cb) {\n try {\n return cb();\n } catch (e) {\n return e;\n }\n}\nfunction getComponentInstance(appRecord, instanceId) {\n instanceId = instanceId || `${appRecord.id}:root`;\n const instance = appRecord.instanceMap.get(instanceId);\n return instance || appRecord.instanceMap.get(\":root\");\n}\nfunction ensurePropertyExists(obj, key, skipObjCheck = false) {\n return skipObjCheck ? key in obj : typeof obj === \"object\" && obj !== null ? key in obj : false;\n}\n\n// src/core/component/state/editor.ts\nvar StateEditor = class {\n constructor() {\n this.refEditor = new RefStateEditor();\n }\n set(object, path, value, cb) {\n const sections = Array.isArray(path) ? path : path.split(\".\");\n const markRef = false;\n while (sections.length > 1) {\n const section = sections.shift();\n if (object instanceof Map)\n object = object.get(section);\n if (object instanceof Set)\n object = Array.from(object.values())[section];\n else object = object[section];\n if (this.refEditor.isRef(object))\n object = this.refEditor.get(object);\n }\n const field = sections[0];\n const item = this.refEditor.get(object)[field];\n if (cb) {\n cb(object, field, value);\n } else {\n if (this.refEditor.isRef(item))\n this.refEditor.set(item, value);\n else if (markRef)\n object[field] = value;\n else\n object[field] = value;\n }\n }\n get(object, path) {\n const sections = Array.isArray(path) ? path : path.split(\".\");\n for (let i = 0; i < sections.length; i++) {\n if (object instanceof Map)\n object = object.get(sections[i]);\n else\n object = object[sections[i]];\n if (this.refEditor.isRef(object))\n object = this.refEditor.get(object);\n if (!object)\n return void 0;\n }\n return object;\n }\n has(object, path, parent = false) {\n if (typeof object === \"undefined\")\n return false;\n const sections = Array.isArray(path) ? path.slice() : path.split(\".\");\n const size = !parent ? 1 : 2;\n while (object && sections.length > size) {\n const section = sections.shift();\n object = object[section];\n if (this.refEditor.isRef(object))\n object = this.refEditor.get(object);\n }\n return object != null && Object.prototype.hasOwnProperty.call(object, sections[0]);\n }\n createDefaultSetCallback(state) {\n return (object, field, value) => {\n if (state.remove || state.newKey) {\n if (Array.isArray(object))\n object.splice(field, 1);\n else if (toRaw(object) instanceof Map)\n object.delete(field);\n else if (toRaw(object) instanceof Set)\n object.delete(Array.from(object.values())[field]);\n else Reflect.deleteProperty(object, field);\n }\n if (!state.remove) {\n const target22 = object[state.newKey || field];\n if (this.refEditor.isRef(target22))\n this.refEditor.set(target22, value);\n else if (toRaw(object) instanceof Map)\n object.set(state.newKey || field, value);\n else if (toRaw(object) instanceof Set)\n object.add(value);\n else\n object[state.newKey || field] = value;\n }\n };\n }\n};\nvar RefStateEditor = class {\n set(ref, value) {\n if (isRef(ref)) {\n ref.value = value;\n } else {\n if (ref instanceof Set && Array.isArray(value)) {\n ref.clear();\n value.forEach((v) => ref.add(v));\n return;\n }\n const currentKeys = Object.keys(value);\n if (ref instanceof Map) {\n const previousKeysSet2 = new Set(ref.keys());\n currentKeys.forEach((key) => {\n ref.set(key, Reflect.get(value, key));\n previousKeysSet2.delete(key);\n });\n previousKeysSet2.forEach((key) => ref.delete(key));\n return;\n }\n const previousKeysSet = new Set(Object.keys(ref));\n currentKeys.forEach((key) => {\n Reflect.set(ref, key, Reflect.get(value, key));\n previousKeysSet.delete(key);\n });\n previousKeysSet.forEach((key) => Reflect.deleteProperty(ref, key));\n }\n }\n get(ref) {\n return isRef(ref) ? ref.value : ref;\n }\n isRef(ref) {\n return isRef(ref) || isReactive(ref);\n }\n};\nasync function editComponentState(payload, stateEditor2) {\n const { path, nodeId, state, type } = payload;\n const instance = getComponentInstance(activeAppRecord.value, nodeId);\n if (!instance)\n return;\n const targetPath = path.slice();\n let target22;\n if (instance.devtoolsRawSetupState && Object.keys(instance.devtoolsRawSetupState).includes(path[0]))\n target22 = instance.devtoolsRawSetupState;\n if (instance.data && Object.keys(instance.data).includes(path[0]))\n target22 = instance.data;\n if (target22 && targetPath) {\n if (state.type === \"object\" && type === \"reactive\") {\n }\n stateEditor2.set(target22, targetPath, state.value, stateEditor2.createDefaultSetCallback(state));\n }\n}\nvar stateEditor = new StateEditor();\nasync function editState(payload) {\n editComponentState(payload, stateEditor);\n}\n\n// src/core/component/tree/el.ts\ninit_esm_shims();\nfunction getRootElementsFromComponentInstance(instance) {\n if (isFragment(instance))\n return getFragmentRootElements(instance.subTree);\n if (!instance.subTree)\n return [];\n return [instance.subTree.el];\n}\nfunction getFragmentRootElements(vnode) {\n if (!vnode.children)\n return [];\n const list = [];\n vnode.children.forEach((childVnode) => {\n if (childVnode.component)\n list.push(...getRootElementsFromComponentInstance(childVnode.component));\n else if (childVnode == null ? void 0 : childVnode.el)\n list.push(childVnode.el);\n });\n return list;\n}\n\n// src/core/component-highlighter/index.ts\ninit_esm_shims();\n\n// src/core/component/state/bounding-rect.ts\ninit_esm_shims();\nfunction createRect() {\n const rect = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n get width() {\n return rect.right - rect.left;\n },\n get height() {\n return rect.bottom - rect.top;\n }\n };\n return rect;\n}\nvar range;\nfunction getTextRect(node) {\n if (!range)\n range = document.createRange();\n range.selectNode(node);\n return range.getBoundingClientRect();\n}\nfunction getFragmentRect(vnode) {\n const rect = createRect();\n if (!vnode.children)\n return rect;\n for (let i = 0, l = vnode.children.length; i < l; i++) {\n const childVnode = vnode.children[i];\n let childRect;\n if (childVnode.component) {\n childRect = getComponentBoundingRect(childVnode.component);\n } else if (childVnode.el) {\n const el = childVnode.el;\n if (el.nodeType === 1 || el.getBoundingClientRect)\n childRect = el.getBoundingClientRect();\n else if (el.nodeType === 3 && el.data.trim())\n childRect = getTextRect(el);\n }\n if (childRect)\n mergeRects(rect, childRect);\n }\n return rect;\n}\nfunction mergeRects(a, b) {\n if (!a.top || b.top < a.top)\n a.top = b.top;\n if (!a.bottom || b.bottom > a.bottom)\n a.bottom = b.bottom;\n if (!a.left || b.left < a.left)\n a.left = b.left;\n if (!a.right || b.right > a.right)\n a.right = b.right;\n return a;\n}\nvar DEFAULT_RECT = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: 0,\n height: 0\n};\nfunction getComponentBoundingRect(instance) {\n const el = instance.subTree.el;\n if (typeof window === \"undefined\") {\n return DEFAULT_RECT;\n }\n if (isFragment(instance))\n return getFragmentRect(instance.subTree);\n else if ((el == null ? void 0 : el.nodeType) === 1)\n return el == null ? void 0 : el.getBoundingClientRect();\n else if (instance.subTree.component)\n return getComponentBoundingRect(instance.subTree.component);\n else\n return DEFAULT_RECT;\n}\n\n// src/core/component-highlighter/index.ts\nvar CONTAINER_ELEMENT_ID = \"__vue-devtools-component-inspector__\";\nvar CARD_ELEMENT_ID = \"__vue-devtools-component-inspector__card__\";\nvar COMPONENT_NAME_ELEMENT_ID = \"__vue-devtools-component-inspector__name__\";\nvar INDICATOR_ELEMENT_ID = \"__vue-devtools-component-inspector__indicator__\";\nvar containerStyles = {\n display: \"block\",\n zIndex: 2147483640,\n position: \"fixed\",\n backgroundColor: \"#42b88325\",\n border: \"1px solid #42b88350\",\n borderRadius: \"5px\",\n transition: \"all 0.1s ease-in\",\n pointerEvents: \"none\"\n};\nvar cardStyles = {\n fontFamily: \"Arial, Helvetica, sans-serif\",\n padding: \"5px 8px\",\n borderRadius: \"4px\",\n textAlign: \"left\",\n position: \"absolute\",\n left: 0,\n color: \"#e9e9e9\",\n fontSize: \"14px\",\n fontWeight: 600,\n lineHeight: \"24px\",\n backgroundColor: \"#42b883\",\n boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)\"\n};\nvar indicatorStyles = {\n display: \"inline-block\",\n fontWeight: 400,\n fontStyle: \"normal\",\n fontSize: \"12px\",\n opacity: 0.7\n};\nfunction getContainerElement() {\n return document.getElementById(CONTAINER_ELEMENT_ID);\n}\nfunction getCardElement() {\n return document.getElementById(CARD_ELEMENT_ID);\n}\nfunction getIndicatorElement() {\n return document.getElementById(INDICATOR_ELEMENT_ID);\n}\nfunction getNameElement() {\n return document.getElementById(COMPONENT_NAME_ELEMENT_ID);\n}\nfunction getStyles(bounds) {\n return {\n left: `${Math.round(bounds.left * 100) / 100}px`,\n top: `${Math.round(bounds.top * 100) / 100}px`,\n width: `${Math.round(bounds.width * 100) / 100}px`,\n height: `${Math.round(bounds.height * 100) / 100}px`\n };\n}\nfunction create(options) {\n var _a25;\n const containerEl = document.createElement(\"div\");\n containerEl.id = (_a25 = options.elementId) != null ? _a25 : CONTAINER_ELEMENT_ID;\n Object.assign(containerEl.style, {\n ...containerStyles,\n ...getStyles(options.bounds),\n ...options.style\n });\n const cardEl = document.createElement(\"span\");\n cardEl.id = CARD_ELEMENT_ID;\n Object.assign(cardEl.style, {\n ...cardStyles,\n top: options.bounds.top < 35 ? 0 : \"-35px\"\n });\n const nameEl = document.createElement(\"span\");\n nameEl.id = COMPONENT_NAME_ELEMENT_ID;\n nameEl.innerHTML = `<${options.name}> `;\n const indicatorEl = document.createElement(\"i\");\n indicatorEl.id = INDICATOR_ELEMENT_ID;\n indicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;\n Object.assign(indicatorEl.style, indicatorStyles);\n cardEl.appendChild(nameEl);\n cardEl.appendChild(indicatorEl);\n containerEl.appendChild(cardEl);\n document.body.appendChild(containerEl);\n return containerEl;\n}\nfunction update(options) {\n const containerEl = getContainerElement();\n const cardEl = getCardElement();\n const nameEl = getNameElement();\n const indicatorEl = getIndicatorElement();\n if (containerEl) {\n Object.assign(containerEl.style, {\n ...containerStyles,\n ...getStyles(options.bounds)\n });\n Object.assign(cardEl.style, {\n top: options.bounds.top < 35 ? 0 : \"-35px\"\n });\n nameEl.innerHTML = `<${options.name}> `;\n indicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;\n }\n}\nfunction highlight(instance) {\n const bounds = getComponentBoundingRect(instance);\n const name = getInstanceName(instance);\n const container = getContainerElement();\n container ? update({ bounds, name }) : create({ bounds, name });\n}\nfunction unhighlight() {\n const el = getContainerElement();\n if (el)\n el.style.display = \"none\";\n}\nvar inspectInstance = null;\nfunction inspectFn(e) {\n const target22 = e.target;\n if (target22) {\n const instance = target22.__vueParentComponent;\n if (instance) {\n inspectInstance = instance;\n const el = instance.vnode.el;\n if (el) {\n const bounds = getComponentBoundingRect(instance);\n const name = getInstanceName(instance);\n const container = getContainerElement();\n container ? update({ bounds, name }) : create({ bounds, name });\n }\n }\n }\n}\nfunction selectComponentFn(e, cb) {\n var _a25;\n e.preventDefault();\n e.stopPropagation();\n if (inspectInstance) {\n const app = (_a25 = activeAppRecord.value) == null ? void 0 : _a25.app;\n getComponentId({\n app,\n uid: app.uid,\n instance: inspectInstance\n }).then((id) => {\n cb(id);\n });\n }\n}\nvar inspectComponentHighLighterSelectFn = null;\nfunction cancelInspectComponentHighLighter() {\n unhighlight();\n window.removeEventListener(\"mouseover\", inspectFn);\n window.removeEventListener(\"click\", inspectComponentHighLighterSelectFn, true);\n inspectComponentHighLighterSelectFn = null;\n}\nfunction inspectComponentHighLighter() {\n window.addEventListener(\"mouseover\", inspectFn);\n return new Promise((resolve) => {\n function onSelect(e) {\n e.preventDefault();\n e.stopPropagation();\n selectComponentFn(e, (id) => {\n window.removeEventListener(\"click\", onSelect, true);\n inspectComponentHighLighterSelectFn = null;\n window.removeEventListener(\"mouseover\", inspectFn);\n const el = getContainerElement();\n if (el)\n el.style.display = \"none\";\n resolve(JSON.stringify({ id }));\n });\n }\n inspectComponentHighLighterSelectFn = onSelect;\n window.addEventListener(\"click\", onSelect, true);\n });\n}\nfunction scrollToComponent(options) {\n const instance = getComponentInstance(activeAppRecord.value, options.id);\n if (instance) {\n const [el] = getRootElementsFromComponentInstance(instance);\n if (typeof el.scrollIntoView === \"function\") {\n el.scrollIntoView({\n behavior: \"smooth\"\n });\n } else {\n const bounds = getComponentBoundingRect(instance);\n const scrollTarget = document.createElement(\"div\");\n const styles = {\n ...getStyles(bounds),\n position: \"absolute\"\n };\n Object.assign(scrollTarget.style, styles);\n document.body.appendChild(scrollTarget);\n scrollTarget.scrollIntoView({\n behavior: \"smooth\"\n });\n setTimeout(() => {\n document.body.removeChild(scrollTarget);\n }, 2e3);\n }\n setTimeout(() => {\n const bounds = getComponentBoundingRect(instance);\n if (bounds.width || bounds.height) {\n const name = getInstanceName(instance);\n const el2 = getContainerElement();\n el2 ? update({ ...options, name, bounds }) : create({ ...options, name, bounds });\n setTimeout(() => {\n if (el2)\n el2.style.display = \"none\";\n }, 1500);\n }\n }, 1200);\n }\n}\n\n// src/core/component-inspector/index.ts\ninit_esm_shims();\nimport { target as target2 } from \"@vue/devtools-shared\";\nvar _a, _b;\n(_b = (_a = target2).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__) != null ? _b : _a.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = true;\nfunction toggleComponentInspectorEnabled(enabled) {\n target2.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = enabled;\n}\nfunction waitForInspectorInit(cb) {\n let total = 0;\n const timer = setInterval(() => {\n if (target2.__VUE_INSPECTOR__) {\n clearInterval(timer);\n total += 30;\n cb();\n }\n if (total >= /* 5s */\n 5e3)\n clearInterval(timer);\n }, 30);\n}\nfunction setupInspector() {\n const inspector = target2.__VUE_INSPECTOR__;\n const _openInEditor = inspector.openInEditor;\n inspector.openInEditor = async (...params) => {\n inspector.disable();\n _openInEditor(...params);\n };\n}\nfunction getComponentInspector() {\n return new Promise((resolve) => {\n function setup() {\n setupInspector();\n resolve(target2.__VUE_INSPECTOR__);\n }\n if (!target2.__VUE_INSPECTOR__) {\n waitForInspectorInit(() => {\n setup();\n });\n } else {\n setup();\n }\n });\n}\n\n// src/core/open-in-editor/index.ts\ninit_esm_shims();\nimport { target as target5 } from \"@vue/devtools-shared\";\n\n// src/ctx/state.ts\ninit_esm_shims();\nimport { target as global, isUrlString } from \"@vue/devtools-shared\";\nimport { debounce as debounce3 } from \"perfect-debounce\";\n\n// src/core/timeline/storage.ts\ninit_esm_shims();\nimport { isBrowser } from \"@vue/devtools-shared\";\nvar TIMELINE_LAYERS_STATE_STORAGE_ID = \"__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__\";\nfunction addTimelineLayersStateToStorage(state) {\n if (!isBrowser || typeof localStorage === \"undefined\" || localStorage === null) {\n return;\n }\n localStorage.setItem(TIMELINE_LAYERS_STATE_STORAGE_ID, JSON.stringify(state));\n}\nfunction getTimelineLayersStateFromStorage() {\n if (!isBrowser || typeof localStorage === \"undefined\" || localStorage === null) {\n return {\n recordingState: false,\n mouseEventEnabled: false,\n keyboardEventEnabled: false,\n componentEventEnabled: false,\n performanceEventEnabled: false,\n selected: \"\"\n };\n }\n const state = localStorage.getItem(TIMELINE_LAYERS_STATE_STORAGE_ID);\n return state ? JSON.parse(state) : {\n recordingState: false,\n mouseEventEnabled: false,\n keyboardEventEnabled: false,\n componentEventEnabled: false,\n performanceEventEnabled: false,\n selected: \"\"\n };\n}\n\n// src/ctx/hook.ts\ninit_esm_shims();\nimport { createHooks } from \"hookable\";\nimport { debounce as debounce2 } from \"perfect-debounce\";\n\n// src/ctx/inspector.ts\ninit_esm_shims();\nimport { target as target4 } from \"@vue/devtools-shared\";\nimport { debounce } from \"perfect-debounce\";\n\n// src/ctx/timeline.ts\ninit_esm_shims();\nimport { target as target3 } from \"@vue/devtools-shared\";\nvar _a2, _b2;\n(_b2 = (_a2 = target3).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS) != null ? _b2 : _a2.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS = [];\nvar devtoolsTimelineLayers = new Proxy(target3.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS, {\n get(target22, prop, receiver) {\n return Reflect.get(target22, prop, receiver);\n }\n});\nfunction addTimelineLayer(options, descriptor) {\n devtoolsState.timelineLayersState[descriptor.id] = false;\n devtoolsTimelineLayers.push({\n ...options,\n descriptorId: descriptor.id,\n appRecord: getAppRecord(descriptor.app)\n });\n}\nfunction updateTimelineLayersState(state) {\n const updatedState = {\n ...devtoolsState.timelineLayersState,\n ...state\n };\n addTimelineLayersStateToStorage(updatedState);\n updateDevToolsState({\n timelineLayersState: updatedState\n });\n}\n\n// src/ctx/inspector.ts\nvar _a3, _b3;\n(_b3 = (_a3 = target4).__VUE_DEVTOOLS_KIT_INSPECTOR__) != null ? _b3 : _a3.__VUE_DEVTOOLS_KIT_INSPECTOR__ = [];\nvar devtoolsInspector = new Proxy(target4.__VUE_DEVTOOLS_KIT_INSPECTOR__, {\n get(target22, prop, receiver) {\n return Reflect.get(target22, prop, receiver);\n }\n});\nvar callInspectorUpdatedHook = debounce(() => {\n devtoolsContext.hooks.callHook(\"sendInspectorToClient\" /* SEND_INSPECTOR_TO_CLIENT */, getActiveInspectors());\n});\nfunction addInspector(inspector, descriptor) {\n devtoolsInspector.push({\n options: inspector,\n descriptor,\n treeFilter: \"\",\n selectedNodeId: \"\",\n appRecord: getAppRecord(descriptor.app)\n });\n callInspectorUpdatedHook();\n}\nfunction getActiveInspectors() {\n return devtoolsInspector.filter((inspector) => inspector.descriptor.app === activeAppRecord.value.app).filter((inspector) => inspector.descriptor.id !== \"components\").map((inspector) => {\n var _a25;\n const descriptor = inspector.descriptor;\n const options = inspector.options;\n return {\n id: options.id,\n label: options.label,\n logo: descriptor.logo,\n icon: `custom-ic-baseline-${(_a25 = options == null ? void 0 : options.icon) == null ? void 0 : _a25.replace(/_/g, \"-\")}`,\n packageName: descriptor.packageName,\n homepage: descriptor.homepage,\n pluginId: descriptor.id\n };\n });\n}\nfunction getInspectorInfo(id) {\n const inspector = getInspector(id, activeAppRecord.value.app);\n if (!inspector)\n return;\n const descriptor = inspector.descriptor;\n const options = inspector.options;\n const timelineLayers = devtoolsTimelineLayers.filter((layer) => layer.descriptorId === descriptor.id).map((item) => ({\n id: item.id,\n label: item.label,\n color: item.color\n }));\n return {\n id: options.id,\n label: options.label,\n logo: descriptor.logo,\n packageName: descriptor.packageName,\n homepage: descriptor.homepage,\n timelineLayers\n };\n}\nfunction getInspector(id, app) {\n return devtoolsInspector.find((inspector) => inspector.options.id === id && (app ? inspector.descriptor.app === app : true));\n}\nfunction getInspectorActions(id) {\n const inspector = getInspector(id);\n return inspector == null ? void 0 : inspector.options.actions;\n}\nfunction getInspectorNodeActions(id) {\n const inspector = getInspector(id);\n return inspector == null ? void 0 : inspector.options.nodeActions;\n}\n\n// src/ctx/hook.ts\nvar DevToolsV6PluginAPIHookKeys = /* @__PURE__ */ ((DevToolsV6PluginAPIHookKeys2) => {\n DevToolsV6PluginAPIHookKeys2[\"VISIT_COMPONENT_TREE\"] = \"visitComponentTree\";\n DevToolsV6PluginAPIHookKeys2[\"INSPECT_COMPONENT\"] = \"inspectComponent\";\n DevToolsV6PluginAPIHookKeys2[\"EDIT_COMPONENT_STATE\"] = \"editComponentState\";\n DevToolsV6PluginAPIHookKeys2[\"GET_INSPECTOR_TREE\"] = \"getInspectorTree\";\n DevToolsV6PluginAPIHookKeys2[\"GET_INSPECTOR_STATE\"] = \"getInspectorState\";\n DevToolsV6PluginAPIHookKeys2[\"EDIT_INSPECTOR_STATE\"] = \"editInspectorState\";\n DevToolsV6PluginAPIHookKeys2[\"INSPECT_TIMELINE_EVENT\"] = \"inspectTimelineEvent\";\n DevToolsV6PluginAPIHookKeys2[\"TIMELINE_CLEARED\"] = \"timelineCleared\";\n DevToolsV6PluginAPIHookKeys2[\"SET_PLUGIN_SETTINGS\"] = \"setPluginSettings\";\n return DevToolsV6PluginAPIHookKeys2;\n})(DevToolsV6PluginAPIHookKeys || {});\nvar DevToolsContextHookKeys = /* @__PURE__ */ ((DevToolsContextHookKeys2) => {\n DevToolsContextHookKeys2[\"ADD_INSPECTOR\"] = \"addInspector\";\n DevToolsContextHookKeys2[\"SEND_INSPECTOR_TREE\"] = \"sendInspectorTree\";\n DevToolsContextHookKeys2[\"SEND_INSPECTOR_STATE\"] = \"sendInspectorState\";\n DevToolsContextHookKeys2[\"CUSTOM_INSPECTOR_SELECT_NODE\"] = \"customInspectorSelectNode\";\n DevToolsContextHookKeys2[\"TIMELINE_LAYER_ADDED\"] = \"timelineLayerAdded\";\n DevToolsContextHookKeys2[\"TIMELINE_EVENT_ADDED\"] = \"timelineEventAdded\";\n DevToolsContextHookKeys2[\"GET_COMPONENT_INSTANCES\"] = \"getComponentInstances\";\n DevToolsContextHookKeys2[\"GET_COMPONENT_BOUNDS\"] = \"getComponentBounds\";\n DevToolsContextHookKeys2[\"GET_COMPONENT_NAME\"] = \"getComponentName\";\n DevToolsContextHookKeys2[\"COMPONENT_HIGHLIGHT\"] = \"componentHighlight\";\n DevToolsContextHookKeys2[\"COMPONENT_UNHIGHLIGHT\"] = \"componentUnhighlight\";\n return DevToolsContextHookKeys2;\n})(DevToolsContextHookKeys || {});\nvar DevToolsMessagingHookKeys = /* @__PURE__ */ ((DevToolsMessagingHookKeys2) => {\n DevToolsMessagingHookKeys2[\"SEND_INSPECTOR_TREE_TO_CLIENT\"] = \"sendInspectorTreeToClient\";\n DevToolsMessagingHookKeys2[\"SEND_INSPECTOR_STATE_TO_CLIENT\"] = \"sendInspectorStateToClient\";\n DevToolsMessagingHookKeys2[\"SEND_TIMELINE_EVENT_TO_CLIENT\"] = \"sendTimelineEventToClient\";\n DevToolsMessagingHookKeys2[\"SEND_INSPECTOR_TO_CLIENT\"] = \"sendInspectorToClient\";\n DevToolsMessagingHookKeys2[\"SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT\"] = \"sendActiveAppUpdatedToClient\";\n DevToolsMessagingHookKeys2[\"DEVTOOLS_STATE_UPDATED\"] = \"devtoolsStateUpdated\";\n DevToolsMessagingHookKeys2[\"DEVTOOLS_CONNECTED_UPDATED\"] = \"devtoolsConnectedUpdated\";\n DevToolsMessagingHookKeys2[\"ROUTER_INFO_UPDATED\"] = \"routerInfoUpdated\";\n return DevToolsMessagingHookKeys2;\n})(DevToolsMessagingHookKeys || {});\nfunction createDevToolsCtxHooks() {\n const hooks2 = createHooks();\n hooks2.hook(\"addInspector\" /* ADD_INSPECTOR */, ({ inspector, plugin }) => {\n addInspector(inspector, plugin.descriptor);\n });\n const debounceSendInspectorTree = debounce2(async ({ inspectorId, plugin }) => {\n var _a25;\n if (!inspectorId || !((_a25 = plugin == null ? void 0 : plugin.descriptor) == null ? void 0 : _a25.app) || devtoolsState.highPerfModeEnabled)\n return;\n const inspector = getInspector(inspectorId, plugin.descriptor.app);\n const _payload = {\n app: plugin.descriptor.app,\n inspectorId,\n filter: (inspector == null ? void 0 : inspector.treeFilter) || \"\",\n rootNodes: []\n };\n await new Promise((resolve) => {\n hooks2.callHookWith(async (callbacks) => {\n await Promise.all(callbacks.map((cb) => cb(_payload)));\n resolve();\n }, \"getInspectorTree\" /* GET_INSPECTOR_TREE */);\n });\n hooks2.callHookWith(async (callbacks) => {\n await Promise.all(callbacks.map((cb) => cb({\n inspectorId,\n rootNodes: _payload.rootNodes\n })));\n }, \"sendInspectorTreeToClient\" /* SEND_INSPECTOR_TREE_TO_CLIENT */);\n }, 120);\n hooks2.hook(\"sendInspectorTree\" /* SEND_INSPECTOR_TREE */, debounceSendInspectorTree);\n const debounceSendInspectorState = debounce2(async ({ inspectorId, plugin }) => {\n var _a25;\n if (!inspectorId || !((_a25 = plugin == null ? void 0 : plugin.descriptor) == null ? void 0 : _a25.app) || devtoolsState.highPerfModeEnabled)\n return;\n const inspector = getInspector(inspectorId, plugin.descriptor.app);\n const _payload = {\n app: plugin.descriptor.app,\n inspectorId,\n nodeId: (inspector == null ? void 0 : inspector.selectedNodeId) || \"\",\n state: null\n };\n const ctx = {\n currentTab: `custom-inspector:${inspectorId}`\n };\n if (_payload.nodeId) {\n await new Promise((resolve) => {\n hooks2.callHookWith(async (callbacks) => {\n await Promise.all(callbacks.map((cb) => cb(_payload, ctx)));\n resolve();\n }, \"getInspectorState\" /* GET_INSPECTOR_STATE */);\n });\n }\n hooks2.callHookWith(async (callbacks) => {\n await Promise.all(callbacks.map((cb) => cb({\n inspectorId,\n nodeId: _payload.nodeId,\n state: _payload.state\n })));\n }, \"sendInspectorStateToClient\" /* SEND_INSPECTOR_STATE_TO_CLIENT */);\n }, 120);\n hooks2.hook(\"sendInspectorState\" /* SEND_INSPECTOR_STATE */, debounceSendInspectorState);\n hooks2.hook(\"customInspectorSelectNode\" /* CUSTOM_INSPECTOR_SELECT_NODE */, ({ inspectorId, nodeId, plugin }) => {\n const inspector = getInspector(inspectorId, plugin.descriptor.app);\n if (!inspector)\n return;\n inspector.selectedNodeId = nodeId;\n });\n hooks2.hook(\"timelineLayerAdded\" /* TIMELINE_LAYER_ADDED */, ({ options, plugin }) => {\n addTimelineLayer(options, plugin.descriptor);\n });\n hooks2.hook(\"timelineEventAdded\" /* TIMELINE_EVENT_ADDED */, ({ options, plugin }) => {\n var _a25;\n const internalLayerIds = [\"performance\", \"component-event\", \"keyboard\", \"mouse\"];\n if (devtoolsState.highPerfModeEnabled || !((_a25 = devtoolsState.timelineLayersState) == null ? void 0 : _a25[plugin.descriptor.id]) && !internalLayerIds.includes(options.layerId))\n return;\n hooks2.callHookWith(async (callbacks) => {\n await Promise.all(callbacks.map((cb) => cb(options)));\n }, \"sendTimelineEventToClient\" /* SEND_TIMELINE_EVENT_TO_CLIENT */);\n });\n hooks2.hook(\"getComponentInstances\" /* GET_COMPONENT_INSTANCES */, async ({ app }) => {\n const appRecord = app.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n if (!appRecord)\n return null;\n const appId = appRecord.id.toString();\n const instances = [...appRecord.instanceMap].filter(([key]) => key.split(\":\")[0] === appId).map(([, instance]) => instance);\n return instances;\n });\n hooks2.hook(\"getComponentBounds\" /* GET_COMPONENT_BOUNDS */, async ({ instance }) => {\n const bounds = getComponentBoundingRect(instance);\n return bounds;\n });\n hooks2.hook(\"getComponentName\" /* GET_COMPONENT_NAME */, ({ instance }) => {\n const name = getInstanceName(instance);\n return name;\n });\n hooks2.hook(\"componentHighlight\" /* COMPONENT_HIGHLIGHT */, ({ uid }) => {\n const instance = activeAppRecord.value.instanceMap.get(uid);\n if (instance) {\n highlight(instance);\n }\n });\n hooks2.hook(\"componentUnhighlight\" /* COMPONENT_UNHIGHLIGHT */, () => {\n unhighlight();\n });\n return hooks2;\n}\n\n// src/ctx/state.ts\nvar _a4, _b4;\n(_b4 = (_a4 = global).__VUE_DEVTOOLS_KIT_APP_RECORDS__) != null ? _b4 : _a4.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = [];\nvar _a5, _b5;\n(_b5 = (_a5 = global).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__) != null ? _b5 : _a5.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ = {};\nvar _a6, _b6;\n(_b6 = (_a6 = global).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__) != null ? _b6 : _a6.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ = \"\";\nvar _a7, _b7;\n(_b7 = (_a7 = global).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__) != null ? _b7 : _a7.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__ = [];\nvar _a8, _b8;\n(_b8 = (_a8 = global).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__) != null ? _b8 : _a8.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ = [];\nvar STATE_KEY = \"__VUE_DEVTOOLS_KIT_GLOBAL_STATE__\";\nfunction initStateFactory() {\n return {\n connected: false,\n clientConnected: false,\n vitePluginDetected: true,\n appRecords: [],\n activeAppRecordId: \"\",\n tabs: [],\n commands: [],\n highPerfModeEnabled: true,\n devtoolsClientDetected: {},\n perfUniqueGroupId: 0,\n timelineLayersState: getTimelineLayersStateFromStorage()\n };\n}\nvar _a9, _b9;\n(_b9 = (_a9 = global)[STATE_KEY]) != null ? _b9 : _a9[STATE_KEY] = initStateFactory();\nvar callStateUpdatedHook = debounce3((state) => {\n devtoolsContext.hooks.callHook(\"devtoolsStateUpdated\" /* DEVTOOLS_STATE_UPDATED */, { state });\n});\nvar callConnectedUpdatedHook = debounce3((state, oldState) => {\n devtoolsContext.hooks.callHook(\"devtoolsConnectedUpdated\" /* DEVTOOLS_CONNECTED_UPDATED */, { state, oldState });\n});\nvar devtoolsAppRecords = new Proxy(global.__VUE_DEVTOOLS_KIT_APP_RECORDS__, {\n get(_target, prop, receiver) {\n if (prop === \"value\")\n return global.__VUE_DEVTOOLS_KIT_APP_RECORDS__;\n return global.__VUE_DEVTOOLS_KIT_APP_RECORDS__[prop];\n }\n});\nvar addDevToolsAppRecord = (app) => {\n global.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = [\n ...global.__VUE_DEVTOOLS_KIT_APP_RECORDS__,\n app\n ];\n};\nvar removeDevToolsAppRecord = (app) => {\n global.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = devtoolsAppRecords.value.filter((record) => record.app !== app);\n};\nvar activeAppRecord = new Proxy(global.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__, {\n get(_target, prop, receiver) {\n if (prop === \"value\")\n return global.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__;\n else if (prop === \"id\")\n return global.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__;\n return global.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[prop];\n }\n});\nfunction updateAllStates() {\n callStateUpdatedHook({\n ...global[STATE_KEY],\n appRecords: devtoolsAppRecords.value,\n activeAppRecordId: activeAppRecord.id,\n tabs: global.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,\n commands: global.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__\n });\n}\nfunction setActiveAppRecord(app) {\n global.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ = app;\n updateAllStates();\n}\nfunction setActiveAppRecordId(id) {\n global.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ = id;\n updateAllStates();\n}\nvar devtoolsState = new Proxy(global[STATE_KEY], {\n get(target22, property) {\n if (property === \"appRecords\") {\n return devtoolsAppRecords;\n } else if (property === \"activeAppRecordId\") {\n return activeAppRecord.id;\n } else if (property === \"tabs\") {\n return global.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__;\n } else if (property === \"commands\") {\n return global.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n }\n return global[STATE_KEY][property];\n },\n deleteProperty(target22, property) {\n delete target22[property];\n return true;\n },\n set(target22, property, value) {\n const oldState = { ...global[STATE_KEY] };\n target22[property] = value;\n global[STATE_KEY][property] = value;\n return true;\n }\n});\nfunction resetDevToolsState() {\n Object.assign(global[STATE_KEY], initStateFactory());\n}\nfunction updateDevToolsState(state) {\n const oldState = {\n ...global[STATE_KEY],\n appRecords: devtoolsAppRecords.value,\n activeAppRecordId: activeAppRecord.id\n };\n if (oldState.connected !== state.connected && state.connected || oldState.clientConnected !== state.clientConnected && state.clientConnected) {\n callConnectedUpdatedHook(global[STATE_KEY], oldState);\n }\n Object.assign(global[STATE_KEY], state);\n updateAllStates();\n}\nfunction onDevToolsConnected(fn) {\n return new Promise((resolve) => {\n if (devtoolsState.connected) {\n fn();\n resolve();\n }\n devtoolsContext.hooks.hook(\"devtoolsConnectedUpdated\" /* DEVTOOLS_CONNECTED_UPDATED */, ({ state }) => {\n if (state.connected) {\n fn();\n resolve();\n }\n });\n });\n}\nvar resolveIcon = (icon) => {\n if (!icon)\n return;\n if (icon.startsWith(\"baseline-\")) {\n return `custom-ic-${icon}`;\n }\n if (icon.startsWith(\"i-\") || isUrlString(icon))\n return icon;\n return `custom-ic-baseline-${icon}`;\n};\nfunction addCustomTab(tab) {\n const tabs = global.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__;\n if (tabs.some((t) => t.name === tab.name))\n return;\n tabs.push({\n ...tab,\n icon: resolveIcon(tab.icon)\n });\n updateAllStates();\n}\nfunction addCustomCommand(action) {\n const commands = global.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n if (commands.some((t) => t.id === action.id))\n return;\n commands.push({\n ...action,\n icon: resolveIcon(action.icon),\n children: action.children ? action.children.map((child) => ({\n ...child,\n icon: resolveIcon(child.icon)\n })) : void 0\n });\n updateAllStates();\n}\nfunction removeCustomCommand(actionId) {\n const commands = global.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n const index = commands.findIndex((t) => t.id === actionId);\n if (index === -1)\n return;\n commands.splice(index, 1);\n updateAllStates();\n}\nfunction toggleClientConnected(state) {\n updateDevToolsState({ clientConnected: state });\n}\n\n// src/core/open-in-editor/index.ts\nfunction setOpenInEditorBaseUrl(url) {\n target5.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__ = url;\n}\nfunction openInEditor(options = {}) {\n var _a25, _b25, _c;\n const { file, host, baseUrl = window.location.origin, line = 0, column = 0 } = options;\n if (file) {\n if (host === \"chrome-extension\") {\n const fileName = file.replace(/\\\\/g, \"\\\\\\\\\");\n const _baseUrl = (_b25 = (_a25 = window.VUE_DEVTOOLS_CONFIG) == null ? void 0 : _a25.openInEditorHost) != null ? _b25 : \"/\";\n fetch(`${_baseUrl}__open-in-editor?file=${encodeURI(file)}`).then((response) => {\n if (!response.ok) {\n const msg = `Opening component ${fileName} failed`;\n console.log(`%c${msg}`, \"color:red\");\n }\n });\n } else if (devtoolsState.vitePluginDetected) {\n const _baseUrl = (_c = target5.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__) != null ? _c : baseUrl;\n target5.__VUE_INSPECTOR__.openInEditor(_baseUrl, file, line, column);\n }\n }\n}\n\n// src/core/plugin/index.ts\ninit_esm_shims();\nimport { target as target8 } from \"@vue/devtools-shared\";\n\n// src/api/index.ts\ninit_esm_shims();\n\n// src/api/v6/index.ts\ninit_esm_shims();\n\n// src/core/plugin/plugin-settings.ts\ninit_esm_shims();\n\n// src/ctx/plugin.ts\ninit_esm_shims();\nimport { target as target6 } from \"@vue/devtools-shared\";\nvar _a10, _b10;\n(_b10 = (_a10 = target6).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__) != null ? _b10 : _a10.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__ = [];\nvar devtoolsPluginBuffer = new Proxy(target6.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__, {\n get(target22, prop, receiver) {\n return Reflect.get(target22, prop, receiver);\n }\n});\nfunction addDevToolsPluginToBuffer(pluginDescriptor, setupFn) {\n devtoolsPluginBuffer.push([pluginDescriptor, setupFn]);\n}\n\n// src/core/plugin/plugin-settings.ts\nfunction _getSettings(settings) {\n const _settings = {};\n Object.keys(settings).forEach((key) => {\n _settings[key] = settings[key].defaultValue;\n });\n return _settings;\n}\nfunction getPluginLocalKey(pluginId) {\n return `__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${pluginId}__`;\n}\nfunction getPluginSettingsOptions(pluginId) {\n var _a25, _b25, _c;\n const item = (_b25 = (_a25 = devtoolsPluginBuffer.find((item2) => {\n var _a26;\n return item2[0].id === pluginId && !!((_a26 = item2[0]) == null ? void 0 : _a26.settings);\n })) == null ? void 0 : _a25[0]) != null ? _b25 : null;\n return (_c = item == null ? void 0 : item.settings) != null ? _c : null;\n}\nfunction getPluginSettings(pluginId, fallbackValue) {\n var _a25, _b25, _c;\n const localKey = getPluginLocalKey(pluginId);\n if (localKey) {\n const localSettings = localStorage.getItem(localKey);\n if (localSettings) {\n return JSON.parse(localSettings);\n }\n }\n if (pluginId) {\n const item = (_b25 = (_a25 = devtoolsPluginBuffer.find((item2) => item2[0].id === pluginId)) == null ? void 0 : _a25[0]) != null ? _b25 : null;\n return _getSettings((_c = item == null ? void 0 : item.settings) != null ? _c : {});\n }\n return _getSettings(fallbackValue);\n}\nfunction initPluginSettings(pluginId, settings) {\n const localKey = getPluginLocalKey(pluginId);\n const localSettings = localStorage.getItem(localKey);\n if (!localSettings) {\n localStorage.setItem(localKey, JSON.stringify(_getSettings(settings)));\n }\n}\nfunction setPluginSettings(pluginId, key, value) {\n const localKey = getPluginLocalKey(pluginId);\n const localSettings = localStorage.getItem(localKey);\n const parsedLocalSettings = JSON.parse(localSettings || \"{}\");\n const updated = {\n ...parsedLocalSettings,\n [key]: value\n };\n localStorage.setItem(localKey, JSON.stringify(updated));\n devtoolsContext.hooks.callHookWith((callbacks) => {\n callbacks.forEach((cb) => cb({\n pluginId,\n key,\n oldValue: parsedLocalSettings[key],\n newValue: value,\n settings: updated\n }));\n }, \"setPluginSettings\" /* SET_PLUGIN_SETTINGS */);\n}\n\n// src/hook/index.ts\ninit_esm_shims();\nimport { target as target7 } from \"@vue/devtools-shared\";\nimport { createHooks as createHooks2 } from \"hookable\";\n\n// src/types/index.ts\ninit_esm_shims();\n\n// src/types/app.ts\ninit_esm_shims();\n\n// src/types/command.ts\ninit_esm_shims();\n\n// src/types/component.ts\ninit_esm_shims();\n\n// src/types/hook.ts\ninit_esm_shims();\n\n// src/types/inspector.ts\ninit_esm_shims();\n\n// src/types/plugin.ts\ninit_esm_shims();\n\n// src/types/router.ts\ninit_esm_shims();\n\n// src/types/tab.ts\ninit_esm_shims();\n\n// src/types/timeline.ts\ninit_esm_shims();\n\n// src/hook/index.ts\nvar _a11, _b11;\nvar devtoolsHooks = (_b11 = (_a11 = target7).__VUE_DEVTOOLS_HOOK) != null ? _b11 : _a11.__VUE_DEVTOOLS_HOOK = createHooks2();\nvar on = {\n vueAppInit(fn) {\n devtoolsHooks.hook(\"app:init\" /* APP_INIT */, fn);\n },\n vueAppUnmount(fn) {\n devtoolsHooks.hook(\"app:unmount\" /* APP_UNMOUNT */, fn);\n },\n vueAppConnected(fn) {\n devtoolsHooks.hook(\"app:connected\" /* APP_CONNECTED */, fn);\n },\n componentAdded(fn) {\n return devtoolsHooks.hook(\"component:added\" /* COMPONENT_ADDED */, fn);\n },\n componentEmit(fn) {\n return devtoolsHooks.hook(\"component:emit\" /* COMPONENT_EMIT */, fn);\n },\n componentUpdated(fn) {\n return devtoolsHooks.hook(\"component:updated\" /* COMPONENT_UPDATED */, fn);\n },\n componentRemoved(fn) {\n return devtoolsHooks.hook(\"component:removed\" /* COMPONENT_REMOVED */, fn);\n },\n setupDevtoolsPlugin(fn) {\n devtoolsHooks.hook(\"devtools-plugin:setup\" /* SETUP_DEVTOOLS_PLUGIN */, fn);\n },\n perfStart(fn) {\n return devtoolsHooks.hook(\"perf:start\" /* PERFORMANCE_START */, fn);\n },\n perfEnd(fn) {\n return devtoolsHooks.hook(\"perf:end\" /* PERFORMANCE_END */, fn);\n }\n};\nfunction createDevToolsHook() {\n return {\n id: \"vue-devtools-next\",\n devtoolsVersion: \"7.0\",\n enabled: false,\n appRecords: [],\n apps: [],\n events: /* @__PURE__ */ new Map(),\n on(event, fn) {\n var _a25;\n if (!this.events.has(event))\n this.events.set(event, []);\n (_a25 = this.events.get(event)) == null ? void 0 : _a25.push(fn);\n return () => this.off(event, fn);\n },\n once(event, fn) {\n const onceFn = (...args) => {\n this.off(event, onceFn);\n fn(...args);\n };\n this.on(event, onceFn);\n return [event, onceFn];\n },\n off(event, fn) {\n if (this.events.has(event)) {\n const eventCallbacks = this.events.get(event);\n const index = eventCallbacks.indexOf(fn);\n if (index !== -1)\n eventCallbacks.splice(index, 1);\n }\n },\n emit(event, ...payload) {\n if (this.events.has(event))\n this.events.get(event).forEach((fn) => fn(...payload));\n }\n };\n}\nfunction subscribeDevToolsHook() {\n const hook2 = target7.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n hook2.on(\"app:init\" /* APP_INIT */, (app, version, types) => {\n var _a25, _b25, _c;\n if ((_c = (_b25 = (_a25 = app == null ? void 0 : app._instance) == null ? void 0 : _a25.type) == null ? void 0 : _b25.devtools) == null ? void 0 : _c.hide)\n return;\n devtoolsHooks.callHook(\"app:init\" /* APP_INIT */, app, version, types);\n });\n hook2.on(\"app:unmount\" /* APP_UNMOUNT */, (app) => {\n devtoolsHooks.callHook(\"app:unmount\" /* APP_UNMOUNT */, app);\n });\n hook2.on(\"component:added\" /* COMPONENT_ADDED */, async (app, uid, parentUid, component) => {\n var _a25, _b25, _c;\n if (((_c = (_b25 = (_a25 = app == null ? void 0 : app._instance) == null ? void 0 : _a25.type) == null ? void 0 : _b25.devtools) == null ? void 0 : _c.hide) || devtoolsState.highPerfModeEnabled)\n return;\n if (!app || typeof uid !== \"number\" && !uid || !component)\n return;\n devtoolsHooks.callHook(\"component:added\" /* COMPONENT_ADDED */, app, uid, parentUid, component);\n });\n hook2.on(\"component:updated\" /* COMPONENT_UPDATED */, (app, uid, parentUid, component) => {\n if (!app || typeof uid !== \"number\" && !uid || !component || devtoolsState.highPerfModeEnabled)\n return;\n devtoolsHooks.callHook(\"component:updated\" /* COMPONENT_UPDATED */, app, uid, parentUid, component);\n });\n hook2.on(\"component:removed\" /* COMPONENT_REMOVED */, async (app, uid, parentUid, component) => {\n if (!app || typeof uid !== \"number\" && !uid || !component || devtoolsState.highPerfModeEnabled)\n return;\n devtoolsHooks.callHook(\"component:removed\" /* COMPONENT_REMOVED */, app, uid, parentUid, component);\n });\n hook2.on(\"component:emit\" /* COMPONENT_EMIT */, async (app, instance, event, params) => {\n if (!app || !instance || devtoolsState.highPerfModeEnabled)\n return;\n devtoolsHooks.callHook(\"component:emit\" /* COMPONENT_EMIT */, app, instance, event, params);\n });\n hook2.on(\"perf:start\" /* PERFORMANCE_START */, (app, uid, vm, type, time) => {\n if (!app || devtoolsState.highPerfModeEnabled)\n return;\n devtoolsHooks.callHook(\"perf:start\" /* PERFORMANCE_START */, app, uid, vm, type, time);\n });\n hook2.on(\"perf:end\" /* PERFORMANCE_END */, (app, uid, vm, type, time) => {\n if (!app || devtoolsState.highPerfModeEnabled)\n return;\n devtoolsHooks.callHook(\"perf:end\" /* PERFORMANCE_END */, app, uid, vm, type, time);\n });\n hook2.on(\"devtools-plugin:setup\" /* SETUP_DEVTOOLS_PLUGIN */, (pluginDescriptor, setupFn, options) => {\n if ((options == null ? void 0 : options.target) === \"legacy\")\n return;\n devtoolsHooks.callHook(\"devtools-plugin:setup\" /* SETUP_DEVTOOLS_PLUGIN */, pluginDescriptor, setupFn);\n });\n}\nvar hook = {\n on,\n setupDevToolsPlugin(pluginDescriptor, setupFn) {\n return devtoolsHooks.callHook(\"devtools-plugin:setup\" /* SETUP_DEVTOOLS_PLUGIN */, pluginDescriptor, setupFn);\n }\n};\n\n// src/api/v6/index.ts\nvar DevToolsV6PluginAPI = class {\n constructor({ plugin, ctx }) {\n this.hooks = ctx.hooks;\n this.plugin = plugin;\n }\n get on() {\n return {\n // component inspector\n visitComponentTree: (handler) => {\n this.hooks.hook(\"visitComponentTree\" /* VISIT_COMPONENT_TREE */, handler);\n },\n inspectComponent: (handler) => {\n this.hooks.hook(\"inspectComponent\" /* INSPECT_COMPONENT */, handler);\n },\n editComponentState: (handler) => {\n this.hooks.hook(\"editComponentState\" /* EDIT_COMPONENT_STATE */, handler);\n },\n // custom inspector\n getInspectorTree: (handler) => {\n this.hooks.hook(\"getInspectorTree\" /* GET_INSPECTOR_TREE */, handler);\n },\n getInspectorState: (handler) => {\n this.hooks.hook(\"getInspectorState\" /* GET_INSPECTOR_STATE */, handler);\n },\n editInspectorState: (handler) => {\n this.hooks.hook(\"editInspectorState\" /* EDIT_INSPECTOR_STATE */, handler);\n },\n // timeline\n inspectTimelineEvent: (handler) => {\n this.hooks.hook(\"inspectTimelineEvent\" /* INSPECT_TIMELINE_EVENT */, handler);\n },\n timelineCleared: (handler) => {\n this.hooks.hook(\"timelineCleared\" /* TIMELINE_CLEARED */, handler);\n },\n // settings\n setPluginSettings: (handler) => {\n this.hooks.hook(\"setPluginSettings\" /* SET_PLUGIN_SETTINGS */, handler);\n }\n };\n }\n // component inspector\n notifyComponentUpdate(instance) {\n var _a25;\n const inspector = getActiveInspectors().find((i) => i.packageName === this.plugin.descriptor.packageName);\n if (inspector == null ? void 0 : inspector.id) {\n if (instance) {\n const args = [\n instance.appContext.app,\n instance.uid,\n (_a25 = instance.parent) == null ? void 0 : _a25.uid,\n instance\n ];\n devtoolsHooks.callHook(\"component:updated\" /* COMPONENT_UPDATED */, ...args);\n } else {\n devtoolsHooks.callHook(\"component:updated\" /* COMPONENT_UPDATED */);\n }\n this.hooks.callHook(\"sendInspectorState\" /* SEND_INSPECTOR_STATE */, { inspectorId: inspector.id, plugin: this.plugin });\n }\n }\n // custom inspector\n addInspector(options) {\n this.hooks.callHook(\"addInspector\" /* ADD_INSPECTOR */, { inspector: options, plugin: this.plugin });\n if (this.plugin.descriptor.settings) {\n initPluginSettings(options.id, this.plugin.descriptor.settings);\n }\n }\n sendInspectorTree(inspectorId) {\n this.hooks.callHook(\"sendInspectorTree\" /* SEND_INSPECTOR_TREE */, { inspectorId, plugin: this.plugin });\n }\n sendInspectorState(inspectorId) {\n this.hooks.callHook(\"sendInspectorState\" /* SEND_INSPECTOR_STATE */, { inspectorId, plugin: this.plugin });\n }\n selectInspectorNode(inspectorId, nodeId) {\n this.hooks.callHook(\"customInspectorSelectNode\" /* CUSTOM_INSPECTOR_SELECT_NODE */, { inspectorId, nodeId, plugin: this.plugin });\n }\n visitComponentTree(payload) {\n return this.hooks.callHook(\"visitComponentTree\" /* VISIT_COMPONENT_TREE */, payload);\n }\n // timeline\n now() {\n return Date.now();\n }\n addTimelineLayer(options) {\n this.hooks.callHook(\"timelineLayerAdded\" /* TIMELINE_LAYER_ADDED */, { options, plugin: this.plugin });\n }\n addTimelineEvent(options) {\n this.hooks.callHook(\"timelineEventAdded\" /* TIMELINE_EVENT_ADDED */, { options, plugin: this.plugin });\n }\n // settings\n getSettings(pluginId) {\n return getPluginSettings(pluginId != null ? pluginId : this.plugin.descriptor.id, this.plugin.descriptor.settings);\n }\n // utilities\n getComponentInstances(app) {\n return this.hooks.callHook(\"getComponentInstances\" /* GET_COMPONENT_INSTANCES */, { app });\n }\n getComponentBounds(instance) {\n return this.hooks.callHook(\"getComponentBounds\" /* GET_COMPONENT_BOUNDS */, { instance });\n }\n getComponentName(instance) {\n return this.hooks.callHook(\"getComponentName\" /* GET_COMPONENT_NAME */, { instance });\n }\n highlightElement(instance) {\n const uid = instance.__VUE_DEVTOOLS_NEXT_UID__;\n return this.hooks.callHook(\"componentHighlight\" /* COMPONENT_HIGHLIGHT */, { uid });\n }\n unhighlightElement() {\n return this.hooks.callHook(\"componentUnhighlight\" /* COMPONENT_UNHIGHLIGHT */);\n }\n};\n\n// src/api/index.ts\nvar DevToolsPluginAPI = DevToolsV6PluginAPI;\n\n// src/core/plugin/components.ts\ninit_esm_shims();\nimport { debounce as debounce4 } from \"perfect-debounce\";\n\n// src/core/component/state/index.ts\ninit_esm_shims();\n\n// src/core/component/state/process.ts\ninit_esm_shims();\nimport { camelize } from \"@vue/devtools-shared\";\n\n// src/core/component/state/constants.ts\ninit_esm_shims();\nvar vueBuiltins = /* @__PURE__ */ new Set([\n \"nextTick\",\n \"defineComponent\",\n \"defineAsyncComponent\",\n \"defineCustomElement\",\n \"ref\",\n \"computed\",\n \"reactive\",\n \"readonly\",\n \"watchEffect\",\n \"watchPostEffect\",\n \"watchSyncEffect\",\n \"watch\",\n \"isRef\",\n \"unref\",\n \"toRef\",\n \"toRefs\",\n \"isProxy\",\n \"isReactive\",\n \"isReadonly\",\n \"shallowRef\",\n \"triggerRef\",\n \"customRef\",\n \"shallowReactive\",\n \"shallowReadonly\",\n \"toRaw\",\n \"markRaw\",\n \"effectScope\",\n \"getCurrentScope\",\n \"onScopeDispose\",\n \"onMounted\",\n \"onUpdated\",\n \"onUnmounted\",\n \"onBeforeMount\",\n \"onBeforeUpdate\",\n \"onBeforeUnmount\",\n \"onErrorCaptured\",\n \"onRenderTracked\",\n \"onRenderTriggered\",\n \"onActivated\",\n \"onDeactivated\",\n \"onServerPrefetch\",\n \"provide\",\n \"inject\",\n \"h\",\n \"mergeProps\",\n \"cloneVNode\",\n \"isVNode\",\n \"resolveComponent\",\n \"resolveDirective\",\n \"withDirectives\",\n \"withModifiers\"\n]);\nvar symbolRE = /^\\[native Symbol Symbol\\((.*)\\)\\]$/;\nvar rawTypeRE = /^\\[object (\\w+)\\]$/;\nvar specialTypeRE = /^\\[native (\\w+) (.*?)(<>(([\\s\\S])*))?\\]$/;\nvar fnTypeRE = /^(?:function|class) (\\w+)/;\nvar MAX_STRING_SIZE = 1e4;\nvar MAX_ARRAY_SIZE = 5e3;\nvar UNDEFINED = \"__vue_devtool_undefined__\";\nvar INFINITY = \"__vue_devtool_infinity__\";\nvar NEGATIVE_INFINITY = \"__vue_devtool_negative_infinity__\";\nvar NAN = \"__vue_devtool_nan__\";\nvar ESC = {\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"&\": \"&\"\n};\n\n// src/core/component/state/util.ts\ninit_esm_shims();\n\n// src/core/component/state/is.ts\ninit_esm_shims();\nfunction isVueInstance(value) {\n if (!ensurePropertyExists(value, \"_\")) {\n return false;\n }\n if (!isPlainObject(value._)) {\n return false;\n }\n return Object.keys(value._).includes(\"vnode\");\n}\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isPrimitive(data) {\n if (data == null)\n return true;\n const type = typeof data;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\nfunction isRef2(raw) {\n return !!raw.__v_isRef;\n}\nfunction isComputed(raw) {\n return isRef2(raw) && !!raw.effect;\n}\nfunction isReactive2(raw) {\n return !!raw.__v_isReactive;\n}\nfunction isReadOnly(raw) {\n return !!raw.__v_isReadonly;\n}\n\n// src/core/component/state/util.ts\nvar tokenMap = {\n [UNDEFINED]: \"undefined\",\n [NAN]: \"NaN\",\n [INFINITY]: \"Infinity\",\n [NEGATIVE_INFINITY]: \"-Infinity\"\n};\nvar reversedTokenMap = Object.entries(tokenMap).reduce((acc, [key, value]) => {\n acc[value] = key;\n return acc;\n}, {});\nfunction internalStateTokenToString(value) {\n if (value === null)\n return \"null\";\n return typeof value === \"string\" && tokenMap[value] || false;\n}\nfunction replaceTokenToString(value) {\n const replaceRegex = new RegExp(`\"(${Object.keys(tokenMap).join(\"|\")})\"`, \"g\");\n return value.replace(replaceRegex, (_, g1) => tokenMap[g1]);\n}\nfunction replaceStringToToken(value) {\n const literalValue = reversedTokenMap[value.trim()];\n if (literalValue)\n return `\"${literalValue}\"`;\n const replaceRegex = new RegExp(`:\\\\s*(${Object.keys(reversedTokenMap).join(\"|\")})`, \"g\");\n return value.replace(replaceRegex, (_, g1) => `:\"${reversedTokenMap[g1]}\"`);\n}\nfunction getPropType(type) {\n if (Array.isArray(type))\n return type.map((t) => getPropType(t)).join(\" or \");\n if (type == null)\n return \"null\";\n const match = type.toString().match(fnTypeRE);\n return typeof type === \"function\" ? match && match[1] || \"any\" : \"any\";\n}\nfunction sanitize(data) {\n if (!isPrimitive(data) && !Array.isArray(data) && !isPlainObject(data)) {\n return Object.prototype.toString.call(data);\n } else {\n return data;\n }\n}\nfunction getSetupStateType(raw) {\n return {\n ref: isRef2(raw),\n computed: isComputed(raw),\n reactive: isReactive2(raw),\n readonly: isReadOnly(raw)\n };\n}\nfunction toRaw2(value) {\n if (value == null ? void 0 : value.__v_raw)\n return value.__v_raw;\n return value;\n}\nfunction escape(s) {\n return s.replace(/[<>\"&]/g, (s2) => {\n return ESC[s2] || s2;\n });\n}\n\n// src/core/component/state/process.ts\nfunction mergeOptions(to, from, instance) {\n if (typeof from === \"function\")\n from = from.options;\n if (!from)\n return to;\n const { mixins, extends: extendsOptions } = from;\n extendsOptions && mergeOptions(to, extendsOptions, instance);\n mixins && mixins.forEach(\n (m) => mergeOptions(to, m, instance)\n );\n for (const key of [\"computed\", \"inject\"]) {\n if (Object.prototype.hasOwnProperty.call(from, key)) {\n if (!to[key])\n to[key] = from[key];\n else\n Object.assign(to[key], from[key]);\n }\n }\n return to;\n}\nfunction resolveMergedOptions(instance) {\n const raw = instance == null ? void 0 : instance.type;\n if (!raw)\n return {};\n const { mixins, extends: extendsOptions } = raw;\n const globalMixins = instance.appContext.mixins;\n if (!globalMixins.length && !mixins && !extendsOptions)\n return raw;\n const options = {};\n globalMixins.forEach((m) => mergeOptions(options, m, instance));\n mergeOptions(options, raw, instance);\n return options;\n}\nfunction processProps(instance) {\n const props = [];\n const propDefinitions = instance.type.props;\n for (const key in instance.props) {\n const propDefinition = propDefinitions ? propDefinitions[key] : null;\n const camelizeKey = camelize(key);\n props.push({\n type: \"props\",\n key: camelizeKey,\n value: returnError(() => instance.props[key]),\n meta: propDefinition ? {\n type: propDefinition.type ? getPropType(propDefinition.type) : \"any\",\n required: !!propDefinition.required,\n ...propDefinition.default ? {\n default: propDefinition.default.toString()\n } : {}\n } : { type: \"invalid\" }\n });\n }\n return props;\n}\nfunction processState(instance) {\n const type = instance.type;\n const props = type.props;\n const getters = type.vuex && type.vuex.getters;\n const computedDefs = type.computed;\n const data = {\n ...instance.data,\n ...instance.renderContext\n };\n return Object.keys(data).filter((key) => !(props && key in props) && !(getters && key in getters) && !(computedDefs && key in computedDefs)).map((key) => ({\n key,\n type: \"data\",\n value: returnError(() => data[key]),\n editable: true\n }));\n}\nfunction getStateTypeAndName(info) {\n const stateType = info.computed ? \"computed\" : info.ref ? \"ref\" : info.reactive ? \"reactive\" : null;\n const stateTypeName = stateType ? `${stateType.charAt(0).toUpperCase()}${stateType.slice(1)}` : null;\n return {\n stateType,\n stateTypeName\n };\n}\nfunction processSetupState(instance) {\n const raw = instance.devtoolsRawSetupState || {};\n return Object.keys(instance.setupState).filter((key) => !vueBuiltins.has(key) && key.split(/(?=[A-Z])/)[0] !== \"use\").map((key) => {\n var _a25, _b25, _c, _d;\n const value = returnError(() => toRaw2(instance.setupState[key]));\n const rawData = raw[key];\n let result;\n let isOtherType = typeof value === \"function\" || ensurePropertyExists(value, \"render\") && typeof value.render === \"function\" || ensurePropertyExists(value, \"__asyncLoader\") && typeof value.__asyncLoader === \"function\" || typeof value === \"object\" && value && (\"setup\" in value || \"props\" in value) || /^v[A-Z]/.test(key);\n if (rawData) {\n const info = getSetupStateType(rawData);\n const { stateType, stateTypeName } = getStateTypeAndName(info);\n const isState = info.ref || info.computed || info.reactive;\n const raw2 = ensurePropertyExists(rawData, \"effect\") ? ((_b25 = (_a25 = rawData.effect) == null ? void 0 : _a25.raw) == null ? void 0 : _b25.toString()) || ((_d = (_c = rawData.effect) == null ? void 0 : _c.fn) == null ? void 0 : _d.toString()) : null;\n if (stateType)\n isOtherType = false;\n result = {\n ...stateType ? { stateType, stateTypeName } : {},\n ...raw2 ? { raw: raw2 } : {},\n editable: isState && !info.readonly\n };\n }\n const type = isOtherType ? \"setup (other)\" : \"setup\";\n return {\n key,\n value,\n type,\n // @ts-expect-error ignore\n ...result\n };\n });\n}\nfunction processComputed(instance, mergedType) {\n const type = mergedType;\n const computed = [];\n const defs = type.computed || {};\n for (const key in defs) {\n const def = defs[key];\n const type2 = typeof def === \"function\" && def.vuex ? \"vuex bindings\" : \"computed\";\n computed.push({\n type: type2,\n key,\n value: returnError(() => {\n var _a25;\n return (_a25 = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a25[key];\n }),\n editable: typeof def.set === \"function\"\n });\n }\n return computed;\n}\nfunction processAttrs(instance) {\n return Object.keys(instance.attrs).map((key) => ({\n type: \"attrs\",\n key,\n value: returnError(() => instance.attrs[key])\n }));\n}\nfunction processProvide(instance) {\n return Reflect.ownKeys(instance.provides).map((key) => ({\n type: \"provided\",\n key: key.toString(),\n value: returnError(() => instance.provides[key])\n }));\n}\nfunction processInject(instance, mergedType) {\n if (!(mergedType == null ? void 0 : mergedType.inject))\n return [];\n let keys = [];\n let defaultValue;\n if (Array.isArray(mergedType.inject)) {\n keys = mergedType.inject.map((key) => ({\n key,\n originalKey: key\n }));\n } else {\n keys = Reflect.ownKeys(mergedType.inject).map((key) => {\n const value = mergedType.inject[key];\n let originalKey;\n if (typeof value === \"string\" || typeof value === \"symbol\") {\n originalKey = value;\n } else {\n originalKey = value.from;\n defaultValue = value.default;\n }\n return {\n key,\n originalKey\n };\n });\n }\n return keys.map(({ key, originalKey }) => ({\n type: \"injected\",\n key: originalKey && key !== originalKey ? `${originalKey.toString()} \\u279E ${key.toString()}` : key.toString(),\n // eslint-disable-next-line no-prototype-builtins\n value: returnError(() => instance.ctx.hasOwnProperty(key) ? instance.ctx[key] : instance.provides.hasOwnProperty(originalKey) ? instance.provides[originalKey] : defaultValue)\n }));\n}\nfunction processRefs(instance) {\n return Object.keys(instance.refs).map((key) => ({\n type: \"template refs\",\n key,\n value: returnError(() => instance.refs[key])\n }));\n}\nfunction processEventListeners(instance) {\n var _a25, _b25;\n const emitsDefinition = instance.type.emits;\n const declaredEmits = Array.isArray(emitsDefinition) ? emitsDefinition : Object.keys(emitsDefinition != null ? emitsDefinition : {});\n const keys = Object.keys((_b25 = (_a25 = instance == null ? void 0 : instance.vnode) == null ? void 0 : _a25.props) != null ? _b25 : {});\n const result = [];\n for (const key of keys) {\n const [prefix, ...eventNameParts] = key.split(/(?=[A-Z])/);\n if (prefix === \"on\") {\n const eventName = eventNameParts.join(\"-\").toLowerCase();\n const isDeclared = declaredEmits.includes(eventName);\n result.push({\n type: \"event listeners\",\n key: eventName,\n value: {\n _custom: {\n displayText: isDeclared ? \"\\u2705 Declared\" : \"\\u26A0\\uFE0F Not declared\",\n key: isDeclared ? \"\\u2705 Declared\" : \"\\u26A0\\uFE0F Not declared\",\n value: isDeclared ? \"\\u2705 Declared\" : \"\\u26A0\\uFE0F Not declared\",\n tooltipText: !isDeclared ? `The event <code>${eventName}</code> is not declared in the <code>emits</code> option. It will leak into the component's attributes (<code>$attrs</code>).` : null\n }\n }\n });\n }\n }\n return result;\n}\nfunction processInstanceState(instance) {\n const mergedType = resolveMergedOptions(instance);\n return processProps(instance).concat(\n processState(instance),\n processSetupState(instance),\n processComputed(instance, mergedType),\n processAttrs(instance),\n processProvide(instance),\n processInject(instance, mergedType),\n processRefs(instance),\n processEventListeners(instance)\n );\n}\n\n// src/core/component/state/index.ts\nfunction getInstanceState(params) {\n var _a25;\n const instance = getComponentInstance(activeAppRecord.value, params.instanceId);\n const id = getUniqueComponentId(instance);\n const name = getInstanceName(instance);\n const file = (_a25 = instance == null ? void 0 : instance.type) == null ? void 0 : _a25.__file;\n const state = processInstanceState(instance);\n return {\n id,\n name,\n file,\n state,\n instance\n };\n}\n\n// src/core/component/tree/walker.ts\ninit_esm_shims();\n\n// src/core/component/tree/filter.ts\ninit_esm_shims();\nimport { classify as classify2, kebabize } from \"@vue/devtools-shared\";\nvar ComponentFilter = class {\n constructor(filter) {\n this.filter = filter || \"\";\n }\n /**\n * Check if an instance is qualified.\n *\n * @param {Vue|Vnode} instance\n * @return {boolean}\n */\n isQualified(instance) {\n const name = getInstanceName(instance);\n return classify2(name).toLowerCase().includes(this.filter) || kebabize(name).toLowerCase().includes(this.filter);\n }\n};\nfunction createComponentFilter(filterText) {\n return new ComponentFilter(filterText);\n}\n\n// src/core/component/tree/walker.ts\nvar ComponentWalker = class {\n constructor(options) {\n // Dedupe instances (Some instances may be both on a component and on a child abstract/functional component)\n this.captureIds = /* @__PURE__ */ new Map();\n const { filterText = \"\", maxDepth, recursively, api } = options;\n this.componentFilter = createComponentFilter(filterText);\n this.maxDepth = maxDepth;\n this.recursively = recursively;\n this.api = api;\n }\n getComponentTree(instance) {\n this.captureIds = /* @__PURE__ */ new Map();\n return this.findQualifiedChildren(instance, 0);\n }\n getComponentParents(instance) {\n this.captureIds = /* @__PURE__ */ new Map();\n const parents = [];\n this.captureId(instance);\n let parent = instance;\n while (parent = parent.parent) {\n this.captureId(parent);\n parents.push(parent);\n }\n return parents;\n }\n captureId(instance) {\n if (!instance)\n return null;\n const id = instance.__VUE_DEVTOOLS_NEXT_UID__ != null ? instance.__VUE_DEVTOOLS_NEXT_UID__ : getUniqueComponentId(instance);\n instance.__VUE_DEVTOOLS_NEXT_UID__ = id;\n if (this.captureIds.has(id))\n return null;\n else\n this.captureIds.set(id, void 0);\n this.mark(instance);\n return id;\n }\n /**\n * Capture the meta information of an instance. (recursive)\n *\n * @param {Vue} instance\n * @return {object}\n */\n async capture(instance, depth) {\n var _a25;\n if (!instance)\n return null;\n const id = this.captureId(instance);\n const name = getInstanceName(instance);\n const children = this.getInternalInstanceChildren(instance.subTree).filter((child) => !isBeingDestroyed(child));\n const parents = this.getComponentParents(instance) || [];\n const inactive = !!instance.isDeactivated || parents.some((parent) => parent.isDeactivated);\n const treeNode = {\n uid: instance.uid,\n id,\n name,\n renderKey: getRenderKey(instance.vnode ? instance.vnode.key : null),\n inactive,\n children: [],\n isFragment: isFragment(instance),\n tags: typeof instance.type !== \"function\" ? [] : [\n {\n label: \"functional\",\n textColor: 5592405,\n backgroundColor: 15658734\n }\n ],\n autoOpen: this.recursively,\n file: instance.type.__file || \"\"\n };\n if (depth < this.maxDepth || instance.type.__isKeepAlive || parents.some((parent) => parent.type.__isKeepAlive)) {\n treeNode.children = await Promise.all(children.map((child) => this.capture(child, depth + 1)).filter(Boolean));\n }\n if (this.isKeepAlive(instance)) {\n const cachedComponents = this.getKeepAliveCachedInstances(instance);\n const childrenIds = children.map((child) => child.__VUE_DEVTOOLS_NEXT_UID__);\n for (const cachedChild of cachedComponents) {\n if (!childrenIds.includes(cachedChild.__VUE_DEVTOOLS_NEXT_UID__)) {\n const node = await this.capture({ ...cachedChild, isDeactivated: true }, depth + 1);\n if (node)\n treeNode.children.push(node);\n }\n }\n }\n const rootElements = getRootElementsFromComponentInstance(instance);\n const firstElement = rootElements[0];\n if (firstElement == null ? void 0 : firstElement.parentElement) {\n const parentInstance = instance.parent;\n const parentRootElements = parentInstance ? getRootElementsFromComponentInstance(parentInstance) : [];\n let el = firstElement;\n const indexList = [];\n do {\n indexList.push(Array.from(el.parentElement.childNodes).indexOf(el));\n el = el.parentElement;\n } while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));\n treeNode.domOrder = indexList.reverse();\n } else {\n treeNode.domOrder = [-1];\n }\n if ((_a25 = instance.suspense) == null ? void 0 : _a25.suspenseKey) {\n treeNode.tags.push({\n label: instance.suspense.suspenseKey,\n backgroundColor: 14979812,\n textColor: 16777215\n });\n this.mark(instance, true);\n }\n this.api.visitComponentTree({\n treeNode,\n componentInstance: instance,\n app: instance.appContext.app,\n filter: this.componentFilter.filter\n });\n return treeNode;\n }\n /**\n * Find qualified children from a single instance.\n * If the instance itself is qualified, just return itself.\n * This is ok because [].concat works in both cases.\n *\n * @param {Vue|Vnode} instance\n * @return {Vue|Array}\n */\n async findQualifiedChildren(instance, depth) {\n var _a25;\n if (this.componentFilter.isQualified(instance) && !((_a25 = instance.type.devtools) == null ? void 0 : _a25.hide)) {\n return [await this.capture(instance, depth)];\n } else if (instance.subTree) {\n const list = this.isKeepAlive(instance) ? this.getKeepAliveCachedInstances(instance) : this.getInternalInstanceChildren(instance.subTree);\n return this.findQualifiedChildrenFromList(list, depth);\n } else {\n return [];\n }\n }\n /**\n * Iterate through an array of instances and flatten it into\n * an array of qualified instances. This is a depth-first\n * traversal - e.g. if an instance is not matched, we will\n * recursively go deeper until a qualified child is found.\n *\n * @param {Array} instances\n * @return {Array}\n */\n async findQualifiedChildrenFromList(instances, depth) {\n instances = instances.filter((child) => {\n var _a25;\n return !isBeingDestroyed(child) && !((_a25 = child.type.devtools) == null ? void 0 : _a25.hide);\n });\n if (!this.componentFilter.filter)\n return Promise.all(instances.map((child) => this.capture(child, depth)));\n else\n return Array.prototype.concat.apply([], await Promise.all(instances.map((i) => this.findQualifiedChildren(i, depth))));\n }\n /**\n * Get children from a component instance.\n */\n getInternalInstanceChildren(subTree, suspense = null) {\n const list = [];\n if (subTree) {\n if (subTree.component) {\n !suspense ? list.push(subTree.component) : list.push({ ...subTree.component, suspense });\n } else if (subTree.suspense) {\n const suspenseKey = !subTree.suspense.isInFallback ? \"suspense default\" : \"suspense fallback\";\n list.push(...this.getInternalInstanceChildren(subTree.suspense.activeBranch, { ...subTree.suspense, suspenseKey }));\n } else if (Array.isArray(subTree.children)) {\n subTree.children.forEach((childSubTree) => {\n if (childSubTree.component)\n !suspense ? list.push(childSubTree.component) : list.push({ ...childSubTree.component, suspense });\n else\n list.push(...this.getInternalInstanceChildren(childSubTree, suspense));\n });\n }\n }\n return list.filter((child) => {\n var _a25;\n return !isBeingDestroyed(child) && !((_a25 = child.type.devtools) == null ? void 0 : _a25.hide);\n });\n }\n /**\n * Mark an instance as captured and store it in the instance map.\n *\n * @param {Vue} instance\n */\n mark(instance, force = false) {\n const instanceMap = getAppRecord(instance).instanceMap;\n if (force || !instanceMap.has(instance.__VUE_DEVTOOLS_NEXT_UID__)) {\n instanceMap.set(instance.__VUE_DEVTOOLS_NEXT_UID__, instance);\n activeAppRecord.value.instanceMap = instanceMap;\n }\n }\n isKeepAlive(instance) {\n return instance.type.__isKeepAlive && instance.__v_cache;\n }\n getKeepAliveCachedInstances(instance) {\n return Array.from(instance.__v_cache.values()).map((vnode) => vnode.component).filter(Boolean);\n }\n};\n\n// src/core/timeline/index.ts\ninit_esm_shims();\nimport { isBrowser as isBrowser2 } from \"@vue/devtools-shared\";\n\n// src/core/timeline/perf.ts\ninit_esm_shims();\nvar markEndQueue = /* @__PURE__ */ new Map();\nvar PERFORMANCE_EVENT_LAYER_ID = \"performance\";\nasync function performanceMarkStart(api, app, uid, vm, type, time) {\n const appRecord = await getAppRecord(app);\n if (!appRecord) {\n return;\n }\n const componentName = getInstanceName(vm) || \"Unknown Component\";\n const groupId = devtoolsState.perfUniqueGroupId++;\n const groupKey = `${uid}-${type}`;\n appRecord.perfGroupIds.set(groupKey, { groupId, time });\n await api.addTimelineEvent({\n layerId: PERFORMANCE_EVENT_LAYER_ID,\n event: {\n time: Date.now(),\n data: {\n component: componentName,\n type,\n measure: \"start\"\n },\n title: componentName,\n subtitle: type,\n groupId\n }\n });\n if (markEndQueue.has(groupKey)) {\n const {\n app: app2,\n uid: uid2,\n instance,\n type: type2,\n time: time2\n } = markEndQueue.get(groupKey);\n markEndQueue.delete(groupKey);\n await performanceMarkEnd(\n api,\n app2,\n uid2,\n instance,\n type2,\n time2\n );\n }\n}\nfunction performanceMarkEnd(api, app, uid, vm, type, time) {\n const appRecord = getAppRecord(app);\n if (!appRecord)\n return;\n const componentName = getInstanceName(vm) || \"Unknown Component\";\n const groupKey = `${uid}-${type}`;\n const groupInfo = appRecord.perfGroupIds.get(groupKey);\n if (groupInfo) {\n const groupId = groupInfo.groupId;\n const startTime = groupInfo.time;\n const duration = time - startTime;\n api.addTimelineEvent({\n layerId: PERFORMANCE_EVENT_LAYER_ID,\n event: {\n time: Date.now(),\n data: {\n component: componentName,\n type,\n measure: \"end\",\n duration: {\n _custom: {\n type: \"Duration\",\n value: duration,\n display: `${duration} ms`\n }\n }\n },\n title: componentName,\n subtitle: type,\n groupId\n }\n });\n } else {\n markEndQueue.set(groupKey, { app, uid, instance: vm, type, time });\n }\n}\n\n// src/core/timeline/index.ts\nvar COMPONENT_EVENT_LAYER_ID = \"component-event\";\nfunction setupBuiltinTimelineLayers(api) {\n if (!isBrowser2)\n return;\n api.addTimelineLayer({\n id: \"mouse\",\n label: \"Mouse\",\n color: 10768815\n });\n [\"mousedown\", \"mouseup\", \"click\", \"dblclick\"].forEach((eventType) => {\n if (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.mouseEventEnabled)\n return;\n window.addEventListener(eventType, async (event) => {\n await api.addTimelineEvent({\n layerId: \"mouse\",\n event: {\n time: Date.now(),\n data: {\n type: eventType,\n x: event.clientX,\n y: event.clientY\n },\n title: eventType\n }\n });\n }, {\n capture: true,\n passive: true\n });\n });\n api.addTimelineLayer({\n id: \"keyboard\",\n label: \"Keyboard\",\n color: 8475055\n });\n [\"keyup\", \"keydown\", \"keypress\"].forEach((eventType) => {\n window.addEventListener(eventType, async (event) => {\n if (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.keyboardEventEnabled)\n return;\n await api.addTimelineEvent({\n layerId: \"keyboard\",\n event: {\n time: Date.now(),\n data: {\n type: eventType,\n key: event.key,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey\n },\n title: event.key\n }\n });\n }, {\n capture: true,\n passive: true\n });\n });\n api.addTimelineLayer({\n id: COMPONENT_EVENT_LAYER_ID,\n label: \"Component events\",\n color: 5226637\n });\n hook.on.componentEmit(async (app, instance, event, params) => {\n if (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.componentEventEnabled)\n return;\n const appRecord = await getAppRecord(app);\n if (!appRecord)\n return;\n const componentId = `${appRecord.id}:${instance.uid}`;\n const componentName = getInstanceName(instance) || \"Unknown Component\";\n api.addTimelineEvent({\n layerId: COMPONENT_EVENT_LAYER_ID,\n event: {\n time: Date.now(),\n data: {\n component: {\n _custom: {\n type: \"component-definition\",\n display: componentName\n }\n },\n event,\n params\n },\n title: event,\n subtitle: `by ${componentName}`,\n meta: {\n componentId\n }\n }\n });\n });\n api.addTimelineLayer({\n id: \"performance\",\n label: PERFORMANCE_EVENT_LAYER_ID,\n color: 4307050\n });\n hook.on.perfStart((app, uid, vm, type, time) => {\n if (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.performanceEventEnabled)\n return;\n performanceMarkStart(api, app, uid, vm, type, time);\n });\n hook.on.perfEnd((app, uid, vm, type, time) => {\n if (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.performanceEventEnabled)\n return;\n performanceMarkEnd(api, app, uid, vm, type, time);\n });\n}\n\n// src/core/vm/index.ts\ninit_esm_shims();\nvar MAX_$VM = 10;\nvar $vmQueue = [];\nfunction exposeInstanceToWindow(componentInstance) {\n if (typeof window === \"undefined\")\n return;\n const win = window;\n if (!componentInstance)\n return;\n win.$vm = componentInstance;\n if ($vmQueue[0] !== componentInstance) {\n if ($vmQueue.length >= MAX_$VM) {\n $vmQueue.pop();\n }\n for (let i = $vmQueue.length; i > 0; i--) {\n win[`$vm${i}`] = $vmQueue[i] = $vmQueue[i - 1];\n }\n win.$vm0 = $vmQueue[0] = componentInstance;\n }\n}\n\n// src/core/plugin/components.ts\nvar INSPECTOR_ID = \"components\";\nfunction createComponentsDevToolsPlugin(app) {\n const descriptor = {\n id: INSPECTOR_ID,\n label: \"Components\",\n app\n };\n const setupFn = (api) => {\n api.addInspector({\n id: INSPECTOR_ID,\n label: \"Components\",\n treeFilterPlaceholder: \"Search components\"\n });\n setupBuiltinTimelineLayers(api);\n api.on.getInspectorTree(async (payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const instance = getComponentInstance(activeAppRecord.value, payload.instanceId);\n if (instance) {\n const walker2 = new ComponentWalker({\n filterText: payload.filter,\n // @TODO: should make this configurable?\n maxDepth: 100,\n recursively: false,\n api\n });\n payload.rootNodes = await walker2.getComponentTree(instance);\n }\n }\n });\n api.on.getInspectorState(async (payload) => {\n var _a25;\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const result = getInstanceState({\n instanceId: payload.nodeId\n });\n const componentInstance = result.instance;\n const app2 = (_a25 = result.instance) == null ? void 0 : _a25.appContext.app;\n const _payload = {\n componentInstance,\n app: app2,\n instanceData: result\n };\n devtoolsContext.hooks.callHookWith((callbacks) => {\n callbacks.forEach((cb) => cb(_payload));\n }, \"inspectComponent\" /* INSPECT_COMPONENT */);\n payload.state = result;\n exposeInstanceToWindow(componentInstance);\n }\n });\n api.on.editInspectorState(async (payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n editState(payload);\n await api.sendInspectorState(\"components\");\n }\n });\n const debounceSendInspectorTree = debounce4(() => {\n api.sendInspectorTree(INSPECTOR_ID);\n }, 120);\n const debounceSendInspectorState = debounce4(() => {\n api.sendInspectorState(INSPECTOR_ID);\n }, 120);\n const componentAddedCleanup = hook.on.componentAdded(async (app2, uid, parentUid, component) => {\n var _a25, _b25, _c;\n if (devtoolsState.highPerfModeEnabled)\n return;\n if ((_c = (_b25 = (_a25 = app2 == null ? void 0 : app2._instance) == null ? void 0 : _a25.type) == null ? void 0 : _b25.devtools) == null ? void 0 : _c.hide)\n return;\n if (!app2 || typeof uid !== \"number\" && !uid || !component)\n return;\n const id = await getComponentId({\n app: app2,\n uid,\n instance: component\n });\n const appRecord = await getAppRecord(app2);\n if (component) {\n if (component.__VUE_DEVTOOLS_NEXT_UID__ == null)\n component.__VUE_DEVTOOLS_NEXT_UID__ = id;\n if (!(appRecord == null ? void 0 : appRecord.instanceMap.has(id))) {\n appRecord == null ? void 0 : appRecord.instanceMap.set(id, component);\n if (activeAppRecord.value.id === (appRecord == null ? void 0 : appRecord.id))\n activeAppRecord.value.instanceMap = appRecord.instanceMap;\n }\n }\n if (!appRecord)\n return;\n debounceSendInspectorTree();\n });\n const componentUpdatedCleanup = hook.on.componentUpdated(async (app2, uid, parentUid, component) => {\n var _a25, _b25, _c;\n if (devtoolsState.highPerfModeEnabled)\n return;\n if ((_c = (_b25 = (_a25 = app2 == null ? void 0 : app2._instance) == null ? void 0 : _a25.type) == null ? void 0 : _b25.devtools) == null ? void 0 : _c.hide)\n return;\n if (!app2 || typeof uid !== \"number\" && !uid || !component)\n return;\n const id = await getComponentId({\n app: app2,\n uid,\n instance: component\n });\n const appRecord = await getAppRecord(app2);\n if (component) {\n if (component.__VUE_DEVTOOLS_NEXT_UID__ == null)\n component.__VUE_DEVTOOLS_NEXT_UID__ = id;\n if (!(appRecord == null ? void 0 : appRecord.instanceMap.has(id))) {\n appRecord == null ? void 0 : appRecord.instanceMap.set(id, component);\n if (activeAppRecord.value.id === (appRecord == null ? void 0 : appRecord.id))\n activeAppRecord.value.instanceMap = appRecord.instanceMap;\n }\n }\n if (!appRecord)\n return;\n debounceSendInspectorTree();\n debounceSendInspectorState();\n });\n const componentRemovedCleanup = hook.on.componentRemoved(async (app2, uid, parentUid, component) => {\n var _a25, _b25, _c;\n if (devtoolsState.highPerfModeEnabled)\n return;\n if ((_c = (_b25 = (_a25 = app2 == null ? void 0 : app2._instance) == null ? void 0 : _a25.type) == null ? void 0 : _b25.devtools) == null ? void 0 : _c.hide)\n return;\n if (!app2 || typeof uid !== \"number\" && !uid || !component)\n return;\n const appRecord = await getAppRecord(app2);\n if (!appRecord)\n return;\n const id = await getComponentId({\n app: app2,\n uid,\n instance: component\n });\n appRecord == null ? void 0 : appRecord.instanceMap.delete(id);\n if (activeAppRecord.value.id === (appRecord == null ? void 0 : appRecord.id))\n activeAppRecord.value.instanceMap = appRecord.instanceMap;\n debounceSendInspectorTree();\n });\n };\n return [descriptor, setupFn];\n}\n\n// src/core/plugin/index.ts\nvar _a12, _b12;\n(_b12 = (_a12 = target8).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__) != null ? _b12 : _a12.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__ = /* @__PURE__ */ new Set();\nfunction setupDevToolsPlugin(pluginDescriptor, setupFn) {\n return hook.setupDevToolsPlugin(pluginDescriptor, setupFn);\n}\nfunction callDevToolsPluginSetupFn(plugin, app) {\n const [pluginDescriptor, setupFn] = plugin;\n if (pluginDescriptor.app !== app)\n return;\n const api = new DevToolsPluginAPI({\n plugin: {\n setupFn,\n descriptor: pluginDescriptor\n },\n ctx: devtoolsContext\n });\n if (pluginDescriptor.packageName === \"vuex\") {\n api.on.editInspectorState((payload) => {\n api.sendInspectorState(payload.inspectorId);\n });\n }\n setupFn(api);\n}\nfunction removeRegisteredPluginApp(app) {\n target8.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.delete(app);\n}\nfunction registerDevToolsPlugin(app) {\n if (target8.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(app))\n return;\n target8.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(app);\n devtoolsPluginBuffer.forEach((plugin) => {\n callDevToolsPluginSetupFn(plugin, app);\n });\n}\n\n// src/core/router/index.ts\ninit_esm_shims();\nimport { deepClone, target as global3 } from \"@vue/devtools-shared\";\nimport { debounce as debounce5 } from \"perfect-debounce\";\n\n// src/ctx/router.ts\ninit_esm_shims();\nimport { target as global2 } from \"@vue/devtools-shared\";\nvar ROUTER_KEY = \"__VUE_DEVTOOLS_ROUTER__\";\nvar ROUTER_INFO_KEY = \"__VUE_DEVTOOLS_ROUTER_INFO__\";\nvar _a13, _b13;\n(_b13 = (_a13 = global2)[ROUTER_INFO_KEY]) != null ? _b13 : _a13[ROUTER_INFO_KEY] = {\n currentRoute: null,\n routes: []\n};\nvar _a14, _b14;\n(_b14 = (_a14 = global2)[ROUTER_KEY]) != null ? _b14 : _a14[ROUTER_KEY] = {};\nvar devtoolsRouterInfo = new Proxy(global2[ROUTER_INFO_KEY], {\n get(target22, property) {\n return global2[ROUTER_INFO_KEY][property];\n }\n});\nvar devtoolsRouter = new Proxy(global2[ROUTER_KEY], {\n get(target22, property) {\n if (property === \"value\") {\n return global2[ROUTER_KEY];\n }\n }\n});\n\n// src/core/router/index.ts\nfunction getRoutes(router) {\n const routesMap = /* @__PURE__ */ new Map();\n return ((router == null ? void 0 : router.getRoutes()) || []).filter((i) => !routesMap.has(i.path) && routesMap.set(i.path, 1));\n}\nfunction filterRoutes(routes) {\n return routes.map((item) => {\n let { path, name, children, meta } = item;\n if (children == null ? void 0 : children.length)\n children = filterRoutes(children);\n return {\n path,\n name,\n children,\n meta\n };\n });\n}\nfunction filterCurrentRoute(route) {\n if (route) {\n const { fullPath, hash, href, path, name, matched, params, query } = route;\n return {\n fullPath,\n hash,\n href,\n path,\n name,\n params,\n query,\n matched: filterRoutes(matched)\n };\n }\n return route;\n}\nfunction normalizeRouterInfo(appRecord, activeAppRecord2) {\n function init() {\n var _a25;\n const router = (_a25 = appRecord.app) == null ? void 0 : _a25.config.globalProperties.$router;\n const currentRoute = filterCurrentRoute(router == null ? void 0 : router.currentRoute.value);\n const routes = filterRoutes(getRoutes(router));\n const c = console.warn;\n console.warn = () => {\n };\n global3[ROUTER_INFO_KEY] = {\n currentRoute: currentRoute ? deepClone(currentRoute) : {},\n routes: deepClone(routes)\n };\n global3[ROUTER_KEY] = router;\n console.warn = c;\n }\n init();\n hook.on.componentUpdated(debounce5(() => {\n var _a25;\n if (((_a25 = activeAppRecord2.value) == null ? void 0 : _a25.app) !== appRecord.app)\n return;\n init();\n if (devtoolsState.highPerfModeEnabled)\n return;\n devtoolsContext.hooks.callHook(\"routerInfoUpdated\" /* ROUTER_INFO_UPDATED */, { state: global3[ROUTER_INFO_KEY] });\n }, 200));\n}\n\n// src/ctx/api.ts\nfunction createDevToolsApi(hooks2) {\n return {\n // get inspector tree\n async getInspectorTree(payload) {\n const _payload = {\n ...payload,\n app: activeAppRecord.value.app,\n rootNodes: []\n };\n await new Promise((resolve) => {\n hooks2.callHookWith(async (callbacks) => {\n await Promise.all(callbacks.map((cb) => cb(_payload)));\n resolve();\n }, \"getInspectorTree\" /* GET_INSPECTOR_TREE */);\n });\n return _payload.rootNodes;\n },\n // get inspector state\n async getInspectorState(payload) {\n const _payload = {\n ...payload,\n app: activeAppRecord.value.app,\n state: null\n };\n const ctx = {\n currentTab: `custom-inspector:${payload.inspectorId}`\n };\n await new Promise((resolve) => {\n hooks2.callHookWith(async (callbacks) => {\n await Promise.all(callbacks.map((cb) => cb(_payload, ctx)));\n resolve();\n }, \"getInspectorState\" /* GET_INSPECTOR_STATE */);\n });\n return _payload.state;\n },\n // edit inspector state\n editInspectorState(payload) {\n const stateEditor2 = new StateEditor();\n const _payload = {\n ...payload,\n app: activeAppRecord.value.app,\n set: (obj, path = payload.path, value = payload.state.value, cb) => {\n stateEditor2.set(obj, path, value, cb || stateEditor2.createDefaultSetCallback(payload.state));\n }\n };\n hooks2.callHookWith((callbacks) => {\n callbacks.forEach((cb) => cb(_payload));\n }, \"editInspectorState\" /* EDIT_INSPECTOR_STATE */);\n },\n // send inspector state\n sendInspectorState(inspectorId) {\n const inspector = getInspector(inspectorId);\n hooks2.callHook(\"sendInspectorState\" /* SEND_INSPECTOR_STATE */, { inspectorId, plugin: {\n descriptor: inspector.descriptor,\n setupFn: () => ({})\n } });\n },\n // inspect component inspector\n inspectComponentInspector() {\n return inspectComponentHighLighter();\n },\n // cancel inspect component inspector\n cancelInspectComponentInspector() {\n return cancelInspectComponentHighLighter();\n },\n // get component render code\n getComponentRenderCode(id) {\n const instance = getComponentInstance(activeAppRecord.value, id);\n if (instance)\n return !((instance == null ? void 0 : instance.type) instanceof Function) ? instance.render.toString() : instance.type.toString();\n },\n // scroll to component\n scrollToComponent(id) {\n return scrollToComponent({ id });\n },\n // open in editor\n openInEditor,\n // get vue inspector\n getVueInspector: getComponentInspector,\n // toggle app\n toggleApp(id) {\n const appRecord = devtoolsAppRecords.value.find((record) => record.id === id);\n if (appRecord) {\n setActiveAppRecordId(id);\n setActiveAppRecord(appRecord);\n normalizeRouterInfo(appRecord, activeAppRecord);\n callInspectorUpdatedHook();\n registerDevToolsPlugin(appRecord.app);\n }\n },\n // inspect dom\n inspectDOM(instanceId) {\n const instance = getComponentInstance(activeAppRecord.value, instanceId);\n if (instance) {\n const [el] = getRootElementsFromComponentInstance(instance);\n if (el) {\n target9.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__ = el;\n }\n }\n },\n updatePluginSettings(pluginId, key, value) {\n setPluginSettings(pluginId, key, value);\n },\n getPluginSettings(pluginId) {\n return {\n options: getPluginSettingsOptions(pluginId),\n values: getPluginSettings(pluginId)\n };\n }\n };\n}\n\n// src/ctx/env.ts\ninit_esm_shims();\nimport { target as target10 } from \"@vue/devtools-shared\";\nvar _a15, _b15;\n(_b15 = (_a15 = target10).__VUE_DEVTOOLS_ENV__) != null ? _b15 : _a15.__VUE_DEVTOOLS_ENV__ = {\n vitePluginDetected: false\n};\nfunction getDevToolsEnv() {\n return target10.__VUE_DEVTOOLS_ENV__;\n}\nfunction setDevToolsEnv(env) {\n target10.__VUE_DEVTOOLS_ENV__ = {\n ...target10.__VUE_DEVTOOLS_ENV__,\n ...env\n };\n}\n\n// src/ctx/index.ts\nvar hooks = createDevToolsCtxHooks();\nvar _a16, _b16;\n(_b16 = (_a16 = target11).__VUE_DEVTOOLS_KIT_CONTEXT__) != null ? _b16 : _a16.__VUE_DEVTOOLS_KIT_CONTEXT__ = {\n hooks,\n get state() {\n return {\n ...devtoolsState,\n activeAppRecordId: activeAppRecord.id,\n activeAppRecord: activeAppRecord.value,\n appRecords: devtoolsAppRecords.value\n };\n },\n api: createDevToolsApi(hooks)\n};\nvar devtoolsContext = target11.__VUE_DEVTOOLS_KIT_CONTEXT__;\n\n// src/core/app/index.ts\ninit_esm_shims();\nvar import_speakingurl = __toESM(require_speakingurl2(), 1);\nimport { target as target12 } from \"@vue/devtools-shared\";\nvar _a17, _b17;\nvar appRecordInfo = (_b17 = (_a17 = target12).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__) != null ? _b17 : _a17.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__ = {\n id: 0,\n appIds: /* @__PURE__ */ new Set()\n};\nfunction getAppRecordName(app, fallbackName) {\n var _a25;\n return ((_a25 = app == null ? void 0 : app._component) == null ? void 0 : _a25.name) || `App ${fallbackName}`;\n}\nfunction getAppRootInstance(app) {\n var _a25, _b25, _c, _d;\n if (app._instance)\n return app._instance;\n else if ((_b25 = (_a25 = app._container) == null ? void 0 : _a25._vnode) == null ? void 0 : _b25.component)\n return (_d = (_c = app._container) == null ? void 0 : _c._vnode) == null ? void 0 : _d.component;\n}\nfunction removeAppRecordId(app) {\n const id = app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__;\n if (id != null) {\n appRecordInfo.appIds.delete(id);\n appRecordInfo.id--;\n }\n}\nfunction getAppRecordId(app, defaultId) {\n if (app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ != null)\n return app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__;\n let id = defaultId != null ? defaultId : (appRecordInfo.id++).toString();\n if (defaultId && appRecordInfo.appIds.has(id)) {\n let count = 1;\n while (appRecordInfo.appIds.has(`${defaultId}_${count}`))\n count++;\n id = `${defaultId}_${count}`;\n }\n appRecordInfo.appIds.add(id);\n app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ = id;\n return id;\n}\nfunction createAppRecord(app, types) {\n const rootInstance = getAppRootInstance(app);\n if (rootInstance) {\n appRecordInfo.id++;\n const name = getAppRecordName(app, appRecordInfo.id.toString());\n const id = getAppRecordId(app, (0, import_speakingurl.default)(name));\n const record = {\n id,\n name,\n types,\n instanceMap: /* @__PURE__ */ new Map(),\n perfGroupIds: /* @__PURE__ */ new Map(),\n rootInstance\n };\n app.__VUE_DEVTOOLS_NEXT_APP_RECORD__ = record;\n const rootId = `${record.id}:root`;\n record.instanceMap.set(rootId, record.rootInstance);\n record.rootInstance.__VUE_DEVTOOLS_NEXT_UID__ = rootId;\n return record;\n } else {\n return {};\n }\n}\n\n// src/core/index.ts\nfunction initDevTools() {\n var _a25;\n updateDevToolsState({\n vitePluginDetected: getDevToolsEnv().vitePluginDetected\n });\n const isDevToolsNext = ((_a25 = target13.__VUE_DEVTOOLS_GLOBAL_HOOK__) == null ? void 0 : _a25.id) === \"vue-devtools-next\";\n if (target13.__VUE_DEVTOOLS_GLOBAL_HOOK__ && isDevToolsNext)\n return;\n if (!target13.__VUE_DEVTOOLS_GLOBAL_HOOK__) {\n target13.__VUE_DEVTOOLS_GLOBAL_HOOK__ = createDevToolsHook();\n } else {\n if (!isNuxtApp) {\n Object.assign(__VUE_DEVTOOLS_GLOBAL_HOOK__, createDevToolsHook());\n }\n }\n target13.__VUE_DEVTOOLS_GLOBAL_HOOK__.once(\"init\", (Vue) => {\n target13.__VUE_DEVTOOLS_VUE2_APP_DETECTED__ = true;\n console.log(\"%c[_____Vue DevTools v7 log_____]\", \"color: red; font-bold: 600; font-size: 16px;\");\n console.log(\"%cVue DevTools v7 detected in your Vue2 project. v7 only supports Vue3 and will not work.\", \"font-bold: 500; font-size: 14px;\");\n const url = \"https://chromewebstore.google.com/detail/vuejs-devtools/iaajmlceplecbljialhhkmedjlpdblhp\";\n console.log(`%cThe legacy version that supports both Vue 2 and Vue 3 has been moved to %c ${url}`, \"font-size: 14px;\", \"text-decoration: underline; cursor: pointer;font-size: 14px;\");\n console.log(\"%cPlease install and enable only the legacy version for your Vue2 app.\", \"font-bold: 500; font-size: 14px;\");\n console.log(\"%c[_____Vue DevTools v7 log_____]\", \"color: red; font-bold: 600; font-size: 16px;\");\n });\n hook.on.setupDevtoolsPlugin((pluginDescriptor, setupFn) => {\n var _a26;\n addDevToolsPluginToBuffer(pluginDescriptor, setupFn);\n const { app } = (_a26 = activeAppRecord) != null ? _a26 : {};\n if (pluginDescriptor.settings) {\n initPluginSettings(pluginDescriptor.id, pluginDescriptor.settings);\n }\n if (!app)\n return;\n callDevToolsPluginSetupFn([pluginDescriptor, setupFn], app);\n });\n onLegacyDevToolsPluginApiAvailable(() => {\n const normalizedPluginBuffer = devtoolsPluginBuffer.filter(([item]) => item.id !== \"components\");\n normalizedPluginBuffer.forEach(([pluginDescriptor, setupFn]) => {\n target13.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit(\"devtools-plugin:setup\" /* SETUP_DEVTOOLS_PLUGIN */, pluginDescriptor, setupFn, { target: \"legacy\" });\n });\n });\n hook.on.vueAppInit(async (app, version, types) => {\n const appRecord = createAppRecord(app, types);\n const normalizedAppRecord = {\n ...appRecord,\n app,\n version\n };\n addDevToolsAppRecord(normalizedAppRecord);\n if (devtoolsAppRecords.value.length === 1) {\n setActiveAppRecord(normalizedAppRecord);\n setActiveAppRecordId(normalizedAppRecord.id);\n normalizeRouterInfo(normalizedAppRecord, activeAppRecord);\n registerDevToolsPlugin(normalizedAppRecord.app);\n }\n setupDevToolsPlugin(...createComponentsDevToolsPlugin(normalizedAppRecord.app));\n updateDevToolsState({\n connected: true\n });\n target13.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.push(app);\n });\n hook.on.vueAppUnmount(async (app) => {\n const activeRecords = devtoolsAppRecords.value.filter((appRecord) => appRecord.app !== app);\n if (activeRecords.length === 0) {\n updateDevToolsState({\n connected: false\n });\n }\n removeDevToolsAppRecord(app);\n removeAppRecordId(app);\n if (activeAppRecord.value.app === app) {\n setActiveAppRecord(activeRecords[0]);\n devtoolsContext.hooks.callHook(\"sendActiveAppUpdatedToClient\" /* SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT */);\n }\n target13.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.splice(target13.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.indexOf(app), 1);\n removeRegisteredPluginApp(app);\n });\n subscribeDevToolsHook();\n}\nfunction onDevToolsClientConnected(fn) {\n return new Promise((resolve) => {\n if (devtoolsState.connected && devtoolsState.clientConnected) {\n fn();\n resolve();\n return;\n }\n devtoolsContext.hooks.hook(\"devtoolsConnectedUpdated\" /* DEVTOOLS_CONNECTED_UPDATED */, ({ state }) => {\n if (state.connected && state.clientConnected) {\n fn();\n resolve();\n }\n });\n });\n}\n\n// src/core/high-perf-mode/index.ts\ninit_esm_shims();\nfunction toggleHighPerfMode(state) {\n devtoolsState.highPerfModeEnabled = state != null ? state : !devtoolsState.highPerfModeEnabled;\n}\n\n// src/core/component/state/format.ts\ninit_esm_shims();\n\n// src/core/component/state/reviver.ts\ninit_esm_shims();\nimport { target as target14 } from \"@vue/devtools-shared\";\nfunction reviveSet(val) {\n const result = /* @__PURE__ */ new Set();\n const list = val._custom.value;\n for (let i = 0; i < list.length; i++) {\n const value = list[i];\n result.add(revive(value));\n }\n return result;\n}\nfunction reviveMap(val) {\n const result = /* @__PURE__ */ new Map();\n const list = val._custom.value;\n for (let i = 0; i < list.length; i++) {\n const { key, value } = list[i];\n result.set(key, revive(value));\n }\n return result;\n}\nfunction revive(val) {\n if (val === UNDEFINED) {\n return void 0;\n } else if (val === INFINITY) {\n return Number.POSITIVE_INFINITY;\n } else if (val === NEGATIVE_INFINITY) {\n return Number.NEGATIVE_INFINITY;\n } else if (val === NAN) {\n return Number.NaN;\n } else if (val && val._custom) {\n const { _custom: custom } = val;\n if (custom.type === \"component\")\n return activeAppRecord.value.instanceMap.get(custom.id);\n else if (custom.type === \"map\")\n return reviveMap(val);\n else if (custom.type === \"set\")\n return reviveSet(val);\n else if (custom.type === \"bigint\")\n return BigInt(custom.value);\n else\n return revive(custom.value);\n } else if (symbolRE.test(val)) {\n const [, string] = symbolRE.exec(val);\n return Symbol.for(string);\n } else if (specialTypeRE.test(val)) {\n const [, type, string, , details] = specialTypeRE.exec(val);\n const result = new target14[type](string);\n if (type === \"Error\" && details)\n result.stack = details;\n return result;\n } else {\n return val;\n }\n}\nfunction reviver(key, value) {\n return revive(value);\n}\n\n// src/core/component/state/format.ts\nfunction getInspectorStateValueType(value, raw = true) {\n const type = typeof value;\n if (value == null || value === UNDEFINED || value === \"undefined\") {\n return \"null\";\n } else if (type === \"boolean\" || type === \"number\" || value === INFINITY || value === NEGATIVE_INFINITY || value === NAN) {\n return \"literal\";\n } else if (value == null ? void 0 : value._custom) {\n if (raw || value._custom.display != null || value._custom.displayText != null)\n return \"custom\";\n else\n return getInspectorStateValueType(value._custom.value);\n } else if (typeof value === \"string\") {\n const typeMatch = specialTypeRE.exec(value);\n if (typeMatch) {\n const [, type2] = typeMatch;\n return `native ${type2}`;\n } else {\n return \"string\";\n }\n } else if (Array.isArray(value) || (value == null ? void 0 : value._isArray)) {\n return \"array\";\n } else if (isPlainObject(value)) {\n return \"plain-object\";\n } else {\n return \"unknown\";\n }\n}\nfunction formatInspectorStateValue(value, quotes = false, options) {\n var _a25, _b25, _c;\n const { customClass } = options != null ? options : {};\n let result;\n const type = getInspectorStateValueType(value, false);\n if (type !== \"custom\" && (value == null ? void 0 : value._custom))\n value = value._custom.value;\n if (result = internalStateTokenToString(value)) {\n return result;\n } else if (type === \"custom\") {\n const nestedName = ((_a25 = value._custom.value) == null ? void 0 : _a25._custom) && formatInspectorStateValue(value._custom.value, quotes, options);\n return nestedName || value._custom.displayText || value._custom.display;\n } else if (type === \"array\") {\n return `Array[${value.length}]`;\n } else if (type === \"plain-object\") {\n return `Object${Object.keys(value).length ? \"\" : \" (empty)\"}`;\n } else if (type == null ? void 0 : type.includes(\"native\")) {\n return escape((_b25 = specialTypeRE.exec(value)) == null ? void 0 : _b25[2]);\n } else if (typeof value === \"string\") {\n const typeMatch = value.match(rawTypeRE);\n if (typeMatch) {\n value = escapeString(typeMatch[1]);\n } else if (quotes) {\n value = `<span>\"</span>${(customClass == null ? void 0 : customClass.string) ? `<span class=${customClass.string}>${escapeString(value)}</span>` : escapeString(value)}<span>\"</span>`;\n } else {\n value = (customClass == null ? void 0 : customClass.string) ? `<span class=\"${(_c = customClass == null ? void 0 : customClass.string) != null ? _c : \"\"}\">${escapeString(value)}</span>` : escapeString(value);\n }\n }\n return value;\n}\nfunction escapeString(value) {\n return escape(value).replace(/ /g, \" \").replace(/\\n/g, \"<span>\\\\n</span>\");\n}\nfunction getRaw(value) {\n var _a25, _b25, _c;\n let customType;\n const isCustom = getInspectorStateValueType(value) === \"custom\";\n let inherit = {};\n if (isCustom) {\n const data = value;\n const customValue = (_a25 = data._custom) == null ? void 0 : _a25.value;\n const currentCustomType = (_b25 = data._custom) == null ? void 0 : _b25.type;\n const nestedCustom = typeof customValue === \"object\" && customValue !== null && \"_custom\" in customValue ? getRaw(customValue) : { inherit: void 0, value: void 0, customType: void 0 };\n inherit = nestedCustom.inherit || ((_c = data._custom) == null ? void 0 : _c.fields) || {};\n value = nestedCustom.value || customValue;\n customType = nestedCustom.customType || currentCustomType;\n }\n if (value && value._isArray)\n value = value.items;\n return { value, inherit, customType };\n}\nfunction toEdit(value, customType) {\n if (customType === \"bigint\")\n return value;\n if (customType === \"date\")\n return value;\n return replaceTokenToString(JSON.stringify(value));\n}\nfunction toSubmit(value, customType) {\n if (customType === \"bigint\")\n return BigInt(value);\n if (customType === \"date\")\n return new Date(value);\n return JSON.parse(replaceStringToToken(value), reviver);\n}\n\n// src/core/devtools-client/detected.ts\ninit_esm_shims();\nimport { target as target15 } from \"@vue/devtools-shared\";\nfunction updateDevToolsClientDetected(params) {\n devtoolsState.devtoolsClientDetected = {\n ...devtoolsState.devtoolsClientDetected,\n ...params\n };\n const devtoolsClientVisible = Object.values(devtoolsState.devtoolsClientDetected).some(Boolean);\n toggleHighPerfMode(!devtoolsClientVisible);\n}\nvar _a18, _b18;\n(_b18 = (_a18 = target15).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__) != null ? _b18 : _a18.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__ = updateDevToolsClientDetected;\n\n// src/messaging/index.ts\ninit_esm_shims();\nimport { target as target21 } from \"@vue/devtools-shared\";\nimport { createBirpc, createBirpcGroup } from \"birpc\";\n\n// src/messaging/presets/index.ts\ninit_esm_shims();\n\n// src/messaging/presets/broadcast-channel/index.ts\ninit_esm_shims();\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/index.js\ninit_esm_shims();\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/class-registry.js\ninit_esm_shims();\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/registry.js\ninit_esm_shims();\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/double-indexed-kv.js\ninit_esm_shims();\nvar DoubleIndexedKV = class {\n constructor() {\n this.keyToValue = /* @__PURE__ */ new Map();\n this.valueToKey = /* @__PURE__ */ new Map();\n }\n set(key, value) {\n this.keyToValue.set(key, value);\n this.valueToKey.set(value, key);\n }\n getByKey(key) {\n return this.keyToValue.get(key);\n }\n getByValue(value) {\n return this.valueToKey.get(value);\n }\n clear() {\n this.keyToValue.clear();\n this.valueToKey.clear();\n }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/registry.js\nvar Registry = class {\n constructor(generateIdentifier) {\n this.generateIdentifier = generateIdentifier;\n this.kv = new DoubleIndexedKV();\n }\n register(value, identifier) {\n if (this.kv.getByValue(value)) {\n return;\n }\n if (!identifier) {\n identifier = this.generateIdentifier(value);\n }\n this.kv.set(identifier, value);\n }\n clear() {\n this.kv.clear();\n }\n getIdentifier(value) {\n return this.kv.getByValue(value);\n }\n getValue(identifier) {\n return this.kv.getByKey(identifier);\n }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/class-registry.js\nvar ClassRegistry = class extends Registry {\n constructor() {\n super((c) => c.name);\n this.classToAllowedProps = /* @__PURE__ */ new Map();\n }\n register(value, options) {\n if (typeof options === \"object\") {\n if (options.allowProps) {\n this.classToAllowedProps.set(value, options.allowProps);\n }\n super.register(value, options.identifier);\n } else {\n super.register(value, options);\n }\n }\n getAllowedProps(value) {\n return this.classToAllowedProps.get(value);\n }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/custom-transformer-registry.js\ninit_esm_shims();\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/util.js\ninit_esm_shims();\nfunction valuesOfObj(record) {\n if (\"values\" in Object) {\n return Object.values(record);\n }\n const values = [];\n for (const key in record) {\n if (record.hasOwnProperty(key)) {\n values.push(record[key]);\n }\n }\n return values;\n}\nfunction find(record, predicate) {\n const values = valuesOfObj(record);\n if (\"find\" in values) {\n return values.find(predicate);\n }\n const valuesNotNever = values;\n for (let i = 0; i < valuesNotNever.length; i++) {\n const value = valuesNotNever[i];\n if (predicate(value)) {\n return value;\n }\n }\n return void 0;\n}\nfunction forEach(record, run) {\n Object.entries(record).forEach(([key, value]) => run(value, key));\n}\nfunction includes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nfunction findArr(record, predicate) {\n for (let i = 0; i < record.length; i++) {\n const value = record[i];\n if (predicate(value)) {\n return value;\n }\n }\n return void 0;\n}\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/custom-transformer-registry.js\nvar CustomTransformerRegistry = class {\n constructor() {\n this.transfomers = {};\n }\n register(transformer) {\n this.transfomers[transformer.name] = transformer;\n }\n findApplicable(v) {\n return find(this.transfomers, (transformer) => transformer.isApplicable(v));\n }\n findByName(name) {\n return this.transfomers[name];\n }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/plainer.js\ninit_esm_shims();\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/is.js\ninit_esm_shims();\nvar getType = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nvar isUndefined = (payload) => typeof payload === \"undefined\";\nvar isNull = (payload) => payload === null;\nvar isPlainObject2 = (payload) => {\n if (typeof payload !== \"object\" || payload === null)\n return false;\n if (payload === Object.prototype)\n return false;\n if (Object.getPrototypeOf(payload) === null)\n return true;\n return Object.getPrototypeOf(payload) === Object.prototype;\n};\nvar isEmptyObject = (payload) => isPlainObject2(payload) && Object.keys(payload).length === 0;\nvar isArray = (payload) => Array.isArray(payload);\nvar isString = (payload) => typeof payload === \"string\";\nvar isNumber = (payload) => typeof payload === \"number\" && !isNaN(payload);\nvar isBoolean = (payload) => typeof payload === \"boolean\";\nvar isRegExp = (payload) => payload instanceof RegExp;\nvar isMap = (payload) => payload instanceof Map;\nvar isSet = (payload) => payload instanceof Set;\nvar isSymbol = (payload) => getType(payload) === \"Symbol\";\nvar isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nvar isError = (payload) => payload instanceof Error;\nvar isNaNValue = (payload) => typeof payload === \"number\" && isNaN(payload);\nvar isPrimitive2 = (payload) => isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);\nvar isBigint = (payload) => typeof payload === \"bigint\";\nvar isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nvar isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nvar isURL = (payload) => payload instanceof URL;\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/pathstringifier.js\ninit_esm_shims();\nvar escapeKey = (key) => key.replace(/\\./g, \"\\\\.\");\nvar stringifyPath = (path) => path.map(String).map(escapeKey).join(\".\");\nvar parsePath = (string) => {\n const result = [];\n let segment = \"\";\n for (let i = 0; i < string.length; i++) {\n let char = string.charAt(i);\n const isEscapedDot = char === \"\\\\\" && string.charAt(i + 1) === \".\";\n if (isEscapedDot) {\n segment += \".\";\n i++;\n continue;\n }\n const isEndOfSegment = char === \".\";\n if (isEndOfSegment) {\n result.push(segment);\n segment = \"\";\n continue;\n }\n segment += char;\n }\n const lastSegment = segment;\n result.push(lastSegment);\n return result;\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/transformer.js\ninit_esm_shims();\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform\n };\n}\nvar simpleRules = [\n simpleTransformation(isUndefined, \"undefined\", () => null, () => void 0),\n simpleTransformation(isBigint, \"bigint\", (v) => v.toString(), (v) => {\n if (typeof BigInt !== \"undefined\") {\n return BigInt(v);\n }\n console.error(\"Please add a BigInt polyfill.\");\n return v;\n }),\n simpleTransformation(isDate, \"Date\", (v) => v.toISOString(), (v) => new Date(v)),\n simpleTransformation(isError, \"Error\", (v, superJson) => {\n const baseError = {\n name: v.name,\n message: v.message\n };\n superJson.allowedErrorProps.forEach((prop) => {\n baseError[prop] = v[prop];\n });\n return baseError;\n }, (v, superJson) => {\n const e = new Error(v.message);\n e.name = v.name;\n e.stack = v.stack;\n superJson.allowedErrorProps.forEach((prop) => {\n e[prop] = v[prop];\n });\n return e;\n }),\n simpleTransformation(isRegExp, \"regexp\", (v) => \"\" + v, (regex) => {\n const body = regex.slice(1, regex.lastIndexOf(\"/\"));\n const flags = regex.slice(regex.lastIndexOf(\"/\") + 1);\n return new RegExp(body, flags);\n }),\n simpleTransformation(\n isSet,\n \"set\",\n // (sets only exist in es6+)\n // eslint-disable-next-line es5/no-es6-methods\n (v) => [...v.values()],\n (v) => new Set(v)\n ),\n simpleTransformation(isMap, \"map\", (v) => [...v.entries()], (v) => new Map(v)),\n simpleTransformation((v) => isNaNValue(v) || isInfinite(v), \"number\", (v) => {\n if (isNaNValue(v)) {\n return \"NaN\";\n }\n if (v > 0) {\n return \"Infinity\";\n } else {\n return \"-Infinity\";\n }\n }, Number),\n simpleTransformation((v) => v === 0 && 1 / v === -Infinity, \"number\", () => {\n return \"-0\";\n }, Number),\n simpleTransformation(isURL, \"URL\", (v) => v.toString(), (v) => new URL(v))\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n return {\n isApplicable,\n annotation,\n transform,\n untransform\n };\n}\nvar symbolRule = compositeTransformation((s, superJson) => {\n if (isSymbol(s)) {\n const isRegistered = !!superJson.symbolRegistry.getIdentifier(s);\n return isRegistered;\n }\n return false;\n}, (s, superJson) => {\n const identifier = superJson.symbolRegistry.getIdentifier(s);\n return [\"symbol\", identifier];\n}, (v) => v.description, (_, a, superJson) => {\n const value = superJson.symbolRegistry.getValue(a[1]);\n if (!value) {\n throw new Error(\"Trying to deserialize unknown symbol\");\n }\n return value;\n});\nvar constructorToName = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n Uint8ClampedArray\n].reduce((obj, ctor) => {\n obj[ctor.name] = ctor;\n return obj;\n}, {});\nvar typedArrayRule = compositeTransformation(isTypedArray, (v) => [\"typed-array\", v.constructor.name], (v) => [...v], (v, a) => {\n const ctor = constructorToName[a[1]];\n if (!ctor) {\n throw new Error(\"Trying to deserialize unknown typed array\");\n }\n return new ctor(v);\n});\nfunction isInstanceOfRegisteredClass(potentialClass, superJson) {\n if (potentialClass == null ? void 0 : potentialClass.constructor) {\n const isRegistered = !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n return isRegistered;\n }\n return false;\n}\nvar classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n const identifier = superJson.classRegistry.getIdentifier(clazz.constructor);\n return [\"class\", identifier];\n}, (clazz, superJson) => {\n const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n if (!allowedProps) {\n return { ...clazz };\n }\n const result = {};\n allowedProps.forEach((prop) => {\n result[prop] = clazz[prop];\n });\n return result;\n}, (v, a, superJson) => {\n const clazz = superJson.classRegistry.getValue(a[1]);\n if (!clazz) {\n throw new Error(\"Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564\");\n }\n return Object.assign(Object.create(clazz.prototype), v);\n});\nvar customRule = compositeTransformation((value, superJson) => {\n return !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return [\"custom\", transformer.name];\n}, (value, superJson) => {\n const transformer = superJson.customTransformerRegistry.findApplicable(value);\n return transformer.serialize(value);\n}, (v, a, superJson) => {\n const transformer = superJson.customTransformerRegistry.findByName(a[1]);\n if (!transformer) {\n throw new Error(\"Trying to deserialize unknown custom value\");\n }\n return transformer.deserialize(v);\n});\nvar compositeRules = [classRule, symbolRule, customRule, typedArrayRule];\nvar transformValue = (value, superJson) => {\n const applicableCompositeRule = findArr(compositeRules, (rule) => rule.isApplicable(value, superJson));\n if (applicableCompositeRule) {\n return {\n value: applicableCompositeRule.transform(value, superJson),\n type: applicableCompositeRule.annotation(value, superJson)\n };\n }\n const applicableSimpleRule = findArr(simpleRules, (rule) => rule.isApplicable(value, superJson));\n if (applicableSimpleRule) {\n return {\n value: applicableSimpleRule.transform(value, superJson),\n type: applicableSimpleRule.annotation\n };\n }\n return void 0;\n};\nvar simpleRulesByAnnotation = {};\nsimpleRules.forEach((rule) => {\n simpleRulesByAnnotation[rule.annotation] = rule;\n});\nvar untransformValue = (json, type, superJson) => {\n if (isArray(type)) {\n switch (type[0]) {\n case \"symbol\":\n return symbolRule.untransform(json, type, superJson);\n case \"class\":\n return classRule.untransform(json, type, superJson);\n case \"custom\":\n return customRule.untransform(json, type, superJson);\n case \"typed-array\":\n return typedArrayRule.untransform(json, type, superJson);\n default:\n throw new Error(\"Unknown transformation: \" + type);\n }\n } else {\n const transformation = simpleRulesByAnnotation[type];\n if (!transformation) {\n throw new Error(\"Unknown transformation: \" + type);\n }\n return transformation.untransform(json, superJson);\n }\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/accessDeep.js\ninit_esm_shims();\nvar getNthKey = (value, n) => {\n const keys = value.keys();\n while (n > 0) {\n keys.next();\n n--;\n }\n return keys.next().value;\n};\nfunction validatePath(path) {\n if (includes(path, \"__proto__\")) {\n throw new Error(\"__proto__ is not allowed as a property\");\n }\n if (includes(path, \"prototype\")) {\n throw new Error(\"prototype is not allowed as a property\");\n }\n if (includes(path, \"constructor\")) {\n throw new Error(\"constructor is not allowed as a property\");\n }\n}\nvar getDeep = (object, path) => {\n validatePath(path);\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (isSet(object)) {\n object = getNthKey(object, +key);\n } else if (isMap(object)) {\n const row = +key;\n const type = +path[++i] === 0 ? \"key\" : \"value\";\n const keyOfRow = getNthKey(object, row);\n switch (type) {\n case \"key\":\n object = keyOfRow;\n break;\n case \"value\":\n object = object.get(keyOfRow);\n break;\n }\n } else {\n object = object[key];\n }\n }\n return object;\n};\nvar setDeep = (object, path, mapper) => {\n validatePath(path);\n if (path.length === 0) {\n return mapper(object);\n }\n let parent = object;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (isArray(parent)) {\n const index = +key;\n parent = parent[index];\n } else if (isPlainObject2(parent)) {\n parent = parent[key];\n } else if (isSet(parent)) {\n const row = +key;\n parent = getNthKey(parent, row);\n } else if (isMap(parent)) {\n const isEnd = i === path.length - 2;\n if (isEnd) {\n break;\n }\n const row = +key;\n const type = +path[++i] === 0 ? \"key\" : \"value\";\n const keyOfRow = getNthKey(parent, row);\n switch (type) {\n case \"key\":\n parent = keyOfRow;\n break;\n case \"value\":\n parent = parent.get(keyOfRow);\n break;\n }\n }\n }\n const lastKey = path[path.length - 1];\n if (isArray(parent)) {\n parent[+lastKey] = mapper(parent[+lastKey]);\n } else if (isPlainObject2(parent)) {\n parent[lastKey] = mapper(parent[lastKey]);\n }\n if (isSet(parent)) {\n const oldValue = getNthKey(parent, +lastKey);\n const newValue = mapper(oldValue);\n if (oldValue !== newValue) {\n parent.delete(oldValue);\n parent.add(newValue);\n }\n }\n if (isMap(parent)) {\n const row = +path[path.length - 2];\n const keyToRow = getNthKey(parent, row);\n const type = +lastKey === 0 ? \"key\" : \"value\";\n switch (type) {\n case \"key\": {\n const newKey = mapper(keyToRow);\n parent.set(newKey, parent.get(keyToRow));\n if (newKey !== keyToRow) {\n parent.delete(keyToRow);\n }\n break;\n }\n case \"value\": {\n parent.set(keyToRow, mapper(parent.get(keyToRow)));\n break;\n }\n }\n }\n return object;\n};\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/plainer.js\nfunction traverse(tree, walker2, origin = []) {\n if (!tree) {\n return;\n }\n if (!isArray(tree)) {\n forEach(tree, (subtree, key) => traverse(subtree, walker2, [...origin, ...parsePath(key)]));\n return;\n }\n const [nodeValue, children] = tree;\n if (children) {\n forEach(children, (child, key) => {\n traverse(child, walker2, [...origin, ...parsePath(key)]);\n });\n }\n walker2(nodeValue, origin);\n}\nfunction applyValueAnnotations(plain, annotations, superJson) {\n traverse(annotations, (type, path) => {\n plain = setDeep(plain, path, (v) => untransformValue(v, type, superJson));\n });\n return plain;\n}\nfunction applyReferentialEqualityAnnotations(plain, annotations) {\n function apply(identicalPaths, path) {\n const object = getDeep(plain, parsePath(path));\n identicalPaths.map(parsePath).forEach((identicalObjectPath) => {\n plain = setDeep(plain, identicalObjectPath, () => object);\n });\n }\n if (isArray(annotations)) {\n const [root, other] = annotations;\n root.forEach((identicalPath) => {\n plain = setDeep(plain, parsePath(identicalPath), () => plain);\n });\n if (other) {\n forEach(other, apply);\n }\n } else {\n forEach(annotations, apply);\n }\n return plain;\n}\nvar isDeep = (object, superJson) => isPlainObject2(object) || isArray(object) || isMap(object) || isSet(object) || isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n const existingSet = identities.get(object);\n if (existingSet) {\n existingSet.push(path);\n } else {\n identities.set(object, [path]);\n }\n}\nfunction generateReferentialEqualityAnnotations(identitites, dedupe) {\n const result = {};\n let rootEqualityPaths = void 0;\n identitites.forEach((paths) => {\n if (paths.length <= 1) {\n return;\n }\n if (!dedupe) {\n paths = paths.map((path) => path.map(String)).sort((a, b) => a.length - b.length);\n }\n const [representativePath, ...identicalPaths] = paths;\n if (representativePath.length === 0) {\n rootEqualityPaths = identicalPaths.map(stringifyPath);\n } else {\n result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n }\n });\n if (rootEqualityPaths) {\n if (isEmptyObject(result)) {\n return [rootEqualityPaths];\n } else {\n return [rootEqualityPaths, result];\n }\n } else {\n return isEmptyObject(result) ? void 0 : result;\n }\n}\nvar walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = /* @__PURE__ */ new Map()) => {\n var _a25;\n const primitive = isPrimitive2(object);\n if (!primitive) {\n addIdentity(object, path, identities);\n const seen = seenObjects.get(object);\n if (seen) {\n return dedupe ? {\n transformedValue: null\n } : seen;\n }\n }\n if (!isDeep(object, superJson)) {\n const transformed2 = transformValue(object, superJson);\n const result2 = transformed2 ? {\n transformedValue: transformed2.value,\n annotations: [transformed2.type]\n } : {\n transformedValue: object\n };\n if (!primitive) {\n seenObjects.set(object, result2);\n }\n return result2;\n }\n if (includes(objectsInThisPath, object)) {\n return {\n transformedValue: null\n };\n }\n const transformationResult = transformValue(object, superJson);\n const transformed = (_a25 = transformationResult == null ? void 0 : transformationResult.value) != null ? _a25 : object;\n const transformedValue = isArray(transformed) ? [] : {};\n const innerAnnotations = {};\n forEach(transformed, (value, index) => {\n if (index === \"__proto__\" || index === \"constructor\" || index === \"prototype\") {\n throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n }\n const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n transformedValue[index] = recursiveResult.transformedValue;\n if (isArray(recursiveResult.annotations)) {\n innerAnnotations[index] = recursiveResult.annotations;\n } else if (isPlainObject2(recursiveResult.annotations)) {\n forEach(recursiveResult.annotations, (tree, key) => {\n innerAnnotations[escapeKey(index) + \".\" + key] = tree;\n });\n }\n });\n const result = isEmptyObject(innerAnnotations) ? {\n transformedValue,\n annotations: !!transformationResult ? [transformationResult.type] : void 0\n } : {\n transformedValue,\n annotations: !!transformationResult ? [transformationResult.type, innerAnnotations] : innerAnnotations\n };\n if (!primitive) {\n seenObjects.set(object, result);\n }\n return result;\n};\n\n// ../../node_modules/.pnpm/copy-anything@3.0.5/node_modules/copy-anything/dist/index.js\ninit_esm_shims();\n\n// ../../node_modules/.pnpm/is-what@4.1.16/node_modules/is-what/dist/index.js\ninit_esm_shims();\nfunction getType2(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\nfunction isArray2(payload) {\n return getType2(payload) === \"Array\";\n}\nfunction isPlainObject3(payload) {\n if (getType2(payload) !== \"Object\")\n return false;\n const prototype = Object.getPrototypeOf(payload);\n return !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\nfunction isNull2(payload) {\n return getType2(payload) === \"Null\";\n}\nfunction isOneOf(a, b, c, d, e) {\n return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);\n}\nfunction isUndefined2(payload) {\n return getType2(payload) === \"Undefined\";\n}\nvar isNullOrUndefined = isOneOf(isNull2, isUndefined2);\n\n// ../../node_modules/.pnpm/copy-anything@3.0.5/node_modules/copy-anything/dist/index.js\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n const propType = {}.propertyIsEnumerable.call(originalObject, key) ? \"enumerable\" : \"nonenumerable\";\n if (propType === \"enumerable\")\n carry[key] = newVal;\n if (includeNonenumerable && propType === \"nonenumerable\") {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n}\nfunction copy(target22, options = {}) {\n if (isArray2(target22)) {\n return target22.map((item) => copy(item, options));\n }\n if (!isPlainObject3(target22)) {\n return target22;\n }\n const props = Object.getOwnPropertyNames(target22);\n const symbols = Object.getOwnPropertySymbols(target22);\n return [...props, ...symbols].reduce((carry, key) => {\n if (isArray2(options.props) && !options.props.includes(key)) {\n return carry;\n }\n const val = target22[key];\n const newVal = copy(val, options);\n assignProp(carry, key, newVal, target22, options.nonenumerable);\n return carry;\n }, {});\n}\n\n// ../../node_modules/.pnpm/superjson@2.2.1/node_modules/superjson/dist/index.js\nvar SuperJSON = class {\n /**\n * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n */\n constructor({ dedupe = false } = {}) {\n this.classRegistry = new ClassRegistry();\n this.symbolRegistry = new Registry((s) => {\n var _a25;\n return (_a25 = s.description) != null ? _a25 : \"\";\n });\n this.customTransformerRegistry = new CustomTransformerRegistry();\n this.allowedErrorProps = [];\n this.dedupe = dedupe;\n }\n serialize(object) {\n const identities = /* @__PURE__ */ new Map();\n const output = walker(object, identities, this, this.dedupe);\n const res = {\n json: output.transformedValue\n };\n if (output.annotations) {\n res.meta = {\n ...res.meta,\n values: output.annotations\n };\n }\n const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n if (equalityAnnotations) {\n res.meta = {\n ...res.meta,\n referentialEqualities: equalityAnnotations\n };\n }\n return res;\n }\n deserialize(payload) {\n const { json, meta } = payload;\n let result = copy(json);\n if (meta == null ? void 0 : meta.values) {\n result = applyValueAnnotations(result, meta.values, this);\n }\n if (meta == null ? void 0 : meta.referentialEqualities) {\n result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities);\n }\n return result;\n }\n stringify(object) {\n return JSON.stringify(this.serialize(object));\n }\n parse(string) {\n return this.deserialize(JSON.parse(string));\n }\n registerClass(v, options) {\n this.classRegistry.register(v, options);\n }\n registerSymbol(v, identifier) {\n this.symbolRegistry.register(v, identifier);\n }\n registerCustom(transformer, name) {\n this.customTransformerRegistry.register({\n name,\n ...transformer\n });\n }\n allowErrorProps(...props) {\n this.allowedErrorProps.push(...props);\n }\n};\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nvar serialize = SuperJSON.serialize;\nvar deserialize = SuperJSON.deserialize;\nvar stringify = SuperJSON.stringify;\nvar parse = SuperJSON.parse;\nvar registerClass = SuperJSON.registerClass;\nvar registerCustom = SuperJSON.registerCustom;\nvar registerSymbol = SuperJSON.registerSymbol;\nvar allowErrorProps = SuperJSON.allowErrorProps;\n\n// src/messaging/presets/broadcast-channel/context.ts\ninit_esm_shims();\nvar __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY = \"__devtools-kit-broadcast-messaging-event-key__\";\n\n// src/messaging/presets/broadcast-channel/index.ts\nvar BROADCAST_CHANNEL_NAME = \"__devtools-kit:broadcast-channel__\";\nfunction createBroadcastChannel() {\n const channel = new BroadcastChannel(BROADCAST_CHANNEL_NAME);\n return {\n post: (data) => {\n channel.postMessage(SuperJSON.stringify({\n event: __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY,\n data\n }));\n },\n on: (handler) => {\n channel.onmessage = (event) => {\n const parsed = SuperJSON.parse(event.data);\n if (parsed.event === __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY) {\n handler(parsed.data);\n }\n };\n }\n };\n}\n\n// src/messaging/presets/electron/index.ts\ninit_esm_shims();\n\n// src/messaging/presets/electron/client.ts\ninit_esm_shims();\n\n// src/messaging/presets/electron/context.ts\ninit_esm_shims();\nimport { target as target16 } from \"@vue/devtools-shared\";\nvar __ELECTRON_CLIENT_CONTEXT__ = \"electron:client-context\";\nvar __ELECTRON_RPOXY_CONTEXT__ = \"electron:proxy-context\";\nvar __ELECTRON_SERVER_CONTEXT__ = \"electron:server-context\";\nvar __DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__ = {\n // client\n CLIENT_TO_PROXY: \"client->proxy\",\n // on: proxy->client\n // proxy\n PROXY_TO_CLIENT: \"proxy->client\",\n // on: server->proxy\n PROXY_TO_SERVER: \"proxy->server\",\n // on: client->proxy\n // server\n SERVER_TO_PROXY: \"server->proxy\"\n // on: proxy->server\n};\nfunction getElectronClientContext() {\n return target16[__ELECTRON_CLIENT_CONTEXT__];\n}\nfunction setElectronClientContext(context) {\n target16[__ELECTRON_CLIENT_CONTEXT__] = context;\n}\nfunction getElectronProxyContext() {\n return target16[__ELECTRON_RPOXY_CONTEXT__];\n}\nfunction setElectronProxyContext(context) {\n target16[__ELECTRON_RPOXY_CONTEXT__] = context;\n}\nfunction getElectronServerContext() {\n return target16[__ELECTRON_SERVER_CONTEXT__];\n}\nfunction setElectronServerContext(context) {\n target16[__ELECTRON_SERVER_CONTEXT__] = context;\n}\n\n// src/messaging/presets/electron/client.ts\nfunction createElectronClientChannel() {\n const socket = getElectronClientContext();\n return {\n post: (data) => {\n socket.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.CLIENT_TO_PROXY, SuperJSON.stringify(data));\n },\n on: (handler) => {\n socket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_CLIENT, (e) => {\n handler(SuperJSON.parse(e));\n });\n }\n };\n}\n\n// src/messaging/presets/electron/proxy.ts\ninit_esm_shims();\nfunction createElectronProxyChannel() {\n const socket = getElectronProxyContext();\n return {\n post: (data) => {\n },\n on: (handler) => {\n socket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY, (data) => {\n socket.broadcast.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_CLIENT, data);\n });\n socket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.CLIENT_TO_PROXY, (data) => {\n socket.broadcast.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER, data);\n });\n }\n };\n}\n\n// src/messaging/presets/electron/server.ts\ninit_esm_shims();\nfunction createElectronServerChannel() {\n const socket = getElectronServerContext();\n return {\n post: (data) => {\n socket.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY, SuperJSON.stringify(data));\n },\n on: (handler) => {\n socket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER, (data) => {\n handler(SuperJSON.parse(data));\n });\n }\n };\n}\n\n// src/messaging/presets/extension/index.ts\ninit_esm_shims();\n\n// src/messaging/presets/extension/client.ts\ninit_esm_shims();\n\n// src/messaging/presets/extension/context.ts\ninit_esm_shims();\nimport { target as target17 } from \"@vue/devtools-shared\";\nvar __EXTENSION_CLIENT_CONTEXT__ = \"electron:client-context\";\nvar __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__ = {\n // client\n CLIENT_TO_PROXY: \"client->proxy\",\n // on: proxy->client\n // proxy\n PROXY_TO_CLIENT: \"proxy->client\",\n // on: server->proxy\n PROXY_TO_SERVER: \"proxy->server\",\n // on: client->proxy\n // server\n SERVER_TO_PROXY: \"server->proxy\"\n // on: proxy->server\n};\nfunction getExtensionClientContext() {\n return target17[__EXTENSION_CLIENT_CONTEXT__];\n}\nfunction setExtensionClientContext(context) {\n target17[__EXTENSION_CLIENT_CONTEXT__] = context;\n}\n\n// src/messaging/presets/extension/client.ts\nfunction createExtensionClientChannel() {\n let disconnected = false;\n let port = null;\n let reconnectTimer = null;\n let onMessageHandler = null;\n function connect() {\n try {\n clearTimeout(reconnectTimer);\n port = chrome.runtime.connect({\n name: `${chrome.devtools.inspectedWindow.tabId}`\n });\n setExtensionClientContext(port);\n disconnected = false;\n port == null ? void 0 : port.onMessage.addListener(onMessageHandler);\n port.onDisconnect.addListener(() => {\n disconnected = true;\n port == null ? void 0 : port.onMessage.removeListener(onMessageHandler);\n reconnectTimer = setTimeout(connect, 1e3);\n });\n } catch (e) {\n disconnected = true;\n }\n }\n connect();\n return {\n post: (data) => {\n if (disconnected) {\n return;\n }\n port == null ? void 0 : port.postMessage(SuperJSON.stringify(data));\n },\n on: (handler) => {\n onMessageHandler = (data) => {\n if (disconnected) {\n return;\n }\n handler(SuperJSON.parse(data));\n };\n port == null ? void 0 : port.onMessage.addListener(onMessageHandler);\n }\n };\n}\n\n// src/messaging/presets/extension/proxy.ts\ninit_esm_shims();\nfunction createExtensionProxyChannel() {\n const port = chrome.runtime.connect({\n name: \"content-script\"\n });\n function sendMessageToUserApp(payload) {\n window.postMessage({\n source: __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER,\n payload\n }, \"*\");\n }\n function sendMessageToDevToolsClient(e) {\n if (e.data && e.data.source === __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY) {\n try {\n port.postMessage(e.data.payload);\n } catch (e2) {\n }\n }\n }\n port.onMessage.addListener(sendMessageToUserApp);\n window.addEventListener(\"message\", sendMessageToDevToolsClient);\n port.onDisconnect.addListener(() => {\n window.removeEventListener(\"message\", sendMessageToDevToolsClient);\n sendMessageToUserApp(SuperJSON.stringify({\n event: \"shutdown\"\n }));\n });\n sendMessageToUserApp(SuperJSON.stringify({\n event: \"init\"\n }));\n return {\n post: (data) => {\n },\n on: (handler) => {\n }\n };\n}\n\n// src/messaging/presets/extension/server.ts\ninit_esm_shims();\nfunction createExtensionServerChannel() {\n return {\n post: (data) => {\n window.postMessage({\n source: __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY,\n payload: SuperJSON.stringify(data)\n }, \"*\");\n },\n on: (handler) => {\n const listener = (event) => {\n if (event.data.source === __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER && event.data.payload) {\n handler(SuperJSON.parse(event.data.payload));\n }\n };\n window.addEventListener(\"message\", listener);\n return () => {\n window.removeEventListener(\"message\", listener);\n };\n }\n };\n}\n\n// src/messaging/presets/iframe/index.ts\ninit_esm_shims();\n\n// src/messaging/presets/iframe/client.ts\ninit_esm_shims();\nimport { isBrowser as isBrowser3 } from \"@vue/devtools-shared\";\n\n// src/messaging/presets/iframe/context.ts\ninit_esm_shims();\nimport { target as target18 } from \"@vue/devtools-shared\";\nvar __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY = \"__devtools-kit-iframe-messaging-event-key__\";\nvar __IFRAME_SERVER_CONTEXT__ = \"iframe:server-context\";\nfunction getIframeServerContext() {\n return target18[__IFRAME_SERVER_CONTEXT__];\n}\nfunction setIframeServerContext(context) {\n target18[__IFRAME_SERVER_CONTEXT__] = context;\n}\n\n// src/messaging/presets/iframe/client.ts\nfunction createIframeClientChannel() {\n if (!isBrowser3) {\n return {\n post: (data) => {\n },\n on: (handler) => {\n }\n };\n }\n return {\n post: (data) => window.parent.postMessage(SuperJSON.stringify({\n event: __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY,\n data\n }), \"*\"),\n on: (handler) => window.addEventListener(\"message\", (event) => {\n try {\n const parsed = SuperJSON.parse(event.data);\n if (event.source === window.parent && parsed.event === __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY) {\n handler(parsed.data);\n }\n } catch (e) {\n }\n })\n };\n}\n\n// src/messaging/presets/iframe/server.ts\ninit_esm_shims();\nimport { isBrowser as isBrowser4 } from \"@vue/devtools-shared\";\nfunction createIframeServerChannel() {\n if (!isBrowser4) {\n return {\n post: (data) => {\n },\n on: (handler) => {\n }\n };\n }\n return {\n post: (data) => {\n var _a25;\n const iframe = getIframeServerContext();\n (_a25 = iframe == null ? void 0 : iframe.contentWindow) == null ? void 0 : _a25.postMessage(SuperJSON.stringify({\n event: __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY,\n data\n }), \"*\");\n },\n on: (handler) => {\n window.addEventListener(\"message\", (event) => {\n const iframe = getIframeServerContext();\n try {\n const parsed = SuperJSON.parse(event.data);\n if (event.source === (iframe == null ? void 0 : iframe.contentWindow) && parsed.event === __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY) {\n handler(parsed.data);\n }\n } catch (e) {\n }\n });\n }\n };\n}\n\n// src/messaging/presets/vite/index.ts\ninit_esm_shims();\n\n// src/messaging/presets/vite/client.ts\ninit_esm_shims();\n\n// src/messaging/presets/vite/context.ts\ninit_esm_shims();\nimport { target as target19 } from \"@vue/devtools-shared\";\nvar __DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY = \"__devtools-kit-vite-messaging-event-key__\";\nvar __VITE_CLIENT_CONTEXT__ = \"vite:client-context\";\nvar __VITE_SERVER_CONTEXT__ = \"vite:server-context\";\nfunction getViteClientContext() {\n return target19[__VITE_CLIENT_CONTEXT__];\n}\nfunction setViteClientContext(context) {\n target19[__VITE_CLIENT_CONTEXT__] = context;\n}\nfunction getViteServerContext() {\n return target19[__VITE_SERVER_CONTEXT__];\n}\nfunction setViteServerContext(context) {\n target19[__VITE_SERVER_CONTEXT__] = context;\n}\n\n// src/messaging/presets/vite/client.ts\nfunction createViteClientChannel() {\n const client = getViteClientContext();\n return {\n post: (data) => {\n client == null ? void 0 : client.send(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, SuperJSON.stringify(data));\n },\n on: (handler) => {\n client == null ? void 0 : client.on(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, (event) => {\n handler(SuperJSON.parse(event));\n });\n }\n };\n}\n\n// src/messaging/presets/vite/server.ts\ninit_esm_shims();\nfunction createViteServerChannel() {\n var _a25;\n const viteServer = getViteServerContext();\n const ws = (_a25 = viteServer.hot) != null ? _a25 : viteServer.ws;\n return {\n post: (data) => ws == null ? void 0 : ws.send(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, SuperJSON.stringify(data)),\n on: (handler) => ws == null ? void 0 : ws.on(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, (event) => {\n handler(SuperJSON.parse(event));\n })\n };\n}\n\n// src/messaging/presets/ws/index.ts\ninit_esm_shims();\n\n// src/messaging/presets/ws/client.ts\ninit_esm_shims();\n\n// src/messaging/presets/ws/context.ts\ninit_esm_shims();\nimport { target as target20 } from \"@vue/devtools-shared\";\n\n// src/messaging/presets/ws/server.ts\ninit_esm_shims();\n\n// src/messaging/index.ts\nvar _a19, _b19;\n(_b19 = (_a19 = target21).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__) != null ? _b19 : _a19.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__ = [];\nvar _a20, _b20;\n(_b20 = (_a20 = target21).__VUE_DEVTOOLS_KIT_RPC_CLIENT__) != null ? _b20 : _a20.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ = null;\nvar _a21, _b21;\n(_b21 = (_a21 = target21).__VUE_DEVTOOLS_KIT_RPC_SERVER__) != null ? _b21 : _a21.__VUE_DEVTOOLS_KIT_RPC_SERVER__ = null;\nvar _a22, _b22;\n(_b22 = (_a22 = target21).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__) != null ? _b22 : _a22.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ = null;\nvar _a23, _b23;\n(_b23 = (_a23 = target21).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__) != null ? _b23 : _a23.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ = null;\nvar _a24, _b24;\n(_b24 = (_a24 = target21).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__) != null ? _b24 : _a24.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__ = null;\nfunction setRpcClientToGlobal(rpc) {\n target21.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ = rpc;\n}\nfunction setRpcServerToGlobal(rpc) {\n target21.__VUE_DEVTOOLS_KIT_RPC_SERVER__ = rpc;\n}\nfunction getRpcClient() {\n return target21.__VUE_DEVTOOLS_KIT_RPC_CLIENT__;\n}\nfunction getRpcServer() {\n return target21.__VUE_DEVTOOLS_KIT_RPC_SERVER__;\n}\nfunction setViteRpcClientToGlobal(rpc) {\n target21.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ = rpc;\n}\nfunction setViteRpcServerToGlobal(rpc) {\n target21.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ = rpc;\n}\nfunction getViteRpcClient() {\n return target21.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__;\n}\nfunction getViteRpcServer() {\n return target21.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__;\n}\nfunction getChannel(preset, host = \"client\") {\n const channel = {\n iframe: {\n client: createIframeClientChannel,\n server: createIframeServerChannel\n }[host],\n electron: {\n client: createElectronClientChannel,\n proxy: createElectronProxyChannel,\n server: createElectronServerChannel\n }[host],\n vite: {\n client: createViteClientChannel,\n server: createViteServerChannel\n }[host],\n broadcast: {\n client: createBroadcastChannel,\n server: createBroadcastChannel\n }[host],\n extension: {\n client: createExtensionClientChannel,\n proxy: createExtensionProxyChannel,\n server: createExtensionServerChannel\n }[host]\n }[preset];\n return channel();\n}\nfunction createRpcClient(functions, options = {}) {\n const { channel: _channel, options: _options, preset } = options;\n const channel = preset ? getChannel(preset) : _channel;\n const rpc = createBirpc(functions, {\n ..._options,\n ...channel,\n timeout: -1\n });\n if (preset === \"vite\") {\n setViteRpcClientToGlobal(rpc);\n return;\n }\n setRpcClientToGlobal(rpc);\n return rpc;\n}\nfunction createRpcServer(functions, options = {}) {\n const { channel: _channel, options: _options, preset } = options;\n const channel = preset ? getChannel(preset, \"server\") : _channel;\n const rpcServer = getRpcServer();\n if (!rpcServer) {\n const group = createBirpcGroup(functions, [channel], {\n ..._options,\n timeout: -1\n });\n if (preset === \"vite\") {\n setViteRpcServerToGlobal(group);\n return;\n }\n setRpcServerToGlobal(group);\n } else {\n rpcServer.updateChannels((channels) => {\n channels.push(channel);\n });\n }\n}\nfunction createRpcProxy(options = {}) {\n const { channel: _channel, options: _options, preset } = options;\n const channel = preset ? getChannel(preset, \"proxy\") : _channel;\n return createBirpc({}, {\n ..._options,\n ...channel,\n timeout: -1\n });\n}\n\n// src/shared/index.ts\ninit_esm_shims();\n\n// src/shared/env.ts\ninit_esm_shims();\n\n// src/shared/time.ts\ninit_esm_shims();\n\n// src/shared/util.ts\ninit_esm_shims();\n\n// src/core/component/state/replacer.ts\ninit_esm_shims();\n\n// src/core/component/state/custom.ts\ninit_esm_shims();\nfunction getFunctionDetails(func) {\n let string = \"\";\n let matches = null;\n try {\n string = Function.prototype.toString.call(func);\n matches = String.prototype.match.call(string, /\\([\\s\\S]*?\\)/);\n } catch (e) {\n }\n const match = matches && matches[0];\n const args = typeof match === \"string\" ? match : \"(?)\";\n const name = typeof func.name === \"string\" ? func.name : \"\";\n return {\n _custom: {\n type: \"function\",\n displayText: `<span style=\"opacity:.5;margin-right:5px;\">function</span> <span style=\"white-space:nowrap;\">${escape(name)}${args}</span>`,\n tooltipText: string.trim() ? `<pre>${string}</pre>` : null\n }\n };\n}\nfunction getBigIntDetails(val) {\n const stringifiedBigInt = BigInt.prototype.toString.call(val);\n return {\n _custom: {\n type: \"bigint\",\n displayText: `BigInt(${stringifiedBigInt})`,\n value: stringifiedBigInt\n }\n };\n}\nfunction getDateDetails(val) {\n const date = new Date(val.getTime());\n date.setMinutes(date.getMinutes() - date.getTimezoneOffset());\n return {\n _custom: {\n type: \"date\",\n displayText: Date.prototype.toString.call(val),\n value: date.toISOString().slice(0, -1)\n }\n };\n}\nfunction getMapDetails(val) {\n const list = Object.fromEntries(val);\n return {\n _custom: {\n type: \"map\",\n displayText: \"Map\",\n value: list,\n readOnly: true,\n fields: {\n abstract: true\n }\n }\n };\n}\nfunction getSetDetails(val) {\n const list = Array.from(val);\n return {\n _custom: {\n type: \"set\",\n displayText: `Set[${list.length}]`,\n value: list,\n readOnly: true\n }\n };\n}\nfunction getCaughtGetters(store) {\n const getters = {};\n const origGetters = store.getters || {};\n const keys = Object.keys(origGetters);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n Object.defineProperty(getters, key, {\n enumerable: true,\n get: () => {\n try {\n return origGetters[key];\n } catch (e) {\n return e;\n }\n }\n });\n }\n return getters;\n}\nfunction reduceStateList(list) {\n if (!list.length)\n return void 0;\n return list.reduce((map, item) => {\n const key = item.type || \"data\";\n const obj = map[key] = map[key] || {};\n obj[item.key] = item.value;\n return map;\n }, {});\n}\nfunction namedNodeMapToObject(map) {\n const result = {};\n const l = map.length;\n for (let i = 0; i < l; i++) {\n const node = map.item(i);\n result[node.name] = node.value;\n }\n return result;\n}\nfunction getStoreDetails(store) {\n return {\n _custom: {\n type: \"store\",\n displayText: \"Store\",\n value: {\n state: store.state,\n getters: getCaughtGetters(store)\n },\n fields: {\n abstract: true\n }\n }\n };\n}\nfunction getRouterDetails(router) {\n return {\n _custom: {\n type: \"router\",\n displayText: \"VueRouter\",\n value: {\n options: router.options,\n currentRoute: router.currentRoute\n },\n fields: {\n abstract: true\n }\n }\n };\n}\nfunction getInstanceDetails(instance) {\n if (instance._)\n instance = instance._;\n const state = processInstanceState(instance);\n return {\n _custom: {\n type: \"component\",\n id: instance.__VUE_DEVTOOLS_NEXT_UID__,\n displayText: getInstanceName(instance),\n tooltipText: \"Component instance\",\n value: reduceStateList(state),\n fields: {\n abstract: true\n }\n }\n };\n}\nfunction getComponentDefinitionDetails(definition) {\n let display = getComponentName(definition);\n if (display) {\n if (definition.name && definition.__file)\n display += ` <span>(${definition.__file})</span>`;\n } else {\n display = \"<i>Unknown Component</i>\";\n }\n return {\n _custom: {\n type: \"component-definition\",\n displayText: display,\n tooltipText: \"Component definition\",\n ...definition.__file ? {\n file: definition.__file\n } : {}\n }\n };\n}\nfunction getHTMLElementDetails(value) {\n try {\n return {\n _custom: {\n type: \"HTMLElement\",\n displayText: `<span class=\"opacity-30\"><</span><span class=\"text-blue-500\">${value.tagName.toLowerCase()}</span><span class=\"opacity-30\">></span>`,\n value: namedNodeMapToObject(value.attributes)\n }\n };\n } catch (e) {\n return {\n _custom: {\n type: \"HTMLElement\",\n displayText: `<span class=\"text-blue-500\">${String(value)}</span>`\n }\n };\n }\n}\nfunction tryGetRefValue(ref) {\n if (ensurePropertyExists(ref, \"_value\", true)) {\n return ref._value;\n }\n if (ensurePropertyExists(ref, \"value\", true)) {\n return ref.value;\n }\n}\nfunction getObjectDetails(object) {\n var _a25, _b25, _c, _d;\n const info = getSetupStateType(object);\n const isState = info.ref || info.computed || info.reactive;\n if (isState) {\n const stateTypeName = info.computed ? \"Computed\" : info.ref ? \"Ref\" : info.reactive ? \"Reactive\" : null;\n const value = toRaw2(info.reactive ? object : tryGetRefValue(object));\n const raw = ensurePropertyExists(object, \"effect\") ? ((_b25 = (_a25 = object.effect) == null ? void 0 : _a25.raw) == null ? void 0 : _b25.toString()) || ((_d = (_c = object.effect) == null ? void 0 : _c.fn) == null ? void 0 : _d.toString()) : null;\n return {\n _custom: {\n type: stateTypeName == null ? void 0 : stateTypeName.toLowerCase(),\n stateTypeName,\n value,\n ...raw ? { tooltipText: `<span class=\"font-mono\">${raw}</span>` } : {}\n }\n };\n }\n if (ensurePropertyExists(object, \"__asyncLoader\") && typeof object.__asyncLoader === \"function\") {\n return {\n _custom: {\n type: \"component-definition\",\n display: \"Async component definition\"\n }\n };\n }\n}\n\n// src/core/component/state/replacer.ts\nfunction stringifyReplacer(key, _value, depth, seenInstance) {\n var _a25;\n if (key === \"compilerOptions\")\n return;\n const val = this[key];\n const type = typeof val;\n if (Array.isArray(val)) {\n const l = val.length;\n if (l > MAX_ARRAY_SIZE) {\n return {\n _isArray: true,\n length: l,\n items: val.slice(0, MAX_ARRAY_SIZE)\n };\n }\n return val;\n } else if (typeof val === \"string\") {\n if (val.length > MAX_STRING_SIZE)\n return `${val.substring(0, MAX_STRING_SIZE)}... (${val.length} total length)`;\n else\n return val;\n } else if (type === \"undefined\") {\n return UNDEFINED;\n } else if (val === Number.POSITIVE_INFINITY) {\n return INFINITY;\n } else if (val === Number.NEGATIVE_INFINITY) {\n return NEGATIVE_INFINITY;\n } else if (typeof val === \"function\") {\n return getFunctionDetails(val);\n } else if (type === \"symbol\") {\n return `[native Symbol ${Symbol.prototype.toString.call(val)}]`;\n } else if (typeof val === \"bigint\") {\n return getBigIntDetails(val);\n } else if (val !== null && typeof val === \"object\") {\n const proto = Object.prototype.toString.call(val);\n if (proto === \"[object Map]\") {\n return getMapDetails(val);\n } else if (proto === \"[object Set]\") {\n return getSetDetails(val);\n } else if (proto === \"[object RegExp]\") {\n return `[native RegExp ${RegExp.prototype.toString.call(val)}]`;\n } else if (proto === \"[object Date]\") {\n return getDateDetails(val);\n } else if (proto === \"[object Error]\") {\n return `[native Error ${val.message}<>${val.stack}]`;\n } else if (ensurePropertyExists(val, \"state\", true) && ensurePropertyExists(val, \"_vm\", true)) {\n return getStoreDetails(val);\n } else if (val.constructor && val.constructor.name === \"VueRouter\") {\n return getRouterDetails(val);\n } else if (isVueInstance(val)) {\n const componentVal = getInstanceDetails(val);\n const parentInstanceDepth = seenInstance == null ? void 0 : seenInstance.get(val);\n if (parentInstanceDepth && parentInstanceDepth < depth) {\n return `[[CircularRef]] <${componentVal._custom.displayText}>`;\n }\n seenInstance == null ? void 0 : seenInstance.set(val, depth);\n return componentVal;\n } else if (ensurePropertyExists(val, \"render\", true) && typeof val.render === \"function\") {\n return getComponentDefinitionDetails(val);\n } else if (val.constructor && val.constructor.name === \"VNode\") {\n return `[native VNode <${val.tag}>]`;\n } else if (typeof HTMLElement !== \"undefined\" && val instanceof HTMLElement) {\n return getHTMLElementDetails(val);\n } else if (((_a25 = val.constructor) == null ? void 0 : _a25.name) === \"Store\" && \"_wrappedGetters\" in val) {\n return \"[object Store]\";\n } else if (ensurePropertyExists(val, \"currentRoute\", true)) {\n return \"[object Router]\";\n }\n const customDetails = getObjectDetails(val);\n if (customDetails != null)\n return customDetails;\n } else if (Number.isNaN(val)) {\n return NAN;\n }\n return sanitize(val);\n}\n\n// src/shared/transfer.ts\ninit_esm_shims();\nvar MAX_SERIALIZED_SIZE = 2 * 1024 * 1024;\nfunction isObject(_data, proto) {\n return proto === \"[object Object]\";\n}\nfunction isArray3(_data, proto) {\n return proto === \"[object Array]\";\n}\nfunction isVueReactiveLinkNode(node) {\n var _a25;\n const constructorName = (_a25 = node == null ? void 0 : node.constructor) == null ? void 0 : _a25.name;\n return constructorName === \"Dep\" && \"activeLink\" in node || constructorName === \"Link\" && \"dep\" in node;\n}\nfunction encode(data, replacer, list, seen, depth = 0, seenVueInstance = /* @__PURE__ */ new Map()) {\n let stored;\n let key;\n let value;\n let i;\n let l;\n const seenIndex = seen.get(data);\n if (seenIndex != null)\n return seenIndex;\n const index = list.length;\n const proto = Object.prototype.toString.call(data);\n if (isObject(data, proto)) {\n if (isVueReactiveLinkNode(data)) {\n return index;\n }\n stored = {};\n seen.set(data, index);\n list.push(stored);\n const keys = Object.keys(data);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n if (key === \"compilerOptions\")\n return index;\n value = data[key];\n const isVm = value != null && isObject(value, Object.prototype.toString.call(data)) && isVueInstance(value);\n try {\n if (replacer) {\n value = replacer.call(data, key, value, depth, seenVueInstance);\n }\n } catch (e) {\n value = e;\n }\n stored[key] = encode(value, replacer, list, seen, depth + 1, seenVueInstance);\n if (isVm) {\n seenVueInstance.delete(value);\n }\n }\n } else if (isArray3(data, proto)) {\n stored = [];\n seen.set(data, index);\n list.push(stored);\n for (i = 0, l = data.length; i < l; i++) {\n try {\n value = data[i];\n if (replacer)\n value = replacer.call(data, i, value, depth, seenVueInstance);\n } catch (e) {\n value = e;\n }\n stored[i] = encode(value, replacer, list, seen, depth + 1, seenVueInstance);\n }\n } else {\n list.push(data);\n }\n return index;\n}\nfunction decode(list, reviver2 = null) {\n let i = list.length;\n let j, k, data, key, value, proto;\n while (i--) {\n data = list[i];\n proto = Object.prototype.toString.call(data);\n if (proto === \"[object Object]\") {\n const keys = Object.keys(data);\n for (j = 0, k = keys.length; j < k; j++) {\n key = keys[j];\n value = list[data[key]];\n if (reviver2)\n value = reviver2.call(data, key, value);\n data[key] = value;\n }\n } else if (proto === \"[object Array]\") {\n for (j = 0, k = data.length; j < k; j++) {\n value = list[data[j]];\n if (reviver2)\n value = reviver2.call(data, j, value);\n data[j] = value;\n }\n }\n }\n}\nfunction stringifyCircularAutoChunks(data, replacer = null, space = null) {\n let result;\n try {\n result = arguments.length === 1 ? JSON.stringify(data) : JSON.stringify(data, (k, v) => {\n var _a25;\n return (_a25 = replacer == null ? void 0 : replacer(k, v)) == null ? void 0 : _a25.call(this);\n }, space);\n } catch (e) {\n result = stringifyStrictCircularAutoChunks(data, replacer, space);\n }\n if (result.length > MAX_SERIALIZED_SIZE) {\n const chunkCount = Math.ceil(result.length / MAX_SERIALIZED_SIZE);\n const chunks = [];\n for (let i = 0; i < chunkCount; i++)\n chunks.push(result.slice(i * MAX_SERIALIZED_SIZE, (i + 1) * MAX_SERIALIZED_SIZE));\n return chunks;\n }\n return result;\n}\nfunction stringifyStrictCircularAutoChunks(data, replacer = null, space = null) {\n const list = [];\n encode(data, replacer, list, /* @__PURE__ */ new Map());\n return space ? ` ${JSON.stringify(list, null, space)}` : ` ${JSON.stringify(list)}`;\n}\nfunction parseCircularAutoChunks(data, reviver2 = null) {\n if (Array.isArray(data))\n data = data.join(\"\");\n const hasCircular = /^\\s/.test(data);\n if (!hasCircular) {\n return arguments.length === 1 ? JSON.parse(data) : JSON.parse(data, reviver2);\n } else {\n const list = JSON.parse(data);\n decode(list, reviver2);\n return list[0];\n }\n}\n\n// src/shared/util.ts\nfunction stringify2(data) {\n return stringifyCircularAutoChunks(data, stringifyReplacer);\n}\nfunction parse2(data, revive2 = false) {\n if (data == void 0)\n return {};\n return revive2 ? parseCircularAutoChunks(data, reviver) : parseCircularAutoChunks(data);\n}\n\n// src/index.ts\nvar devtools = {\n hook,\n init: () => {\n initDevTools();\n },\n get ctx() {\n return devtoolsContext;\n },\n get api() {\n return devtoolsContext.api;\n }\n};\nexport {\n DevToolsContextHookKeys,\n DevToolsMessagingHookKeys,\n DevToolsV6PluginAPIHookKeys,\n INFINITY,\n NAN,\n NEGATIVE_INFINITY,\n ROUTER_INFO_KEY,\n ROUTER_KEY,\n UNDEFINED,\n activeAppRecord,\n addCustomCommand,\n addCustomTab,\n addDevToolsAppRecord,\n addDevToolsPluginToBuffer,\n addInspector,\n callConnectedUpdatedHook,\n callDevToolsPluginSetupFn,\n callInspectorUpdatedHook,\n callStateUpdatedHook,\n createComponentsDevToolsPlugin,\n createDevToolsApi,\n createDevToolsCtxHooks,\n createRpcClient,\n createRpcProxy,\n createRpcServer,\n devtools,\n devtoolsAppRecords,\n devtoolsContext,\n devtoolsInspector,\n devtoolsPluginBuffer,\n devtoolsRouter,\n devtoolsRouterInfo,\n devtoolsState,\n formatInspectorStateValue,\n getActiveInspectors,\n getDevToolsEnv,\n getExtensionClientContext,\n getInspector,\n getInspectorActions,\n getInspectorInfo,\n getInspectorNodeActions,\n getInspectorStateValueType,\n getRaw,\n getRpcClient,\n getRpcServer,\n getViteRpcClient,\n getViteRpcServer,\n initDevTools,\n isPlainObject,\n onDevToolsClientConnected,\n onDevToolsConnected,\n parse2 as parse,\n registerDevToolsPlugin,\n removeCustomCommand,\n removeDevToolsAppRecord,\n removeRegisteredPluginApp,\n resetDevToolsState,\n setActiveAppRecord,\n setActiveAppRecordId,\n setDevToolsEnv,\n setElectronClientContext,\n setElectronProxyContext,\n setElectronServerContext,\n setExtensionClientContext,\n setIframeServerContext,\n setOpenInEditorBaseUrl,\n setRpcServerToGlobal,\n setViteClientContext,\n setViteRpcClientToGlobal,\n setViteRpcServerToGlobal,\n setViteServerContext,\n setupDevToolsPlugin,\n stringify2 as stringify,\n toEdit,\n toSubmit,\n toggleClientConnected,\n toggleComponentInspectorEnabled,\n toggleHighPerfMode,\n updateDevToolsClientDetected,\n updateDevToolsState,\n updateTimelineLayersState\n};\n"], - "mappings": "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ACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAU;AAAA,QACV,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAU;AAAA,QACV,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAU;AAAA,QACV,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAU;AAAA,QACV,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,MAAgB;AAAA,QAChB,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,MAAgB;AAAA,QAChB,MAAgB;AAAA,QAChB,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,QAA4B;AAAA,QAC5B,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,MAAgB;AAAA,QAChB,MAAgB;AAAA;AAAA,QAEhB,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA;AAAA,QAGV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA;AAAA,QAEV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAQ;AAAA,QACR,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAQ;AAAA,QACR,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAU;AAAA,QACV,KAAQ;AAAA,QACR,KAAQ;AAAA,QACR,KAAU;AAAA,QACV,KAAU;AAAA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", - "names": ["hooks", "hooks", "hook", "hook", "hooks", "clearTimeout", "setTimeout", "__create", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__getProtoOf", "__hasOwnProp", "__esm", "__commonJS", "__copyProps", "__toESM", "init_esm_shims", "init_esm_shims", "init_esm_shims", "_a", "init_esm_shims", "init_esm_shims", "_a2", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "__toESM", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "init_esm_shims", "_a22", "init_esm_shims", "init_esm_shims"] -} diff --git a/website/src/.vitepress/cache/deps/vitepress___@vueuse_core.js b/website/src/.vitepress/cache/deps/vitepress___@vueuse_core.js deleted file mode 100644 index fd1d995a..00000000 --- a/website/src/.vitepress/cache/deps/vitepress___@vueuse_core.js +++ /dev/null @@ -1,569 +0,0 @@ -import { - DefaultMagicKeysAliasMap, - StorageSerializers, - TransitionPresets, - assert, - breakpointsAntDesign, - breakpointsBootstrapV5, - breakpointsElement, - breakpointsMasterCss, - breakpointsPrimeFlex, - breakpointsQuasar, - breakpointsSematic, - breakpointsTailwind, - breakpointsVuetify, - breakpointsVuetifyV2, - breakpointsVuetifyV3, - bypassFilter, - camelize, - clamp, - cloneFnJSON, - computedAsync, - computedEager, - computedInject, - computedWithControl, - containsProp, - controlledRef, - createEventHook, - createFetch, - createFilterWrapper, - createGlobalState, - createInjectionState, - createReusableTemplate, - createSharedComposable, - createSingletonPromise, - createTemplatePromise, - createUnrefFn, - customStorageEventName, - debounceFilter, - defaultDocument, - defaultLocation, - defaultNavigator, - defaultWindow, - directiveHooks, - executeTransition, - extendRef, - formatDate, - formatTimeAgo, - get, - getLifeCycleTarget, - getSSRHandler, - hasOwn, - hyphenate, - identity, - increaseWithUnit, - injectLocal, - invoke, - isClient, - isDef, - isDefined, - isIOS, - isObject, - isWorker, - makeDestructurable, - mapGamepadToXbox360Controller, - noop, - normalizeDate, - notNullish, - now, - objectEntries, - objectOmit, - objectPick, - onClickOutside, - onKeyDown, - onKeyPressed, - onKeyStroke, - onKeyUp, - onLongPress, - onStartTyping, - pausableFilter, - promiseTimeout, - provideLocal, - rand, - reactify, - reactifyObject, - reactiveComputed, - reactiveOmit, - reactivePick, - refAutoReset, - refDebounced, - refDefault, - refThrottled, - refWithControl, - resolveRef, - resolveUnref, - set, - setSSRHandler, - syncRef, - syncRefs, - templateRef, - throttleFilter, - timestamp, - toReactive, - toRef, - toRefs, - toValue, - tryOnBeforeMount, - tryOnBeforeUnmount, - tryOnMounted, - tryOnScopeDispose, - tryOnUnmounted, - unrefElement, - until, - useActiveElement, - useAnimate, - useArrayDifference, - useArrayEvery, - useArrayFilter, - useArrayFind, - useArrayFindIndex, - useArrayFindLast, - useArrayIncludes, - useArrayJoin, - useArrayMap, - useArrayReduce, - useArraySome, - useArrayUnique, - useAsyncQueue, - useAsyncState, - useBase64, - useBattery, - useBluetooth, - useBreakpoints, - useBroadcastChannel, - useBrowserLocation, - useCached, - useClipboard, - useClipboardItems, - useCloned, - useColorMode, - useConfirmDialog, - useCounter, - useCssVar, - useCurrentElement, - useCycleList, - useDark, - useDateFormat, - useDebounceFn, - useDebouncedRefHistory, - useDeviceMotion, - useDeviceOrientation, - useDevicePixelRatio, - useDevicesList, - useDisplayMedia, - useDocumentVisibility, - useDraggable, - useDropZone, - useElementBounding, - useElementByPoint, - useElementHover, - useElementSize, - useElementVisibility, - useEventBus, - useEventListener, - useEventSource, - useEyeDropper, - useFavicon, - useFetch, - useFileDialog, - useFileSystemAccess, - useFocus, - useFocusWithin, - useFps, - useFullscreen, - useGamepad, - useGeolocation, - useIdle, - useImage, - useInfiniteScroll, - useIntersectionObserver, - useInterval, - useIntervalFn, - useKeyModifier, - useLastChanged, - useLocalStorage, - useMagicKeys, - useManualRefHistory, - useMediaControls, - useMediaQuery, - useMemoize, - useMemory, - useMounted, - useMouse, - useMouseInElement, - useMousePressed, - useMutationObserver, - useNavigatorLanguage, - useNetwork, - useNow, - useObjectUrl, - useOffsetPagination, - useOnline, - usePageLeave, - useParallax, - useParentElement, - usePerformanceObserver, - usePermission, - usePointer, - usePointerLock, - usePointerSwipe, - usePreferredColorScheme, - usePreferredContrast, - usePreferredDark, - usePreferredLanguages, - usePreferredReducedMotion, - usePrevious, - useRafFn, - useRefHistory, - useResizeObserver, - useScreenOrientation, - useScreenSafeArea, - useScriptTag, - useScroll, - useScrollLock, - useSessionStorage, - useShare, - useSorted, - useSpeechRecognition, - useSpeechSynthesis, - useStepper, - useStorage, - useStorageAsync, - useStyleTag, - useSupported, - useSwipe, - useTemplateRefsList, - useTextDirection, - useTextSelection, - useTextareaAutosize, - useThrottleFn, - useThrottledRefHistory, - useTimeAgo, - useTimeout, - useTimeoutFn, - useTimeoutPoll, - useTimestamp, - useTitle, - useToNumber, - useToString, - useToggle, - useTransition, - useUrlSearchParams, - useUserMedia, - useVModel, - useVModels, - useVibrate, - useVirtualList, - useWakeLock, - useWebNotification, - useWebSocket, - useWebWorker, - useWebWorkerFn, - useWindowFocus, - useWindowScroll, - useWindowSize, - watchArray, - watchAtMost, - watchDebounced, - watchDeep, - watchIgnorable, - watchImmediate, - watchOnce, - watchPausable, - watchThrottled, - watchTriggerable, - watchWithFilter, - whenever -} from './chunk-PWVUJGW4.js' -import './chunk-6J5AW4SK.js' -export { - DefaultMagicKeysAliasMap, - StorageSerializers, - TransitionPresets, - assert, - computedAsync as asyncComputed, - refAutoReset as autoResetRef, - breakpointsAntDesign, - breakpointsBootstrapV5, - breakpointsElement, - breakpointsMasterCss, - breakpointsPrimeFlex, - breakpointsQuasar, - breakpointsSematic, - breakpointsTailwind, - breakpointsVuetify, - breakpointsVuetifyV2, - breakpointsVuetifyV3, - bypassFilter, - camelize, - clamp, - cloneFnJSON, - computedAsync, - computedEager, - computedInject, - computedWithControl, - containsProp, - computedWithControl as controlledComputed, - controlledRef, - createEventHook, - createFetch, - createFilterWrapper, - createGlobalState, - createInjectionState, - reactify as createReactiveFn, - createReusableTemplate, - createSharedComposable, - createSingletonPromise, - createTemplatePromise, - createUnrefFn, - customStorageEventName, - debounceFilter, - refDebounced as debouncedRef, - watchDebounced as debouncedWatch, - defaultDocument, - defaultLocation, - defaultNavigator, - defaultWindow, - directiveHooks, - computedEager as eagerComputed, - executeTransition, - extendRef, - formatDate, - formatTimeAgo, - get, - getLifeCycleTarget, - getSSRHandler, - hasOwn, - hyphenate, - identity, - watchIgnorable as ignorableWatch, - increaseWithUnit, - injectLocal, - invoke, - isClient, - isDef, - isDefined, - isIOS, - isObject, - isWorker, - makeDestructurable, - mapGamepadToXbox360Controller, - noop, - normalizeDate, - notNullish, - now, - objectEntries, - objectOmit, - objectPick, - onClickOutside, - onKeyDown, - onKeyPressed, - onKeyStroke, - onKeyUp, - onLongPress, - onStartTyping, - pausableFilter, - watchPausable as pausableWatch, - promiseTimeout, - provideLocal, - rand, - reactify, - reactifyObject, - reactiveComputed, - reactiveOmit, - reactivePick, - refAutoReset, - refDebounced, - refDefault, - refThrottled, - refWithControl, - resolveRef, - resolveUnref, - set, - setSSRHandler, - syncRef, - syncRefs, - templateRef, - throttleFilter, - refThrottled as throttledRef, - watchThrottled as throttledWatch, - timestamp, - toReactive, - toRef, - toRefs, - toValue, - tryOnBeforeMount, - tryOnBeforeUnmount, - tryOnMounted, - tryOnScopeDispose, - tryOnUnmounted, - unrefElement, - until, - useActiveElement, - useAnimate, - useArrayDifference, - useArrayEvery, - useArrayFilter, - useArrayFind, - useArrayFindIndex, - useArrayFindLast, - useArrayIncludes, - useArrayJoin, - useArrayMap, - useArrayReduce, - useArraySome, - useArrayUnique, - useAsyncQueue, - useAsyncState, - useBase64, - useBattery, - useBluetooth, - useBreakpoints, - useBroadcastChannel, - useBrowserLocation, - useCached, - useClipboard, - useClipboardItems, - useCloned, - useColorMode, - useConfirmDialog, - useCounter, - useCssVar, - useCurrentElement, - useCycleList, - useDark, - useDateFormat, - refDebounced as useDebounce, - useDebounceFn, - useDebouncedRefHistory, - useDeviceMotion, - useDeviceOrientation, - useDevicePixelRatio, - useDevicesList, - useDisplayMedia, - useDocumentVisibility, - useDraggable, - useDropZone, - useElementBounding, - useElementByPoint, - useElementHover, - useElementSize, - useElementVisibility, - useEventBus, - useEventListener, - useEventSource, - useEyeDropper, - useFavicon, - useFetch, - useFileDialog, - useFileSystemAccess, - useFocus, - useFocusWithin, - useFps, - useFullscreen, - useGamepad, - useGeolocation, - useIdle, - useImage, - useInfiniteScroll, - useIntersectionObserver, - useInterval, - useIntervalFn, - useKeyModifier, - useLastChanged, - useLocalStorage, - useMagicKeys, - useManualRefHistory, - useMediaControls, - useMediaQuery, - useMemoize, - useMemory, - useMounted, - useMouse, - useMouseInElement, - useMousePressed, - useMutationObserver, - useNavigatorLanguage, - useNetwork, - useNow, - useObjectUrl, - useOffsetPagination, - useOnline, - usePageLeave, - useParallax, - useParentElement, - usePerformanceObserver, - usePermission, - usePointer, - usePointerLock, - usePointerSwipe, - usePreferredColorScheme, - usePreferredContrast, - usePreferredDark, - usePreferredLanguages, - usePreferredReducedMotion, - usePrevious, - useRafFn, - useRefHistory, - useResizeObserver, - useScreenOrientation, - useScreenSafeArea, - useScriptTag, - useScroll, - useScrollLock, - useSessionStorage, - useShare, - useSorted, - useSpeechRecognition, - useSpeechSynthesis, - useStepper, - useStorage, - useStorageAsync, - useStyleTag, - useSupported, - useSwipe, - useTemplateRefsList, - useTextDirection, - useTextSelection, - useTextareaAutosize, - refThrottled as useThrottle, - useThrottleFn, - useThrottledRefHistory, - useTimeAgo, - useTimeout, - useTimeoutFn, - useTimeoutPoll, - useTimestamp, - useTitle, - useToNumber, - useToString, - useToggle, - useTransition, - useUrlSearchParams, - useUserMedia, - useVModel, - useVModels, - useVibrate, - useVirtualList, - useWakeLock, - useWebNotification, - useWebSocket, - useWebWorker, - useWebWorkerFn, - useWindowFocus, - useWindowScroll, - useWindowSize, - watchArray, - watchAtMost, - watchDebounced, - watchDeep, - watchIgnorable, - watchImmediate, - watchOnce, - watchPausable, - watchThrottled, - watchTriggerable, - watchWithFilter, - whenever -} -//# sourceMappingURL=vitepress___@vueuse_core.js.map diff --git a/website/src/.vitepress/cache/deps/vitepress___@vueuse_core.js.map b/website/src/.vitepress/cache/deps/vitepress___@vueuse_core.js.map deleted file mode 100644 index 98652118..00000000 --- a/website/src/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/website/src/.vitepress/cache/deps/vue.js b/website/src/.vitepress/cache/deps/vue.js deleted file mode 100644 index e35adefc..00000000 --- a/website/src/.vitepress/cache/deps/vue.js +++ /dev/null @@ -1,295 +0,0 @@ -import { - BaseTransition, - Comment, - EffectScope, - Fragment, - KeepAlive, - ReactiveEffect, - Static, - Suspense, - Teleport, - Text, - Transition, - TransitionGroup, - VueElement, - callWithAsyncErrorHandling, - callWithErrorHandling, - camelize, - capitalize, - cloneVNode, - compatUtils, - compile, - computed, - createApp, - createBaseVNode, - createBlock, - createCommentVNode, - createElementBlock, - createHydrationRenderer, - createPropsRestProxy, - createRenderer, - createSSRApp, - createSlots, - createStaticVNode, - createTextVNode, - createVNode, - customRef, - defineAsyncComponent, - defineComponent, - defineCustomElement, - defineEmits, - defineExpose, - defineProps, - defineSSRCustomElement, - devtools, - effect, - effectScope, - getCurrentInstance, - getCurrentScope, - getTransitionRawChildren, - guardReactiveProps, - h, - handleError, - hydrate, - initCustomFormatter, - initDirectivesForSSR, - inject, - isMemoSame, - isProxy, - isReactive, - isReadonly, - isRef, - isRuntimeOnly, - isShallow, - isVNode, - markRaw, - mergeDefaults, - mergeProps, - nextTick, - normalizeClass, - normalizeProps, - normalizeStyle, - onActivated, - onBeforeMount, - onBeforeUnmount, - onBeforeUpdate, - onDeactivated, - onErrorCaptured, - onMounted, - onRenderTracked, - onRenderTriggered, - onScopeDispose, - onServerPrefetch, - onUnmounted, - onUpdated, - openBlock, - popScopeId, - provide, - proxyRefs, - pushScopeId, - queuePostFlushCb, - reactive, - readonly, - ref, - registerRuntimeCompiler, - render, - renderList, - renderSlot, - resolveComponent, - resolveDirective, - resolveDynamicComponent, - resolveFilter, - resolveTransitionHooks, - setBlockTracking, - setDevtoolsHook, - setTransitionHooks, - shallowReactive, - shallowReadonly, - shallowRef, - ssrContextKey, - ssrUtils, - stop, - toDisplayString, - toHandlerKey, - toHandlers, - toRaw, - toRef, - toRefs, - transformVNodeArgs, - triggerRef, - unref, - useAttrs, - useCssModule, - useCssVars, - useSSRContext, - useSlots, - useTransitionState, - vModelCheckbox, - vModelDynamic, - vModelRadio, - vModelSelect, - vModelText, - vShow, - version, - warn, - watch, - watchEffect, - watchPostEffect, - watchSyncEffect, - withAsyncContext, - withCtx, - withDefaults, - withDirectives, - withKeys, - withMemo, - withModifiers, - withScopeId -} from './chunk-6J5AW4SK.js' -export { - BaseTransition, - Comment, - EffectScope, - Fragment, - KeepAlive, - ReactiveEffect, - Static, - Suspense, - Teleport, - Text, - Transition, - TransitionGroup, - VueElement, - callWithAsyncErrorHandling, - callWithErrorHandling, - camelize, - capitalize, - cloneVNode, - compatUtils, - compile, - computed, - createApp, - createBlock, - createCommentVNode, - createElementBlock, - createBaseVNode as createElementVNode, - createHydrationRenderer, - createPropsRestProxy, - createRenderer, - createSSRApp, - createSlots, - createStaticVNode, - createTextVNode, - createVNode, - customRef, - defineAsyncComponent, - defineComponent, - defineCustomElement, - defineEmits, - defineExpose, - defineProps, - defineSSRCustomElement, - devtools, - effect, - effectScope, - getCurrentInstance, - getCurrentScope, - getTransitionRawChildren, - guardReactiveProps, - h, - handleError, - hydrate, - initCustomFormatter, - initDirectivesForSSR, - inject, - isMemoSame, - isProxy, - isReactive, - isReadonly, - isRef, - isRuntimeOnly, - isShallow, - isVNode, - markRaw, - mergeDefaults, - mergeProps, - nextTick, - normalizeClass, - normalizeProps, - normalizeStyle, - onActivated, - onBeforeMount, - onBeforeUnmount, - onBeforeUpdate, - onDeactivated, - onErrorCaptured, - onMounted, - onRenderTracked, - onRenderTriggered, - onScopeDispose, - onServerPrefetch, - onUnmounted, - onUpdated, - openBlock, - popScopeId, - provide, - proxyRefs, - pushScopeId, - queuePostFlushCb, - reactive, - readonly, - ref, - registerRuntimeCompiler, - render, - renderList, - renderSlot, - resolveComponent, - resolveDirective, - resolveDynamicComponent, - resolveFilter, - resolveTransitionHooks, - setBlockTracking, - setDevtoolsHook, - setTransitionHooks, - shallowReactive, - shallowReadonly, - shallowRef, - ssrContextKey, - ssrUtils, - stop, - toDisplayString, - toHandlerKey, - toHandlers, - toRaw, - toRef, - toRefs, - transformVNodeArgs, - triggerRef, - unref, - useAttrs, - useCssModule, - useCssVars, - useSSRContext, - useSlots, - useTransitionState, - vModelCheckbox, - vModelDynamic, - vModelRadio, - vModelSelect, - vModelText, - vShow, - version, - warn, - watch, - watchEffect, - watchPostEffect, - watchSyncEffect, - withAsyncContext, - withCtx, - withDefaults, - withDirectives, - withKeys, - withMemo, - withModifiers, - withScopeId -} -//# sourceMappingURL=vue.js.map diff --git a/website/src/.vitepress/cache/deps/vue.js.map b/website/src/.vitepress/cache/deps/vue.js.map deleted file mode 100644 index 98652118..00000000 --- a/website/src/.vitepress/cache/deps/vue.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/website/src/.vitepress/config.mts b/website/src/.vitepress/config.mts deleted file mode 100644 index fa2b2c15..00000000 --- a/website/src/.vitepress/config.mts +++ /dev/null @@ -1,89 +0,0 @@ -import { defineConfig } from 'vitepress' - -export default defineConfig({ - lastUpdated: true, - - themeConfig: { - editLink: { - pattern: - 'https://github.com/apertureless/vue-chartjs/edit/main/website/src/:path' - }, - search: { - provider: 'algolia', - options: { - indexName: 'vue-chartjs', - apiKey: 'a1bb4528e8ed1eb89e40d6e4c1000514', - appId: '24VA3R3NCC' - } - }, - - nav: [ - { text: 'Guide', link: '/guide/', activeMatch: '^/guide/' }, - { - text: 'Migration guides', - link: '/migration-guides/', - activeMatch: '^/migration-guides/' - }, - { - text: 'API', - link: '/api/', - activeMatch: '^/api/' - }, - { - text: 'Examples', - link: '/examples/', - activeMatch: '^/examples/' - }, - { - text: 'Stack Overflow', - link: 'https://stackoverflow.com/questions/tagged/vue-chartjs/' - }, - { - text: 'Github', - link: 'https://github.com/apertureless/vue-chartjs' - } - ], - - sidebar: [ - { - text: 'Introduction', - items: [ - { text: 'Getting started', link: '/guide' }, - { text: 'Examples', link: '/guide/examples' } - ] - }, - { - text: 'Migration', - items: [ - { text: 'Introduction', link: '/migration-guides/' }, - { text: 'Migrate to v5', link: '/migration-guides/v5' }, - { text: 'Migrate to v4', link: '/migration-guides/v4' }, - { - text: 'Migrate from vue-chart-3', - link: '/migration-guides/vue-chart-3' - } - ] - } - ], - footer: { - message: 'Released under the MIT License.', - copyright: 'Copyright © 2019-present Jakub Juszczak' - } - }, - - locales: { - root: { - label: 'English', - lang: 'en-US', - title: '📈 vue-chartjs', - description: '⚡ Easy and beautiful charts with Chart.js and Vue.js' - }, - de: { - label: 'Deutsch', - lang: 'de', - link: '/de/', - title: '📈 vue-chartjs', - description: '⚡Einfache und schöne Diagramme mit Chart.js und Vue.js' - } - } -}) diff --git a/website/src/api/index.md b/website/src/api/index.md deleted file mode 100644 index 6c126a95..00000000 --- a/website/src/api/index.md +++ /dev/null @@ -1,34 +0,0 @@ -# Coding Reference - -## Props - -Some basic props are defined in the components provided by `vue-chartjs`. - -| Prop | Description | -|---|---| -| data | Data object that is passed into the Chart.js chart | -| options | Options object that is passed into the Chart.js chart | -| datasetIdKey | Key name to identify the dataset | -| plugins | Plugins array that is passed into the Chart.js chart | -| updateMode | Mode string to indicate the transition configuration to be used. | -| ariaLabel | An [ARIA label](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label) that describes the chart to make it accessible. | -| ariaDescribedby | A reference to the [describing element](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby). E. g. a table representation of the data. | - -The rest of the props will fall through to the canvas element. - -## Global Methods - -Global Methods need to be imported. - -### createTypedChart - -- **Type:** `Function` -- **Arguments**:`chart-type`, `chart-controller` -- **Usage:** - -```js -import { createTypedChart } from 'vue-chartjs' -import { LineController } from 'chart.js' - -const CustomLine = createTypedChart('line', LineController) -``` diff --git a/website/src/de/api/index.md b/website/src/de/api/index.md deleted file mode 100644 index 6c126a95..00000000 --- a/website/src/de/api/index.md +++ /dev/null @@ -1,34 +0,0 @@ -# Coding Reference - -## Props - -Some basic props are defined in the components provided by `vue-chartjs`. - -| Prop | Description | -|---|---| -| data | Data object that is passed into the Chart.js chart | -| options | Options object that is passed into the Chart.js chart | -| datasetIdKey | Key name to identify the dataset | -| plugins | Plugins array that is passed into the Chart.js chart | -| updateMode | Mode string to indicate the transition configuration to be used. | -| ariaLabel | An [ARIA label](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label) that describes the chart to make it accessible. | -| ariaDescribedby | A reference to the [describing element](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-describedby). E. g. a table representation of the data. | - -The rest of the props will fall through to the canvas element. - -## Global Methods - -Global Methods need to be imported. - -### createTypedChart - -- **Type:** `Function` -- **Arguments**:`chart-type`, `chart-controller` -- **Usage:** - -```js -import { createTypedChart } from 'vue-chartjs' -import { LineController } from 'chart.js' - -const CustomLine = createTypedChart('line', LineController) -``` diff --git a/website/src/de/examples/index.md b/website/src/de/examples/index.md deleted file mode 100644 index 1d7367d5..00000000 --- a/website/src/de/examples/index.md +++ /dev/null @@ -1,26 +0,0 @@ -# Examples - -## Vue 3 charts - -- [Bar](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar) -- [Bubble](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble) -- [Doughnut](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut) -- [Line](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line) -- [Pie](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie) -- [PolarArea](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area) -- [Radar](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar) -- [Scatter](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter) -- [Bar with reactive data](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive) -- [Custom chart](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom) -- [Events](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events) - -## Vue 2 charts (vue-chartjs v4) - -- [Bar](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar) -- [Bubble](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble) -- [Doughnut](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut) -- [Line](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line) -- [Pie](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie) -- [PolarArea](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area) -- [Radar](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar) -- [Scatter](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter) diff --git a/website/src/de/guide/examples.md b/website/src/de/guide/examples.md deleted file mode 100644 index 0d436c7f..00000000 --- a/website/src/de/guide/examples.md +++ /dev/null @@ -1,189 +0,0 @@ - -# Examples - -## Chart with props - -Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation. - -```vue -<template> - <Bar :data="chartData" :options="chartOptions" /> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - props: { - chartData: { - type: Object, - required: true - }, - chartOptions: { - type: Object, - default: () => {} - } - } -} -</script> -``` - -## Chart with local data - -You can handle your chart data directly in your parent component. - -```vue -<template> - <Bar :data="chartData" /> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data() { - return { - chartData: { - labels: [ 'January', 'February', 'March'], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 20, 12] - } - ] - } - } - } -} -</script> -``` - -## Chart with API data - -A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives. - -To prevent this, a simple `v-if` is the best solution. - -Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component. - -```vue -<template> - <div class="container"> - <Bar v-if="loaded" :data="chartData" /> - </div> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data: () => ({ - loaded: false, - chartData: null - }), - async mounted () { - this.loaded = false - - try { - const { userlist } = await fetch('/api/userlist') - this.chartdata = userlist - - this.loaded = true - } catch (e) { - console.error(e) - } - } -} -</script> -``` - -## Chart with dynamic styles - -You can set `responsive: true` and pass in a styles object which gets applied as inline styles to the outer `<div>`. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this. - -::: warning - You need to set `position: relative` -::: - -```vue -<template> - <div> - <Bar :style="myStyles"/> - </div> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - computed: { - myStyles () { - return { - height: `${/* mutable height */}px`, - position: 'relative' - } - } - } -} -</script> -``` - -## Custom / New Charts - -Sometimes you need to extend the default Chart.js charts. There are a lot of [examples](http://www.chartjs.org/docs/latest/developers/charts.html) on how to extend and modify the default charts. Or, you can create your own chart type. - -In `vue-chartjs`, you can do this pretty much the same way: - -```js -// 1. Import Chart.js so you can use the global Chart object -import { Chart } from 'chart.js' -// 2. Import the `createTypedChart()` method to create the vue component. -import { createTypedChart } from 'vue-chartjs' -// 3. Import needed controller from Chart.js -import { LineController } from 'chart.js' - -// 3. Extend one of the default charts -// http://www.chartjs.org/docs/latest/developers/charts.html -class LineWithLineController extends LineController { /* custom magic here */} - -// 4. Generate the vue-chartjs component -// The first argument is the chart-id, the second the chart type, third is the custom controller -const CustomLine = createTypedChart('line', LineWithLineController) - -// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts. - -export default { - components: { CustomLine } -} -``` - -## Resources - -Here are some resources, such as tutorials, on how to use `vue-chartjs`: - -- [Using vue-chartjs with WordPress](https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f) -- [Create stunning Charts with Vue and Chart.js](https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a) -- [Let’s Build a Web App with Vue, Chart.js and an API Part I](https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44) -- [Let’s Build a Web App with Vue, Chart.js and an API Part II](https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf) -- [Build a realtime chart with VueJS and Pusher](https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/) diff --git a/website/src/de/guide/index.md b/website/src/de/guide/index.md deleted file mode 100644 index 337d0b06..00000000 --- a/website/src/de/guide/index.md +++ /dev/null @@ -1,210 +0,0 @@ -# Getting Started - -**vue-chartjs** is a wrapper for [Chart.js](https://github.com/chartjs/Chart.js) in Vue. You can easily create reuseable chart components. - -Supports Chart.js v4. - -## Introduction - -`vue-chartjs` lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible. - -It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility. - -:::tip Need an API to fetch data? -Please consider [Cube](https://cube.dev/?ref=eco-vue-chartjs), an open-source API for data apps. -::: - -## Installation - -You can install `vue-chartjs` over `yarn` or `npm` or `pnpm`. However, you also need to add `chart.js` as a dependency to your project because `Chart.js` is a peerDependency. This way you can have full control over the versioning of `Chart.js`. - -```bash -pnpm add vue-chartjs chart.js -# or -yarn add vue-chartjs chart.js -# or -npm i vue-chartjs chart.js -``` - -## Integration - -Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components. - -The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility. - -## Creating your first Chart - -First, you need to import the base chart. - -```javascript -import { Bar } from 'vue-chartjs' -``` - -Check out the official [Chart.js docs](http://www.chartjs.org/docs/latest/#creating-a-chart) to see the object structure you need to provide. - -Just create your own component. - -**BarChart.vue** - -```vue -<template> - <Bar - id="my-chart-id" - :options="chartOptions" - :data="chartData" - /> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data() { - return { - chartData: { - labels: [ 'January', 'February', 'March' ], - datasets: [ { data: [40, 20, 12] } ] - }, - chartOptions: { - responsive: true - } - } - } -} -</script> -``` - -Use it in your vue app: - -**App.vue** - -```vue -<template> - <BarChart /> -</template> - -<script> -import BarChart from 'path/to/component/BarChart' - -export default { - name: 'App', - components: { BarChart } -} -</script> -``` - -## Updating Charts - -Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed. - -```vue -<template> - <Bar :data="chartData" :options="chartOptions" /> -</template> - -<script> -// DataPage.vue -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - computed: { - chartData() { return /* mutable chart data */ }, - chartOptions() { return /* mutable chart options */ } - } -} -</script> -``` - -You may get Vue's `Target is readonly` warnings when you are updating your `chartData`. - -If your `chartData` is a `read-only` reactive value, you can override this warning by using a clone: - -```vue -<template> - <Bar :data="JSON.stringify(JSON.parse(chartData))" :options="chartOptions" /> -</template> -``` - -Unless you have a writable computed `chartData`, you won't be able to use the newer `structuredClone`, as you'll likely hit the `Write operation failed: computed value is readonly` error. - -You don't need to use a clone if your `chartData` is a [writable computed value](https://vuejs.org/guide/essentials/computed#writable-computed). - - - -## Access to Chart instance - -You can get access to chart instance via template refs. - -```vue -<template> - <BarChart ref="bar" /> -</template> -``` - -In Vue3 projects: - -```javascript -const chartInstance = this.$refs.bar.chart -``` - -## Accessibility - -To make your charts accessible to all users, you should label your charts. -Please refer also to the official [Chart.js Accessibility notes](https://www.chartjs.org/docs/latest/general/accessibility.html). - -### `aria-label` - -You can directly label a chart by passing an `aria-label` prop. - -```vue -<template> - <BarChart aria-label="Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825." /> -</template> -``` - -### `aria-describedby` - -You can reference to a describing element such as a table which describes the data by using the `aria-describedby` property. - -```vue -<template> - <BarChart aria-describedby="my-data-table" /> - <table id="my-data-table"> - <caption>Sales figures for the years 2022 to 2024.</caption> - <thead> - <tr> - <th>2022</th> - <th>2023</th> - <th>2024</th> - </tr> - </thead> - <tbody> - <tr> - <td>987</td> - <td>1209</td> - <td>825</td> - </tr> - </tbody> - </table> -</template> -``` - -### Fallback-Content - -In case the Browser is not able to render the `canvas` element, you should consider providing fallback content by using the Slot of each component. - -```vue -<template> - <BarChart>Chart couldn't be loaded.</BarChart> -</template> -``` diff --git a/website/src/de/index.md b/website/src/de/index.md deleted file mode 100644 index ffa84273..00000000 --- a/website/src/de/index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: home -hero: - name: 📈 vue-chartjs - tagline: ⚡ Einfache und schöne Diagramme mit Chart.js und Vue.js - actions: - - theme: brand - text: Get Started → - link: /guide/ -features: -- icon: 🙌 - title: Einfach - details: Einfach für beginner sowie fortgeschrittene -- icon: 💪 - title: Erweiterbar - details: Simple to use, easy to extend -- icon: 💯 - title: Mächtig - details: With the full power of chart.js 💯 ---- diff --git a/website/src/de/migration-guides/index.md b/website/src/de/migration-guides/index.md deleted file mode 100644 index fe30b3d5..00000000 --- a/website/src/de/migration-guides/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: doc ---- - -# Migration - -Over the time `vue-chartjs` has changed a lot. As the web and frontend technology has changed. -To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides. - - -- [v4 -> v5](/migration-guides/v5) -- [v3 -> v4](/migration-guides/v4) -- [vue-chart-3](/migration-guides/vue-chart-3) diff --git a/website/src/de/migration-guides/v4.md b/website/src/de/migration-guides/v4.md deleted file mode 100644 index b2488b52..00000000 --- a/website/src/de/migration-guides/v4.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: doc ---- -# Migration from v3 to v4 - -With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit. - -v4 is fully compatible with Chart.js v3. - -## Tree-shaking - -v4 of this library, [just like Chart.js v3](https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation), is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use. - -For a list of all the available items to import, see [Chart.js docs](https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc). - -v3: - -```javascript -import { Bar } from 'vue-chartjs' -``` - -v4 — lazy way: - -```javascript -import 'chart.js/auto'; -import { Bar } from 'vue-chartjs' -``` - -v4 — tree-shakable way: - -```javascript -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) -``` - -Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size. - -Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly. - -```javascript -import { Pie } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, ArcElement, CategoryScale) -``` - -## Changing the creation of Charts - -In v3, you needed to import the component, and then either use extends or mixins and add it. - -v3: - -```javascript -// BarChart.js -import { Bar } from 'vue-chartjs' - -export default { - extends: Bar, - mounted () { - // Overwriting base render method with actual data. - this.renderChart({ - labels: ['January', 'February', 'March'], - datasets: [ - { - label: 'GitHub Commits', - backgroundColor: '#f87979', - data: [40, 20, 12] - } - ] - }) - } -} -``` - -```vue -<template> - <BarChart /> -</template> - -<script> -import BarChart from 'path/to/component/BarChart' - -export default { - name: 'DataPage', - components: { BarChart } -} -</script> -``` - -In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component. - -```vue -<template> - <Bar :chart-data="chartData" /> -</template> - -<script> -// DataPage.vue -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data() { - return { - chartData: { - labels: [ 'January', 'February', 'March'], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 20, 12] - } - ] - } - } - } -} -</script> -``` - -## New reactivity system - -v3 does not update or re-render the chart if new data is passed. You needed to use `reactiveProp` and `reactiveData` mixins for that. - -v3: - -```javascript -import { Line, mixins } from 'vue-chartjs' - -export default { - extends: Line, - mixins: [mixins.reactiveProp], - props: ['chartData', 'options'], - mounted () { - this.renderChart(this.chartData, this.options) - } -} -``` - -v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed. - -v4: - -```vue -<template> - <Bar :chart-data="chartData" /> -</template> - -<script> -// DataPage.vue -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - computed: { - chartData() { return /* mutable chart data */ } - } -} -</script> -``` diff --git a/website/src/de/migration-guides/v5.md b/website/src/de/migration-guides/v5.md deleted file mode 100644 index eb2ab838..00000000 --- a/website/src/de/migration-guides/v5.md +++ /dev/null @@ -1,31 +0,0 @@ -# Migration from v4 to v5 - -With v5, this library introduces a number of breaking changes - -## ESM - -### v5.0 - -Chart.js v4 and vue-chartjs v5 are [ESM-only packages](https://nodejs.org/api/esm.html). To use them in your project, it also should be ESM: - -```json -// package.json -{ - "type": "module" -} -``` - -If you are experiencing this problem with Jest, you should follow [this doc](https://jestjs.io/docs/ecmascript-modules) to enable ESM support. Or, we can recommend you migrate to [Vitest](https://vitest.dev/). Vitest has ESM support out of the box and [has almost the same API as Jest](https://vitest.dev/guide/migration.html#migrating-from-jest). [Here is our example of migration](https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef). - - -### v5.1 - -Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support. - -## API changes - -- `chartData` props were renamed to `data` -- `chartOptions` props were renamed to `options` -- unknown props will fall through to the canvas element. -- `generateChart` were refactored and renamed to `createTypedChart` -- Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x. diff --git a/website/src/de/migration-guides/vue-chart-3.md b/website/src/de/migration-guides/vue-chart-3.md deleted file mode 100644 index 0a25c56c..00000000 --- a/website/src/de/migration-guides/vue-chart-3.md +++ /dev/null @@ -1,51 +0,0 @@ - -# Migration from vue-chart-3 - -## Uninstall vue-chart-3 - -```bash -pnpm rm vue-chart-3 -# or -yarn remove vue-chart-3 -# or -npm uninstall vue-chart-3 -``` - -## Install vue-chartjs - -```bash -pnpm add vue-chartjs -# or -yarn add vue-chartjs -# or -npm i vue-chartjs -``` - -## Change component import path - -For Vue 2.7 and Vue 3 projects: - -```javascript -import { /* component */ } from 'vue-chartjs' -``` - -For Vue 2 (<2.7) projects: - -```javascript -import { /* component */ } from 'vue-chartjs/legacy' -``` - -## Rename components - -- BarChart to Bar -- DoughnutChart to Doughnut -- LineChart to Line -- PieChart to Pie -- PolarAreaChart to PolarArea -- RadarChart to Radar -- BubbleChart to Bubble -- ScatterChart to Scatter - -## Rename props - -- options to chartOptions diff --git a/website/src/examples/index.md b/website/src/examples/index.md deleted file mode 100644 index 1d7367d5..00000000 --- a/website/src/examples/index.md +++ /dev/null @@ -1,26 +0,0 @@ -# Examples - -## Vue 3 charts - -- [Bar](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bar) -- [Bubble](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/bubble) -- [Doughnut](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/doughnut) -- [Line](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/line) -- [Pie](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/pie) -- [PolarArea](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/polar-area) -- [Radar](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/radar) -- [Scatter](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/scatter) -- [Bar with reactive data](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/reactive) -- [Custom chart](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/custom) -- [Events](https://stackblitz.com/github/apertureless/vue-chartjs/tree/main/sandboxes/events) - -## Vue 2 charts (vue-chartjs v4) - -- [Bar](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bar) -- [Bubble](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/bubble) -- [Doughnut](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/doughnut) -- [Line](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/line) -- [Pie](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/pie) -- [PolarArea](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/polar-area) -- [Radar](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/radar) -- [Scatter](https://codesandbox.io/s/github/apertureless/vue-chartjs/tree/v4/legacy/sandboxes/scatter) diff --git a/website/src/guide/examples.md b/website/src/guide/examples.md deleted file mode 100644 index 0d436c7f..00000000 --- a/website/src/guide/examples.md +++ /dev/null @@ -1,189 +0,0 @@ - -# Examples - -## Chart with props - -Your goal should be to create reusable chart components. For this purpose, you should utilize Vue.js props to pass in chart options and chart data. This way, the parent component itself does not hold an opinion about fetching data and is only for presentation. - -```vue -<template> - <Bar :data="chartData" :options="chartOptions" /> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - props: { - chartData: { - type: Object, - required: true - }, - chartOptions: { - type: Object, - default: () => {} - } - } -} -</script> -``` - -## Chart with local data - -You can handle your chart data directly in your parent component. - -```vue -<template> - <Bar :data="chartData" /> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data() { - return { - chartData: { - labels: [ 'January', 'February', 'March'], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 20, 12] - } - ] - } - } - } -} -</script> -``` - -## Chart with API data - -A common pattern is to use an API to retrieve your data. However, there are some things to keep in mind. The most common problem is that you mount your chart component directly and pass in data from an asynchronous API call. The problem with this approach is that Chart.js tries to render your chart and access the chart data synchronously, so your chart mounts before the API data arrives. - -To prevent this, a simple `v-if` is the best solution. - -Create your chart component with a data prop and options prop, so we can pass in our data and options from a container component. - -```vue -<template> - <div class="container"> - <Bar v-if="loaded" :data="chartData" /> - </div> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data: () => ({ - loaded: false, - chartData: null - }), - async mounted () { - this.loaded = false - - try { - const { userlist } = await fetch('/api/userlist') - this.chartdata = userlist - - this.loaded = true - } catch (e) { - console.error(e) - } - } -} -</script> -``` - -## Chart with dynamic styles - -You can set `responsive: true` and pass in a styles object which gets applied as inline styles to the outer `<div>`. This way, you can change the height and width of the outer container dynamically, which is not the default behaviour of Chart.js. It is best to use computed properties for this. - -::: warning - You need to set `position: relative` -::: - -```vue -<template> - <div> - <Bar :style="myStyles"/> - </div> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - computed: { - myStyles () { - return { - height: `${/* mutable height */}px`, - position: 'relative' - } - } - } -} -</script> -``` - -## Custom / New Charts - -Sometimes you need to extend the default Chart.js charts. There are a lot of [examples](http://www.chartjs.org/docs/latest/developers/charts.html) on how to extend and modify the default charts. Or, you can create your own chart type. - -In `vue-chartjs`, you can do this pretty much the same way: - -```js -// 1. Import Chart.js so you can use the global Chart object -import { Chart } from 'chart.js' -// 2. Import the `createTypedChart()` method to create the vue component. -import { createTypedChart } from 'vue-chartjs' -// 3. Import needed controller from Chart.js -import { LineController } from 'chart.js' - -// 3. Extend one of the default charts -// http://www.chartjs.org/docs/latest/developers/charts.html -class LineWithLineController extends LineController { /* custom magic here */} - -// 4. Generate the vue-chartjs component -// The first argument is the chart-id, the second the chart type, third is the custom controller -const CustomLine = createTypedChart('line', LineWithLineController) - -// 5. Extend the CustomLine Component just like you do with the default vue-chartjs charts. - -export default { - components: { CustomLine } -} -``` - -## Resources - -Here are some resources, such as tutorials, on how to use `vue-chartjs`: - -- [Using vue-chartjs with WordPress](https://medium.com/@apertureless/wordpress-vue-and-chart-js-6b61493e289f) -- [Create stunning Charts with Vue and Chart.js](https://hackernoon.com/creating-stunning-charts-with-vue-js-and-chart-js-28af584adc0a) -- [Let’s Build a Web App with Vue, Chart.js and an API Part I](https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-544eb81c4b44) -- [Let’s Build a Web App with Vue, Chart.js and an API Part II](https://hackernoon.com/lets-build-a-web-app-with-vue-chart-js-and-an-api-part-ii-39781b1d5acf) -- [Build a realtime chart with VueJS and Pusher](https://blog.pusher.com/build-realtime-chart-with-vuejs-pusher/) diff --git a/website/src/guide/index.md b/website/src/guide/index.md deleted file mode 100644 index 337d0b06..00000000 --- a/website/src/guide/index.md +++ /dev/null @@ -1,210 +0,0 @@ -# Getting Started - -**vue-chartjs** is a wrapper for [Chart.js](https://github.com/chartjs/Chart.js) in Vue. You can easily create reuseable chart components. - -Supports Chart.js v4. - -## Introduction - -`vue-chartjs` lets you use Chart.js without much hassle inside Vue. It's perfect for people who need simple charts up and running as fast as possible. - -It abstracts the basic logic but exposes the Chart.js object to give you maximal flexibility. - -:::tip Need an API to fetch data? -Please consider [Cube](https://cube.dev/?ref=eco-vue-chartjs), an open-source API for data apps. -::: - -## Installation - -You can install `vue-chartjs` over `yarn` or `npm` or `pnpm`. However, you also need to add `chart.js` as a dependency to your project because `Chart.js` is a peerDependency. This way you can have full control over the versioning of `Chart.js`. - -```bash -pnpm add vue-chartjs chart.js -# or -yarn add vue-chartjs chart.js -# or -npm i vue-chartjs chart.js -``` - -## Integration - -Every chart type that is available in Chart.js is exported as a named component and can be imported as such. These components are normal Vue components. - -The idea behind vue-chartjs is to provide easy-to-use components, with maximal flexibility and extensibility. - -## Creating your first Chart - -First, you need to import the base chart. - -```javascript -import { Bar } from 'vue-chartjs' -``` - -Check out the official [Chart.js docs](http://www.chartjs.org/docs/latest/#creating-a-chart) to see the object structure you need to provide. - -Just create your own component. - -**BarChart.vue** - -```vue -<template> - <Bar - id="my-chart-id" - :options="chartOptions" - :data="chartData" - /> -</template> - -<script> -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data() { - return { - chartData: { - labels: [ 'January', 'February', 'March' ], - datasets: [ { data: [40, 20, 12] } ] - }, - chartOptions: { - responsive: true - } - } - } -} -</script> -``` - -Use it in your vue app: - -**App.vue** - -```vue -<template> - <BarChart /> -</template> - -<script> -import BarChart from 'path/to/component/BarChart' - -export default { - name: 'App', - components: { BarChart } -} -</script> -``` - -## Updating Charts - -Since v4 charts have data change watcher and options change watcher by default. Wrapper will update or re-render the chart if new data or new options is passed. Mixins have been removed. - -```vue -<template> - <Bar :data="chartData" :options="chartOptions" /> -</template> - -<script> -// DataPage.vue -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - computed: { - chartData() { return /* mutable chart data */ }, - chartOptions() { return /* mutable chart options */ } - } -} -</script> -``` - -You may get Vue's `Target is readonly` warnings when you are updating your `chartData`. - -If your `chartData` is a `read-only` reactive value, you can override this warning by using a clone: - -```vue -<template> - <Bar :data="JSON.stringify(JSON.parse(chartData))" :options="chartOptions" /> -</template> -``` - -Unless you have a writable computed `chartData`, you won't be able to use the newer `structuredClone`, as you'll likely hit the `Write operation failed: computed value is readonly` error. - -You don't need to use a clone if your `chartData` is a [writable computed value](https://vuejs.org/guide/essentials/computed#writable-computed). - - - -## Access to Chart instance - -You can get access to chart instance via template refs. - -```vue -<template> - <BarChart ref="bar" /> -</template> -``` - -In Vue3 projects: - -```javascript -const chartInstance = this.$refs.bar.chart -``` - -## Accessibility - -To make your charts accessible to all users, you should label your charts. -Please refer also to the official [Chart.js Accessibility notes](https://www.chartjs.org/docs/latest/general/accessibility.html). - -### `aria-label` - -You can directly label a chart by passing an `aria-label` prop. - -```vue -<template> - <BarChart aria-label="Sales figures for the years 2022 to 2024. Sales in 2022: 987, Sales in 2023: 1209, Sales in 2024: 825." /> -</template> -``` - -### `aria-describedby` - -You can reference to a describing element such as a table which describes the data by using the `aria-describedby` property. - -```vue -<template> - <BarChart aria-describedby="my-data-table" /> - <table id="my-data-table"> - <caption>Sales figures for the years 2022 to 2024.</caption> - <thead> - <tr> - <th>2022</th> - <th>2023</th> - <th>2024</th> - </tr> - </thead> - <tbody> - <tr> - <td>987</td> - <td>1209</td> - <td>825</td> - </tr> - </tbody> - </table> -</template> -``` - -### Fallback-Content - -In case the Browser is not able to render the `canvas` element, you should consider providing fallback content by using the Slot of each component. - -```vue -<template> - <BarChart>Chart couldn't be loaded.</BarChart> -</template> -``` diff --git a/website/src/index.md b/website/src/index.md deleted file mode 100644 index 4ccf9561..00000000 --- a/website/src/index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: home -hero: - name: 📈 vue-chartjs - tagline: ⚡ Easy and beautiful charts with Chart.js and Vue.js - actions: - - theme: brand - text: Get Started → - link: /guide/ -features: -- icon: 🙌 - title: Easy - details: Easy for both beginners and pros -- icon: 💪 - title: Extendable - details: Simple to use, easy to extend -- icon: 💯 - title: Powerful - details: With the full power of chart.js 💯 ---- diff --git a/website/src/migration-guides/index.md b/website/src/migration-guides/index.md deleted file mode 100644 index fe30b3d5..00000000 --- a/website/src/migration-guides/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: doc ---- - -# Migration - -Over the time `vue-chartjs` has changed a lot. As the web and frontend technology has changed. -To keep up with the speed of evolution we have iterated and changed a lot. For a smooth transition between version please check the migration guides. - - -- [v4 -> v5](/migration-guides/v5) -- [v3 -> v4](/migration-guides/v4) -- [vue-chart-3](/migration-guides/vue-chart-3) diff --git a/website/src/migration-guides/v4.md b/website/src/migration-guides/v4.md deleted file mode 100644 index b2488b52..00000000 --- a/website/src/migration-guides/v4.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: doc ---- -# Migration from v3 to v4 - -With v4, this library introduces a number of breaking changes. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit. - -v4 is fully compatible with Chart.js v3. - -## Tree-shaking - -v4 of this library, [just like Chart.js v3](https://www.chartjs.org/docs/latest/getting-started/v3-migration.html#setup-and-installation), is tree-shakable. It means that you need to import and register the controllers, elements, scales, and plugins you want to use. - -For a list of all the available items to import, see [Chart.js docs](https://www.chartjs.org/docs/latest/getting-started/integration.html#bundlers-webpack-rollup-etc). - -v3: - -```javascript -import { Bar } from 'vue-chartjs' -``` - -v4 — lazy way: - -```javascript -import 'chart.js/auto'; -import { Bar } from 'vue-chartjs' -``` - -v4 — tree-shakable way: - -```javascript -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) -``` - -Using the "lazy way" is okay to simplify the migration, but please consider using the tree-shakable way to decrease the bundle size. - -Please note that typed chart components register their controllers by default, so you don't need to register them by yourself. For example, when using the Pie component, you don't need to register PieController explicitly. - -```javascript -import { Pie } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, ArcElement, CategoryScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, ArcElement, CategoryScale) -``` - -## Changing the creation of Charts - -In v3, you needed to import the component, and then either use extends or mixins and add it. - -v3: - -```javascript -// BarChart.js -import { Bar } from 'vue-chartjs' - -export default { - extends: Bar, - mounted () { - // Overwriting base render method with actual data. - this.renderChart({ - labels: ['January', 'February', 'March'], - datasets: [ - { - label: 'GitHub Commits', - backgroundColor: '#f87979', - data: [40, 20, 12] - } - ] - }) - } -} -``` - -```vue -<template> - <BarChart /> -</template> - -<script> -import BarChart from 'path/to/component/BarChart' - -export default { - name: 'DataPage', - components: { BarChart } -} -</script> -``` - -In v4, you need to import the component, pass props to it, and use Chart component as a standard Vue component. - -```vue -<template> - <Bar :chart-data="chartData" /> -</template> - -<script> -// DataPage.vue -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - data() { - return { - chartData: { - labels: [ 'January', 'February', 'March'], - datasets: [ - { - label: 'Data One', - backgroundColor: '#f87979', - data: [40, 20, 12] - } - ] - } - } - } -} -</script> -``` - -## New reactivity system - -v3 does not update or re-render the chart if new data is passed. You needed to use `reactiveProp` and `reactiveData` mixins for that. - -v3: - -```javascript -import { Line, mixins } from 'vue-chartjs' - -export default { - extends: Line, - mixins: [mixins.reactiveProp], - props: ['chartData', 'options'], - mounted () { - this.renderChart(this.chartData, this.options) - } -} -``` - -v4 charts have data change watcher by default. v4 will update or re-render the chart if new data is passed. Mixins have been removed. - -v4: - -```vue -<template> - <Bar :chart-data="chartData" /> -</template> - -<script> -// DataPage.vue -import { Bar } from 'vue-chartjs' -import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' - -ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) - -export default { - name: 'BarChart', - components: { Bar }, - computed: { - chartData() { return /* mutable chart data */ } - } -} -</script> -``` diff --git a/website/src/migration-guides/v5.md b/website/src/migration-guides/v5.md deleted file mode 100644 index eb2ab838..00000000 --- a/website/src/migration-guides/v5.md +++ /dev/null @@ -1,31 +0,0 @@ -# Migration from v4 to v5 - -With v5, this library introduces a number of breaking changes - -## ESM - -### v5.0 - -Chart.js v4 and vue-chartjs v5 are [ESM-only packages](https://nodejs.org/api/esm.html). To use them in your project, it also should be ESM: - -```json -// package.json -{ - "type": "module" -} -``` - -If you are experiencing this problem with Jest, you should follow [this doc](https://jestjs.io/docs/ecmascript-modules) to enable ESM support. Or, we can recommend you migrate to [Vitest](https://vitest.dev/). Vitest has ESM support out of the box and [has almost the same API as Jest](https://vitest.dev/guide/migration.html#migrating-from-jest). [Here is our example of migration](https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef). - - -### v5.1 - -Chart.js v4.1 and vue-chartjs v5.1 have restored the CommonJS support. - -## API changes - -- `chartData` props were renamed to `data` -- `chartOptions` props were renamed to `options` -- unknown props will fall through to the canvas element. -- `generateChart` were refactored and renamed to `createTypedChart` -- Vue.js < 2.7 is no longer supported. If you want to use vue-chartjs with Vue < 2.7 you have to lock your version to 4.x. diff --git a/website/src/migration-guides/vue-chart-3.md b/website/src/migration-guides/vue-chart-3.md deleted file mode 100644 index 0a25c56c..00000000 --- a/website/src/migration-guides/vue-chart-3.md +++ /dev/null @@ -1,51 +0,0 @@ - -# Migration from vue-chart-3 - -## Uninstall vue-chart-3 - -```bash -pnpm rm vue-chart-3 -# or -yarn remove vue-chart-3 -# or -npm uninstall vue-chart-3 -``` - -## Install vue-chartjs - -```bash -pnpm add vue-chartjs -# or -yarn add vue-chartjs -# or -npm i vue-chartjs -``` - -## Change component import path - -For Vue 2.7 and Vue 3 projects: - -```javascript -import { /* component */ } from 'vue-chartjs' -``` - -For Vue 2 (<2.7) projects: - -```javascript -import { /* component */ } from 'vue-chartjs/legacy' -``` - -## Rename components - -- BarChart to Bar -- DoughnutChart to Doughnut -- LineChart to Line -- PieChart to Pie -- PolarAreaChart to PolarArea -- RadarChart to Radar -- BubbleChart to Bubble -- ScatterChart to Scatter - -## Rename props - -- options to chartOptions diff --git a/website/src/package.json b/website/src/package.json deleted file mode 100644 index 2d21e823..00000000 --- a/website/src/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "vue-chartjs-docs", - "private": true -} diff --git a/website/src/pnpm-lock.yaml b/website/src/pnpm-lock.yaml deleted file mode 100644 index 9b60ae17..00000000 --- a/website/src/pnpm-lock.yaml +++ /dev/null @@ -1,9 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: {} diff --git a/website/src/public/vue-chartjs.png b/website/src/public/vue-chartjs.png deleted file mode 100644 index 43fb2a0a..00000000 Binary files a/website/src/public/vue-chartjs.png and /dev/null differ