├── .eslintrc.cjs
├── .gitignore
├── .prettierrc.json
├── README.md
├── dist
├── declarations
│ └── index.d.ts
├── favicon.ico
├── vue-drag-scroller.cjs.js
└── vue-drag-scroller.es.js
├── document
├── .gitattributes
├── .gitignore
├── docs
│ ├── .vitepress
│ │ ├── config.ts
│ │ └── theme
│ │ │ ├── custom.css
│ │ │ └── index.ts
│ ├── about.md
│ ├── configs.md
│ ├── contact.md
│ ├── examples
│ │ ├── Example1.vue
│ │ ├── ExampleExceptChild.vue
│ │ ├── ExampleExceptSpecChild.vue
│ │ ├── ExampleOnlyHideScroll.vue
│ │ ├── ExampleOnlyX.vue
│ │ ├── ExampleOnlyY.vue
│ │ ├── ExampleSpeed.vue
│ │ ├── bg.avif
│ │ └── test.vue
│ ├── get-started.md
│ ├── guide.md
│ ├── index.md
│ ├── installation.md
│ ├── introduction.md
│ ├── public
│ │ ├── logo-big.svg
│ │ └── logo.svg
│ └── use.md
├── package.json
├── renovate.json
└── scripts
│ └── deploy.js
├── example
├── App.vue
├── assets
│ ├── base.css
│ ├── logo.svg
│ ├── main.css
│ └── preview.mp4
└── main.ts
├── index.html
├── package.json
├── public
└── favicon.ico
├── server
├── assets
│ ├── index-BaTH9yxT.js
│ └── index-lU1t3W8O.css
├── favicon.ico
└── index.html
├── src
├── index.ts
└── types.d.ts
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.ts
└── yarn.lock
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | require('@rushstack/eslint-patch/modern-module-resolution')
3 |
4 | module.exports = {
5 | root: true,
6 | 'extends': [
7 | 'plugin:vue/vue3-essential',
8 | 'eslint:recommended',
9 | '@vue/eslint-config-typescript',
10 | '@vue/eslint-config-prettier/skip-formatting'
11 | ],
12 | parserOptions: {
13 | ecmaVersion: 'latest'
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist-ssr
13 | coverage
14 | *.local
15 |
16 | /cypress/videos/
17 | /cypress/screenshots/
18 |
19 | # Editor directories and files
20 | .vscode/*
21 | !.vscode/extensions.json
22 | .idea
23 | *.suo
24 | *.ntvs*
25 | *.njsproj
26 | *.sln
27 | *.sw?
28 |
29 | *.tsbuildinfo
30 | .vscode
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/prettierrc",
3 | "semi": false,
4 | "tabWidth": 2,
5 | "singleQuote": true,
6 | "printWidth": 100,
7 | "trailingComma": "none"
8 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vue drag scroller ⚡️
2 |
3 | 
4 |
5 |
6 |
7 | [](https://www.npmjs.com/package/vue-drag-scroller)
8 | [](https://www.npmjs.com/package/vue-drag-scroller)
9 | [](https://www.npmjs.com/package/vue-drag-scroller)
10 |
11 | This package help you drag to scroll easier🌟
12 |
13 | [Docs and demo](https://huynamboz.github.io/vue-drag-scroller/)
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | https://github.com/huynamboz/vue-drag-scroller/assets/38585889/20139bab-0004-4249-8826-70959f6dbc77
22 |
23 |
24 |
25 | ## How to install🔖
26 | **NPM**
27 |
28 | npm install vue-drag-scroller
29 | **YARN**
30 |
31 | yarn add vue-drag-scroller
32 |
33 | ## Install🔖
34 |
35 | Use with vue 3:
36 | **Register global:**
37 | ```javascript
38 | //main.ts
39 | import { createApp } from 'vue'
40 | import VueDragScroller from "vue-drag-scroller"
41 |
42 | import App from './App.vue'
43 |
44 | const app = createApp(App)
45 | app.use(VueDragScroller)
46 | app.mount('#app')
47 | ```
48 |
49 | ``` html
50 | //Example.vue
51 |
52 |
53 |
54 |
55 | ```
56 | **Register local:**
57 | ```javascript
58 | // Example.vue
59 |
62 |
63 |
64 |
65 |
66 |
67 | ```
68 | **Register in Nuxt:**
69 | ```javascript
70 | // plugins/vue-drag-scroller.js
71 | import VueDragScroller from 'vue-drag-scroller'
72 |
73 | export default defineNuxtPlugin((nuxtApp) => {
74 | nuxtApp.vueApp.use(VueDragScroller)
75 | })
76 | ```
77 | ```javascript
78 | // nuxt.config.js
79 | export default defineNuxtConfig({
80 | plugins: ['~/plugins/vue-drag-scroller.ts'],
81 | })
82 | ```
83 |
84 |
85 | ## Config🔖
86 | ### Options:
87 | you can pass options to directive like this:
88 | ```javascript
89 |
103 |
104 |
105 |
106 |
107 |
108 | ```
109 | | Name | Description | Type | Default |
110 | |--|--|--|--|
111 | | startScroll | Trigger when start scroll | Function | null |
112 | | endScroll | Trigger when end scroll | Function | null |
113 | | speed | Speed of scroll | Number | 1 |
114 | | hideScrollbar | Hide scrollbar | Boolean | false |
115 | | reverseDirection | Reverse direction of scroll | Boolean | false |
116 | ### Binding value:
117 | you can pass binding value to directive like this:
118 | ```javascript
119 |
120 |
121 |
122 |
123 | ```
124 |
125 | ```javascript
126 |
127 |
128 |
129 |
130 | ```
131 |
132 | | Name | Description | Type | Default |
133 | |--|--|--|--|
134 | | disablechild | Disable drag scroll in all child | Boolean | false |
135 | | onlyX | Only scroll in X axis | Boolean | false |
136 | | onlyY | Only scroll in Y axis | Boolean | false |
137 |
138 | Priority: disablechild > drag-scroller-disable > onlyX > onlyY
139 | ### Events (use in options):
140 | | Name | Description |
141 | |--|--|
142 | | startScroll | Trigger when start scroll|
143 | | endScroll | Trigger when end scroll|
144 | | onScrolling | Trigger when drag and move mouse|
145 | #### Example
146 | ```javascript
147 |
162 |
163 | // in component
164 |
165 |
166 |
167 |
168 | ```
169 | - ### Events Listener with v-on or @
170 | #### Example with @
171 | ```javascript
172 |
173 |
178 |
179 |
180 | ```
181 | #### Example with v-on
182 | ```javascript
183 |
184 |
189 |
190 |
191 | ```
192 | - ### Drag parent except all child
193 | #### Example
194 | ```javascript
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 | ```
204 | - ### Drag parent except particular child
205 | #### Example
206 | ```javascript
207 |
208 |
209 |
// disable drag scroll
210 |
211 |
212 |
213 |
214 |
215 | ```
216 | - ### Only scroll in X axis
217 | #### Example
218 | ```javascript
219 |
220 |
221 |
222 |
223 | ```
224 | - ### Only scroll in Y axis
225 | #### Example
226 | ```javascript
227 |
228 |
229 |
230 |
231 | ```
232 | - ### Hide scrollbar
233 | #### Example
234 | ```javascript
235 |
236 |
239 |
240 |
241 | ```
242 | - ### Change speed of scroll
243 | #### Example
244 | ```javascript
245 |
246 |
249 |
250 |
251 | ```
252 | - ### Change direction of scroll
253 | #### Example
254 | ```javascript
255 |
256 |
259 |
260 |
261 | ```
--------------------------------------------------------------------------------
/dist/declarations/index.d.ts:
--------------------------------------------------------------------------------
1 | import type { App, DirectiveBinding } from 'vue';
2 | interface ICustomBinding extends DirectiveBinding {
3 | value: {
4 | startScroll?: (e: MouseEvent) => void;
5 | endScroll?: (e: MouseEvent) => void;
6 | onScrolling?: (e: MouseEvent) => void;
7 | speed?: number;
8 | hideScrollbar?: boolean;
9 | reverseDirection?: boolean;
10 | };
11 | modifiers: {
12 | disablechild?: boolean;
13 | onlyX?: boolean;
14 | onlyY?: boolean;
15 | };
16 | }
17 | declare const statefullDirective: {
18 | mounted(elem: HTMLElement, binding: ICustomBinding): void;
19 | unmounted(elem: HTMLElement): void;
20 | };
21 | declare const VueDragScroller: {
22 | install(app: App): void;
23 | };
24 | export { statefullDirective as dragScroller };
25 | export { statefullDirective as vDragScroller };
26 | export default VueDragScroller;
27 |
--------------------------------------------------------------------------------
/dist/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huynamboz/vue-drag-scroller/32da26345eb7461078774e958591bdea3e35b051/dist/favicon.ico
--------------------------------------------------------------------------------
/dist/vue-drag-scroller.cjs.js:
--------------------------------------------------------------------------------
1 | "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const w="drag-scroller-disable",d=(()=>{const n=new WeakMap;return{mounted(r,l){let o=!1;const{onlyX:a,onlyY:c,disablechild:b}=l.modifiers,t=l.value??{},g=new Event("scrollStart",{bubbles:!0}),p=new Event("scrollMoving",{bubbles:!0}),L=new Event("scrollEnd",{bubbles:!0});t.hideScrollbar===!0&&(r.style.overflow="hidden");const D=e=>{if(b)return e===r;for(;e&&e.parentNode;){if(e&&(e!=null&&e.hasAttribute(w)))return!1;if(e===r)return!0;e=e.parentNode}return!1},f=e=>{o=D(e.target),r.dispatchEvent(g),o&&(t!=null&&t.startScroll)&&typeof(t==null?void 0:t.startScroll)=="function"&&t.startScroll(e)},v=e=>{r.dispatchEvent(L),o&&(t!=null&&t.endScroll)&&typeof(t==null?void 0:t.endScroll)=="function"&&t.endScroll(e),o=!1},i=e=>{if(!o)return!1;r.dispatchEvent(p),t!=null&&t.onScrolling&&typeof(t==null?void 0:t.onScrolling)=="function"&&t.onScrolling(e);const s=(t==null?void 0:t.speed)||1,S=t.reverseDirection?e.movementX*s:-e.movementX*s,E=t.reverseDirection?e.movementY*s:-e.movementY*s;return a?r.scrollLeft+=S:(c||(r.scrollLeft+=S),r.scrollTop+=E),u(e),!1};function u(e){var s;(e==null?void 0:e.target)instanceof HTMLImageElement&&e.preventDefault&&e.preventDefault(),(s=window.getSelection())==null||s.removeAllRanges()}n.set(r,{dragStart:f,dragEnd:v,drag:i,preventSelection:u}),r.addEventListener("pointerdown",f),r.addEventListener("dragstart",u),addEventListener("pointerup",v),addEventListener("pointermove",i)},unmounted(r){const{dragStart:l,dragEnd:o,drag:a,preventSelection:c}=n.get(r);r.removeEventListener("pointerdown",l),r.removeEventListener("dragstart",c),removeEventListener("pointerup",o),removeEventListener("pointermove",a)}}})(),h={install(n){n.directive("drag-scroller",d)}};exports.default=h;exports.dragScroller=d;exports.vDragScroller=d;
2 |
--------------------------------------------------------------------------------
/dist/vue-drag-scroller.es.js:
--------------------------------------------------------------------------------
1 | const D = "drag-scroller-disable", w = /* @__PURE__ */ (() => {
2 | const n = /* @__PURE__ */ new WeakMap();
3 | return {
4 | mounted(r, a) {
5 | let o = !1;
6 | const { onlyX: l, onlyY: c, disablechild: E } = a.modifiers, t = a.value ?? {}, p = new Event("scrollStart", { bubbles: !0 }), L = new Event("scrollMoving", { bubbles: !0 }), b = new Event("scrollEnd", { bubbles: !0 });
7 | t.hideScrollbar === !0 && (r.style.overflow = "hidden");
8 | const g = (e) => {
9 | if (E)
10 | return e === r;
11 | for (; e && e.parentNode; ) {
12 | if (e && (e != null && e.hasAttribute(D)))
13 | return !1;
14 | if (e === r)
15 | return !0;
16 | e = e.parentNode;
17 | }
18 | return !1;
19 | }, d = (e) => {
20 | o = g(e.target), r.dispatchEvent(p), o && (t != null && t.startScroll) && typeof (t == null ? void 0 : t.startScroll) == "function" && t.startScroll(e);
21 | }, u = (e) => {
22 | r.dispatchEvent(b), o && (t != null && t.endScroll) && typeof (t == null ? void 0 : t.endScroll) == "function" && t.endScroll(e), o = !1;
23 | }, v = (e) => {
24 | if (!o) return !1;
25 | r.dispatchEvent(L), t != null && t.onScrolling && typeof (t == null ? void 0 : t.onScrolling) == "function" && t.onScrolling(e);
26 | const s = (t == null ? void 0 : t.speed) || 1, i = t.reverseDirection ? e.movementX * s : -e.movementX * s, S = t.reverseDirection ? e.movementY * s : -e.movementY * s;
27 | return l ? r.scrollLeft += i : (c || (r.scrollLeft += i), r.scrollTop += S), f(e), !1;
28 | };
29 | function f(e) {
30 | var s;
31 | (e == null ? void 0 : e.target) instanceof HTMLImageElement && e.preventDefault && e.preventDefault(), (s = window.getSelection()) == null || s.removeAllRanges();
32 | }
33 | n.set(r, { dragStart: d, dragEnd: u, drag: v, preventSelection: f }), r.addEventListener("pointerdown", d), r.addEventListener("dragstart", f), addEventListener("pointerup", u), addEventListener("pointermove", v);
34 | },
35 | unmounted(r) {
36 | const { dragStart: a, dragEnd: o, drag: l, preventSelection: c } = n.get(r);
37 | r.removeEventListener("pointerdown", a), r.removeEventListener("dragstart", c), removeEventListener("pointerup", o), removeEventListener("pointermove", l);
38 | }
39 | };
40 | })(), h = {
41 | install(n) {
42 | n.directive("drag-scroller", w);
43 | }
44 | };
45 | export {
46 | h as default,
47 | w as dragScroller,
48 | w as vDragScroller
49 | };
50 |
--------------------------------------------------------------------------------
/document/.gitattributes:
--------------------------------------------------------------------------------
1 | *.js linguist-detectable=true
2 | *.ts linguist-detectable=true
3 | *.js linguist-documentation=false
4 | *.md linguist-detectable=true
5 |
--------------------------------------------------------------------------------
/document/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | vscode
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | /node_modules
43 | jspm_packages/
44 |
45 | # TypeScript v1 declaration files
46 | typings/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Microbundle cache
58 | .rpt2_cache/
59 | .rts2_cache_cjs/
60 | .rts2_cache_es/
61 | .rts2_cache_umd/
62 |
63 | # Optional REPL history
64 | .node_repl_history
65 |
66 | # Output of 'npm pack'
67 | *.tgz
68 |
69 | # Yarn Integrity file
70 | .yarn-integrity
71 |
72 | # dotenv environment variables file
73 | .env
74 | .env.test
75 |
76 | # parcel-bundler cache (https://parceljs.org/)
77 | .cache
78 |
79 | # Next.js build output
80 | .next
81 |
82 | # Nuxt.js build / generate output
83 | .nuxt
84 | dist
85 |
86 | # Gatsby files
87 | .cache/
88 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
89 | # https://nextjs.org/blog/next-9-1#public-directory-support
90 | # public
91 |
92 | # vuepress build output
93 | .vuepress/dist
94 |
95 | # Serverless directories
96 | .serverless/
97 |
98 | # FuseBox cache
99 | .fusebox/
100 |
101 | # DynamoDB Local files
102 | .dynamodb/
103 |
104 | # TernJS port file
105 | .tern-port
106 | package-lock.json
107 | yarn.lock
108 | cache
--------------------------------------------------------------------------------
/document/docs/.vitepress/config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | title: "Vue drag scroller",
3 | description: "An awesome docs template built by me",
4 | lang: 'en-US',
5 | cleanUrls: true,
6 | base: "/vue-drag-scroller/",
7 | // If this is disabled, when building it it will give deadlink errors if your markdown has the wrong links
8 | ignoreDeadLinks: true,
9 | head: [
10 | [
11 | 'script',
12 | { async: '', src: 'https://www.googletagmanager.com/gtag/js?id=G-QX1HCGN1JN' }
13 | ],
14 | [
15 | 'script',
16 | {},
17 | `window.dataLayer = window.dataLayer || [];
18 | function gtag(){dataLayer.push(arguments);}
19 | gtag('js', new Date());
20 | gtag('config', 'G-QX1HCGN1JN');`
21 | ]
22 | ],
23 | themeConfig: {
24 | logo: "/logo.svg",
25 | siteTitle: "Vue drag scroller",
26 | search: {
27 | provider: "local",
28 | },
29 | // Navbar Link
30 | nav: [
31 | { text: "Guide", link: "/guide" },
32 | { text: "Configs", link: "/configs" },
33 | {
34 | // Dropdown Menu
35 | text: "Changelog",
36 | items: [
37 | { text: "v1.8.2", link: "/" },
38 | ],
39 | },
40 | ],
41 | // Social Icons
42 | socialLinks: [
43 | { icon: "github", link: "https://github.com/huynamboz/vue-drag-scroller" },
44 | // {
45 | // icon: {
46 | // svg: ' ',
47 | // },
48 | // link: "https://google.com",
49 | // },
50 | ],
51 | // Sidebar
52 | sidebar: [
53 | {
54 | text: "Getting started",
55 | collapsible: true,
56 | items: [
57 | { text: "Introduction", link: "/introduction" },
58 | { text: "Installation", link: "/installation" },
59 | ],
60 | },
61 | {
62 | text: "Usage",
63 | collapsible: false,
64 | items: [
65 | { text: "How to use", link: "/use" },
66 | { text: "Configs", link: "/configs" },
67 | ],
68 | },
69 | ],
70 | // you can disable the previous and next page here
71 | docFooter: {
72 | prev: false,
73 | next: true,
74 | },
75 | editLink: {
76 | pattern: 'https://github.com/huynamboz/vue-drag-scroller/edit/dev/document/docs/:path',
77 | text: 'Edit this page on GitHub'
78 | },
79 | footer: {
80 | message: "Released under the MIT License.",
81 | copyright: "Copyright © 2024 huynamboz",
82 | },
83 | markdown: {
84 | theme: "material-palenight",
85 | lineNumbers: true,
86 | },
87 | // Mobile Config only
88 | returnToTopLabel: 'Go to Top',
89 | sidebarMenuLabel: 'Menu',
90 | },
91 | };
92 |
--------------------------------------------------------------------------------
/document/docs/.vitepress/theme/custom.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
2 | :root {
3 | --vp-c-brand: #ff7340;
4 | --vp-c-brand-light: #ff5719;
5 | --vp-c-brand-lighter: #ff7340;
6 | --vp-c-brand-lighter: rgba(255, 135, 23, 0.25);
7 | --vp-c-brand-dark: #ff622d;
8 | --vp-c-brand-darker: #e23c00;
9 |
10 | --vp-c-sponsor: #fd1d7c;
11 |
12 | /* Typography */
13 | --vp-font-family-base: "Inter", sans-serif;
14 |
15 | /* Code Snippet font */
16 | --vp-font-family-mono: "DM Mono", monospace;
17 | }
18 | * {
19 | font-size: 16px;
20 | }
21 | /* Custom Stlye */
22 | /* .custom-layout {
23 | background-color: var(--vp-c-bg-soft);
24 | color: var(--vp-c-text-1);
25 | padding: 1.5rem;
26 | display: flex;
27 | flex-direction: column;
28 | align-items: center;
29 | justify-content: center;
30 | text-align: center;
31 | gap: 1rem;
32 | min-height: 400px;
33 | max-width: 1152px;
34 | margin: 6rem auto 0;
35 | border-radius: 10px;
36 | }
37 |
38 | .custom-layout h1 {
39 | font-size: 2.2rem;
40 | font-weight: 600;
41 | }
42 |
43 | .custom-layout .btn {
44 | background-color: var(--vp-button-brand-bg);
45 | color: var(--vp-button-brand-text);
46 | border-radius: 20px;
47 | padding: 0.5rem 1.4rem;
48 | } */
49 |
50 | .drag-container {
51 | width: 100%;
52 | height: 150px;
53 | overflow: auto;
54 | display: flex;
55 | gap: 150px;
56 | background-color: #f0f0f0;
57 | cursor: grab;
58 | }
59 |
60 | .drag-content {
61 | width: 100px;
62 | min-width: 100px;
63 | height: 100px;
64 | background-color: #ff9797;
65 | margin: 10px 0;
66 | display: flex;
67 | justify-content: center;
68 | align-items: center;
69 | text-align: center;
70 | }
71 |
72 | .bg-img {
73 | width: 1000px;
74 | min-width: 1000px;
75 | height: 1000px;
76 | object-fit: cover;
77 | }
--------------------------------------------------------------------------------
/document/docs/.vitepress/theme/index.ts:
--------------------------------------------------------------------------------
1 | import DefaultTheme from "vitepress/theme";
2 | import "./custom.css";
3 |
4 | export default DefaultTheme;
5 |
--------------------------------------------------------------------------------
/document/docs/about.md:
--------------------------------------------------------------------------------
1 | # About
2 |
3 | Welcome to the about page.
4 |
5 | This markdown supports html elements like the `p` tag coupled with inline styles
6 |
7 |
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.
8 |
9 | Even satire code snippets with syntax highlighting are also supported. 😅
10 |
11 | ```js
12 | const lang = prompt("What is your favorite programming language?");
13 |
14 | (lang === "JavaScript") | (lang === "javascript") | (lang === "js")
15 | ? alert("JavaScript to the world! 🚀🟡")
16 | : alert(`We don't permit such languages here 💩`);
17 | ```
18 |
19 | Of course, images are not left out.
20 |
21 |
22 |
--------------------------------------------------------------------------------
/document/docs/configs.md:
--------------------------------------------------------------------------------
1 | # Configs
2 |
3 |
4 |
5 | Here is a list of all the configurations.
6 |
7 | ## General
8 |
9 | ### Example
10 |
11 | ```vue
12 |
26 |
27 |
28 |
29 |
30 |
31 | ```
32 |
33 | | Name | Description | Type | Default |
34 | |--|--|--|--|
35 | | startScroll | Trigger when start scroll | Function | null |
36 | | endScroll | Trigger when end scroll | Function | null |
37 | | speed | Speed of scroll | Number | 1 |
38 | | hideScrollbar | Hide scrollbar | Boolean | false |
39 | | reverseDirection | Reverse direction of scroll | Boolean | false |
40 |
41 | ## Binding value:
42 | you can pass binding value to directive like this:
43 | ```vue
44 |
45 |
46 |
47 |
48 | ```
49 |
50 | ```vue
51 |
52 |
53 |
54 |
55 | ```
56 |
57 | | Name | Description | Type | Default |
58 | |--|--|--|--|
59 | | disablechild | Disable drag scroll in all child | Boolean | false |
60 | | onlyX | Only scroll in X axis | Boolean | false |
61 | | onlyY | Only scroll in Y axis | Boolean | false |
62 |
63 | Priority: disablechild > drag-scroller-disable > onlyX > onlyY
64 | ## Events (use in options):
65 | | Name | Description |
66 | |--|--|
67 | | startScroll | Trigger when start scroll|
68 | | endScroll | Trigger when end scroll|
69 | | onScrolling | Trigger when drag and move mouse|
70 | #### Example
71 | ```vue
72 |
87 |
88 | // in component
89 |
90 |
91 |
92 |
93 | ```
--------------------------------------------------------------------------------
/document/docs/contact.md:
--------------------------------------------------------------------------------
1 | # Contact
2 |
3 |
4 |
5 | Welcome to the contact page
6 |
--------------------------------------------------------------------------------
/document/docs/examples/Example1.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/document/docs/examples/ExampleExceptChild.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
child
9 |
child
10 |
child
11 |
child
12 |
child
13 |
14 |
--------------------------------------------------------------------------------
/document/docs/examples/ExampleExceptSpecChild.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
child disabled
9 |
child disabled
10 |
child
11 |
child
12 |
child
13 |
14 |
15 |
--------------------------------------------------------------------------------
/document/docs/examples/ExampleOnlyHideScroll.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/document/docs/examples/ExampleOnlyX.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/document/docs/examples/ExampleOnlyY.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/document/docs/examples/ExampleSpeed.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/document/docs/examples/bg.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huynamboz/vue-drag-scroller/32da26345eb7461078774e958591bdea3e35b051/document/docs/examples/bg.avif
--------------------------------------------------------------------------------
/document/docs/examples/test.vue:
--------------------------------------------------------------------------------
1 |
2 | test
3 |
4 |
--------------------------------------------------------------------------------
/document/docs/get-started.md:
--------------------------------------------------------------------------------
1 | # Get Started
2 |
3 | Here's how to get started with [VitePress](https://vitepress.com)
4 |
--------------------------------------------------------------------------------
/document/docs/guide.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # How to build modern docs with VitePress
4 |
5 | ::: info
6 | Documentation is a crucial aspect of software development that is often neglected by developers due to the hassle of maintaining one, or even choosing the right tools to use. This is why it's important to use tools that simplify this process. In this tutorial, you'll learn how to build a complete docs site quickly by utilizing a modern tool called, VitePress.
7 | :::
8 |
9 | ## Definition
10 |
11 | [VitePress](https://vitepress.vuejs.org/) is a simple and performant static site generator built on top of [Vite](https://vitejs.dev) for creating docs in a matter of minutes. It is powered by [Vuejs](https://vuejs.org/), and Vite with built in customizable components. VitePress powers some popular documentation sites like Vuejs, [Vitest](https://vitest.dev/), [faker.js](https://fakerjs.dev/), and Vite itself.
12 |
13 | ## Prerequisites
14 |
15 | To follow along with this tutorial, you need to have a basic understanding of the following:
16 |
17 | - [Markdown](https://daringfireball.net/projects/markdown/) syntax
18 | - Brief understanding of NPM and Vite
19 |
20 | Here's a screenshot of what you'll be building at the end of this tutorial.
21 |
22 | 
23 |
24 | ## Step. 1: Create a new project
25 |
26 | If you already have a folder created, you can skip this step to the next one if not, use the following command to create a project folder and move into the folder.
27 |
28 | ```bash
29 | mkdir project-name
30 | cd project-name
31 | ```
32 |
33 | Next you need to initialize with your preferred package manager. I'll be using NPM for the rest of this guide.
34 |
35 | ```bash
36 | npm init
37 | // or use this command if you want to skip all the questions
38 | npm init -y
39 | ```
40 |
41 | If you used the first command, you'll be prompted with certain questions, complete them as appropriate. After a successful operation, you should have a package.json file in your root directory; This is where the VitePress dev dependency will be installed.
42 |
43 | ## Step. 2: Install VitePress
44 |
45 | Next step is to add VitePress and Vue as dev dependencies to your project.
46 |
47 | ```bash
48 | npm install vue vitepress --save-dev
49 | // or
50 | npm install -D vue vitepress
51 | ```
52 |
53 | You've successfully installed VitePress and Vue and added it as a dev dependency. Now you can start creating creating your respective doc files, but before you do that, I believe it's essential to explain how VitePress works.
54 |
55 | ## How does VitePress work?
56 |
57 | VitePress makes use of Markdown `.md` files for it's markup which is automatically converted into static HTML. In other for this to work, a special folder called `docs` is created in the root directory.
58 |
59 | This folder behaves similar to the `pages` folder in NextJS, where any `.js` file created in the directory is automatically treated as a web page. In this case a file called `index.md` will be the treated as `index.html` and serve as the root of your docs template.
60 |
61 | Now you understand how that works, you can now create your respective doc files.
62 |
63 | ## Step 3. Create respective files
64 |
65 | You can create the docs folder and the index.md file manually, or you can do it with the terminal like a hacker.
66 |
67 | ```bash
68 | mkdir docs && echo '# Hello VitePress' > docs/index.md
69 | ```
70 |
71 | This command is simply creating a folder called docs and adding an index.md file containing a h1 element that says, "Hello World".
72 |
73 | 
74 |
75 | With this, you can boot up your dev environment to see what has been created so far.
76 |
77 | ## Step 4: Boot up dev environment
78 |
79 | In other to run your docs locally, you need to add the following scripts inside the package.json file. Simply copy the code below and replace it with the "script" object.
80 |
81 | ```js
82 | // package.json
83 | "scripts": {
84 | "docs:dev": "vitepress dev docs",
85 | "docs:build": "vitepress build docs",
86 | "docs:serve": "vitepress serve docs"
87 | },
88 | ```
89 |
90 | Finally, the documentation site can be served on a local server by running the command below:
91 |
92 | ```bash
93 | npm run docs:dev
94 | ```
95 |
96 | This will start a hot-reloading development server at `http://localhost:5173`, and you can visit it to see your docs site.
97 |
98 | ### Output
99 |
100 | 
101 |
102 | All you had to do was add the markup and VitePress handled the looks from it's template engine. In the next session, you'll learn how you can customize the docs to fit your needs.
103 |
104 | ## How to customize your docs
105 |
106 | First create a `.vitepress` folder inside the docs directory you created earlier on. This is where all VitePress-specific files will be placed. Inside this new directory, you need a `config.js` file. Again, you can use the terminal command as a hacker.
107 |
108 | ```bash
109 | mkdir .vitepress && touch .vitepress/config.js
110 | ```
111 |
112 | To test this config file, you can start by changing the meta title and description of your docs site. Copy this markup and paste into the `config.j`s file.
113 |
114 | ```js
115 | // .vitepress/config.js
116 | export default {
117 | title: "Vue drag scroller",
118 | description: "An awesome docs template built by me",
119 | };
120 | ```
121 |
122 | If you check the dev tools, you should see the changes in the meta title and description.
123 |
124 | 
125 |
126 | ## Title and Logo
127 |
128 | In other to change the logo title and add an image, copy the markup below and paste it into a new object called `themeConfig` inside the same `config.js` file. This will overwrite the current title and add a logo your docs site.
129 |
130 | ```js
131 | // config.js
132 | export default {
133 | themeConfig: {
134 | logo: "/logo.svg",
135 | siteTitle: "Vue drag scroller",
136 | },
137 | };
138 | ```
139 |
140 | For the image source, you can pass in an image URL or specify the path to a local image. To do it locally, make sure you place the image within the `public` directory.
141 |
142 | ### Output
143 |
144 | 
145 |
146 | ::: warning
147 | Note: files in the public directory are served at the root path.
148 | So instead of `../public/logo.svg`, just use `/logo.svg`.
149 | :::
150 |
151 | ## Navbar
152 |
153 | Customizing the `Navbar` is a pretty straightforward process as well. Inside your `themeConfig` file, paste the markup below. Here we have an object that contains two properties. The anchor text `text`, and the path, `link` defines the URL path.
154 |
155 | ```js
156 | // .vitepress/config.js
157 | {
158 | // ...
159 | nav: [
160 | { text: "About", link: "/about" },
161 | { text: "Contact", link: "/contact" },
162 | { text: "Guide", link: "/guide" },
163 | { text: "Configs", link: "/configs" },
164 | { text: "Changelog", link: "https://github.com/Evavic44" },
165 | ],
166 | // ...
167 | }
168 | ```
169 |
170 | Essentially navigating to `http://localhost:5173/about` should take you to an about page(though we haven't created that yet).
171 |
172 | ### Output
173 |
174 | 
175 |
176 | Navigation links can also be dropdown menus too. To add one, simply replace any of the links property with the items object which contains an array of links.
177 |
178 | ```js
179 | // .vitepress/config.js
180 | {
181 | text: "Changelog",
182 | items: [
183 | { text: "v0.0.1", link: "/item-1" },
184 | { text: "v0.0.2", link: "/item-2" },
185 | { text: "v0.0.3", link: "/item-3" },
186 | ],
187 | },
188 | ```
189 |
190 | Now changelog will become a dropdown menu with the respective links you pass inside.
191 |
192 | ### Output
193 |
194 | 
195 |
196 | ## Social Icons
197 |
198 | Navigation menus usually have social icons visitors can use to visit your social platforms. To add that, define a new object called socialLinks inside themeConfig and simply pass in the social icon and the link you want it to navigate to.
199 |
200 | ```js
201 | // .vitepress/config.js
202 | socialLinks: [
203 | { icon: "github", link: "https://github.com/Evavic44/adocs" },
204 | { icon: "twitter", link: "https://twitter.com/victorekea" },
205 | { icon: "discord", link: "", target: "_blank" },
206 | ];
207 | ```
208 |
209 | By default only 7 popular icons are provided. If you want to add a custom icon, use the SVG property to define an svg image.
210 |
211 | ```js
212 | }
213 | "discord"
214 | "facebook"
215 | "github"
216 | "instagram"
217 | "linkedin"
218 | "slack"
219 | "twitter"
220 | "youtube"
221 | { svg: string };
222 | {
223 | ```
224 |
225 | ::: warning
226 | For the SVG icon, make sure you add the role="img" property, this allows the string convert it properly.
227 | :::
228 |
229 | 
230 |
231 | ## Sidebar
232 |
233 | VitePress also comes with built-in components like sidebar menus. To add a sidebar, create an object called sidebar and inside we add nested objects that takes in three values; the nested title, collapsible functionality (Default is set to true) and the nested links.
234 |
235 | ```js
236 | // .vitepress/config.js
237 | sidebar: [
238 | {
239 | text: "Section A",
240 | collapsible: true,
241 | items: [
242 | { text: "Introduction", link: "/introduction" },
243 | { text: "Getting Started", link: "/getting-started" },
244 | ],
245 | },
246 | {
247 | text: "Section B",
248 | collapsible: false,
249 | items: [
250 | { text: "Introduction", link: "/introduction" },
251 | { text: "Getting Started", link: "/getting-started" },
252 | ],
253 | },
254 | {
255 | text: "Section C",
256 | collapsible: true,
257 | items: [
258 | { text: "Introduction", link: "/introduction" },
259 | { text: "Getting Started", link: "/getting-started" },
260 | ],
261 | },
262 | ],
263 | ```
264 |
265 | By adding collapsible: "true" to the sidebar object, it shows a toggle button to hide/show each section. You can create as much sections as you want.
266 |
267 | ### Output
268 |
269 | 
270 |
271 | You can see section B is not collapsible and we have that aesthetic next page button on the bottom of the page.
272 |
273 | ## Page Routing
274 |
275 | As explained earlier, VitePress automatically converts every `.md` file inside the root of the docs directory to static html that can be accessed in the address bar. For instance the `index.md` is converted to `index.html`, and `about.md`, about.html and so on.
276 |
277 | Since you've created your nav links and pointed them to their respective URLs, you can access these pages easily by creating them.
278 |
279 | ```
280 | docs/
281 | ├── .vitepress/
282 | │ └── config.js
283 | ├── public/
284 | │ └── logo.svg
285 | ├── about.md
286 | ├── contact.md
287 | ├── guide.md
288 | ├── configs.md
289 | └── get-started.md
290 | ```
291 |
292 | Create these files inside your docs folder and add a simple markup inside them just to see how this works. This page is basic markdown so all your markdown syntax like links, code blocks, headings, etc works here.
293 |
294 | Just for testing purposes, copy this markdown content and paste it inside any of the `.md` file you just created.
295 |
296 | ```md
297 | # About
298 |
299 | Welcome to the about page.
300 |
301 | This markdown supports html elements like the `p` tag coupled with inline styles
302 |
303 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.
304 |
305 | Even satire code snippets with syntax highlighting are also supported. 😅
306 |
307 | const lang = prompt("What is your favorite programming language?");
308 |
309 | (lang === "JavaScript") | (lang === "javascript") | (lang === "js")
310 | ? alert("JavaScript to the world! 🚀🟡")
311 | : alert(`We don't permit such languages here 💩`);
312 |
313 | Of course, images are not left out.
314 |
315 |
316 | ```
317 |
318 | ### Output
319 |
320 | 
321 |
322 | Great! You've set-up the docs, added a navigation menu with dropdown feature, added a sidebar, and customized the links to navigate to different pages. Next up, let's work on the home page.
323 |
324 | ## Customizing the home page.
325 |
326 | Just like every other components, VitePress provides us with markup for building the home page. I've broken it down into three parts: Hero, features, and footer section.
327 |
328 | ## Hero Section
329 |
330 | First, we'll start with the hero section. Replace the Hello World text in the `index.md` page with the following markup.
331 |
332 | ```bash
333 | # docs/index.md
334 | ---
335 | layout: home
336 |
337 | hero:
338 | name: Vue drag scroller
339 | text: Static docs template built with VitePress.
340 | image:
341 | src: /logo-big.svg
342 | alt: Vue drag scroller logo
343 | tagline: A free to use template for creating docs for your projects
344 | actions:
345 | - theme: brand
346 | text: Get Started
347 | link: /get-started
348 | - theme: alt
349 | text: View on GitHub
350 | link: https://github.com/evavic44/adocs-template
351 | ---
352 | ```
353 |
354 | ## Features Section
355 |
356 | Additionally, you can also add a features section after the hero section. Simply paste the code below under the hero objects.
357 |
358 | ```bash
359 | # /docs/index.md
360 | ---
361 | link: https://github.com/evavic44/adocs-template
362 |
363 | features:
364 | - icon: ⚡️
365 | title: Adocs, The DX that can't be beat
366 | details: Lorem ipsum...
367 | - icon: 🎉
368 | title: Power of Vue meets Markdown
369 | details: Lorem ipsum...
370 | - icon: 🔥
371 | title: Simple and minimal, always
372 | details: Lorem ipsum...
373 | - icon: 🎀
374 | title: Stylish and cool
375 | details: Lorem ipsum...
376 | ---
377 | ```
378 |
379 | ### Output
380 |
381 | 
382 |
383 | ## Footer
384 |
385 | You can add a footer message on the bottom of the page but this will only show up in the home page.
386 |
387 | ::: warning
388 | The footer will not be displayed when the SideBar is visible.
389 | To add the footer component, go to the `config.js file` and paste the markup inside the `themeConfig` object
390 | :::
391 |
392 | ```js
393 | // .vitepress/config.js
394 | footer: {
395 | message: "Released under the MIT License.",
396 | copyright: "Copyright © 2022-present Adocs",
397 | },
398 | ```
399 |
400 | ### Output
401 |
402 | 
403 |
404 | Aside from the markup, you can also customize the components using custom CSS to change things like fonts family, colors, layout, ETC.
405 |
406 | ## Custom CSS
407 |
408 | The default theme CSS is customized by overriding root level CSS variables. If you want, you can check out the full list of [css variables customizable](https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css).
409 |
410 | To do get started, create a `.vitepress/theme directory`, and inside this theme folder, add an `index.js` and `custom.css` file. If you've been following along, you can use the terminal command below to do this quickly.
411 |
412 | ```bash
413 | mkdir docs/.vitepress/theme && touch docs/.vitepress/theme/index.js && touch docs/.vitepress/theme/custom.css
414 | ```
415 |
416 | If you ran into any issues with the terminal command, just create the files manually and move on to the next step.
417 |
418 | Here's an overview of the folder structure.
419 |
420 | ```bash
421 | docs/
422 | ├── .vitepress/
423 | │ ├── config.js
424 | │ └── theme/
425 | │ ├── index.js
426 | │ └── custom.css
427 | ├── public/
428 | │ └── logo.svg
429 | ├── about.md
430 | ├── contact.md
431 | ├── guide.md
432 | ├── configs.md
433 | └── get-started.md
434 | ```
435 |
436 | After creating these files, inside the `.vitepress/theme/index.js file`, paste the import commands.
437 |
438 | ```js
439 | // .vitepress/theme/index.js
440 | import DefaultTheme from "vitepress/theme";
441 | import "./custom.css";
442 |
443 | export default DefaultTheme;
444 | ```
445 |
446 | ### Color Theme
447 |
448 | The colors are controlled by the CSS variables. You can simply replace them with any colors you want.
449 |
450 | ::: tip
451 | This color has a provision for both light and dark mode. So make sure you change them accordingly.
452 | :::
453 |
454 | Here's an example of my custom colors
455 |
456 | ```css
457 | /* .vitepress/theme/custom.css */
458 |
459 | :root {
460 | --vp-c-brand: rgb(255, 115, 64);
461 | --vp-c-brand-light: rgb(255, 87, 25);
462 | --vp-c-brand-lighter: rgb(255, 115, 64);
463 | --vp-c-brand-dark: #ff622d;
464 | --vp-c-brand-darker: rgb(226, 60, 0);
465 |
466 | --vp-c-sponsor: #fd1d7c;
467 | }
468 | ```
469 |
470 | If you don't see the effects immediately, try ending the server and starting it again.
471 |
472 | Aside from the color themes, you can also override other things like, font family, typography, layout, breakpoints, etc.
473 |
474 | ## Fonts
475 |
476 | [Google fonts](https://fonts.google.com/) can be imported inside the CSS file to override the default font family.
477 |
478 | ```css
479 | @import url(https://fonts.googleapis.com/css?family=Space+Mono:regular,italic,700,700italic);
480 | @import url(https://fonts.googleapis.com/css?family=Space+Grotesk:regular,italic,700,700italic);
481 |
482 | :root {
483 | --vp-c-brand: #ff7340;
484 | --vp-c-brand-light: #ff5719;
485 | --vp-c-brand-lighter: #ff7340;
486 | --vp-c-brand-lighter: rgba(255, 135, 23, 0.25);
487 | --vp-c-brand-dark: #ff622d;
488 | --vp-c-brand-darker: #e23c00;
489 |
490 | --vp-c-sponsor: #fd1d7c;
491 |
492 | /* Typography */
493 | --vp-font-family-base: "Space Grotesk", "Inter var experimental", "Inter var",
494 | -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell,
495 | "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
496 |
497 | /* Code Snippet font */
498 | --vp-font-family-mono: "Space Mono", Menlo, Monaco, Consolas, "Courier New",
499 | monospace;
500 | }
501 | ```
502 |
503 | With the `--vp-font-family-base` variable you can change the main font and `--vp-font-family-mono,` the font for code snippets.
504 |
505 | ### Output
506 |
507 | 
508 |
509 | You've successfully customized the theme and changed the font family using CSS. Though there's more you can do in regards to styling, but at this point, I'm sure it's clearer how you can customize your docs with CSS. Let's discuss hosting in the next section.
510 |
511 | ## Hosting
512 |
513 | You can publish or host your docs site when you're done to different platforms like: [Netlify](https://netlify.com/), [Vercel](https://vercel.com), [AWS Amplify](https://aws.amazon.com/amplify/), etc.
514 |
515 | First, run the build command
516 |
517 | ```bash
518 | npm run docs:build
519 | ```
520 |
521 | This should create a new dist folder that contains all the static files of your docs. In your hosting service, add these commands to their respective fields.
522 | Build command: npm run docs:build
523 | Output directory: docs/.vitepress/dist
524 |
525 | This should create a new `dist` folder that contains all the static files of your docs. In your hosting service, add these commands to their respective fields.
526 |
527 | - Build command: `npm run docs:build`
528 | - Output directory: `docs/.vitepress/dist`
529 |
530 | 
531 |
532 | After editing the settings, save, and deploy.
533 |
534 | ## Conclusion
535 |
536 | In this tutorial, you've set-up a full-fledged documentation site and customized it using CSS and VitePress built-in components. However, this tutorial only covers a fragment of what is possible with VitePress, to learn more, check out the VitePress docs.
537 |
538 | ## Resources
539 |
540 | - [Live Demo](https://adocs.vercel.app)
541 | - [GitHub Repo](https://github.com/Evavic44/adocs)
542 |
543 |
544 |
545 | If you are an open source ardent like myself or you enjoy hearing about such cool projects, do follow me on my socials so you don't miss my next post. Cheers. 🍷
546 |
547 | [GitHub](https://github.com/evavic44) [Twitter](https://twitter/.com/victorekea) [Blog](https://eke.hashnode.dev) [Portfolio](https://victoreke.com)
548 |
--------------------------------------------------------------------------------
/document/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: home
3 |
4 | # Hero section
5 | hero:
6 | name: Vue drag scroller
7 | text: A Vue directive help drag scroll easer.
8 | image:
9 | src: /logo-big.svg
10 | alt: Adocs logo
11 | tagline:
12 | actions:
13 | - theme: brand
14 | text: Get Started
15 | link: /introduction
16 | - theme: alt
17 | text: View on GitHub
18 | link: https://github.com/huynamboz/vue-drag-scroller
19 |
20 | # Features section
21 | features:
22 | - icon: ⚡️
23 | title: Adocs, The DX that can't be beat
24 | details: Lorem ipsum...
25 | - icon: 🎉
26 | title: Power of Vue meets Markdown
27 | details: Lorem ipsum...
28 | - icon: 🔥
29 | title: Simple and minimal, always
30 | details: Lorem ipsum...
31 | - icon: 🎀
32 | title: Stylish and cool
33 | details: Lorem ipsum...
34 |
35 | # Meta property
36 | head:
37 | - - meta
38 | - property: og:type
39 | content: website
40 | - - meta
41 | - property: og:title
42 | content: Vue drag scroller
43 | - - meta
44 | - property: og:image
45 | content: https://user-images.githubusercontent.com/62628408/200117602-4b274d14-b1b2-4f61-8dcd-9f9482c677a0.png
46 | - - meta
47 | - property: og:url
48 | content: https://vitejs.dev/blog/announcing-vite3
49 | - - meta
50 | - name: title
51 | content: Vue drag scroller
52 | - - meta
53 | - name: twitter:card
54 | content: https://user-images.githubusercontent.com/62628408/200117602-4b274d14-b1b2-4f61-8dcd-9f9482c677a0.png
55 | - - link
56 | - rel: icon
57 | type: image/svg
58 | href: logo.svg
59 | ---
60 |
61 |
62 |
68 |
--------------------------------------------------------------------------------
/document/docs/installation.md:
--------------------------------------------------------------------------------
1 | # How to Install 🔖
2 |
3 | ## NPM
4 | ::: code-group
5 |
6 | ```bash [npm]
7 | npm install vue-drag-scroller
8 | ```
9 |
10 |
11 | ```bash [yarn]
12 | yarn add vue-drag-scroller
13 | ```
14 |
15 | ``` bash [pnpm]
16 | pnpm add vue-drag-scroller
17 | ```
18 |
19 | :::
20 |
21 | ### CDN
22 |
23 | You can also include Vue Drag Scroller via CDN by adding the following script tag to your HTML file:
24 |
25 | ```html
26 |
27 | ```
28 |
29 | ## Import
30 |
31 | ### Install to Vue 3
32 |
33 | - To use Vue Drag Scroller global in your Vue 3 application, import it as a plugin in your main.js file:
34 |
35 | ::: code-group
36 |
37 | ```javascript [main.js]
38 | import { createApp } from 'vue'
39 | import App from './App.vue'
40 | import VueDragScroller from 'vue-drag-scroller'
41 |
42 | const app = createApp(App)
43 | app.use(VueDragScroller)
44 | app.mount('#app')
45 | ```
46 |
47 | ```vue [App.vue]
48 |
49 |
50 |
51 |
52 | ```
53 |
54 | :::
55 |
56 | - To use Vue Drag Scroller locally in your Vue 3 application, import it as a component in your single file component:
57 |
58 | ::: code-group
59 |
60 | ```vue [App.vue]
61 |
64 |
65 |
66 |
67 |
68 |
69 | ```
70 |
71 | :::
72 |
73 | ### Install to Nuxt.js (Only for Nuxt 3)
74 |
75 | To use Vue Drag Scroller in your Nuxt.js application, import it as a plugin in your nuxt.config.js file:
76 |
77 | ::: code-group
78 |
79 | ```javascript [plugins/vue-drag-scroller.js]
80 | import VueDragScroller from 'vue-drag-scroller'
81 |
82 | export default defineNuxtPlugin((nuxtApp) => {
83 | nuxtApp.vueApp.use(VueDragScroller)
84 | })
85 | ```
86 |
87 | ```javascript [nuxt.config.js]
88 | export default defineNuxtConfig({
89 | plugins: ['~/plugins/vue-drag-scroller.ts'],
90 | })
91 | ```
92 |
93 | ```vue [App.vue]
94 |
95 |
96 |
97 |
98 | ```
99 |
100 | :::
101 |
102 |
--------------------------------------------------------------------------------
/document/docs/introduction.md:
--------------------------------------------------------------------------------
1 | # Vue Drag Scroller
2 |
3 | ## Introduction
4 |
5 | **Vue Drag Scroller** is a powerful and easy-to-use library that enhances your Vue.js applications by enabling smooth drag-to-scroll functionality. This library makes it effortless to implement drag scrolling, offering a seamless user experience.
6 |
7 | ## Features
8 |
9 | - **Easy Integration**: Simple setup with support for both Vue 3 and Nuxt.js.
10 | - **Customizable Options**: Flexible configuration options to tailor the drag scrolling behavior to your needs.
11 | - **Event Handling**: Provides events for start, end, and ongoing scrolling, allowing for fine-grained control and interaction.
12 | - **Axis Control**: Allows scrolling to be restricted to either the X or Y axis.
13 | - **Scroll Speed and Direction**: Adjustable scroll speed and the ability to reverse the scroll direction.
14 | - **Scrollbar Visibility**: Option to hide or show the scrollbar based on your design requirements.
15 | - **Child Element Control**: Ability to disable drag scrolling for specific child elements or all child elements.
16 |
17 | ## Benefits
18 |
19 | - **Enhanced User Experience**: Smooth and intuitive drag scrolling improves the overall user experience.
20 | - **Customizable**: Tailor the scrolling behavior to fit your application’s needs perfectly.
21 | - **Event-Driven**: Utilize built-in events to create interactive and dynamic user interfaces.
22 |
23 | ## Get Started
24 |
25 | To start using Vue Drag Scroller, install it via NPM or YARN and integrate it into your Vue.js application. Enjoy the enhanced scrolling experience and provide your users with a fluid and engaging interface.
26 |
27 | For detailed documentation and examples, please visit our [docs and demo page](#).
28 |
--------------------------------------------------------------------------------
/document/docs/public/logo-big.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/document/docs/public/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/document/docs/use.md:
--------------------------------------------------------------------------------
1 | # How to use 🔖
2 |
3 |
12 | ## Basic Usage
13 |
14 | To use the `VueDragScroller` directive, simply add it to the element you want to enable drag scrolling on. For example, to enable drag scrolling on a `div` element has class `container`, you can use the following code:
15 |
16 |
17 |
18 |
19 |
20 | ::: details Show code
21 | ```vue{2}
22 |
23 |
26 |
27 |
46 | ```
47 | :::
48 |
49 | ## Disable all child
50 |
51 | If you want to exclude all child elements from drag scrolling, you can use the `disablechild` modifier. For example, to exclude the first child element from drag scrolling, you can use the following code:
52 |
53 |
54 |
55 |
56 |
57 | ::: details Show code
58 |
59 | ```vue{2}
60 |
61 |
64 |
65 |
84 | ```
85 | :::
86 |
87 | ## Disable specific child
88 |
89 | If you want to exclude specific child elements from drag scrolling, you can use the `drag-scroller-disable` attribute. For example, to exclude the first child element from drag scrolling, you can use the following code:
90 |
91 |
92 |
93 |
94 |
95 | ::: details Show code
96 | ```vue{6,7,8}
97 |
98 |
99 |
child disabled
100 |
child disabled
101 |
child
102 |
child
103 |
child
104 |
105 |
106 |
125 | ```
126 | :::
127 |
128 | ## Only scroll in X axis
129 |
130 | If you want to scroll only in the X axis, you can use the `onlyX` modifier. For example, to scroll only in the X axis, you can use the following code:
131 |
132 |
133 |
134 |
135 |
136 | ::: details Show code
137 |
138 | ```vue{2}
139 |
140 |
141 |
142 |
143 |
144 | ```
145 | :::
146 |
147 | ## Only scroll in Y axis
148 |
149 | If you want to scroll only in the Y axis, you can use the `onlyY` modifier. For example, to scroll only in the Y axis, you can use the following code:
150 |
151 |
152 |
153 |
154 |
155 | ::: details Show code
156 |
157 | ```vue{2}
158 |
159 |
160 |
161 |
162 |
163 | ```
164 | :::
165 |
166 | ## Hide scrollbar
167 |
168 | If you want to hide the scrollbar, you can use option `hideScrollbar: true`. For example, to hide the scrollbar, you can use the following code:
169 |
170 |
171 |
172 |
173 |
174 | ::: details Show code
175 |
176 | ```vue{3}
177 |
182 |
183 |
184 |
185 |
186 |
187 |
188 | ```
189 | :::
190 |
191 | ## Speed
192 |
193 | If you want to change the speed of the scroll, you can use the `speed` option. For example, to change the speed of the scroll, you can use the following code:
194 |
195 |
196 |
197 |
198 |
199 | ::: details Show code
200 |
201 | ```vue{3}
202 |
207 |
208 |
209 |
210 |
211 |
212 |
213 | ```
214 | :::
--------------------------------------------------------------------------------
/document/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.ts",
6 | "type": "module",
7 | "scripts": {
8 | "docs:dev": "vitepress dev docs",
9 | "docs:build": "vitepress build docs",
10 | "docs:serve": "vitepress serve docs",
11 | "deploy": "node scripts/deploy.js"
12 | },
13 | "keywords": [],
14 | "author": "",
15 | "license": "ISC",
16 | "dependencies": {
17 | "vitepress": "^1.0.0-rc.45",
18 | "vue": "^3.4.21",
19 | "vue-drag-scroller": "^1.8.3"
20 | },
21 | "devDependencies": {
22 | "gh-pages": "^6.1.1"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/document/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "config:base"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/document/scripts/deploy.js:
--------------------------------------------------------------------------------
1 | // var ghpages = require('gh-pages');
2 | import ghpages from 'gh-pages';
3 |
4 | ghpages.publish('docs/.vitepress/dist', {nojekyll: true});
--------------------------------------------------------------------------------
/example/App.vue:
--------------------------------------------------------------------------------
1 |
25 |
26 |
27 |
28 | https://github.com/huynamboz/vue-drag-scroller/blob/dev/example/App.vue
29 |
30 |
31 |
Normal option: v-drag-scroller
32 |
40 |
41 |
42 |
43 |
Normal option: v-drag-scroller.disablechild
44 |
52 |
53 |
54 |
55 |
Only scroll horizontal: v-drag-scroller.onlyX
56 |
76 |
77 |
78 |
79 |
Only scroll vertical: v-drag-scroller.onlyX
80 |
100 |
101 |
102 |
103 |
Only scroll vertical: v-drag-scroller.onlyX
104 |
console.log('Start custom', e)"
106 | v-on:scrollMoving="(e) => console.log('Moving custom', e)"
107 | @scrollEnd="(e) => console.log('End custom', e)"
108 | class="wrapper only">
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
195 |
--------------------------------------------------------------------------------
/example/assets/base.css:
--------------------------------------------------------------------------------
1 | /* color palette from */
2 | :root {
3 | --vt-c-white: #ffffff;
4 | --vt-c-white-soft: #f8f8f8;
5 | --vt-c-white-mute: #f2f2f2;
6 |
7 | --vt-c-black: #181818;
8 | --vt-c-black-soft: #222222;
9 | --vt-c-black-mute: #282828;
10 |
11 | --vt-c-indigo: #2c3e50;
12 |
13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
17 |
18 | --vt-c-text-light-1: var(--vt-c-indigo);
19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
20 | --vt-c-text-dark-1: var(--vt-c-white);
21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
22 | }
23 |
24 | /* semantic color variables for this project */
25 | :root {
26 | --color-background: var(--vt-c-white);
27 | --color-background-soft: var(--vt-c-white-soft);
28 | --color-background-mute: var(--vt-c-white-mute);
29 |
30 | --color-border: var(--vt-c-divider-light-2);
31 | --color-border-hover: var(--vt-c-divider-light-1);
32 |
33 | --color-heading: var(--vt-c-text-light-1);
34 | --color-text: var(--vt-c-text-light-1);
35 |
36 | --section-gap: 160px;
37 | }
38 |
39 | @media (prefers-color-scheme: dark) {
40 | :root {
41 | --color-background: var(--vt-c-black);
42 | --color-background-soft: var(--vt-c-black-soft);
43 | --color-background-mute: var(--vt-c-black-mute);
44 |
45 | --color-border: var(--vt-c-divider-dark-2);
46 | --color-border-hover: var(--vt-c-divider-dark-1);
47 |
48 | --color-heading: var(--vt-c-text-dark-1);
49 | --color-text: var(--vt-c-text-dark-2);
50 | }
51 | }
52 |
53 | *,
54 | *::before,
55 | *::after {
56 | box-sizing: border-box;
57 | margin: 0;
58 | font-weight: normal;
59 | }
60 |
61 | body {
62 | min-height: 100vh;
63 | color: var(--color-text);
64 | background: var(--color-background);
65 | transition:
66 | color 0.5s,
67 | background-color 0.5s;
68 | line-height: 1.6;
69 | font-family:
70 | Inter,
71 | -apple-system,
72 | BlinkMacSystemFont,
73 | 'Segoe UI',
74 | Roboto,
75 | Oxygen,
76 | Ubuntu,
77 | Cantarell,
78 | 'Fira Sans',
79 | 'Droid Sans',
80 | 'Helvetica Neue',
81 | sans-serif;
82 | font-size: 15px;
83 | text-rendering: optimizeLegibility;
84 | -webkit-font-smoothing: antialiased;
85 | -moz-osx-font-smoothing: grayscale;
86 | }
87 |
--------------------------------------------------------------------------------
/example/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/example/assets/main.css:
--------------------------------------------------------------------------------
1 | @import './base.css';
2 |
3 | a,
4 | .green {
5 | text-decoration: none;
6 | color: hsla(160, 100%, 37%, 1);
7 | transition: 0.4s;
8 | padding: 3px;
9 | }
10 |
11 | @media (hover: hover) {
12 | a:hover {
13 | background-color: hsla(160, 100%, 37%, 0.2);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/example/assets/preview.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huynamboz/vue-drag-scroller/32da26345eb7461078774e958591bdea3e35b051/example/assets/preview.mp4
--------------------------------------------------------------------------------
/example/main.ts:
--------------------------------------------------------------------------------
1 | import './assets/main.css'
2 | import { createApp } from 'vue'
3 | import VueDragScroller from "../node_modules/vue-drag-scroller"
4 | import App from './App.vue'
5 |
6 | const app = createApp(App)
7 | app.use(VueDragScroller)
8 | app.mount('#app')
9 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-drag-scroller",
3 | "version": "1.8.6",
4 | "type": "module",
5 | "license": "MIT",
6 | "description": "A vue directive that helps you scroll in a more natural way.",
7 | "module": "dist/vue-drag-scroller.es.js",
8 | "main": "dist/vue-drag-scroller.cjs.js",
9 | "types": "dist/declarations/index.d.ts",
10 | "exports": {
11 | ".": {
12 | "import": "./dist/vue-drag-scroller.es.js",
13 | "require": "./dist/vue-drag-scroller.cjs.js",
14 | "types": "./dist/declarations/index.d.ts"
15 | },
16 | "./package.json": "./package.json",
17 | "./dist/*": "./dist/*",
18 | "./dist/declarations/index.d.ts": "./dist/declarations/index.d.ts"
19 | },
20 | "scripts": {
21 | "dev": "vite --mode app",
22 | "deploy": "gh-pages -d server",
23 | "build-only": "run-p type-check \"build-only {@}\" --",
24 | "preview": "vite preview --mode app",
25 | "build-lib": "vue-tsc --noEmit && vite build --mode lib && npm run define",
26 | "build-app": "vue-tsc --noEmit && vite build --mode app",
27 | "type-check": "vue-tsc --noEmit --build --force",
28 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
29 | "format": "prettier --write src/",
30 | "define": "vue-tsc --declaration --emitDeclarationOnly --outDir dist/declarations"
31 | },
32 | "dependencies": {
33 | "vue": "^3.3.11"
34 | },
35 | "devDependencies": {
36 | "@rushstack/eslint-patch": "^1.3.3",
37 | "@tsconfig/node18": "^18.2.2",
38 | "@types/node": "^18.19.3",
39 | "@vitejs/plugin-vue": "^4.5.2",
40 | "@vue/eslint-config-prettier": "^8.0.0",
41 | "@vue/eslint-config-typescript": "^12.0.0",
42 | "@vue/tsconfig": "^0.5.0",
43 | "eslint": "^8.49.0",
44 | "eslint-plugin-vue": "^9.17.0",
45 | "gh-pages": "^6.1.1",
46 | "npm-run-all2": "^6.1.1",
47 | "prettier": "^3.0.3",
48 | "typescript": "~5.3.0",
49 | "vite": "^5.0.10",
50 | "vue-tsc": "^1.8.25"
51 | },
52 | "repository": {
53 | "type": "git",
54 | "url": "git+https://github.com/huynamboz/vue-drag-scroller.git"
55 | },
56 | "homepage": "https://huynamboz.github.io/vue-drag-scroller/",
57 | "keywords": [
58 | "vue3",
59 | "vue3-directive",
60 | "drag scroll",
61 | "drag to scroll"
62 | ]
63 | }
64 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huynamboz/vue-drag-scroller/32da26345eb7461078774e958591bdea3e35b051/public/favicon.ico
--------------------------------------------------------------------------------
/server/assets/index-BaTH9yxT.js:
--------------------------------------------------------------------------------
1 | (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function s(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function n(o){if(o.ep)return;o.ep=!0;const r=s(o);fetch(o.href,r)}})();/**
2 | * @vue/shared v3.4.23
3 | * (c) 2018-present Yuxi (Evan) You and Vue contributors
4 | * @license MIT
5 | **//*! #__NO_SIDE_EFFECTS__ */function ys(e,t){const s=new Set(e.split(","));return t?n=>s.has(n.toLowerCase()):n=>s.has(n)}const $={},Ge=[],le=()=>{},bo=()=>!1,jt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Es=e=>e.startsWith("onUpdate:"),Y=Object.assign,ws=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},xo=Object.prototype.hasOwnProperty,R=(e,t)=>xo.call(e,t),A=Array.isArray,ot=e=>Ht(e)==="[object Map]",yo=e=>Ht(e)==="[object Set]",P=e=>typeof e=="function",X=e=>typeof e=="string",pt=e=>typeof e=="symbol",z=e=>e!==null&&typeof e=="object",Cn=e=>(z(e)||P(e))&&P(e.then)&&P(e.catch),Eo=Object.prototype.toString,Ht=e=>Eo.call(e),wo=e=>Ht(e).slice(8,-1),So=e=>Ht(e)==="[object Object]",Ss=e=>X(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,rt=ys(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),$t=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Oo=/-(\w)/g,me=$t(e=>e.replace(Oo,(t,s)=>s?s.toUpperCase():"")),Co=/\B([A-Z])/g,Je=$t(e=>e.replace(Co,"-$1").toLowerCase()),Vt=$t(e=>e.charAt(0).toUpperCase()+e.slice(1)),kt=$t(e=>e?`on${Vt(e)}`:""),Be=(e,t)=>!Object.is(e,t),es=(e,t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:s})},To=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Gs;const In=()=>Gs||(Gs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Os(e){if(A(e)){const t={};for(let s=0;s{if(s){const n=s.split(Po);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Cs(e){let t="";if(X(e))t=e;else if(A(e))for(let s=0;s=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Re()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ie,s=Ue;try{return Ie=!0,Ue=this,this._runnings++,Ys(this),this.fn()}finally{Xs(this),this._runnings--,Ue=s,Ie=t}}stop(){var t;this.active&&(Ys(this),Xs(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Ho(e){return e.value}function Ys(e){e._trackId++,e._depsLength=0}function Xs(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const s=new Map;return s.cleanup=e,s.computed=t,s},us=new WeakMap,De=Symbol(""),as=Symbol("");function se(e,t,s){if(Ie&&Ue){let n=us.get(e);n||us.set(e,n=new Map);let o=n.get(s);o||n.set(s,o=Ln(()=>n.delete(s))),Rn(Ue,o)}}function Ee(e,t,s,n,o,r){const i=us.get(e);if(!i)return;let c=[];if(t==="clear")c=[...i.values()];else if(s==="length"&&A(e)){const u=Number(n);i.forEach((d,h)=>{(h==="length"||!pt(h)&&h>=u)&&c.push(d)})}else switch(s!==void 0&&c.push(i.get(s)),t){case"add":A(e)?Ss(s)&&c.push(i.get("length")):(c.push(i.get(De)),ot(e)&&c.push(i.get(as)));break;case"delete":A(e)||(c.push(i.get(De)),ot(e)&&c.push(i.get(as)));break;case"set":ot(e)&&c.push(i.get(De));break}Is();for(const u of c)u&&Fn(u,4);Ps()}const $o=ys("__proto__,__v_isRef,__isVue"),Nn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(pt)),Js=Vo();function Vo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...s){const n=L(this);for(let r=0,i=this.length;r{e[t]=function(...s){Me(),Is();const n=L(this)[t].apply(this,s);return Ps(),Re(),n}}),e}function Uo(e){pt(e)||(e=String(e));const t=L(this);return se(t,"has",e),t.hasOwnProperty(e)}class jn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){const o=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!o;if(s==="__v_isReadonly")return o;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(o?r?ko:Un:r?Vn:$n).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=A(t);if(!o){if(i&&R(Js,s))return Reflect.get(Js,s,n);if(s==="hasOwnProperty")return Uo}const c=Reflect.get(t,s,n);return(pt(s)?Nn.has(s):$o(s))||(o||se(t,"get",s),r)?c:oe(c)?i&&Ss(s)?c:c.value:z(c)?o?Dn(c):Rs(c):c}}class Hn extends jn{constructor(t=!1){super(!1,t)}set(t,s,n,o){let r=t[s];if(!this._isShallow){const u=Rt(r);if(!ds(n)&&!Rt(n)&&(r=L(r),n=L(n)),!A(t)&&oe(r)&&!oe(n))return u?!1:(r.value=n,!0)}const i=A(t)&&Ss(s)?Number(s)e,Ut=e=>Reflect.getPrototypeOf(e);function yt(e,t,s=!1,n=!1){e=e.__v_raw;const o=L(e),r=L(t);s||(Be(t,r)&&se(o,"get",t),se(o,"get",r));const{has:i}=Ut(o),c=n?As:s?Ns:Ls;if(i.call(o,t))return c(e.get(t));if(i.call(o,r))return c(e.get(r));e!==o&&e.get(t)}function Et(e,t=!1){const s=this.__v_raw,n=L(s),o=L(e);return t||(Be(e,o)&&se(n,"has",e),se(n,"has",o)),e===o?s.has(e):s.has(e)||s.has(o)}function wt(e,t=!1){return e=e.__v_raw,!t&&se(L(e),"iterate",De),Reflect.get(e,"size",e)}function Zs(e){e=L(e);const t=L(this);return Ut(t).has.call(t,e)||(t.add(e),Ee(t,"add",e,e)),this}function Qs(e,t){t=L(t);const s=L(this),{has:n,get:o}=Ut(s);let r=n.call(s,e);r||(e=L(e),r=n.call(s,e));const i=o.call(s,e);return s.set(e,t),r?Be(t,i)&&Ee(s,"set",e,t):Ee(s,"add",e,t),this}function ks(e){const t=L(this),{has:s,get:n}=Ut(t);let o=s.call(t,e);o||(e=L(e),o=s.call(t,e)),n&&n.call(t,e);const r=t.delete(e);return o&&Ee(t,"delete",e,void 0),r}function en(){const e=L(this),t=e.size!==0,s=e.clear();return t&&Ee(e,"clear",void 0,void 0),s}function St(e,t){return function(n,o){const r=this,i=r.__v_raw,c=L(i),u=t?As:e?Ns:Ls;return!e&&se(c,"iterate",De),i.forEach((d,h)=>n.call(o,u(d),u(h),r))}}function Ot(e,t,s){return function(...n){const o=this.__v_raw,r=L(o),i=ot(r),c=e==="entries"||e===Symbol.iterator&&i,u=e==="keys"&&i,d=o[e](...n),h=s?As:t?Ns:Ls;return!t&&se(r,"iterate",u?as:De),{next(){const{value:x,done:w}=d.next();return w?{value:x,done:w}:{value:c?[h(x[0]),h(x[1])]:h(x),done:w}},[Symbol.iterator](){return this}}}}function Se(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function zo(){const e={get(r){return yt(this,r)},get size(){return wt(this)},has:Et,add:Zs,set:Qs,delete:ks,clear:en,forEach:St(!1,!1)},t={get(r){return yt(this,r,!1,!0)},get size(){return wt(this)},has:Et,add:Zs,set:Qs,delete:ks,clear:en,forEach:St(!1,!0)},s={get(r){return yt(this,r,!0)},get size(){return wt(this,!0)},has(r){return Et.call(this,r,!0)},add:Se("add"),set:Se("set"),delete:Se("delete"),clear:Se("clear"),forEach:St(!0,!1)},n={get(r){return yt(this,r,!0,!0)},get size(){return wt(this,!0)},has(r){return Et.call(this,r,!0)},add:Se("add"),set:Se("set"),delete:Se("delete"),clear:Se("clear"),forEach:St(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(r=>{e[r]=Ot(r,!1,!1),s[r]=Ot(r,!0,!1),t[r]=Ot(r,!1,!0),n[r]=Ot(r,!0,!0)}),[e,s,t,n]}const[qo,Go,Yo,Xo]=zo();function Ms(e,t){const s=t?e?Xo:Yo:e?Go:qo;return(n,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(R(s,o)&&o in n?s:n,o,r)}const Jo={get:Ms(!1,!1)},Zo={get:Ms(!1,!0)},Qo={get:Ms(!0,!1)},$n=new WeakMap,Vn=new WeakMap,Un=new WeakMap,ko=new WeakMap;function er(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function tr(e){return e.__v_skip||!Object.isExtensible(e)?0:er(wo(e))}function Rs(e){return Rt(e)?e:Fs(e,!1,Bo,Jo,$n)}function sr(e){return Fs(e,!1,Wo,Zo,Vn)}function Dn(e){return Fs(e,!0,Ko,Qo,Un)}function Fs(e,t,s,n,o){if(!z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=o.get(e);if(r)return r;const i=tr(e);if(i===0)return e;const c=new Proxy(e,i===2?n:s);return o.set(e,c),c}function it(e){return Rt(e)?it(e.__v_raw):!!(e&&e.__v_isReactive)}function Rt(e){return!!(e&&e.__v_isReadonly)}function ds(e){return!!(e&&e.__v_isShallow)}function Bn(e){return e?!!e.__v_raw:!1}function L(e){const t=e&&e.__v_raw;return t?L(t):e}function nr(e){return Object.isExtensible(e)&&Tn(e,"__v_skip",!0),e}const Ls=e=>z(e)?Rs(e):e,Ns=e=>z(e)?Dn(e):e;class Kn{constructor(t,s,n,o){this.getter=t,this._setter=s,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ts(()=>t(this._value),()=>ts(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const t=L(this);return(!t._cacheable||t.effect.dirty)&&Be(t._value,t._value=t.effect.run())&&ts(t,4),rr(t),t.effect._dirtyLevel>=2&&ts(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function or(e,t,s=!1){let n,o;const r=P(e);return r?(n=e,o=le):(n=e.get,o=e.set),new Kn(n,o,r||!o,s)}function rr(e){var t;Ie&&Ue&&(e=L(e),Rn(Ue,(t=e.dep)!=null?t:e.dep=Ln(()=>e.dep=void 0,e instanceof Kn?e:void 0)))}function ts(e,t=4,s){e=L(e);const n=e.dep;n&&Fn(n,t)}function oe(e){return!!(e&&e.__v_isRef===!0)}function ir(e){return oe(e)?e.value:e}const lr={get:(e,t,s)=>ir(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const o=e[t];return oe(o)&&!oe(s)?(o.value=s,!0):Reflect.set(e,t,s,n)}};function Wn(e){return it(e)?e:new Proxy(e,lr)}/**
10 | * @vue/runtime-core v3.4.23
11 | * (c) 2018-present Yuxi (Evan) You and Vue contributors
12 | * @license MIT
13 | **/function Pe(e,t,s,n){try{return n?e(...n):e()}catch(o){Dt(o,t,s)}}function ae(e,t,s,n){if(P(e)){const o=Pe(e,t,s,n);return o&&Cn(o)&&o.catch(r=>{Dt(r,t,s)}),o}if(A(e)){const o=[];for(let r=0;r>>1,o=J[n],r=at(o);r_e&&J.splice(t,1)}function dr(e){A(e)?Ye.push(...e):(!Oe||!Oe.includes(e,e.allowRecurse?$e+1:$e))&&Ye.push(e),qn()}function tn(e,t,s=ut?_e+1:0){for(;sat(s)-at(n));if(Ye.length=0,Oe){Oe.push(...t);return}for(Oe=t,$e=0;$ee.id==null?1/0:e.id,hr=(e,t)=>{const s=at(e)-at(t);if(s===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return s};function Yn(e){hs=!1,ut=!0,J.sort(hr);try{for(_e=0;_eX(T)?T.trim():T)),x&&(o=s.map(To))}let c,u=n[c=kt(t)]||n[c=kt(me(t))];!u&&r&&(u=n[c=kt(Je(t))]),u&&ae(u,e,6,o);const d=n[c+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,ae(d,e,6,o)}}function Xn(e,t,s=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const r=e.emits;let i={},c=!1;if(!P(e)){const u=d=>{const h=Xn(d,t,!0);h&&(c=!0,Y(i,h))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!r&&!c?(z(e)&&n.set(e,null),null):(A(r)?r.forEach(u=>i[u]=null):Y(i,r),z(e)&&n.set(e,i),i)}function Bt(e,t){return!e||!jt(t)?!1:(t=t.slice(2).replace(/Once$/,""),R(e,t[0].toLowerCase()+t.slice(1))||R(e,Je(t))||R(e,t))}let te=null,Kt=null;function Ft(e){const t=te;return te=e,Kt=e&&e.type.__scopeId||null,t}function gr(e){Kt=e}function vr(){Kt=null}function _r(e,t=te,s){if(!t||e._n)return e;const n=(...o)=>{n._d&&hn(-1);const r=Ft(t);let i;try{i=e(...o)}finally{Ft(r),n._d&&hn(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function ss(e){const{type:t,vnode:s,proxy:n,withProxy:o,props:r,propsOptions:[i],slots:c,attrs:u,emit:d,render:h,renderCache:x,data:w,setupState:T,ctx:V,inheritAttrs:S}=e;let D,K;const re=Ft(e);try{if(s.shapeFlag&4){const q=o||n,ie=q;D=ve(h.call(ie,q,x,r,T,w,V)),K=u}else{const q=t;D=ve(q.length>1?q(r,{attrs:u,slots:c,emit:d}):q(r,null)),K=t.props?u:mr(u)}}catch(q){ft.length=0,Dt(q,e,1),D=Ae(dt)}let j=D;if(K&&S!==!1){const q=Object.keys(K),{shapeFlag:ie}=j;q.length&&ie&7&&(i&&q.some(Es)&&(K=br(K,i)),j=Xe(j,K))}return s.dirs&&(j=Xe(j),j.dirs=j.dirs?j.dirs.concat(s.dirs):s.dirs),s.transition&&(j.transition=s.transition),D=j,Ft(re),D}const mr=e=>{let t;for(const s in e)(s==="class"||s==="style"||jt(s))&&((t||(t={}))[s]=e[s]);return t},br=(e,t)=>{const s={};for(const n in e)(!Es(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function xr(e,t,s){const{props:n,children:o,component:r}=e,{props:i,children:c,patchFlag:u}=t,d=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?sn(n,i,d):!!i;if(u&8){const h=t.dynamicProps;for(let x=0;xe.__isSuspense;function Ir(e,t){t&&t.pendingBranch?A(e)?t.effects.push(...e):t.effects.push(e):dr(e)}const Pr=Symbol.for("v-scx"),Ar=()=>It(Pr),Ct={};function ns(e,t,s){return Jn(e,t,s)}function Jn(e,t,{immediate:s,deep:n,flush:o,once:r,onTrack:i,onTrigger:c}=$){if(t&&r){const F=t;t=(...be)=>{F(...be),ie()}}const u=Z,d=F=>n===!0?F:Ve(F,n===!1?1:void 0);let h,x=!1,w=!1;if(oe(e)?(h=()=>e.value,x=ds(e)):it(e)?(h=()=>d(e),x=!0):A(e)?(w=!0,x=e.some(F=>it(F)||ds(F)),h=()=>e.map(F=>{if(oe(F))return F.value;if(it(F))return d(F);if(P(F))return Pe(F,u,2)})):P(e)?t?h=()=>Pe(e,u,2):h=()=>(T&&T(),ae(e,u,3,[V])):h=le,t&&n){const F=h;h=()=>Ve(F())}let T,V=F=>{T=j.onStop=()=>{Pe(F,u,4),T=j.onStop=void 0}},S;if(qt)if(V=le,t?s&&ae(t,u,3,[h(),w?[]:void 0,V]):h(),o==="sync"){const F=Ar();S=F.__watcherHandles||(F.__watcherHandles=[])}else return le;let D=w?new Array(e.length).fill(Ct):Ct;const K=()=>{if(!(!j.active||!j.dirty))if(t){const F=j.run();(n||x||(w?F.some((be,de)=>Be(be,D[de])):Be(F,D)))&&(T&&T(),ae(t,u,3,[F,D===Ct?void 0:w&&D[0]===Ct?[]:D,V]),D=F)}else j.run()};K.allowRecurse=!!t;let re;o==="sync"?re=K:o==="post"?re=()=>ee(K,u&&u.suspense):(K.pre=!0,u&&(K.id=u.uid),re=()=>Hs(K));const j=new Ts(h,le,re),q=jo(),ie=()=>{j.stop(),q&&ws(q.effects,j)};return t?s?K():D=j.run():o==="post"?ee(j.run.bind(j),u&&u.suspense):j.run(),S&&S.push(ie),ie}function Mr(e,t,s){const n=this.proxy,o=X(e)?e.includes(".")?Zn(n,e):()=>n[e]:e.bind(n,n);let r;P(t)?r=t:(r=t.handler,s=t);const i=vt(this),c=Jn(o,r.bind(n),s);return i(),c}function Zn(e,t){const s=t.split(".");return()=>{let n=e;for(let o=0;o0){if(s>=t)return e;s++}if(n=n||new Set,n.has(e))return e;if(n.add(e),oe(e))Ve(e.value,t,s,n);else if(A(e))for(let o=0;o{Ve(o,t,s,n)});else if(So(e))for(const o in e)Ve(e[o],t,s,n);return e}function tt(e,t){if(te===null)return e;const s=Gt(te)||te.proxy,n=e.dirs||(e.dirs=[]);for(let o=0;o!!e.type.__asyncLoader,Qn=e=>e.type.__isKeepAlive;function Fr(e,t){kn(e,"a",t)}function Lr(e,t){kn(e,"da",t)}function kn(e,t,s=Z){const n=e.__wdc||(e.__wdc=()=>{let o=s;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Wt(t,n,s),s){let o=s.parent;for(;o&&o.parent;)Qn(o.parent.vnode)&&Nr(n,t,s,o),o=o.parent}}function Nr(e,t,s,n){const o=Wt(t,e,n,!0);eo(()=>{ws(n[t],o)},s)}function Wt(e,t,s=Z,n=!1){if(s){const o=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...i)=>{if(s.isUnmounted)return;Me();const c=vt(s),u=ae(t,s,e,i);return c(),Re(),u});return n?o.unshift(r):o.push(r),r}}const we=e=>(t,s=Z)=>(!qt||e==="sp")&&Wt(e,(...n)=>t(...n),s),jr=we("bm"),Hr=we("m"),$r=we("bu"),Vr=we("u"),Ur=we("bum"),eo=we("um"),Dr=we("sp"),Br=we("rtg"),Kr=we("rtc");function Wr(e,t=Z){Wt("ec",e,t)}const ps=e=>e?po(e)?Gt(e)||e.proxy:ps(e.parent):null,lt=Y(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=>ps(e.parent),$root:e=>ps(e.root),$emit:e=>e.emit,$options:e=>$s(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Hs(e.update)}),$nextTick:e=>e.n||(e.n=fr.bind(e.proxy)),$watch:e=>Mr.bind(e)}),os=(e,t)=>e!==$&&!e.__isScriptSetup&&R(e,t),zr={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:o,props:r,accessCache:i,type:c,appContext:u}=e;let d;if(t[0]!=="$"){const T=i[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return o[t];case 4:return s[t];case 3:return r[t]}else{if(os(n,t))return i[t]=1,n[t];if(o!==$&&R(o,t))return i[t]=2,o[t];if((d=e.propsOptions[0])&&R(d,t))return i[t]=3,r[t];if(s!==$&&R(s,t))return i[t]=4,s[t];gs&&(i[t]=0)}}const h=lt[t];let x,w;if(h)return t==="$attrs"&&se(e.attrs,"get",""),h(e);if((x=c.__cssModules)&&(x=x[t]))return x;if(s!==$&&R(s,t))return i[t]=4,s[t];if(w=u.config.globalProperties,R(w,t))return w[t]},set({_:e},t,s){const{data:n,setupState:o,ctx:r}=e;return os(o,t)?(o[t]=s,!0):n!==$&&R(n,t)?(n[t]=s,!0):R(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:o,propsOptions:r}},i){let c;return!!s[i]||e!==$&&R(e,i)||os(t,i)||(c=r[0])&&R(c,i)||R(n,i)||R(lt,i)||R(o.config.globalProperties,i)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:R(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function on(e){return A(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let gs=!0;function qr(e){const t=$s(e),s=e.proxy,n=e.ctx;gs=!1,t.beforeCreate&&rn(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:c,provide:u,inject:d,created:h,beforeMount:x,mounted:w,beforeUpdate:T,updated:V,activated:S,deactivated:D,beforeDestroy:K,beforeUnmount:re,destroyed:j,unmounted:q,render:ie,renderTracked:F,renderTriggered:be,errorCaptured:de,serverPrefetch:Yt,expose:Fe,inheritAttrs:ke,components:_t,directives:mt,filters:Xt}=t;if(d&&Gr(d,n,null),i)for(const B in i){const H=i[B];P(H)&&(n[B]=H.bind(s))}if(o){const B=o.call(s,s);z(B)&&(e.data=Rs(B))}if(gs=!0,r)for(const B in r){const H=r[B],Le=P(H)?H.bind(s,s):P(H.get)?H.get.bind(s,s):le,bt=!P(H)&&P(H.set)?H.set.bind(s):le,Ne=Oi({get:Le,set:bt});Object.defineProperty(n,B,{enumerable:!0,configurable:!0,get:()=>Ne.value,set:he=>Ne.value=he})}if(c)for(const B in c)to(c[B],n,s,B);if(u){const B=P(u)?u.call(s):u;Reflect.ownKeys(B).forEach(H=>{kr(H,B[H])})}h&&rn(h,e,"c");function Q(B,H){A(H)?H.forEach(Le=>B(Le.bind(s))):H&&B(H.bind(s))}if(Q(jr,x),Q(Hr,w),Q($r,T),Q(Vr,V),Q(Fr,S),Q(Lr,D),Q(Wr,de),Q(Kr,F),Q(Br,be),Q(Ur,re),Q(eo,q),Q(Dr,Yt),A(Fe))if(Fe.length){const B=e.exposed||(e.exposed={});Fe.forEach(H=>{Object.defineProperty(B,H,{get:()=>s[H],set:Le=>s[H]=Le})})}else e.exposed||(e.exposed={});ie&&e.render===le&&(e.render=ie),ke!=null&&(e.inheritAttrs=ke),_t&&(e.components=_t),mt&&(e.directives=mt)}function Gr(e,t,s=le){A(e)&&(e=vs(e));for(const n in e){const o=e[n];let r;z(o)?"default"in o?r=It(o.from||n,o.default,!0):r=It(o.from||n):r=It(o),oe(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[n]=r}}function rn(e,t,s){ae(A(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function to(e,t,s,n){const o=n.includes(".")?Zn(s,n):()=>s[n];if(X(e)){const r=t[e];P(r)&&ns(o,r)}else if(P(e))ns(o,e.bind(s));else if(z(e))if(A(e))e.forEach(r=>to(r,t,s,n));else{const r=P(e.handler)?e.handler.bind(s):t[e.handler];P(r)&&ns(o,r,e)}}function $s(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,c=r.get(t);let u;return c?u=c:!o.length&&!s&&!n?u=t:(u={},o.length&&o.forEach(d=>Lt(u,d,i,!0)),Lt(u,t,i)),z(t)&&r.set(t,u),u}function Lt(e,t,s,n=!1){const{mixins:o,extends:r}=t;r&&Lt(e,r,s,!0),o&&o.forEach(i=>Lt(e,i,s,!0));for(const i in t)if(!(n&&i==="expose")){const c=Yr[i]||s&&s[i];e[i]=c?c(e[i],t[i]):t[i]}return e}const Yr={data:ln,props:cn,emits:cn,methods:nt,computed:nt,beforeCreate:k,created:k,beforeMount:k,mounted:k,beforeUpdate:k,updated:k,beforeDestroy:k,beforeUnmount:k,destroyed:k,unmounted:k,activated:k,deactivated:k,errorCaptured:k,serverPrefetch:k,components:nt,directives:nt,watch:Jr,provide:ln,inject:Xr};function ln(e,t){return t?e?function(){return Y(P(e)?e.call(this,this):e,P(t)?t.call(this,this):t)}:t:e}function Xr(e,t){return nt(vs(e),vs(t))}function vs(e){if(A(e)){const t={};for(let s=0;s1)return s&&P(t)?t.call(n&&n.proxy):t}}const no=Object.create(null),_s=()=>Object.create(no),oo=e=>Object.getPrototypeOf(e)===no;function ei(e,t,s,n=!1){const o={},r=_s();e.propsDefaults=Object.create(null),ro(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);s?e.props=n?o:sr(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function ti(e,t,s,n){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,c=L(o),[u]=e.propsOptions;let d=!1;if((n||i>0)&&!(i&16)){if(i&8){const h=e.vnode.dynamicProps;for(let x=0;x{u=!0;const[w,T]=io(x,t,!0);Y(i,w),T&&c.push(...T)};!s&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!r&&!u)return z(e)&&n.set(e,Ge),Ge;if(A(r))for(let h=0;h-1,T[1]=S<0||V-1||R(T,"default"))&&c.push(x)}}}const d=[i,c];return z(e)&&n.set(e,d),d}function fn(e){return e[0]!=="$"&&!rt(e)}function un(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function an(e,t){return un(e)===un(t)}function dn(e,t){return A(t)?t.findIndex(s=>an(s,e)):P(t)&&an(t,e)?0:-1}const lo=e=>e[0]==="_"||e==="$stable",Vs=e=>A(e)?e.map(ve):[ve(e)],si=(e,t,s)=>{if(t._n)return t;const n=_r((...o)=>Vs(t(...o)),s);return n._c=!1,n},co=(e,t,s)=>{const n=e._ctx;for(const o in e){if(lo(o))continue;const r=e[o];if(P(r))t[o]=si(o,r,n);else if(r!=null){const i=Vs(r);t[o]=()=>i}}},fo=(e,t)=>{const s=Vs(t);e.slots.default=()=>s},ni=(e,t)=>{if(e.vnode.shapeFlag&32){const s=t._;s?(e.slots=L(t),Tn(e.slots,"_",s)):co(t,e.slots=_s())}else e.slots=_s(),t&&fo(e,t)},oi=(e,t,s)=>{const{vnode:n,slots:o}=e;let r=!0,i=$;if(n.shapeFlag&32){const c=t._;c?s&&c===1?r=!1:(Y(o,t),!s&&c===1&&delete o._):(r=!t.$stable,co(t,o)),i=t}else t&&(fo(e,t),i={default:1});if(r)for(const c in o)!lo(c)&&i[c]==null&&delete o[c]};function bs(e,t,s,n,o=!1){if(A(e)){e.forEach((w,T)=>bs(w,t&&(A(t)?t[T]:t),s,n,o));return}if(Tt(n)&&!o)return;const r=n.shapeFlag&4?Gt(n.component)||n.component.proxy:n.el,i=o?null:r,{i:c,r:u}=e,d=t&&t.r,h=c.refs===$?c.refs={}:c.refs,x=c.setupState;if(d!=null&&d!==u&&(X(d)?(h[d]=null,R(x,d)&&(x[d]=null)):oe(d)&&(d.value=null)),P(u))Pe(u,c,12,[i,h]);else{const w=X(u),T=oe(u);if(w||T){const V=()=>{if(e.f){const S=w?R(x,u)?x[u]:h[u]:u.value;o?A(S)&&ws(S,r):A(S)?S.includes(r)||S.push(r):w?(h[u]=[r],R(x,u)&&(x[u]=h[u])):(u.value=[r],e.k&&(h[e.k]=u.value))}else w?(h[u]=i,R(x,u)&&(x[u]=i)):T&&(u.value=i,e.k&&(h[e.k]=i))};i?(V.id=-1,ee(V,s)):V()}}}const ee=Ir;function ri(e){return ii(e)}function ii(e,t){const s=In();s.__VUE__=!0;const{insert:n,remove:o,patchProp:r,createElement:i,createText:c,createComment:u,setText:d,setElementText:h,parentNode:x,nextSibling:w,setScopeId:T=le,insertStaticContent:V}=e,S=(l,f,a,p=null,g=null,m=null,y=void 0,_=null,b=!!f.dynamicChildren)=>{if(l===f)return;l&&!st(l,f)&&(p=xt(l),he(l,g,m,!0),l=null),f.patchFlag===-2&&(b=!1,f.dynamicChildren=null);const{type:v,ref:E,shapeFlag:C}=f;switch(v){case zt:D(l,f,a,p);break;case dt:K(l,f,a,p);break;case Pt:l==null&&re(f,a,p,y);break;case ye:_t(l,f,a,p,g,m,y,_,b);break;default:C&1?ie(l,f,a,p,g,m,y,_,b):C&6?mt(l,f,a,p,g,m,y,_,b):(C&64||C&128)&&v.process(l,f,a,p,g,m,y,_,b,Ke)}E!=null&&g&&bs(E,l&&l.ref,m,f||l,!f)},D=(l,f,a,p)=>{if(l==null)n(f.el=c(f.children),a,p);else{const g=f.el=l.el;f.children!==l.children&&d(g,f.children)}},K=(l,f,a,p)=>{l==null?n(f.el=u(f.children||""),a,p):f.el=l.el},re=(l,f,a,p)=>{[l.el,l.anchor]=V(l.children,f,a,p,l.el,l.anchor)},j=({el:l,anchor:f},a,p)=>{let g;for(;l&&l!==f;)g=w(l),n(l,a,p),l=g;n(f,a,p)},q=({el:l,anchor:f})=>{let a;for(;l&&l!==f;)a=w(l),o(l),l=a;o(f)},ie=(l,f,a,p,g,m,y,_,b)=>{f.type==="svg"?y="svg":f.type==="math"&&(y="mathml"),l==null?F(f,a,p,g,m,y,_,b):Yt(l,f,g,m,y,_,b)},F=(l,f,a,p,g,m,y,_)=>{let b,v;const{props:E,shapeFlag:C,transition:O,dirs:I}=l;if(b=l.el=i(l.type,m,E&&E.is,E),C&8?h(b,l.children):C&16&&de(l.children,b,null,p,g,rs(l,m),y,_),I&&je(l,null,p,"created"),be(b,l,l.scopeId,y,p),E){for(const N in E)N!=="value"&&!rt(N)&&r(b,N,null,E[N],m,l.children,p,g,xe);"value"in E&&r(b,"value",null,E.value,m),(v=E.onVnodeBeforeMount)&&ge(v,p,l)}I&&je(l,null,p,"beforeMount");const M=li(g,O);M&&O.beforeEnter(b),n(b,f,a),((v=E&&E.onVnodeMounted)||M||I)&&ee(()=>{v&&ge(v,p,l),M&&O.enter(b),I&&je(l,null,p,"mounted")},g)},be=(l,f,a,p,g)=>{if(a&&T(l,a),p)for(let m=0;m {for(let v=b;v{const _=f.el=l.el;let{patchFlag:b,dynamicChildren:v,dirs:E}=f;b|=l.patchFlag&16;const C=l.props||$,O=f.props||$;let I;if(a&&He(a,!1),(I=O.onVnodeBeforeUpdate)&&ge(I,a,f,l),E&&je(f,l,a,"beforeUpdate"),a&&He(a,!0),v?Fe(l.dynamicChildren,v,_,a,p,rs(f,g),m):y||H(l,f,_,null,a,p,rs(f,g),m,!1),b>0){if(b&16)ke(_,f,C,O,a,p,g);else if(b&2&&C.class!==O.class&&r(_,"class",null,O.class,g),b&4&&r(_,"style",C.style,O.style,g),b&8){const M=f.dynamicProps;for(let N=0;N{I&&ge(I,a,f,l),E&&je(f,l,a,"updated")},p)},Fe=(l,f,a,p,g,m,y)=>{for(let _=0;_{if(a!==p){if(a!==$)for(const _ in a)!rt(_)&&!(_ in p)&&r(l,_,a[_],null,y,f.children,g,m,xe);for(const _ in p){if(rt(_))continue;const b=p[_],v=a[_];b!==v&&_!=="value"&&r(l,_,v,b,y,f.children,g,m,xe)}"value"in p&&r(l,"value",a.value,p.value,y)}},_t=(l,f,a,p,g,m,y,_,b)=>{const v=f.el=l?l.el:c(""),E=f.anchor=l?l.anchor:c("");let{patchFlag:C,dynamicChildren:O,slotScopeIds:I}=f;I&&(_=_?_.concat(I):I),l==null?(n(v,a,p),n(E,a,p),de(f.children||[],a,E,g,m,y,_,b)):C>0&&C&64&&O&&l.dynamicChildren?(Fe(l.dynamicChildren,O,a,g,m,y,_),(f.key!=null||g&&f===g.subTree)&&uo(l,f,!0)):H(l,f,a,E,g,m,y,_,b)},mt=(l,f,a,p,g,m,y,_,b)=>{f.slotScopeIds=_,l==null?f.shapeFlag&512?g.ctx.activate(f,a,p,y,b):Xt(f,a,p,g,m,y,b):Ds(l,f,b)},Xt=(l,f,a,p,g,m,y)=>{const _=l.component=mi(l,p,g);if(Qn(l)&&(_.ctx.renderer=Ke),bi(_),_.asyncDep){if(g&&g.registerDep(_,Q),!l.el){const b=_.subTree=Ae(dt);K(null,b,f,a)}}else Q(_,l,f,a,g,m,y)},Ds=(l,f,a)=>{const p=f.component=l.component;if(xr(l,f,a))if(p.asyncDep&&!p.asyncResolved){B(p,f,a);return}else p.next=f,ar(p.update),p.effect.dirty=!0,p.update();else f.el=l.el,p.vnode=f},Q=(l,f,a,p,g,m,y)=>{const _=()=>{if(l.isMounted){let{next:E,bu:C,u:O,parent:I,vnode:M}=l;{const We=ao(l);if(We){E&&(E.el=M.el,B(l,E,y)),We.asyncDep.then(()=>{l.isUnmounted||_()});return}}let N=E,U;He(l,!1),E?(E.el=M.el,B(l,E,y)):E=M,C&&es(C),(U=E.props&&E.props.onVnodeBeforeUpdate)&&ge(U,I,E,M),He(l,!0);const G=ss(l),ce=l.subTree;l.subTree=G,S(ce,G,x(ce.el),xt(ce),l,g,m),E.el=G.el,N===null&&yr(l,G.el),O&&ee(O,g),(U=E.props&&E.props.onVnodeUpdated)&&ee(()=>ge(U,I,E,M),g)}else{let E;const{el:C,props:O}=f,{bm:I,m:M,parent:N}=l,U=Tt(f);if(He(l,!1),I&&es(I),!U&&(E=O&&O.onVnodeBeforeMount)&&ge(E,N,f),He(l,!0),C&&Qt){const G=()=>{l.subTree=ss(l),Qt(C,l.subTree,l,g,null)};U?f.type.__asyncLoader().then(()=>!l.isUnmounted&&G()):G()}else{const G=l.subTree=ss(l);S(null,G,a,p,l,g,m),f.el=G.el}if(M&&ee(M,g),!U&&(E=O&&O.onVnodeMounted)){const G=f;ee(()=>ge(E,N,G),g)}(f.shapeFlag&256||N&&Tt(N.vnode)&&N.vnode.shapeFlag&256)&&l.a&&ee(l.a,g),l.isMounted=!0,f=a=p=null}},b=l.effect=new Ts(_,le,()=>Hs(v),l.scope),v=l.update=()=>{b.dirty&&b.run()};v.id=l.uid,He(l,!0),v()},B=(l,f,a)=>{f.component=l;const p=l.vnode.props;l.vnode=f,l.next=null,ti(l,f.props,p,a),oi(l,f.children,a),Me(),tn(l),Re()},H=(l,f,a,p,g,m,y,_,b=!1)=>{const v=l&&l.children,E=l?l.shapeFlag:0,C=f.children,{patchFlag:O,shapeFlag:I}=f;if(O>0){if(O&128){bt(v,C,a,p,g,m,y,_,b);return}else if(O&256){Le(v,C,a,p,g,m,y,_,b);return}}I&8?(E&16&&xe(v,g,m),C!==v&&h(a,C)):E&16?I&16?bt(v,C,a,p,g,m,y,_,b):xe(v,g,m,!0):(E&8&&h(a,""),I&16&&de(C,a,p,g,m,y,_,b))},Le=(l,f,a,p,g,m,y,_,b)=>{l=l||Ge,f=f||Ge;const v=l.length,E=f.length,C=Math.min(v,E);let O;for(O=0;OE?xe(l,g,m,!0,!1,C):de(f,a,p,g,m,y,_,b,C)},bt=(l,f,a,p,g,m,y,_,b)=>{let v=0;const E=f.length;let C=l.length-1,O=E-1;for(;v<=C&&v<=O;){const I=l[v],M=f[v]=b?Ce(f[v]):ve(f[v]);if(st(I,M))S(I,M,a,null,g,m,y,_,b);else break;v++}for(;v<=C&&v<=O;){const I=l[C],M=f[O]=b?Ce(f[O]):ve(f[O]);if(st(I,M))S(I,M,a,null,g,m,y,_,b);else break;C--,O--}if(v>C){if(v<=O){const I=O+1,M=IO)for(;v<=C;)he(l[v],g,m,!0),v++;else{const I=v,M=v,N=new Map;for(v=M;v<=O;v++){const ne=f[v]=b?Ce(f[v]):ve(f[v]);ne.key!=null&&N.set(ne.key,v)}let U,G=0;const ce=O-M+1;let We=!1,Ws=0;const et=new Array(ce);for(v=0;v=ce){he(ne,g,m,!0);continue}let pe;if(ne.key!=null)pe=N.get(ne.key);else for(U=M;U<=O;U++)if(et[U-M]===0&&st(ne,f[U])){pe=U;break}pe===void 0?he(ne,g,m,!0):(et[pe-M]=v+1,pe>=Ws?Ws=pe:We=!0,S(ne,f[pe],a,null,g,m,y,_,b),G++)}const zs=We?ci(et):Ge;for(U=zs.length-1,v=ce-1;v>=0;v--){const ne=M+v,pe=f[ne],qs=ne+1{const{el:m,type:y,transition:_,children:b,shapeFlag:v}=l;if(v&6){Ne(l.component.subTree,f,a,p);return}if(v&128){l.suspense.move(f,a,p);return}if(v&64){y.move(l,f,a,Ke);return}if(y===ye){n(m,f,a);for(let C=0;C_.enter(m),g);else{const{leave:C,delayLeave:O,afterLeave:I}=_,M=()=>n(m,f,a),N=()=>{C(m,()=>{M(),I&&I()})};O?O(m,M,N):N()}else n(m,f,a)},he=(l,f,a,p=!1,g=!1)=>{const{type:m,props:y,ref:_,children:b,dynamicChildren:v,shapeFlag:E,patchFlag:C,dirs:O}=l;if(_!=null&&bs(_,null,a,l,!0),E&256){f.ctx.deactivate(l);return}const I=E&1&&O,M=!Tt(l);let N;if(M&&(N=y&&y.onVnodeBeforeUnmount)&&ge(N,f,l),E&6)mo(l.component,a,p);else{if(E&128){l.suspense.unmount(a,p);return}I&&je(l,null,f,"beforeUnmount"),E&64?l.type.remove(l,f,a,g,Ke,p):v&&(m!==ye||C>0&&C&64)?xe(v,f,a,!1,!0):(m===ye&&C&384||!g&&E&16)&&xe(b,f,a),p&&Bs(l)}(M&&(N=y&&y.onVnodeUnmounted)||I)&&ee(()=>{N&&ge(N,f,l),I&&je(l,null,f,"unmounted")},a)},Bs=l=>{const{type:f,el:a,anchor:p,transition:g}=l;if(f===ye){_o(a,p);return}if(f===Pt){q(l);return}const m=()=>{o(a),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(l.shapeFlag&1&&g&&!g.persisted){const{leave:y,delayLeave:_}=g,b=()=>y(a,m);_?_(l.el,m,b):b()}else m()},_o=(l,f)=>{let a;for(;l!==f;)a=w(l),o(l),l=a;o(f)},mo=(l,f,a)=>{const{bum:p,scope:g,update:m,subTree:y,um:_}=l;p&&es(p),g.stop(),m&&(m.active=!1,he(y,l,f,a)),_&&ee(_,f),ee(()=>{l.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&l.asyncDep&&!l.asyncResolved&&l.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},xe=(l,f,a,p=!1,g=!1,m=0)=>{for(let y=m;yl.shapeFlag&6?xt(l.component.subTree):l.shapeFlag&128?l.suspense.next():w(l.anchor||l.el);let Jt=!1;const Ks=(l,f,a)=>{l==null?f._vnode&&he(f._vnode,null,null,!0):S(f._vnode||null,l,f,null,null,null,a),Jt||(Jt=!0,tn(),Gn(),Jt=!1),f._vnode=l},Ke={p:S,um:he,m:Ne,r:Bs,mt:Xt,mc:de,pc:H,pbc:Fe,n:xt,o:e};let Zt,Qt;return t&&([Zt,Qt]=t(Ke)),{render:Ks,hydrate:Zt,createApp:Qr(Ks,Zt)}}function rs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function He({effect:e,update:t},s){e.allowRecurse=t.allowRecurse=s}function li(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function uo(e,t,s=!1){const n=e.children,o=t.children;if(A(n)&&A(o))for(let r=0;r>1,e[s[c]]0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,i=s[r-1];r-- >0;)s[r]=i,i=t[i];return s}function ao(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ao(t)}const fi=e=>e.__isTeleport,ye=Symbol.for("v-fgt"),zt=Symbol.for("v-txt"),dt=Symbol.for("v-cmt"),Pt=Symbol.for("v-stc"),ft=[];let ue=null;function ze(e=!1){ft.push(ue=e?null:[])}function ui(){ft.pop(),ue=ft[ft.length-1]||null}let ht=1;function hn(e){ht+=e}function ai(e){return e.dynamicChildren=ht>0?ue||Ge:null,ui(),ht>0&&ue&&ue.push(e),e}function qe(e,t,s,n,o,r){return ai(W(e,t,s,n,o,r,!0))}function di(e){return e?e.__v_isVNode===!0:!1}function st(e,t){return e.type===t.type&&e.key===t.key}const ho=({key:e})=>e??null,At=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?X(e)||oe(e)||P(e)?{i:te,r:e,k:t,f:!!s}:e:null);function W(e,t=null,s=null,n=0,o=null,r=e===ye?0:1,i=!1,c=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ho(t),ref:t&&At(t),scopeId:Kt,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:te};return c?(Us(u,s),r&128&&e.normalize(u)):s&&(u.shapeFlag|=X(s)?8:16),ht>0&&!i&&ue&&(u.patchFlag>0||r&6)&&u.patchFlag!==32&&ue.push(u),u}const Ae=hi;function hi(e,t=null,s=null,n=0,o=null,r=!1){if((!e||e===Sr)&&(e=dt),di(e)){const c=Xe(e,t,!0);return s&&Us(c,s),ht>0&&!r&&ue&&(c.shapeFlag&6?ue[ue.indexOf(e)]=c:ue.push(c)),c.patchFlag|=-2,c}if(Si(e)&&(e=e.__vccOpts),t){t=pi(t);let{class:c,style:u}=t;c&&!X(c)&&(t.class=Cs(c)),z(u)&&(Bn(u)&&!A(u)&&(u=Y({},u)),t.style=Os(u))}const i=X(e)?1:Tr(e)?128:fi(e)?64:z(e)?4:P(e)?2:0;return W(e,t,s,n,o,i,r,!0)}function pi(e){return e?Bn(e)||oo(e)?Y({},e):e:null}function Xe(e,t,s=!1){const{props:n,ref:o,patchFlag:r,children:i}=e,c=t?gi(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&ho(c),ref:t&&t.ref?s&&o?A(o)?o.concat(At(t)):[o,At(t)]:At(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xe(e.ssContent),ssFallback:e.ssFallback&&Xe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ze(e=" ",t=0){return Ae(zt,null,e,t)}function gt(e,t){const s=Ae(Pt,null,e);return s.staticCount=t,s}function ve(e){return e==null||typeof e=="boolean"?Ae(dt):A(e)?Ae(ye,null,e.slice()):typeof e=="object"?Ce(e):Ae(zt,null,String(e))}function Ce(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xe(e)}function Us(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(A(t))s=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),Us(e,o()),o._c&&(o._d=!0));return}else{s=32;const o=t._;!o&&!oo(t)?t._ctx=te:o===3&&te&&(te.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else P(t)?(t={default:t,_ctx:te},s=32):(t=String(t),n&64?(s=16,t=[Ze(t)]):s=8);e.children=t,e.shapeFlag|=s}function gi(...e){const t={};for(let s=0;s{let o;return(o=e[s])||(o=e[s]=[]),o.push(n),r=>{o.length>1?o.forEach(i=>i(r)):o[0](r)}};Nt=t("__VUE_INSTANCE_SETTERS__",s=>Z=s),xs=t("__VUE_SSR_SETTERS__",s=>qt=s)}const vt=e=>{const t=Z;return Nt(e),e.scope.on(),()=>{e.scope.off(),Nt(t)}},pn=()=>{Z&&Z.scope.off(),Nt(null)};function po(e){return e.vnode.shapeFlag&4}let qt=!1;function bi(e,t=!1){t&&xs(t);const{props:s,children:n}=e.vnode,o=po(e);ei(e,s,o,t),ni(e,n);const r=o?xi(e,t):void 0;return t&&xs(!1),r}function xi(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,zr);const{setup:n}=s;if(n){const o=e.setupContext=n.length>1?Ei(e):null,r=vt(e);Me();const i=Pe(n,e,0,[e.props,o]);if(Re(),r(),Cn(i)){if(i.then(pn,pn),t)return i.then(c=>{gn(e,c,t)}).catch(c=>{Dt(c,e,0)});e.asyncDep=i}else gn(e,i,t)}else go(e,t)}function gn(e,t,s){P(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:z(t)&&(e.setupState=Wn(t)),go(e,s)}let vn;function go(e,t,s){const n=e.type;if(!e.render){if(!t&&vn&&!n.render){const o=n.template||$s(e).template;if(o){const{isCustomElement:r,compilerOptions:i}=e.appContext.config,{delimiters:c,compilerOptions:u}=n,d=Y(Y({isCustomElement:r,delimiters:c},i),u);n.render=vn(o,d)}}e.render=n.render||le}{const o=vt(e);Me();try{qr(e)}finally{Re(),o()}}}const yi={get(e,t){return se(e,"get",""),e[t]}};function Ei(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,yi),slots:e.slots,emit:e.emit,expose:t}}function Gt(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Wn(nr(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in lt)return lt[s](e)},has(t,s){return s in t||s in lt}}))}function wi(e,t=!0){return P(e)?e.displayName||e.name:e.name||t&&e.__name}function Si(e){return P(e)&&"__vccOpts"in e}const Oi=(e,t)=>or(e,t,qt),Ci="3.4.23";/**
14 | * @vue/runtime-dom v3.4.23
15 | * (c) 2018-present Yuxi (Evan) You and Vue contributors
16 | * @license MIT
17 | **/const Ti="http://www.w3.org/2000/svg",Ii="http://www.w3.org/1998/Math/MathML",Te=typeof document<"u"?document:null,_n=Te&&Te.createElement("template"),Pi={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const o=t==="svg"?Te.createElementNS(Ti,e):t==="mathml"?Te.createElementNS(Ii,e):Te.createElement(e,s?{is:s}:void 0);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>Te.createTextNode(e),createComment:e=>Te.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Te.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,o,r){const i=s?s.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),s),!(o===r||!(o=o.nextSibling)););else{_n.innerHTML=n==="svg"?`${e} `:n==="mathml"?`${e} `:e;const c=_n.content;if(n==="svg"||n==="mathml"){const u=c.firstChild;for(;u.firstChild;)c.appendChild(u.firstChild);c.removeChild(u)}t.insertBefore(c,s)}return[i?i.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Ai=Symbol("_vtc");function Mi(e,t,s){const n=e[Ai];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const mn=Symbol("_vod"),Ri=Symbol("_vsh"),Fi=Symbol(""),Li=/(^|;)\s*display\s*:/;function Ni(e,t,s){const n=e.style,o=X(s);let r=!1;if(s&&!o){if(t)if(X(t))for(const i of t.split(";")){const c=i.slice(0,i.indexOf(":")).trim();s[c]==null&&Mt(n,c,"")}else for(const i in t)s[i]==null&&Mt(n,i,"");for(const i in s)i==="display"&&(r=!0),Mt(n,i,s[i])}else if(o){if(t!==s){const i=n[Fi];i&&(s+=";"+i),n.cssText=s,r=Li.test(s)}}else t&&e.removeAttribute("style");mn in e&&(e[mn]=r?n.display:"",e[Ri]&&(n.display="none"))}const bn=/\s*!important$/;function Mt(e,t,s){if(A(s))s.forEach(n=>Mt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=ji(e,t);bn.test(s)?e.setProperty(Je(n),s.replace(bn,""),"important"):e[n]=s}}const xn=["Webkit","Moz","ms"],is={};function ji(e,t){const s=is[t];if(s)return s;let n=me(t);if(n!=="filter"&&n in e)return is[t]=n;n=Vt(n);for(let o=0;ols||(Ki.then(()=>ls=0),ls=Date.now());function zi(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;ae(qi(n,s.value),t,5,[n])};return s.value=e,s.attached=Wi(),s}function qi(e,t){if(A(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const Sn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Gi=(e,t,s,n,o,r,i,c,u)=>{const d=o==="svg";t==="class"?Mi(e,n,d):t==="style"?Ni(e,s,n):jt(t)?Es(t)||Di(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Yi(e,t,n,d))?$i(e,t,n,r,i,c,u):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Hi(e,t,n,d))};function Yi(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Sn(t)&&P(s));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 o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Sn(t)&&X(s)?!1:t in e}const Xi=Y({patchProp:Gi},Pi);let On;function Ji(){return On||(On=ri(Xi))}const Zi=(...e)=>{const t=Ji().createApp(...e),{mount:s}=t;return t.mount=n=>{const o=ki(n);if(!o)return;const r=t._component;!P(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.innerHTML="";const i=s(o,!1,Qi(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t};function Qi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ki(e){return X(e)?document.querySelector(e):e}const el="drag-scroller-disable",tl=(()=>{const e=new WeakMap;return{mounted(t,s){let n=!1;const{onlyX:o,onlyY:r,disablechild:i}=s.modifiers,c=s.value??{},u=new Event("scrollStart",{bubbles:!0}),d=new Event("scrollMoving",{bubbles:!0}),h=new Event("scrollEnd",{bubbles:!0});c.hideScrollbar===!0&&(t.style.overflow="hidden");const x=S=>{if(i)return S===t;for(;S&&S.parentNode;){if(S&&S!=null&&S.hasAttribute(el))return!1;if(S===t)return!0;S=S.parentNode}return!1},w=S=>{n=x(S.target),t.dispatchEvent(u),n&&c!=null&&c.startScroll&&typeof(c==null?void 0:c.startScroll)=="function"&&c.startScroll(S)},T=S=>{t.dispatchEvent(h),n&&c!=null&&c.endScroll&&typeof(c==null?void 0:c.endScroll)=="function"&&c.endScroll(S),n=!1},V=S=>{if(!n)return!1;t.dispatchEvent(d),c!=null&&c.onScrolling&&typeof(c==null?void 0:c.onScrolling)=="function"&&c.onScrolling(S),S.stopPropagation&&S.stopPropagation(),S.preventDefault&&S.preventDefault(),S.cancelBubble=!0,S.returnValue=!1;const D=(c==null?void 0:c.speed)||1,K=c.reverseDirection?S.movementX*D:-S.movementX*D,re=c.reverseDirection?S.movementY*D:-S.movementY*D;o?t.scrollLeft+=K:(r||(t.scrollLeft+=K),t.scrollTop+=re)};e.set(t,{dragStart:w,dragEnd:T,drag:V}),t.addEventListener("pointerdown",w),addEventListener("pointerup",T),addEventListener("pointermove",V)},unmounted(t){const{dragStart:s,dragEnd:n,drag:o}=e.get(t);t.removeEventListener("pointerdown",s),removeEventListener("pointerup",n),removeEventListener("pointermove",o)}}})(),sl={install(e){e.directive("drag-scroller",tl)}},Qe=e=>(gr("data-v-19958249"),e=e(),vr(),e),nl=Qe(()=>W("a",{href:"https://github.com/huynamboz/vue-drag-scroller/blob/dev/example/App.vue"},[W("code",null,"https://github.com/huynamboz/vue-drag-scroller/blob/dev/example/App.vue")],-1)),ol={class:"container"},rl={class:"container--normal"},il=Qe(()=>W("p",null,[Ze("Normal option: "),W("code",null,"v-drag-scroller")],-1)),ll={class:"wrapper"},cl=gt('',1),fl=[cl],ul={class:"container--normal"},al=Qe(()=>W("p",null,[Ze("Normal option: "),W("code",null,"v-drag-scroller.disablechild")],-1)),dl={class:"wrapper"},hl=gt('',1),pl=[hl],gl={class:"container--normal"},vl=Qe(()=>W("p",null,[Ze("Only scroll horizontal: "),W("code",null,"v-drag-scroller.onlyX")],-1)),_l={class:"wrapper only"},ml=gt('',3),bl=[ml],xl={class:"container--normal"},yl=Qe(()=>W("p",null,[Ze("Only scroll vertical: "),W("code",null,"v-drag-scroller.onlyX")],-1)),El={class:"wrapper only"},wl=gt('',3),Sl=[wl],Ol={class:"container--normal"},Cl=Qe(()=>W("p",null,[Ze("Only scroll vertical: "),W("code",null,"v-drag-scroller.onlyX")],-1)),Tl=gt('',3),Il=[Tl],Pl=Rr({__name:"App",setup(e){const o={startScroll:r=>{console.log("working",r)},endScroll:r=>{console.log("end scroll",r)},onScrolling:r=>{console.log("scrolling",r)},speed:1,reverseDirection:!0};return(r,i)=>{const c=Or("drag-scroller");return ze(),qe("body",null,[nl,W("div",ol,[W("div",rl,[il,tt((ze(),qe("div",ll,fl)),[[c,o]])]),W("div",ul,[al,tt((ze(),qe("div",dl,pl)),[[c,o,void 0,{disablechild:!0}]])]),W("div",gl,[vl,tt((ze(),qe("div",_l,bl)),[[c,o,void 0,{onlyX:!0}]])]),W("div",xl,[yl,tt((ze(),qe("div",El,Sl)),[[c,{...o,hideScrollbar:!0},void 0,{onlyY:!0}]])]),W("div",Ol,[Cl,tt((ze(),qe("div",{"on:scrollStart":i[0]||(i[0]=u=>console.log("Start custom",u)),"on:scrollMoving":i[1]||(i[1]=u=>console.log("Moving custom",u)),"on:scrollEnd":i[2]||(i[2]=u=>console.log("End custom",u)),class:"wrapper only"},Il,32)),[[c,{},void 0,{onlyY:!0}]])])])])}}}),Al=(e,t)=>{const s=e.__vccOpts||e;for(const[n,o]of t)s[n]=o;return s},Ml=Al(Pl,[["__scopeId","data-v-19958249"]]),vo=Zi(Ml);vo.use(sl);vo.mount("#app");
18 |
--------------------------------------------------------------------------------
/server/assets/index-lU1t3W8O.css:
--------------------------------------------------------------------------------
1 | :root{--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, .29);--vt-c-divider-light-2: rgba(60, 60, 60, .12);--vt-c-divider-dark-1: rgba(84, 84, 84, .65);--vt-c-divider-dark-2: rgba(84, 84, 84, .48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, .66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, .64)}:root{--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--section-gap: 160px}@media (prefers-color-scheme: dark){:root{--color-background: var(--vt-c-black);--color-background-soft: var(--vt-c-black-soft);--color-background-mute: var(--vt-c-black-mute);--color-border: var(--vt-c-divider-dark-2);--color-border-hover: var(--vt-c-divider-dark-1);--color-heading: var(--vt-c-text-dark-1);--color-text: var(--vt-c-text-dark-2)}}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100vh;color:var(--color-text);background:var(--color-background);transition:color .5s,background-color .5s;line-height:1.6;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a,.green{text-decoration:none;color:#00bd7e;transition:.4s;padding:3px}@media (hover: hover){a:hover{background-color:#00bd7e33}}body[data-v-19958249]{width:100%}.container[data-v-19958249]{display:flex;justify-content:center;gap:60px;flex-wrap:wrap;width:100%;flex-direction:column;align-items:center}.wrapper[data-v-19958249]{border-radius:10px;overflow:hidden;width:300px;background-color:#b8b8b8;overflow:auto;height:300px;white-space:nowrap;display:flex;align-items:center}.wrapper.only[data-v-19958249]{flex-direction:column;gap:20px;padding:40px}.wrapper.only .content[data-v-19958249]{height:100px;min-height:100px}.content[data-v-19958249]{height:70%;width:600px;background-color:brown;display:flex;align-items:center}.box[data-v-19958249]{display:inline-block;width:100px;height:100px;background-color:#e22727;margin:10px}.container--normal[data-v-19958249]{display:flex;gap:20px}
2 |
--------------------------------------------------------------------------------
/server/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huynamboz/vue-drag-scroller/32da26345eb7461078774e958591bdea3e35b051/server/favicon.ico
--------------------------------------------------------------------------------
/server/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import type { App, DirectiveBinding } from 'vue'
2 | const CHILD_DISABLE = 'drag-scroller-disable'
3 | const CHILD_ENABLE = 'drag-scroller-enable'
4 | const HIDE_SCROLLBAR = 'hideScrollbar'
5 | interface ICustomBinding extends DirectiveBinding {
6 | value: {
7 | startScroll?: (e: MouseEvent) => void
8 | endScroll?: (e: MouseEvent) => void
9 | onScrolling?: (e: MouseEvent) => void
10 | speed?: number
11 | hideScrollbar?: boolean
12 | reverseDirection?: boolean
13 | }
14 | modifiers: {
15 | disablechild?: boolean
16 | onlyX?: boolean
17 | onlyY?: boolean
18 | }
19 | }
20 |
21 | const statefullDirective = (() => {
22 | const state = new WeakMap()
23 | return {
24 | mounted(elem: HTMLElement, binding: ICustomBinding) {
25 | let isDrag = false
26 | const { onlyX, onlyY, disablechild } = binding.modifiers
27 |
28 |
29 | const OptionBinding = binding.value ?? {}
30 |
31 | // custom event
32 | const eventStart = new Event('scrollStart', { bubbles: true })
33 | const eventMoving = new Event('scrollMoving', { bubbles: true })
34 | const eventEnd = new Event('scrollEnd', { bubbles: true })
35 |
36 | // hide scrollbar
37 | if (OptionBinding.hideScrollbar === true) {
38 | elem.style.overflow = 'hidden'
39 | }
40 |
41 | const checkTag = (el: HTMLElement): boolean => {
42 | if (disablechild) {
43 | return el === elem
44 | }
45 |
46 | // check if element is child of elem and disabled
47 | while (el && el.parentNode) {
48 | if (el && el?.hasAttribute(CHILD_DISABLE)) {
49 | return false
50 | } else if (el === elem) {
51 | return true
52 | }
53 | el = el.parentNode as HTMLElement
54 | }
55 | return false
56 | }
57 |
58 | const dragStart = (e: MouseEvent): void => {
59 | isDrag = checkTag(e.target as HTMLElement)
60 | elem.dispatchEvent(eventStart)
61 | if (
62 | isDrag &&
63 | OptionBinding?.startScroll &&
64 | typeof OptionBinding?.startScroll === 'function'
65 | ) {
66 | OptionBinding.startScroll(e)
67 | }
68 | }
69 |
70 | const dragEnd = (e: MouseEvent): void => {
71 | elem.dispatchEvent(eventEnd)
72 | if (isDrag && OptionBinding?.endScroll && typeof OptionBinding?.endScroll === 'function') {
73 | OptionBinding.endScroll(e)
74 | }
75 | isDrag = false
76 | }
77 |
78 | const drag = (ev: MouseEvent): any => {
79 | if (!isDrag) return false
80 |
81 | elem.dispatchEvent(eventMoving)
82 | if (OptionBinding?.onScrolling && typeof OptionBinding?.onScrolling === 'function') {
83 | OptionBinding.onScrolling(ev)
84 | }
85 |
86 |
87 | const speed = OptionBinding?.speed || 1
88 | const scrollLeftDelta = OptionBinding.reverseDirection ? ev.movementX * speed : -ev.movementX * speed;
89 | const scrollTopDelta = OptionBinding.reverseDirection ? ev.movementY * speed : -ev.movementY * speed;
90 |
91 | if (onlyX) {
92 | elem.scrollLeft += scrollLeftDelta;
93 | } else if (onlyY) {
94 | elem.scrollTop += scrollTopDelta;
95 | } else {
96 | elem.scrollLeft += scrollLeftDelta;
97 | elem.scrollTop += scrollTopDelta;
98 | }
99 |
100 | preventSelection(ev)
101 | return false
102 | }
103 |
104 | function preventSelection(ev: DragEvent | MouseEvent) {
105 | // prevent text selection when mouse move
106 | // if element is image then prevent default
107 | if (ev?.target instanceof HTMLImageElement) {
108 | if (ev.preventDefault) ev.preventDefault()
109 | }
110 | window.getSelection()?.removeAllRanges();
111 | }
112 |
113 | state.set(elem, { dragStart, dragEnd, drag, preventSelection })
114 | elem.addEventListener('pointerdown', dragStart)
115 | elem.addEventListener('dragstart', preventSelection)
116 | addEventListener('pointerup', dragEnd)
117 | addEventListener('pointermove', drag)
118 | },
119 | unmounted(elem: HTMLElement) {
120 | const { dragStart, dragEnd, drag, preventSelection } = state.get(elem)
121 | elem.removeEventListener('pointerdown', dragStart)
122 | elem.removeEventListener('dragstart', preventSelection)
123 | removeEventListener('pointerup', dragEnd)
124 | removeEventListener('pointermove', drag)
125 | }
126 | }
127 | })()
128 |
129 | // export directive as plugin vue
130 | const VueDragScroller = {
131 | install(app: App) {
132 | app.directive('drag-scroller', statefullDirective)
133 | }
134 | }
135 | export { statefullDirective as dragScroller }
136 | export { statefullDirective as vDragScroller }
137 | export default VueDragScroller
138 |
--------------------------------------------------------------------------------
/src/types.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'vue-drag-scroller' {
2 | import VueDragScroller from './index.ts'
3 | import { dragScroller } from './index.ts'
4 |
5 | export { dragScroller }
6 | export default VueDragScroller
7 | }
8 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "moduleResolution": "Node",
7 | "strict": true,
8 | "jsx": "preserve",
9 | "sourceMap": true,
10 | "resolveJsonModule": true,
11 | "isolatedModules": true,
12 | "esModuleInterop": true,
13 | "lib": ["ESNext", "DOM"],
14 | "skipLibCheck": true
15 | },
16 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
17 | "references": [{ "path": "./tsconfig.node.json" }]
18 | }
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "ESNext",
5 | "moduleResolution": "Node",
6 | "allowSyntheticDefaultImports": true
7 | },
8 | "include": ["vite.config.ts"]
9 | }
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'node:url'
2 |
3 | import { defineConfig } from 'vite'
4 | import vue from '@vitejs/plugin-vue'
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig(({ mode }) => {
8 | const baseConfig = {
9 | resolve: {
10 | alias: {
11 | '@': fileURLToPath(new URL('./src', import.meta.url))
12 | }
13 | }
14 | }
15 | if (mode === 'lib') {
16 | return {
17 | ...baseConfig,
18 | build: {
19 | lib: {
20 | entry: fileURLToPath(new URL('./src/index.ts', import.meta.url)),
21 | name: 'vue-drag-scroller',
22 | fileName: (format) => `vue-drag-scroller.${format}.js`,
23 | formats: ['es', 'cjs'],
24 | },
25 | },
26 | }
27 | } else if (mode === 'app') {
28 | return {
29 | ...baseConfig,
30 | base: '/vue-drag-scroller/',
31 | plugins: [
32 | vue(),
33 | ],
34 | build: {
35 | outDir: 'server'
36 | },
37 | rollupOptions: {
38 | external: ['vue'],
39 | output: {
40 | globals: {
41 | vue: 'Vue'
42 | }
43 | }
44 | }
45 | }
46 | }
47 | })
48 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/helper-string-parser@^7.25.7":
6 | version "7.25.7"
7 | resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz"
8 | integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==
9 |
10 | "@babel/helper-validator-identifier@^7.25.7":
11 | version "7.25.7"
12 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz"
13 | integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==
14 |
15 | "@babel/parser@^7.25.3":
16 | version "7.25.8"
17 | resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz"
18 | integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==
19 | dependencies:
20 | "@babel/types" "^7.25.8"
21 |
22 | "@babel/types@^7.25.8":
23 | version "7.25.8"
24 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz"
25 | integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==
26 | dependencies:
27 | "@babel/helper-string-parser" "^7.25.7"
28 | "@babel/helper-validator-identifier" "^7.25.7"
29 | to-fast-properties "^2.0.0"
30 |
31 | "@esbuild/darwin-x64@0.21.5":
32 | version "0.21.5"
33 | resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz"
34 | integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
35 |
36 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
37 | version "4.4.0"
38 | resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
39 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
40 | dependencies:
41 | eslint-visitor-keys "^3.3.0"
42 |
43 | "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
44 | version "4.11.1"
45 | resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz"
46 | integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
47 |
48 | "@eslint/eslintrc@^2.1.4":
49 | version "2.1.4"
50 | resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz"
51 | integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
52 | dependencies:
53 | ajv "^6.12.4"
54 | debug "^4.3.2"
55 | espree "^9.6.0"
56 | globals "^13.19.0"
57 | ignore "^5.2.0"
58 | import-fresh "^3.2.1"
59 | js-yaml "^4.1.0"
60 | minimatch "^3.1.2"
61 | strip-json-comments "^3.1.1"
62 |
63 | "@eslint/js@8.57.1":
64 | version "8.57.1"
65 | resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz"
66 | integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
67 |
68 | "@humanwhocodes/config-array@^0.13.0":
69 | version "0.13.0"
70 | resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz"
71 | integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==
72 | dependencies:
73 | "@humanwhocodes/object-schema" "^2.0.3"
74 | debug "^4.3.1"
75 | minimatch "^3.0.5"
76 |
77 | "@humanwhocodes/module-importer@^1.0.1":
78 | version "1.0.1"
79 | resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
80 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
81 |
82 | "@humanwhocodes/object-schema@^2.0.3":
83 | version "2.0.3"
84 | resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz"
85 | integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
86 |
87 | "@jridgewell/sourcemap-codec@^1.5.0":
88 | version "1.5.0"
89 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
90 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
91 |
92 | "@nodelib/fs.scandir@2.1.5":
93 | version "2.1.5"
94 | resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
95 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
96 | dependencies:
97 | "@nodelib/fs.stat" "2.0.5"
98 | run-parallel "^1.1.9"
99 |
100 | "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
101 | version "2.0.5"
102 | resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
103 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
104 |
105 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
106 | version "1.2.8"
107 | resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
108 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
109 | dependencies:
110 | "@nodelib/fs.scandir" "2.1.5"
111 | fastq "^1.6.0"
112 |
113 | "@pkgr/core@^0.1.0":
114 | version "0.1.1"
115 | resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz"
116 | integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
117 |
118 | "@rollup/rollup-darwin-x64@4.24.0":
119 | version "4.24.0"
120 | resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz"
121 | integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==
122 |
123 | "@rushstack/eslint-patch@^1.3.3":
124 | version "1.10.4"
125 | resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz"
126 | integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==
127 |
128 | "@tsconfig/node18@^18.2.2":
129 | version "18.2.4"
130 | resolved "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.4.tgz"
131 | integrity sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==
132 |
133 | "@types/estree@1.0.6":
134 | version "1.0.6"
135 | resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz"
136 | integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
137 |
138 | "@types/json-schema@^7.0.12":
139 | version "7.0.15"
140 | resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
141 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
142 |
143 | "@types/node@^18.0.0 || >=20.0.0", "@types/node@^18.19.3":
144 | version "18.19.56"
145 | resolved "https://registry.npmjs.org/@types/node/-/node-18.19.56.tgz"
146 | integrity sha512-4EMJlWwwGnVPflJAtM14p9eVSa6BOv5b92mCsh5zcM1UagNtEtrbbtaE6WE1tw2TabavatnwqXjlIpcAEuJJNg==
147 | dependencies:
148 | undici-types "~5.26.4"
149 |
150 | "@types/semver@^7.5.0":
151 | version "7.5.8"
152 | resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz"
153 | integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
154 |
155 | "@typescript-eslint/eslint-plugin@^6.7.0":
156 | version "6.21.0"
157 | resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz"
158 | integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==
159 | dependencies:
160 | "@eslint-community/regexpp" "^4.5.1"
161 | "@typescript-eslint/scope-manager" "6.21.0"
162 | "@typescript-eslint/type-utils" "6.21.0"
163 | "@typescript-eslint/utils" "6.21.0"
164 | "@typescript-eslint/visitor-keys" "6.21.0"
165 | debug "^4.3.4"
166 | graphemer "^1.4.0"
167 | ignore "^5.2.4"
168 | natural-compare "^1.4.0"
169 | semver "^7.5.4"
170 | ts-api-utils "^1.0.1"
171 |
172 | "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0":
173 | version "6.21.0"
174 | resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz"
175 | integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==
176 | dependencies:
177 | "@typescript-eslint/scope-manager" "6.21.0"
178 | "@typescript-eslint/types" "6.21.0"
179 | "@typescript-eslint/typescript-estree" "6.21.0"
180 | "@typescript-eslint/visitor-keys" "6.21.0"
181 | debug "^4.3.4"
182 |
183 | "@typescript-eslint/scope-manager@6.21.0":
184 | version "6.21.0"
185 | resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz"
186 | integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==
187 | dependencies:
188 | "@typescript-eslint/types" "6.21.0"
189 | "@typescript-eslint/visitor-keys" "6.21.0"
190 |
191 | "@typescript-eslint/type-utils@6.21.0":
192 | version "6.21.0"
193 | resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz"
194 | integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==
195 | dependencies:
196 | "@typescript-eslint/typescript-estree" "6.21.0"
197 | "@typescript-eslint/utils" "6.21.0"
198 | debug "^4.3.4"
199 | ts-api-utils "^1.0.1"
200 |
201 | "@typescript-eslint/types@6.21.0":
202 | version "6.21.0"
203 | resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz"
204 | integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==
205 |
206 | "@typescript-eslint/typescript-estree@6.21.0":
207 | version "6.21.0"
208 | resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz"
209 | integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==
210 | dependencies:
211 | "@typescript-eslint/types" "6.21.0"
212 | "@typescript-eslint/visitor-keys" "6.21.0"
213 | debug "^4.3.4"
214 | globby "^11.1.0"
215 | is-glob "^4.0.3"
216 | minimatch "9.0.3"
217 | semver "^7.5.4"
218 | ts-api-utils "^1.0.1"
219 |
220 | "@typescript-eslint/utils@6.21.0":
221 | version "6.21.0"
222 | resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz"
223 | integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==
224 | dependencies:
225 | "@eslint-community/eslint-utils" "^4.4.0"
226 | "@types/json-schema" "^7.0.12"
227 | "@types/semver" "^7.5.0"
228 | "@typescript-eslint/scope-manager" "6.21.0"
229 | "@typescript-eslint/types" "6.21.0"
230 | "@typescript-eslint/typescript-estree" "6.21.0"
231 | semver "^7.5.4"
232 |
233 | "@typescript-eslint/visitor-keys@6.21.0":
234 | version "6.21.0"
235 | resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz"
236 | integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==
237 | dependencies:
238 | "@typescript-eslint/types" "6.21.0"
239 | eslint-visitor-keys "^3.4.1"
240 |
241 | "@ungap/structured-clone@^1.2.0":
242 | version "1.2.0"
243 | resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
244 | integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
245 |
246 | "@vitejs/plugin-vue@^4.5.2":
247 | version "4.6.2"
248 | resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz"
249 | integrity sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==
250 |
251 | "@volar/language-core@~1.11.1", "@volar/language-core@1.11.1":
252 | version "1.11.1"
253 | resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz"
254 | integrity sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==
255 | dependencies:
256 | "@volar/source-map" "1.11.1"
257 |
258 | "@volar/source-map@~1.11.1", "@volar/source-map@1.11.1":
259 | version "1.11.1"
260 | resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz"
261 | integrity sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==
262 | dependencies:
263 | muggle-string "^0.3.1"
264 |
265 | "@volar/typescript@~1.11.1":
266 | version "1.11.1"
267 | resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz"
268 | integrity sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==
269 | dependencies:
270 | "@volar/language-core" "1.11.1"
271 | path-browserify "^1.0.1"
272 |
273 | "@vue/compiler-core@3.5.12":
274 | version "3.5.12"
275 | resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz"
276 | integrity sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==
277 | dependencies:
278 | "@babel/parser" "^7.25.3"
279 | "@vue/shared" "3.5.12"
280 | entities "^4.5.0"
281 | estree-walker "^2.0.2"
282 | source-map-js "^1.2.0"
283 |
284 | "@vue/compiler-dom@^3.3.0", "@vue/compiler-dom@3.5.12":
285 | version "3.5.12"
286 | resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz"
287 | integrity sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==
288 | dependencies:
289 | "@vue/compiler-core" "3.5.12"
290 | "@vue/shared" "3.5.12"
291 |
292 | "@vue/compiler-sfc@3.5.12":
293 | version "3.5.12"
294 | resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz"
295 | integrity sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==
296 | dependencies:
297 | "@babel/parser" "^7.25.3"
298 | "@vue/compiler-core" "3.5.12"
299 | "@vue/compiler-dom" "3.5.12"
300 | "@vue/compiler-ssr" "3.5.12"
301 | "@vue/shared" "3.5.12"
302 | estree-walker "^2.0.2"
303 | magic-string "^0.30.11"
304 | postcss "^8.4.47"
305 | source-map-js "^1.2.0"
306 |
307 | "@vue/compiler-ssr@3.5.12":
308 | version "3.5.12"
309 | resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz"
310 | integrity sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==
311 | dependencies:
312 | "@vue/compiler-dom" "3.5.12"
313 | "@vue/shared" "3.5.12"
314 |
315 | "@vue/eslint-config-prettier@^8.0.0":
316 | version "8.0.0"
317 | resolved "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz"
318 | integrity sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==
319 | dependencies:
320 | eslint-config-prettier "^8.8.0"
321 | eslint-plugin-prettier "^5.0.0"
322 |
323 | "@vue/eslint-config-typescript@^12.0.0":
324 | version "12.0.0"
325 | resolved "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz"
326 | integrity sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==
327 | dependencies:
328 | "@typescript-eslint/eslint-plugin" "^6.7.0"
329 | "@typescript-eslint/parser" "^6.7.0"
330 | vue-eslint-parser "^9.3.1"
331 |
332 | "@vue/language-core@1.8.27":
333 | version "1.8.27"
334 | resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz"
335 | integrity sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==
336 | dependencies:
337 | "@volar/language-core" "~1.11.1"
338 | "@volar/source-map" "~1.11.1"
339 | "@vue/compiler-dom" "^3.3.0"
340 | "@vue/shared" "^3.3.0"
341 | computeds "^0.0.1"
342 | minimatch "^9.0.3"
343 | muggle-string "^0.3.1"
344 | path-browserify "^1.0.1"
345 | vue-template-compiler "^2.7.14"
346 |
347 | "@vue/reactivity@3.5.12":
348 | version "3.5.12"
349 | resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz"
350 | integrity sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==
351 | dependencies:
352 | "@vue/shared" "3.5.12"
353 |
354 | "@vue/runtime-core@3.5.12":
355 | version "3.5.12"
356 | resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz"
357 | integrity sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==
358 | dependencies:
359 | "@vue/reactivity" "3.5.12"
360 | "@vue/shared" "3.5.12"
361 |
362 | "@vue/runtime-dom@3.5.12":
363 | version "3.5.12"
364 | resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz"
365 | integrity sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==
366 | dependencies:
367 | "@vue/reactivity" "3.5.12"
368 | "@vue/runtime-core" "3.5.12"
369 | "@vue/shared" "3.5.12"
370 | csstype "^3.1.3"
371 |
372 | "@vue/server-renderer@3.5.12":
373 | version "3.5.12"
374 | resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz"
375 | integrity sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==
376 | dependencies:
377 | "@vue/compiler-ssr" "3.5.12"
378 | "@vue/shared" "3.5.12"
379 |
380 | "@vue/shared@^3.3.0", "@vue/shared@3.5.12":
381 | version "3.5.12"
382 | resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz"
383 | integrity sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==
384 |
385 | "@vue/tsconfig@^0.5.0":
386 | version "0.5.1"
387 | resolved "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz"
388 | integrity sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==
389 |
390 | acorn-jsx@^5.3.2:
391 | version "5.3.2"
392 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
393 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
394 |
395 | "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0:
396 | version "8.13.0"
397 | resolved "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz"
398 | integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==
399 |
400 | ajv@^6.12.4:
401 | version "6.12.6"
402 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
403 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
404 | dependencies:
405 | fast-deep-equal "^3.1.1"
406 | fast-json-stable-stringify "^2.0.0"
407 | json-schema-traverse "^0.4.1"
408 | uri-js "^4.2.2"
409 |
410 | ansi-regex@^5.0.1:
411 | version "5.0.1"
412 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
413 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
414 |
415 | ansi-styles@^4.1.0:
416 | version "4.3.0"
417 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
418 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
419 | dependencies:
420 | color-convert "^2.0.1"
421 |
422 | ansi-styles@^6.2.1:
423 | version "6.2.1"
424 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
425 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
426 |
427 | argparse@^2.0.1:
428 | version "2.0.1"
429 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
430 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
431 |
432 | array-union@^2.1.0:
433 | version "2.1.0"
434 | resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
435 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
436 |
437 | async@^3.2.4:
438 | version "3.2.6"
439 | resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz"
440 | integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
441 |
442 | balanced-match@^1.0.0:
443 | version "1.0.2"
444 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
445 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
446 |
447 | boolbase@^1.0.0:
448 | version "1.0.0"
449 | resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
450 | integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
451 |
452 | brace-expansion@^1.1.7:
453 | version "1.1.11"
454 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
455 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
456 | dependencies:
457 | balanced-match "^1.0.0"
458 | concat-map "0.0.1"
459 |
460 | brace-expansion@^2.0.1:
461 | version "2.0.1"
462 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
463 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
464 | dependencies:
465 | balanced-match "^1.0.0"
466 |
467 | braces@^3.0.3:
468 | version "3.0.3"
469 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
470 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
471 | dependencies:
472 | fill-range "^7.1.1"
473 |
474 | callsites@^3.0.0:
475 | version "3.1.0"
476 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
477 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
478 |
479 | chalk@^4.0.0:
480 | version "4.1.2"
481 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
482 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
483 | dependencies:
484 | ansi-styles "^4.1.0"
485 | supports-color "^7.1.0"
486 |
487 | color-convert@^2.0.1:
488 | version "2.0.1"
489 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
490 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
491 | dependencies:
492 | color-name "~1.1.4"
493 |
494 | color-name@~1.1.4:
495 | version "1.1.4"
496 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
497 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
498 |
499 | commander@^11.0.0:
500 | version "11.1.0"
501 | resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz"
502 | integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==
503 |
504 | commondir@^1.0.1:
505 | version "1.0.1"
506 | resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
507 | integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
508 |
509 | computeds@^0.0.1:
510 | version "0.0.1"
511 | resolved "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz"
512 | integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
513 |
514 | concat-map@0.0.1:
515 | version "0.0.1"
516 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
517 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
518 |
519 | cross-spawn@^7.0.2, cross-spawn@^7.0.3:
520 | version "7.0.3"
521 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
522 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
523 | dependencies:
524 | path-key "^3.1.0"
525 | shebang-command "^2.0.0"
526 | which "^2.0.1"
527 |
528 | cssesc@^3.0.0:
529 | version "3.0.0"
530 | resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
531 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
532 |
533 | csstype@^3.1.3:
534 | version "3.1.3"
535 | resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
536 | integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
537 |
538 | de-indent@^1.0.2:
539 | version "1.0.2"
540 | resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz"
541 | integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
542 |
543 | debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
544 | version "4.3.7"
545 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz"
546 | integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
547 | dependencies:
548 | ms "^2.1.3"
549 |
550 | deep-is@^0.1.3:
551 | version "0.1.4"
552 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
553 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
554 |
555 | dir-glob@^3.0.1:
556 | version "3.0.1"
557 | resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
558 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
559 | dependencies:
560 | path-type "^4.0.0"
561 |
562 | doctrine@^3.0.0:
563 | version "3.0.0"
564 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
565 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
566 | dependencies:
567 | esutils "^2.0.2"
568 |
569 | email-addresses@^5.0.0:
570 | version "5.0.0"
571 | resolved "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz"
572 | integrity sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==
573 |
574 | entities@^4.5.0:
575 | version "4.5.0"
576 | resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
577 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
578 |
579 | esbuild@^0.21.3:
580 | version "0.21.5"
581 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz"
582 | integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
583 | optionalDependencies:
584 | "@esbuild/aix-ppc64" "0.21.5"
585 | "@esbuild/android-arm" "0.21.5"
586 | "@esbuild/android-arm64" "0.21.5"
587 | "@esbuild/android-x64" "0.21.5"
588 | "@esbuild/darwin-arm64" "0.21.5"
589 | "@esbuild/darwin-x64" "0.21.5"
590 | "@esbuild/freebsd-arm64" "0.21.5"
591 | "@esbuild/freebsd-x64" "0.21.5"
592 | "@esbuild/linux-arm" "0.21.5"
593 | "@esbuild/linux-arm64" "0.21.5"
594 | "@esbuild/linux-ia32" "0.21.5"
595 | "@esbuild/linux-loong64" "0.21.5"
596 | "@esbuild/linux-mips64el" "0.21.5"
597 | "@esbuild/linux-ppc64" "0.21.5"
598 | "@esbuild/linux-riscv64" "0.21.5"
599 | "@esbuild/linux-s390x" "0.21.5"
600 | "@esbuild/linux-x64" "0.21.5"
601 | "@esbuild/netbsd-x64" "0.21.5"
602 | "@esbuild/openbsd-x64" "0.21.5"
603 | "@esbuild/sunos-x64" "0.21.5"
604 | "@esbuild/win32-arm64" "0.21.5"
605 | "@esbuild/win32-ia32" "0.21.5"
606 | "@esbuild/win32-x64" "0.21.5"
607 |
608 | escape-string-regexp@^1.0.2:
609 | version "1.0.5"
610 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
611 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
612 |
613 | escape-string-regexp@^4.0.0:
614 | version "4.0.0"
615 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
616 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
617 |
618 | eslint-config-prettier@*, eslint-config-prettier@^8.8.0:
619 | version "8.10.0"
620 | resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz"
621 | integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==
622 |
623 | eslint-plugin-prettier@^5.0.0:
624 | version "5.2.1"
625 | resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz"
626 | integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==
627 | dependencies:
628 | prettier-linter-helpers "^1.0.0"
629 | synckit "^0.9.1"
630 |
631 | eslint-plugin-vue@^9.0.0, eslint-plugin-vue@^9.17.0:
632 | version "9.29.0"
633 | resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.29.0.tgz"
634 | integrity sha512-hamyjrBhNH6Li6R1h1VF9KHfshJlKgKEg3ARbGTn72CMNDSMhWbgC7NdkRDEh25AFW+4SDATzyNM+3gWuZii8g==
635 | dependencies:
636 | "@eslint-community/eslint-utils" "^4.4.0"
637 | globals "^13.24.0"
638 | natural-compare "^1.4.0"
639 | nth-check "^2.1.1"
640 | postcss-selector-parser "^6.0.15"
641 | semver "^7.6.3"
642 | vue-eslint-parser "^9.4.3"
643 | xml-name-validator "^4.0.0"
644 |
645 | eslint-scope@^7.1.1, eslint-scope@^7.2.2:
646 | version "7.2.2"
647 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
648 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
649 | dependencies:
650 | esrecurse "^4.3.0"
651 | estraverse "^5.2.0"
652 |
653 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
654 | version "3.4.3"
655 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
656 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
657 |
658 | "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.49.0, "eslint@>= 8.0.0", eslint@>=6.0.0, eslint@>=7.0.0, eslint@>=8.0.0:
659 | version "8.57.1"
660 | resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz"
661 | integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
662 | dependencies:
663 | "@eslint-community/eslint-utils" "^4.2.0"
664 | "@eslint-community/regexpp" "^4.6.1"
665 | "@eslint/eslintrc" "^2.1.4"
666 | "@eslint/js" "8.57.1"
667 | "@humanwhocodes/config-array" "^0.13.0"
668 | "@humanwhocodes/module-importer" "^1.0.1"
669 | "@nodelib/fs.walk" "^1.2.8"
670 | "@ungap/structured-clone" "^1.2.0"
671 | ajv "^6.12.4"
672 | chalk "^4.0.0"
673 | cross-spawn "^7.0.2"
674 | debug "^4.3.2"
675 | doctrine "^3.0.0"
676 | escape-string-regexp "^4.0.0"
677 | eslint-scope "^7.2.2"
678 | eslint-visitor-keys "^3.4.3"
679 | espree "^9.6.1"
680 | esquery "^1.4.2"
681 | esutils "^2.0.2"
682 | fast-deep-equal "^3.1.3"
683 | file-entry-cache "^6.0.1"
684 | find-up "^5.0.0"
685 | glob-parent "^6.0.2"
686 | globals "^13.19.0"
687 | graphemer "^1.4.0"
688 | ignore "^5.2.0"
689 | imurmurhash "^0.1.4"
690 | is-glob "^4.0.0"
691 | is-path-inside "^3.0.3"
692 | js-yaml "^4.1.0"
693 | json-stable-stringify-without-jsonify "^1.0.1"
694 | levn "^0.4.1"
695 | lodash.merge "^4.6.2"
696 | minimatch "^3.1.2"
697 | natural-compare "^1.4.0"
698 | optionator "^0.9.3"
699 | strip-ansi "^6.0.1"
700 | text-table "^0.2.0"
701 |
702 | espree@^9.3.1, espree@^9.6.0, espree@^9.6.1:
703 | version "9.6.1"
704 | resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz"
705 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
706 | dependencies:
707 | acorn "^8.9.0"
708 | acorn-jsx "^5.3.2"
709 | eslint-visitor-keys "^3.4.1"
710 |
711 | esquery@^1.4.0, esquery@^1.4.2:
712 | version "1.6.0"
713 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz"
714 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
715 | dependencies:
716 | estraverse "^5.1.0"
717 |
718 | esrecurse@^4.3.0:
719 | version "4.3.0"
720 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
721 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
722 | dependencies:
723 | estraverse "^5.2.0"
724 |
725 | estraverse@^5.1.0, estraverse@^5.2.0:
726 | version "5.3.0"
727 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
728 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
729 |
730 | estree-walker@^2.0.2:
731 | version "2.0.2"
732 | resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
733 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
734 |
735 | esutils@^2.0.2:
736 | version "2.0.3"
737 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
738 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
739 |
740 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
741 | version "3.1.3"
742 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
743 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
744 |
745 | fast-diff@^1.1.2:
746 | version "1.3.0"
747 | resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz"
748 | integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
749 |
750 | fast-glob@^3.2.9:
751 | version "3.3.2"
752 | resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
753 | integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
754 | dependencies:
755 | "@nodelib/fs.stat" "^2.0.2"
756 | "@nodelib/fs.walk" "^1.2.3"
757 | glob-parent "^5.1.2"
758 | merge2 "^1.3.0"
759 | micromatch "^4.0.4"
760 |
761 | fast-json-stable-stringify@^2.0.0:
762 | version "2.1.0"
763 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
764 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
765 |
766 | fast-levenshtein@^2.0.6:
767 | version "2.0.6"
768 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
769 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
770 |
771 | fastq@^1.6.0:
772 | version "1.17.1"
773 | resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz"
774 | integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
775 | dependencies:
776 | reusify "^1.0.4"
777 |
778 | file-entry-cache@^6.0.1:
779 | version "6.0.1"
780 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
781 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
782 | dependencies:
783 | flat-cache "^3.0.4"
784 |
785 | filename-reserved-regex@^2.0.0:
786 | version "2.0.0"
787 | resolved "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz"
788 | integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==
789 |
790 | filenamify@^4.3.0:
791 | version "4.3.0"
792 | resolved "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz"
793 | integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==
794 | dependencies:
795 | filename-reserved-regex "^2.0.0"
796 | strip-outer "^1.0.1"
797 | trim-repeated "^1.0.0"
798 |
799 | fill-range@^7.1.1:
800 | version "7.1.1"
801 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
802 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
803 | dependencies:
804 | to-regex-range "^5.0.1"
805 |
806 | find-cache-dir@^3.3.1:
807 | version "3.3.2"
808 | resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
809 | integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
810 | dependencies:
811 | commondir "^1.0.1"
812 | make-dir "^3.0.2"
813 | pkg-dir "^4.1.0"
814 |
815 | find-up@^4.0.0:
816 | version "4.1.0"
817 | resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
818 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
819 | dependencies:
820 | locate-path "^5.0.0"
821 | path-exists "^4.0.0"
822 |
823 | find-up@^5.0.0:
824 | version "5.0.0"
825 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
826 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
827 | dependencies:
828 | locate-path "^6.0.0"
829 | path-exists "^4.0.0"
830 |
831 | flat-cache@^3.0.4:
832 | version "3.2.0"
833 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz"
834 | integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
835 | dependencies:
836 | flatted "^3.2.9"
837 | keyv "^4.5.3"
838 | rimraf "^3.0.2"
839 |
840 | flatted@^3.2.9:
841 | version "3.3.1"
842 | resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz"
843 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
844 |
845 | fs-extra@^11.1.1:
846 | version "11.2.0"
847 | resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz"
848 | integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
849 | dependencies:
850 | graceful-fs "^4.2.0"
851 | jsonfile "^6.0.1"
852 | universalify "^2.0.0"
853 |
854 | fs.realpath@^1.0.0:
855 | version "1.0.0"
856 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
857 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
858 |
859 | fsevents@~2.3.2, fsevents@~2.3.3:
860 | version "2.3.3"
861 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
862 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
863 |
864 | gh-pages@^6.1.1:
865 | version "6.2.0"
866 | resolved "https://registry.npmjs.org/gh-pages/-/gh-pages-6.2.0.tgz"
867 | integrity sha512-HMXJ8th9u5wRXaZCnLcs/d3oVvCHiZkaP5KQExQljYGwJjQbSPyTdHe/Gc1IvYUR/rWiZLxNobIqfoMHKTKjHQ==
868 | dependencies:
869 | async "^3.2.4"
870 | commander "^11.0.0"
871 | email-addresses "^5.0.0"
872 | filenamify "^4.3.0"
873 | find-cache-dir "^3.3.1"
874 | fs-extra "^11.1.1"
875 | globby "^11.1.0"
876 |
877 | glob-parent@^5.1.2:
878 | version "5.1.2"
879 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
880 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
881 | dependencies:
882 | is-glob "^4.0.1"
883 |
884 | glob-parent@^6.0.2:
885 | version "6.0.2"
886 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
887 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
888 | dependencies:
889 | is-glob "^4.0.3"
890 |
891 | glob@^7.1.3:
892 | version "7.2.3"
893 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
894 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
895 | dependencies:
896 | fs.realpath "^1.0.0"
897 | inflight "^1.0.4"
898 | inherits "2"
899 | minimatch "^3.1.1"
900 | once "^1.3.0"
901 | path-is-absolute "^1.0.0"
902 |
903 | globals@^13.19.0, globals@^13.24.0:
904 | version "13.24.0"
905 | resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz"
906 | integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
907 | dependencies:
908 | type-fest "^0.20.2"
909 |
910 | globby@^11.1.0:
911 | version "11.1.0"
912 | resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
913 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
914 | dependencies:
915 | array-union "^2.1.0"
916 | dir-glob "^3.0.1"
917 | fast-glob "^3.2.9"
918 | ignore "^5.2.0"
919 | merge2 "^1.4.1"
920 | slash "^3.0.0"
921 |
922 | graceful-fs@^4.1.6, graceful-fs@^4.2.0:
923 | version "4.2.11"
924 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
925 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
926 |
927 | graphemer@^1.4.0:
928 | version "1.4.0"
929 | resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
930 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
931 |
932 | has-flag@^4.0.0:
933 | version "4.0.0"
934 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
935 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
936 |
937 | he@^1.2.0:
938 | version "1.2.0"
939 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
940 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
941 |
942 | ignore@^5.2.0, ignore@^5.2.4:
943 | version "5.3.2"
944 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
945 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
946 |
947 | import-fresh@^3.2.1:
948 | version "3.3.0"
949 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
950 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
951 | dependencies:
952 | parent-module "^1.0.0"
953 | resolve-from "^4.0.0"
954 |
955 | imurmurhash@^0.1.4:
956 | version "0.1.4"
957 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
958 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
959 |
960 | inflight@^1.0.4:
961 | version "1.0.6"
962 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
963 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
964 | dependencies:
965 | once "^1.3.0"
966 | wrappy "1"
967 |
968 | inherits@2:
969 | version "2.0.4"
970 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
971 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
972 |
973 | is-extglob@^2.1.1:
974 | version "2.1.1"
975 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
976 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
977 |
978 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
979 | version "4.0.3"
980 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
981 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
982 | dependencies:
983 | is-extglob "^2.1.1"
984 |
985 | is-number@^7.0.0:
986 | version "7.0.0"
987 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
988 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
989 |
990 | is-path-inside@^3.0.3:
991 | version "3.0.3"
992 | resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
993 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
994 |
995 | isexe@^2.0.0:
996 | version "2.0.0"
997 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
998 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
999 |
1000 | js-yaml@^4.1.0:
1001 | version "4.1.0"
1002 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
1003 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1004 | dependencies:
1005 | argparse "^2.0.1"
1006 |
1007 | json-buffer@3.0.1:
1008 | version "3.0.1"
1009 | resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
1010 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
1011 |
1012 | json-parse-even-better-errors@^3.0.0:
1013 | version "3.0.2"
1014 | resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz"
1015 | integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==
1016 |
1017 | json-schema-traverse@^0.4.1:
1018 | version "0.4.1"
1019 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
1020 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1021 |
1022 | json-stable-stringify-without-jsonify@^1.0.1:
1023 | version "1.0.1"
1024 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
1025 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
1026 |
1027 | jsonfile@^6.0.1:
1028 | version "6.1.0"
1029 | resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
1030 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
1031 | dependencies:
1032 | universalify "^2.0.0"
1033 | optionalDependencies:
1034 | graceful-fs "^4.1.6"
1035 |
1036 | keyv@^4.5.3:
1037 | version "4.5.4"
1038 | resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
1039 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
1040 | dependencies:
1041 | json-buffer "3.0.1"
1042 |
1043 | levn@^0.4.1:
1044 | version "0.4.1"
1045 | resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
1046 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
1047 | dependencies:
1048 | prelude-ls "^1.2.1"
1049 | type-check "~0.4.0"
1050 |
1051 | locate-path@^5.0.0:
1052 | version "5.0.0"
1053 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
1054 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1055 | dependencies:
1056 | p-locate "^4.1.0"
1057 |
1058 | locate-path@^6.0.0:
1059 | version "6.0.0"
1060 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
1061 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1062 | dependencies:
1063 | p-locate "^5.0.0"
1064 |
1065 | lodash.merge@^4.6.2:
1066 | version "4.6.2"
1067 | resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
1068 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
1069 |
1070 | lodash@^4.17.21:
1071 | version "4.17.21"
1072 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
1073 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1074 |
1075 | magic-string@^0.30.11:
1076 | version "0.30.12"
1077 | resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz"
1078 | integrity sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==
1079 | dependencies:
1080 | "@jridgewell/sourcemap-codec" "^1.5.0"
1081 |
1082 | make-dir@^3.0.2:
1083 | version "3.1.0"
1084 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
1085 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
1086 | dependencies:
1087 | semver "^6.0.0"
1088 |
1089 | memorystream@^0.3.1:
1090 | version "0.3.1"
1091 | resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz"
1092 | integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==
1093 |
1094 | merge2@^1.3.0, merge2@^1.4.1:
1095 | version "1.4.1"
1096 | resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
1097 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
1098 |
1099 | micromatch@^4.0.4:
1100 | version "4.0.8"
1101 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
1102 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
1103 | dependencies:
1104 | braces "^3.0.3"
1105 | picomatch "^2.3.1"
1106 |
1107 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
1108 | version "3.1.2"
1109 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
1110 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1111 | dependencies:
1112 | brace-expansion "^1.1.7"
1113 |
1114 | minimatch@^9.0.0:
1115 | version "9.0.5"
1116 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz"
1117 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
1118 | dependencies:
1119 | brace-expansion "^2.0.1"
1120 |
1121 | minimatch@^9.0.3:
1122 | version "9.0.5"
1123 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz"
1124 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
1125 | dependencies:
1126 | brace-expansion "^2.0.1"
1127 |
1128 | minimatch@9.0.3:
1129 | version "9.0.3"
1130 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz"
1131 | integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
1132 | dependencies:
1133 | brace-expansion "^2.0.1"
1134 |
1135 | ms@^2.1.3:
1136 | version "2.1.3"
1137 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
1138 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1139 |
1140 | muggle-string@^0.3.1:
1141 | version "0.3.1"
1142 | resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz"
1143 | integrity sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==
1144 |
1145 | nanoid@^3.3.7:
1146 | version "3.3.7"
1147 | resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz"
1148 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
1149 |
1150 | natural-compare@^1.4.0:
1151 | version "1.4.0"
1152 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
1153 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
1154 |
1155 | npm-normalize-package-bin@^3.0.0:
1156 | version "3.0.1"
1157 | resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz"
1158 | integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==
1159 |
1160 | npm-run-all2@^6.1.1:
1161 | version "6.2.3"
1162 | resolved "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.3.tgz"
1163 | integrity sha512-5RsxC7jEc/RjxOYBVdEfrJf5FsJ0pHA7jr2/OxrThXknajETCTYjigOCG3iaGjdYIKEQlDuCG0ir0T1HTva8pg==
1164 | dependencies:
1165 | ansi-styles "^6.2.1"
1166 | cross-spawn "^7.0.3"
1167 | memorystream "^0.3.1"
1168 | minimatch "^9.0.0"
1169 | pidtree "^0.6.0"
1170 | read-package-json-fast "^3.0.2"
1171 | shell-quote "^1.7.3"
1172 |
1173 | nth-check@^2.1.1:
1174 | version "2.1.1"
1175 | resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
1176 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
1177 | dependencies:
1178 | boolbase "^1.0.0"
1179 |
1180 | once@^1.3.0:
1181 | version "1.4.0"
1182 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
1183 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1184 | dependencies:
1185 | wrappy "1"
1186 |
1187 | optionator@^0.9.3:
1188 | version "0.9.4"
1189 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
1190 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
1191 | dependencies:
1192 | deep-is "^0.1.3"
1193 | fast-levenshtein "^2.0.6"
1194 | levn "^0.4.1"
1195 | prelude-ls "^1.2.1"
1196 | type-check "^0.4.0"
1197 | word-wrap "^1.2.5"
1198 |
1199 | p-limit@^2.2.0:
1200 | version "2.3.0"
1201 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
1202 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1203 | dependencies:
1204 | p-try "^2.0.0"
1205 |
1206 | p-limit@^3.0.2:
1207 | version "3.1.0"
1208 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
1209 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1210 | dependencies:
1211 | yocto-queue "^0.1.0"
1212 |
1213 | p-locate@^4.1.0:
1214 | version "4.1.0"
1215 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
1216 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1217 | dependencies:
1218 | p-limit "^2.2.0"
1219 |
1220 | p-locate@^5.0.0:
1221 | version "5.0.0"
1222 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
1223 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1224 | dependencies:
1225 | p-limit "^3.0.2"
1226 |
1227 | p-try@^2.0.0:
1228 | version "2.2.0"
1229 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
1230 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1231 |
1232 | parent-module@^1.0.0:
1233 | version "1.0.1"
1234 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
1235 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1236 | dependencies:
1237 | callsites "^3.0.0"
1238 |
1239 | path-browserify@^1.0.1:
1240 | version "1.0.1"
1241 | resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz"
1242 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
1243 |
1244 | path-exists@^4.0.0:
1245 | version "4.0.0"
1246 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
1247 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1248 |
1249 | path-is-absolute@^1.0.0:
1250 | version "1.0.1"
1251 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
1252 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1253 |
1254 | path-key@^3.1.0:
1255 | version "3.1.1"
1256 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
1257 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1258 |
1259 | path-type@^4.0.0:
1260 | version "4.0.0"
1261 | resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
1262 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
1263 |
1264 | picocolors@^1.1.0:
1265 | version "1.1.1"
1266 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
1267 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
1268 |
1269 | picomatch@^2.3.1:
1270 | version "2.3.1"
1271 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
1272 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1273 |
1274 | pidtree@^0.6.0:
1275 | version "0.6.0"
1276 | resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz"
1277 | integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==
1278 |
1279 | pkg-dir@^4.1.0:
1280 | version "4.2.0"
1281 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
1282 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1283 | dependencies:
1284 | find-up "^4.0.0"
1285 |
1286 | postcss-selector-parser@^6.0.15:
1287 | version "6.1.2"
1288 | resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz"
1289 | integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
1290 | dependencies:
1291 | cssesc "^3.0.0"
1292 | util-deprecate "^1.0.2"
1293 |
1294 | postcss@^8.4.43, postcss@^8.4.47:
1295 | version "8.4.47"
1296 | resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz"
1297 | integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
1298 | dependencies:
1299 | nanoid "^3.3.7"
1300 | picocolors "^1.1.0"
1301 | source-map-js "^1.2.1"
1302 |
1303 | prelude-ls@^1.2.1:
1304 | version "1.2.1"
1305 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
1306 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1307 |
1308 | prettier-linter-helpers@^1.0.0:
1309 | version "1.0.0"
1310 | resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz"
1311 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
1312 | dependencies:
1313 | fast-diff "^1.1.2"
1314 |
1315 | prettier@^3.0.3, "prettier@>= 3.0.0", prettier@>=3.0.0:
1316 | version "3.3.3"
1317 | resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz"
1318 | integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
1319 |
1320 | punycode@^2.1.0:
1321 | version "2.3.1"
1322 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
1323 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
1324 |
1325 | queue-microtask@^1.2.2:
1326 | version "1.2.3"
1327 | resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
1328 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1329 |
1330 | read-package-json-fast@^3.0.2:
1331 | version "3.0.2"
1332 | resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz"
1333 | integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==
1334 | dependencies:
1335 | json-parse-even-better-errors "^3.0.0"
1336 | npm-normalize-package-bin "^3.0.0"
1337 |
1338 | resolve-from@^4.0.0:
1339 | version "4.0.0"
1340 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
1341 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1342 |
1343 | reusify@^1.0.4:
1344 | version "1.0.4"
1345 | resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
1346 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1347 |
1348 | rimraf@^3.0.2:
1349 | version "3.0.2"
1350 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
1351 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1352 | dependencies:
1353 | glob "^7.1.3"
1354 |
1355 | rollup@^4.20.0:
1356 | version "4.24.0"
1357 | resolved "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz"
1358 | integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==
1359 | dependencies:
1360 | "@types/estree" "1.0.6"
1361 | optionalDependencies:
1362 | "@rollup/rollup-android-arm-eabi" "4.24.0"
1363 | "@rollup/rollup-android-arm64" "4.24.0"
1364 | "@rollup/rollup-darwin-arm64" "4.24.0"
1365 | "@rollup/rollup-darwin-x64" "4.24.0"
1366 | "@rollup/rollup-linux-arm-gnueabihf" "4.24.0"
1367 | "@rollup/rollup-linux-arm-musleabihf" "4.24.0"
1368 | "@rollup/rollup-linux-arm64-gnu" "4.24.0"
1369 | "@rollup/rollup-linux-arm64-musl" "4.24.0"
1370 | "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0"
1371 | "@rollup/rollup-linux-riscv64-gnu" "4.24.0"
1372 | "@rollup/rollup-linux-s390x-gnu" "4.24.0"
1373 | "@rollup/rollup-linux-x64-gnu" "4.24.0"
1374 | "@rollup/rollup-linux-x64-musl" "4.24.0"
1375 | "@rollup/rollup-win32-arm64-msvc" "4.24.0"
1376 | "@rollup/rollup-win32-ia32-msvc" "4.24.0"
1377 | "@rollup/rollup-win32-x64-msvc" "4.24.0"
1378 | fsevents "~2.3.2"
1379 |
1380 | run-parallel@^1.1.9:
1381 | version "1.2.0"
1382 | resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
1383 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1384 | dependencies:
1385 | queue-microtask "^1.2.2"
1386 |
1387 | semver@^6.0.0:
1388 | version "6.3.1"
1389 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
1390 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
1391 |
1392 | semver@^7.3.6, semver@^7.5.4, semver@^7.6.3:
1393 | version "7.6.3"
1394 | resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
1395 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
1396 |
1397 | shebang-command@^2.0.0:
1398 | version "2.0.0"
1399 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
1400 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1401 | dependencies:
1402 | shebang-regex "^3.0.0"
1403 |
1404 | shebang-regex@^3.0.0:
1405 | version "3.0.0"
1406 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
1407 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1408 |
1409 | shell-quote@^1.7.3:
1410 | version "1.8.1"
1411 | resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz"
1412 | integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
1413 |
1414 | slash@^3.0.0:
1415 | version "3.0.0"
1416 | resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
1417 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1418 |
1419 | source-map-js@^1.2.0, source-map-js@^1.2.1:
1420 | version "1.2.1"
1421 | resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
1422 | integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
1423 |
1424 | strip-ansi@^6.0.1:
1425 | version "6.0.1"
1426 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
1427 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1428 | dependencies:
1429 | ansi-regex "^5.0.1"
1430 |
1431 | strip-json-comments@^3.1.1:
1432 | version "3.1.1"
1433 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
1434 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1435 |
1436 | strip-outer@^1.0.1:
1437 | version "1.0.1"
1438 | resolved "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz"
1439 | integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==
1440 | dependencies:
1441 | escape-string-regexp "^1.0.2"
1442 |
1443 | supports-color@^7.1.0:
1444 | version "7.2.0"
1445 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
1446 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1447 | dependencies:
1448 | has-flag "^4.0.0"
1449 |
1450 | synckit@^0.9.1:
1451 | version "0.9.2"
1452 | resolved "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz"
1453 | integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==
1454 | dependencies:
1455 | "@pkgr/core" "^0.1.0"
1456 | tslib "^2.6.2"
1457 |
1458 | text-table@^0.2.0:
1459 | version "0.2.0"
1460 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
1461 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
1462 |
1463 | to-fast-properties@^2.0.0:
1464 | version "2.0.0"
1465 | resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
1466 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
1467 |
1468 | to-regex-range@^5.0.1:
1469 | version "5.0.1"
1470 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
1471 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1472 | dependencies:
1473 | is-number "^7.0.0"
1474 |
1475 | trim-repeated@^1.0.0:
1476 | version "1.0.0"
1477 | resolved "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz"
1478 | integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==
1479 | dependencies:
1480 | escape-string-regexp "^1.0.2"
1481 |
1482 | ts-api-utils@^1.0.1:
1483 | version "1.3.0"
1484 | resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz"
1485 | integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
1486 |
1487 | tslib@^2.6.2:
1488 | version "2.8.0"
1489 | resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz"
1490 | integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==
1491 |
1492 | type-check@^0.4.0, type-check@~0.4.0:
1493 | version "0.4.0"
1494 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
1495 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1496 | dependencies:
1497 | prelude-ls "^1.2.1"
1498 |
1499 | type-fest@^0.20.2:
1500 | version "0.20.2"
1501 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
1502 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
1503 |
1504 | typescript@*, typescript@>=4.2.0, typescript@~5.3.0:
1505 | version "5.3.3"
1506 | resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz"
1507 | integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==
1508 |
1509 | undici-types@~5.26.4:
1510 | version "5.26.5"
1511 | resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
1512 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
1513 |
1514 | universalify@^2.0.0:
1515 | version "2.0.1"
1516 | resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
1517 | integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
1518 |
1519 | uri-js@^4.2.2:
1520 | version "4.4.1"
1521 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
1522 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1523 | dependencies:
1524 | punycode "^2.1.0"
1525 |
1526 | util-deprecate@^1.0.2:
1527 | version "1.0.2"
1528 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
1529 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
1530 |
1531 | "vite@^4.0.0 || ^5.0.0", vite@^5.0.10:
1532 | version "5.4.9"
1533 | resolved "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz"
1534 | integrity sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==
1535 | dependencies:
1536 | esbuild "^0.21.3"
1537 | postcss "^8.4.43"
1538 | rollup "^4.20.0"
1539 | optionalDependencies:
1540 | fsevents "~2.3.3"
1541 |
1542 | "vue-drag-scroller@file:../../../.nvm/versions/node/v20.18.0/lib/node_modules/vue-drag-scroller":
1543 | version "1.8.5"
1544 | resolved "file:../../../.nvm/versions/node/v20.18.0/lib/node_modules/vue-drag-scroller"
1545 | dependencies:
1546 | vue "^3.3.11"
1547 |
1548 | vue-eslint-parser@^9.3.1, vue-eslint-parser@^9.4.3:
1549 | version "9.4.3"
1550 | resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz"
1551 | integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==
1552 | dependencies:
1553 | debug "^4.3.4"
1554 | eslint-scope "^7.1.1"
1555 | eslint-visitor-keys "^3.3.0"
1556 | espree "^9.3.1"
1557 | esquery "^1.4.0"
1558 | lodash "^4.17.21"
1559 | semver "^7.3.6"
1560 |
1561 | vue-template-compiler@^2.7.14:
1562 | version "2.7.16"
1563 | resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz"
1564 | integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==
1565 | dependencies:
1566 | de-indent "^1.0.2"
1567 | he "^1.2.0"
1568 |
1569 | vue-tsc@^1.8.25:
1570 | version "1.8.27"
1571 | resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz"
1572 | integrity sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==
1573 | dependencies:
1574 | "@volar/typescript" "~1.11.1"
1575 | "@vue/language-core" "1.8.27"
1576 | semver "^7.5.4"
1577 |
1578 | vue@^3.2.25, vue@^3.3.11, vue@3.5.12:
1579 | version "3.5.12"
1580 | resolved "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz"
1581 | integrity sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==
1582 | dependencies:
1583 | "@vue/compiler-dom" "3.5.12"
1584 | "@vue/compiler-sfc" "3.5.12"
1585 | "@vue/runtime-dom" "3.5.12"
1586 | "@vue/server-renderer" "3.5.12"
1587 | "@vue/shared" "3.5.12"
1588 |
1589 | which@^2.0.1:
1590 | version "2.0.2"
1591 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
1592 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1593 | dependencies:
1594 | isexe "^2.0.0"
1595 |
1596 | word-wrap@^1.2.5:
1597 | version "1.2.5"
1598 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
1599 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
1600 |
1601 | wrappy@1:
1602 | version "1.0.2"
1603 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
1604 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1605 |
1606 | xml-name-validator@^4.0.0:
1607 | version "4.0.0"
1608 | resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
1609 | integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
1610 |
1611 | yocto-queue@^0.1.0:
1612 | version "0.1.0"
1613 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
1614 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1615 |
--------------------------------------------------------------------------------