├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.cjs
├── .gitignore
├── .npmignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── example
├── App.vue
└── main.js
├── package.json
├── src
├── NestableItem.vue
├── Placeholder.vue
├── VueNestable.vue
├── VueNestableHandle.vue
├── calls-hooks.js
├── components
│ ├── NestableItem.vue
│ ├── Placeholder.vue
│ ├── VueNestable.vue
│ └── VueNestableHandle.vue
├── groups-observer.js
├── index.js
├── main.js
├── mixins
│ ├── calls-hooks.js
│ ├── groups-observer.js
│ └── nestable-helpers.js
├── nestable-helpers.js
└── utils.js
├── vite.config.js
├── webpack.config.js
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env"
5 | ]
6 | ]
7 | }
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | .gitignore
2 | build/*
3 | dist/*
4 | docs/dist/*
5 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | module.exports = {
3 | "root": true,
4 | "extends": [
5 | "plugin:vue/vue3-essential",
6 | "eslint:recommended"
7 | ],
8 | "env": {
9 | "vue/setup-compiler-macros": true
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.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
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 | /cypress/videos/
18 | /cypress/screenshots/
19 |
20 | # Editor directories and files
21 | .vscode/*
22 | !.vscode/extensions.json
23 | .idea
24 | *.suo
25 | *.ntvs*
26 | *.njsproj
27 | *.sln
28 | *.sw?
29 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # ignore the documentation folder
2 | examples/
3 | node_modules/
4 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6 | and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7 |
8 | ## [3.0.0] - 15-04-2022
9 | - Vue 3 support
10 |
11 |
12 | ## [2.6.0] - 2020-08-26
13 |
14 | ### Changed
15 | - Replaces deprecated `Event.srcElement` with `Event.target`.
16 | [#98](https://github.com/rhwilr/vue-nestable/pull/98) (by
17 | [@punpunm](https://github.com/punpunm))
18 | - Upgraded dependencies.
19 |
20 |
21 | ## [2.5.3] - 2020-03-27
22 |
23 | ### Fixed
24 | - Under some conditions, the wrong `pathTo` value would be passed to the
25 | `change` event.
26 |
27 |
28 | ## [2.5.2] - 2020-02-28
29 |
30 | ### Fixed
31 | - Fixed a bug where under some conditions the `.nestable-drag-layer` element
32 | would not render until the next frame, therefore calculating its size would
33 | throw an error.
34 |
35 |
36 | ## [2.5.1] - 2020-01-31
37 |
38 | ### Fixed
39 | - When moving the mouse slowly, the ghost item would appear in the top left
40 | corner until the next mousemove event triggerd. This is now fixed.
41 | [#87](https://github.com/rhwilr/vue-nestable/issues/87)
42 |
43 | ### Changed
44 | - Upgraded dependencies.
45 |
46 |
47 | ## [2.5.0] - 2019-12-18
48 |
49 | ### Added
50 | - RTL support. Check out the example for details.
51 | [#83](https://github.com/rhwilr/vue-nestable/pull/83) (by
52 | [@RoOhi-E](https://github.com/RoOhi-E))
53 |
54 | ### Fixed
55 | - Using `keyprop` to render NestablItems in v-for.
56 | [#85](https://github.com/rhwilr/vue-nestable/pull/85) (by
57 | [@passi246](https://github.com/passi246))
58 |
59 | ### Changed
60 | - Upgraded dependencies.
61 |
62 |
63 | ## [2.4.5] - 2019-09-26
64 |
65 | ### Fixed
66 | - Fixes a bug that caused the dragging item to be offset when the content was
67 | in a scrollable container.
68 | [#17](https://github.com/rhwilr/vue-nestable/issues/17)
69 |
70 |
71 | ## [2.4.4] - 2019-08-15
72 |
73 | This release updates many dependencies to the latest version.
74 |
75 |
76 | ## [2.4.3] - 2019-06-12
77 |
78 | This release updates many dependencies to the latest version.
79 | There are no new features or changes in this release.
80 |
81 |
82 | ## [2.4.2] - 2019-05-24
83 |
84 | There are no new features or changes in this release.
85 |
86 | ### Changed
87 | - Upgraded many internal dev-dependencies as well as our build tools.
88 |
89 |
90 | ## [2.4.1] - 2019-05-06
91 |
92 | ### Fixed
93 | - Fixed an issue that caused an items nesting level to be always increased on
94 | the first interaction.
95 | [#24](https://github.com/rhwilr/vue-nestable/issues/24)
96 |
97 |
98 | ## [2.4.0] - 2019-04-25
99 |
100 | ### Added
101 | - You have now the option to pass hooks that get called when an item is moved.
102 | This gives you greater flexibility and the option to prevent specific items
103 | from being dragged.
104 |
105 |
106 | ## [2.3.2] - 2019-04-12
107 |
108 | ### Fixed
109 | - In some cases, the `onMouseEnter` event would fire after the drag operation
110 | was already completed. This would cause an unhandled exception.
111 | [#22](https://github.com/rhwilr/vue-nestable/issues/22)
112 |
113 |
114 | ## [2.3.1] - 2019-03-14
115 |
116 | ### Fixed
117 | - The `items` property in the `change` event is no longer undefined, but
118 | actually contains the data that was promised.
119 |
120 |
121 | ## [2.3.0] - 2019-03-14
122 |
123 | ### Added
124 | - The `options` object in the `change` event now includes the `items` prop.
125 | The `item` prop gives access to the new list of all items after the changes
126 | were applied. [#20](https://github.com/rhwilr/vue-nestable/pull/20) (by
127 | [@notflip](https://github.com/notflip))
128 |
129 |
130 | ## [2.2.0] - 2019-02-28
131 |
132 | ### Added
133 | - The default slot that renders the item now provides an `isChild` prop
134 |
135 | ### Changed
136 | - Small performance improvement when finding the closest parent of an element
137 |
138 |
139 | ## [2.1.1] - 2019-02-13
140 |
141 | ### Fixed
142 | - The position for the ghost element is now calculated correctly when the list
143 | is inside a scrollable container.
144 | [#17](https://github.com/rhwilr/vue-nestable/issues/17)
145 |
146 |
147 | ## [2.1.0] - 2019-02-05
148 |
149 | ### Added
150 | - You now get additional information in the change event about the item that
151 | was moved. For now, we only set the `pathTo` attribute.
152 | [#13](https://github.com/rhwilr/vue-nestable/pull/13) (by
153 | [@iceflash](https://github.com/iceflash))
154 |
155 | ### Changed
156 | - Modernized the development environment. We now use Webpack to build
157 | vue-nestable. In addition, we now export multiple builds: common-js, es,
158 | iife, and umd. You can import a different build if you need to, but node and
159 | webpack will automatically use what works best for your setup.
160 |
161 | ### Improved
162 | - Dragging items that are not of equal size should now work better. Currently
163 | this is only fixed on the desktop, on mobile the
164 | [issue](https://github.com/rhwilr/vue-nestable/issues/15) still persists.
165 |
166 |
167 | ## [2.0.0] - 2019-01-08
168 |
169 | Only a month after we hit version 1.0.0, we are already releasing version 2.0.0!
170 | So Yay... I guess? :smiley:
171 |
172 | But we release this new version not because we added many new features, but
173 | because we made a potential breaking change so you might have to make changes to
174 | your code. And since we follow semver: here is version 2.0.0.
175 |
176 | ### Potential Breaking Change
177 | - The vue-nestable-handle component now uses a div instead of a span as a
178 | wrapper element to allow for more flexible content. If you are using the
179 | handle next to other content, you might have to set `display: inline;` on
180 | the `.nestable-handle` class.
181 |
182 | ### Added
183 | - support for touch events to handle drag & drop on mobile device.
184 | - the option to add custom classes to an item by setting `classProp` to the
185 | name of the property that holds your class for each item.
186 |
187 |
188 |
189 | ## [1.1.0-beta.3] - 2019-01-05
190 |
191 | ### Fixed
192 | - When a string was passed to the class prop it was expanded to an array of
193 | characters in the browser version of vue.
194 |
195 |
196 | ## [1.1.0-beta.2] - 2019-01-02
197 |
198 | ### Added
199 | - You can add custom classes to an item by setting `classProp` to the name of
200 | the property that holds your class for each item.
201 |
202 |
203 | ## [1.1.0-beta.1] - 2018-12-20
204 |
205 | ### Changed
206 | - The vue-nestable-handle component now uses a div instead of a span to allow
207 | for more flexible content. If you are using the handle next to other
208 | content, make sure to set `display: inline;` on `.nestable-handle`.
209 | [#9](https://github.com/rhwilr/vue-nestable/pull/9) (by
210 | [@Guntau](https://github.com/Guntau))
211 |
212 |
213 | ## [1.1.0-beta.0] - 2018-12-20
214 |
215 | ### Added
216 | - vue-nestable now supports touch events to handle drag & drop on mobile device.
217 |
218 |
219 | ## [1.0.0] - 2018-12-16
220 |
221 | :tada: I'm proud to announce that version 1.0 has landed. :tada:
222 |
223 | No changes since the last beta release, but if you are upgrading from a 0.x
224 | release, please note that the polyfill for the
225 | [experimental support](https://github.com/vuejs/vue/pull/7765) for binding
226 | scopedSlots was removed. See
227 | [Installation](https://github.com/rhwilr/vue-nestable#installation) for details
228 | on how to import the component.
229 |
230 |
231 | ## [1.0.0-beta.2] - 2018-12-15
232 |
233 | ### Added
234 | - You can now access the `index` of the item in the scoped-slot.
235 | - The components `VueNestable` and `VueNestableHandle` are exposed as named exports.
236 |
237 | ### Changed
238 | - Renamed component names to PascalCase.
239 |
240 |
241 | ## [1.0.0-beta.1] - 2018-12-07
242 |
243 | ### Fixed
244 | - `keyProp` was documented but never implemented. You can now set the `keyProp`
245 | that is used to identifie the item.
246 |
247 |
248 | ## [1.0.0-beta.0] - 2018-12-04
249 |
250 | :tada: We are approaching the first official release of vue-nestable. Check out
251 | this beta and please report any bugs you may encounter.
252 |
253 | ### Changed
254 | - Switched from binding scopedSlots to useing a template loop with slots,
255 | [#2](https://github.com/rhwilr/vue-nestable/pull/2) (by
256 | [@pbastowski](https://github.com/pbastowski))
257 |
258 | ### Removed
259 | - The polyfill for the [experimental support](https://github.com/vuejs/vue/pull/7765)
260 | for binding scopedSlots was removed.
261 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Artem Stepanenko
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue3-nestable
2 |
3 | Drag & drop hierarchical list made as a vue component.
4 |
5 | [![NPM Version][npm-image]][npm-url]
6 |
7 | [npm-image]: https://img.shields.io/npm/v/vue3-nestable.svg?style=flat-square
8 | [npm-url]: https://www.npmjs.com/package/vue3-nestable
9 |
10 | ## Vue 3 support 🥳
11 | > This package is currently compatible with Vue 3
12 |
13 |
14 |
15 |
16 |
17 | ## Goals
18 | - A simple vue component to create a draggable list to customizable items
19 | - Reorder items by dragging them above another item
20 | - Intuitively nest items by dragging right
21 | - Fully customizable, ships with no CSS
22 | - Everything is configurable: item identifier, max nesting level, threshold
23 | for nesting
24 |
25 |
26 | ## Table of contents
27 | * [Installation](#installation)
28 | * [Usage](#usage)
29 | * [Example](#example)
30 | * [Styling](#styling)
31 | * [Props](#props)
32 | * [Slots](#slots)
33 | * [Events](#events)
34 | * [Hooks](#hooks)
35 |
36 |
37 | ## Installation
38 |
39 | Install the plugin:
40 |
41 | ```sh
42 | npm install --save vue3-nestable
43 | yarn add vue3-nestable
44 | ```
45 |
46 | You can also import the components on-demand, if you wish to do so:
47 | ```js
48 | import { VueNestable, VueNestableHandle } from 'vue3-nestable'
49 |
50 | export default {
51 | components: {
52 | VueNestable,
53 | VueNestableHandle
54 | }
55 | ...
56 | }
57 | ```
58 |
59 |
60 | ## Example
61 |
62 | You only need two components: `vue-nestable` which renders the list and
63 | `vue-nestable-handle` which indicates the area the user can drag the item by.
64 |
65 | **Important Note:** Each item must have a unique `id` property and it must be a
66 | valid css class name. It can not contain a `:`, `,`, `.`, `;` or other special
67 | characters that are invalid in a css class name.
68 |
69 | ```html
70 |
71 |
72 |
73 |
74 |
75 | {{ slot.item.text }}
76 |
77 |
78 |
79 |
80 |
81 |
82 | {{ nestableItems }}
83 |
84 |
85 |
86 |
87 |
128 | ```
129 |
130 |
131 | ## Styling
132 |
133 | By default, vue3-nestable comes without any styling. Which means you can
134 | customize the appearance completely to your needs.
135 |
136 |
137 | ## Props
138 |
139 | The following props can be passed to the `` Component:
140 |
141 | | Property | Type | Default | Description |
142 | | :----------- | :------------------ | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
143 | | value | Array | [ ] | Array of objects to be used in the list. **Important:** Each item must have a unique key by which it can be identified. By default the key is assumed to be named `id` but you can change it by setting the `keyProp` property. |
144 | | threshold | Number | 30 | Amount of pixels by which the mouse must be move horizontally before increasing/decreasing level (nesting) of current element. |
145 | | maxDepth | Number | 10 | Maximum available level of nesting. Setting this to 0 will prevent dragging altogether. |
146 | | group | String or Number | random String | Different group numbers may be passed if you have more than one nestable component on a page and want some extra styles for portal instances. |
147 | | keyProp | String *(Optional)* | 'id' | Name of the property that uniquely identifies an item. |
148 | | childrenProp | String *(Optional)* | 'children' | Name of the property that holds an array of children. |
149 | | class | String *(Optional)* | null | Name of the property for classes to add to the item. |
150 | | hooks | Object *(Optional)* | {} | Allows you to register hooks that fire whenever vue-nestable performs some action |
151 | | rtl | Boolean *(Optional)* | false | Add rtl support to vue-nestable |
152 |
153 |
154 | ## Slots
155 |
156 | The `` Component has two slots that can be used to render items and
157 | a placeholder.
158 |
159 | | Slot Name | Props | Description |
160 | | :---------- | :------------------------- | :------------------------------------------------------------------------------------------------------------ |
161 | | default | `item`, `index`, `isChild` | This slot is used to render the items in the list, use the scoped-slot property `item` to render the element. |
162 | | placeholder | | Lets you define a custom template that is used when no elements are in the list |
163 |
164 |
165 | ## Events
166 |
167 | Events are triggered when an item was moved or when a drag operation was
168 | completed. When you use `v-model` to bind your data, the `@input` event will
169 | automatically be handled.
170 |
171 | | Event | Parameters | Description |
172 | | :----- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
173 | | input | `value` | triggered whenever the list changes |
174 | | change | `value`, `options` | triggered when the user dropped the item. `options` is passed as the second parameter in the event and contains the following properties: `{ items, pathTo }` |
175 |
176 |
177 | ## Hooks
178 |
179 | Hooks allow you to get finer controll over which items can be moved or take
180 | action when a specific item is moved.
181 |
182 | Hooks are passed as an Object to the `:hooks` prop. The object defines a key
183 | with the hook name and a function that will be called when the hook fires.
184 |
185 | ```js
186 | {
187 | 'beforeMove': this.myHookFunction
188 | }
189 | ```
190 |
191 |
192 | | Hook Name | Parameters | Description |
193 | | :------------ | :------------------------------- | :------------------------------------------------------------------------------------------- |
194 | | beforeMove | `{ dragItem, pathFrom, pathTo }` | Fires when an item is about to be moved. Returning `false` will cancel that action. |
195 |
--------------------------------------------------------------------------------
/example/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ item.item.id }} {{ item.item.text }}
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{ nestableItems }}
13 |
14 |
15 |
16 |
17 |
58 |
59 |
--------------------------------------------------------------------------------
/example/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 |
3 | import App from './App.vue'
4 |
5 | createApp(App).mount('#app')
6 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue3-nestable",
3 | "version": "3.0.3",
4 | "description": "A simple drag & drop hierarchical list made as a vue component.",
5 | "author": "Artem Stepanenko ",
6 | "homepage": "https://github.com/stepanenko3/vue3-nestable.git",
7 | "license": "MIT",
8 | "module": "dist/index.umd.js",
9 | "main": "dist/index.umd.js",
10 | "unpkg": "dist/index.umd.js",
11 | "jsdelivr": "dist/index.umd.js",
12 | "keywords": [
13 | "vue",
14 | "vue 3",
15 | "vue-nestable",
16 | "vue3-nestable",
17 | "vue nestable",
18 | "vue 3 nestable",
19 | "vue tree",
20 | "vue 3 tree"
21 | ],
22 | "scripts": {
23 | "dev": "vite",
24 | "build": "vite build",
25 | "preview": "vite preview --port 5050",
26 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
27 | },
28 | "dependencies": {
29 | "immutability-helper": "^3.1.1",
30 | "path": "^0.12.7",
31 | "vue": "^3.2.31"
32 | },
33 | "devDependencies": {
34 | "@vitejs/plugin-vue": "^2.3.1",
35 | "eslint": "^8.5.0",
36 | "eslint-plugin-vue": "^8.2.0",
37 | "vite": "^2.9.1"
38 | },
39 | "browserslist": [
40 | "> 1%",
41 | "last 2 versions",
42 | "not ie < 11"
43 | ]
44 | }
45 |
--------------------------------------------------------------------------------
/src/NestableItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
14 |
15 |
16 |
20 |
23 |
31 |
32 |
37 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
179 |
--------------------------------------------------------------------------------
/src/Placeholder.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
51 |
--------------------------------------------------------------------------------
/src/VueNestable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 | No content
11 |
12 |
13 |
14 |
15 |
18 |
24 |
25 |
30 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
45 |
50 |
51 |
56 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
521 |
--------------------------------------------------------------------------------
/src/VueNestableHandle.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
46 |
--------------------------------------------------------------------------------
/src/calls-hooks.js:
--------------------------------------------------------------------------------
1 | export default {
2 | methods: {
3 | hook (name, params) {
4 | // If the hook has not been registered,
5 | // we consider the hook as successful
6 | if (!this.hooks[name]) return true
7 |
8 | const result = this.hooks[name](params)
9 |
10 | // If the hook does not return anything,
11 | // we also consider it true
12 | return result || result === undefined
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/NestableItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
13 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/components/Placeholder.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/components/VueNestable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | No content
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/components/VueNestableHandle.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/groups-observer.js:
--------------------------------------------------------------------------------
1 | const store = {}
2 |
3 | export default {
4 | methods: {
5 | registerNestable (nestable) {
6 | const storeGroup = this._getByGroup(nestable.group)
7 |
8 | storeGroup.onDragStartListeners.push(nestable.onDragStart)
9 | storeGroup.onMouseEnterListeners.push(nestable.onMouseEnter)
10 | storeGroup.onMouseMoveListeners.push(nestable.onMouseMove)
11 | },
12 |
13 | notifyDragStart (group, event, item) {
14 | const storeGroup = this._getByGroup(group)
15 |
16 | for (const listener of storeGroup.onDragStartListeners) {
17 | listener(event, item)
18 | }
19 | },
20 |
21 | notifyMouseEnter (group, event, eventList, item) {
22 | const storeGroup = this._getByGroup(group)
23 |
24 | for (const listener of storeGroup.onMouseEnterListeners) {
25 | listener(event, eventList, item)
26 | }
27 | },
28 |
29 | notifyMouseMove (group, event) {
30 | const storeGroup = this._getByGroup(group)
31 |
32 | for (const listener of storeGroup.onMouseMoveListeners) {
33 | listener(event)
34 | }
35 | },
36 |
37 | _getByGroup (group) {
38 | // the group already exists, return the reference
39 | if (store[group]) {
40 | return store[group]
41 | }
42 |
43 | // otherwise create a new object for the group
44 | store[group] = {
45 | onDragStartListeners: [],
46 | onMouseEnterListeners: [],
47 | onMouseMoveListeners: [],
48 | onDragStart: [],
49 | dragItem: null
50 | }
51 |
52 | return store[group]
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import VueNestable from './VueNestable.vue'
2 | import VueNestableHandle from './VueNestableHandle.vue'
3 |
4 | // export named components
5 | export {
6 | VueNestable,
7 | VueNestableHandle
8 | }
9 |
10 | // export vue component installer
11 | export default {
12 | install: function (Vue, options) {
13 | Vue.component('VueNestable', VueNestable)
14 | Vue.component('VueNestableHandle', VueNestableHandle)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import VueNestable from './components/VueNestable.vue'
2 | import VueNestableHandle from './components/VueNestableHandle.vue'
3 |
4 | // export named components
5 | export {
6 | VueNestable,
7 | VueNestableHandle
8 | }
9 |
10 |
11 | // export vue component installer
12 | export default {
13 | install: function (Vue) {
14 | Vue.component('VueNestable', VueNestable)
15 | Vue.component('VueNestableHandle', VueNestableHandle)
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/mixins/calls-hooks.js:
--------------------------------------------------------------------------------
1 | export default {
2 | methods: {
3 | hook(name, params) {
4 | // If the hook has not been registered,
5 | // we consider the hook as successful
6 | if (!this.hooks[name]) return true
7 |
8 | const result = this.hooks[name](params)
9 |
10 | // If the hook does not return anything,
11 | // we also consider it true
12 | return result || result === undefined
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/mixins/groups-observer.js:
--------------------------------------------------------------------------------
1 | const store = {}
2 |
3 | export default {
4 | methods: {
5 | registerNestable(nestable) {
6 | const storeGroup = this._getByGroup(nestable.group)
7 |
8 | storeGroup.onDragStartListeners.push(nestable.onDragStart)
9 | storeGroup.onMouseEnterListeners.push(nestable.onMouseEnter)
10 | storeGroup.onMouseMoveListeners.push(nestable.onMouseMove)
11 | },
12 |
13 | notifyDragStart(group, event, item) {
14 | const storeGroup = this._getByGroup(group)
15 |
16 | for (const listener of storeGroup.onDragStartListeners) {
17 | listener(event, item)
18 | }
19 | },
20 |
21 | notifyMouseEnter(group, event, eventList, item) {
22 | const storeGroup = this._getByGroup(group)
23 |
24 | for (const listener of storeGroup.onMouseEnterListeners) {
25 | listener(event, eventList, item)
26 | }
27 | },
28 |
29 | notifyMouseMove(group, event) {
30 | const storeGroup = this._getByGroup(group)
31 |
32 | for (const listener of storeGroup.onMouseMoveListeners) {
33 | listener(event)
34 | }
35 | },
36 |
37 | _getByGroup(group) {
38 | // the group already exists, return the reference
39 | if (store[group]) {
40 | return store[group]
41 | }
42 |
43 | // otherwise create a new object for the group
44 | store[group] = {
45 | onDragStartListeners: [],
46 | onMouseEnterListeners: [],
47 | onMouseMoveListeners: [],
48 | onDragStart: [],
49 | dragItem: null
50 | }
51 |
52 | return store[group]
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/mixins/nestable-helpers.js:
--------------------------------------------------------------------------------
1 | export default {
2 | methods: {
3 | // ––––––––––––––––––––––––––––––––––––
4 | // Getter methods
5 | // ––––––––––––––––––––––––––––––––––––
6 | getPathById(id, items = this.value) {
7 | let path = []
8 |
9 | items.every((item, i) => {
10 | if (item[this.keyProp] === id) {
11 | path.push(i)
12 | } else if (item[this.childrenProp]) {
13 | const childrenPath = this.getPathById(id, item[this.childrenProp])
14 |
15 | if (childrenPath.length) {
16 | path = path.concat(i).concat(childrenPath)
17 | }
18 | }
19 |
20 | return path.length === 0
21 | })
22 |
23 | return path
24 | },
25 |
26 | getItemByPath(path, items = this.value) {
27 | let item = null
28 |
29 | path.forEach(index => {
30 | const list = item && item[this.childrenProp] ? item[this.childrenProp] : items
31 | item = list[index]
32 | })
33 |
34 | return item
35 | },
36 |
37 | getItemDepth(item) {
38 | let level = 1
39 |
40 | if (item[this.childrenProp] && item[this.childrenProp].length > 0) {
41 | const childrenDepths = item[this.childrenProp].map(this.getItemDepth)
42 | level += Math.max(...childrenDepths)
43 | }
44 |
45 | return level
46 | },
47 |
48 | getSplicePath(path, options = {}) {
49 | const splicePath = {}
50 | const numToRemove = options.numToRemove || 0
51 | const itemsToInsert = options.itemsToInsert || []
52 | const lastIndex = path.length - 1
53 | let currentPath = splicePath
54 |
55 | path.forEach((index, i) => {
56 | if (i === lastIndex) {
57 | currentPath.$splice = [[index, numToRemove, ...itemsToInsert]]
58 | } else {
59 | const nextPath = {}
60 | currentPath[index] = { [options.childrenProp]: nextPath }
61 | currentPath = nextPath
62 | }
63 | })
64 |
65 | return splicePath
66 | },
67 |
68 | getRealNextPath(prevPath, nextPath) {
69 | const ppLastIndex = prevPath.length - 1
70 | const npLastIndex = nextPath.length - 1
71 |
72 | if (prevPath.length < nextPath.length) {
73 | // move into deep
74 | let wasShifted = false
75 |
76 | return nextPath.map((nextIndex, i) => {
77 | if (wasShifted) {
78 | return i === npLastIndex
79 | ? nextIndex + 1
80 | : nextIndex
81 | }
82 |
83 | if (typeof prevPath[i] !== 'number') {
84 | return nextIndex
85 | }
86 |
87 | if (nextPath[i] > prevPath[i] && i === ppLastIndex) {
88 | wasShifted = true
89 | return nextIndex - 1
90 | }
91 |
92 | return nextIndex
93 | })
94 | } else if (prevPath.length === nextPath.length) {
95 | // if move bottom + move to item with children => make it a first child instead of swap
96 | if (nextPath[npLastIndex] > prevPath[npLastIndex]) {
97 | const target = this.getItemByPath(nextPath)
98 |
99 | if (target[this.childrenProp] && target[this.childrenProp].length && !this.isCollapsed(target)) {
100 | return nextPath
101 | .slice(0, -1)
102 | .concat(nextPath[npLastIndex] - 1)
103 | .concat(0)
104 | }
105 | }
106 | }
107 |
108 | return nextPath
109 | }
110 |
111 | // getItemOptions() {
112 | // const { renderItem, renderCollapseIcon, handler, childrenProp } = this.props;
113 | // const { dragItem } = this.state;
114 |
115 | // return {
116 | // dragItem,
117 | // childrenProp,
118 | // renderItem,
119 | // renderCollapseIcon,
120 | // handler,
121 |
122 | // onDragStart: this.onDragStart,
123 | // onMouseEnter: this.onMouseEnter,
124 | // isCollapsed: this.isCollapsed,
125 | // onToggleCollapse: this.onToggleCollapse
126 | // };
127 | // }
128 |
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/src/nestable-helpers.js:
--------------------------------------------------------------------------------
1 | export default {
2 | methods: {
3 | // ––––––––––––––––––––––––––––––––––––
4 | // Getter methods
5 | // ––––––––––––––––––––––––––––––––––––
6 | getPathById (id, items = this.value) {
7 | let path = []
8 |
9 | items.every((item, i) => {
10 | if (item[this.keyProp] === id) {
11 | path.push(i)
12 | } else if (item[this.childrenProp]) {
13 | const childrenPath = this.getPathById(id, item[this.childrenProp])
14 |
15 | if (childrenPath.length) {
16 | path = path.concat(i).concat(childrenPath)
17 | }
18 | }
19 |
20 | return path.length === 0
21 | })
22 |
23 | return path
24 | },
25 |
26 | getItemByPath (path, items = this.value) {
27 | let item = null
28 |
29 | path.forEach(index => {
30 | const list = item && item[this.childrenProp] ? item[this.childrenProp] : items
31 | item = list[index]
32 | })
33 |
34 | return item
35 | },
36 |
37 | getItemDepth (item) {
38 | let level = 1
39 |
40 | if (item[this.childrenProp] && item[this.childrenProp].length > 0) {
41 | const childrenDepths = item[this.childrenProp].map(this.getItemDepth)
42 | level += Math.max(...childrenDepths)
43 | }
44 |
45 | return level
46 | },
47 |
48 | getSplicePath (path, options = {}) {
49 | const splicePath = {}
50 | const numToRemove = options.numToRemove || 0
51 | const itemsToInsert = options.itemsToInsert || []
52 | const lastIndex = path.length - 1
53 | let currentPath = splicePath
54 |
55 | path.forEach((index, i) => {
56 | if (i === lastIndex) {
57 | currentPath.$splice = [[index, numToRemove, ...itemsToInsert]]
58 | } else {
59 | const nextPath = {}
60 | currentPath[index] = { [options.childrenProp]: nextPath }
61 | currentPath = nextPath
62 | }
63 | })
64 |
65 | return splicePath
66 | },
67 |
68 | getRealNextPath (prevPath, nextPath) {
69 | const ppLastIndex = prevPath.length - 1
70 | const npLastIndex = nextPath.length - 1
71 |
72 | if (prevPath.length < nextPath.length) {
73 | // move into deep
74 | let wasShifted = false
75 |
76 | return nextPath.map((nextIndex, i) => {
77 | if (wasShifted) {
78 | return i === npLastIndex
79 | ? nextIndex + 1
80 | : nextIndex
81 | }
82 |
83 | if (typeof prevPath[i] !== 'number') {
84 | return nextIndex
85 | }
86 |
87 | if (nextPath[i] > prevPath[i] && i === ppLastIndex) {
88 | wasShifted = true
89 | return nextIndex - 1
90 | }
91 |
92 | return nextIndex
93 | })
94 | } else if (prevPath.length === nextPath.length) {
95 | // if move bottom + move to item with children => make it a first child instead of swap
96 | if (nextPath[npLastIndex] > prevPath[npLastIndex]) {
97 | const target = this.getItemByPath(nextPath)
98 |
99 | if (target[this.childrenProp] && target[this.childrenProp].length && !this.isCollapsed(target)) {
100 | return nextPath
101 | .slice(0, -1)
102 | .concat(nextPath[npLastIndex] - 1)
103 | .concat(0)
104 | }
105 | }
106 | }
107 |
108 | return nextPath
109 | }
110 |
111 | // getItemOptions() {
112 | // const { renderItem, renderCollapseIcon, handler, childrenProp } = this.props;
113 | // const { dragItem } = this.state;
114 |
115 | // return {
116 | // dragItem,
117 | // childrenProp,
118 | // renderItem,
119 | // renderCollapseIcon,
120 | // handler,
121 |
122 | // onDragStart: this.onDragStart,
123 | // onMouseEnter: this.onMouseEnter,
124 | // isCollapsed: this.isCollapsed,
125 | // onToggleCollapse: this.onToggleCollapse
126 | // };
127 | // }
128 |
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/src/utils.js:
--------------------------------------------------------------------------------
1 | export const closest = (target, selector) => {
2 | return target.closest(selector)
3 | }
4 |
5 | export const getOffsetRect = (elem) => {
6 | var box = elem.getBoundingClientRect()
7 |
8 | return { top: Math.round(box.top), left: Math.round(box.left) }
9 | }
10 |
11 | export const getTransformProps = (x, y) => {
12 | return {
13 | transform: 'translate(' + x + 'px, ' + y + 'px)'
14 | }
15 | }
16 |
17 | export const listWithChildren = (list, childrenProp) => {
18 | return list.map(item => {
19 | return {
20 | ...item,
21 | [childrenProp]: item[childrenProp]
22 | ? listWithChildren(item[childrenProp], childrenProp)
23 | : []
24 | }
25 | })
26 | }
27 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'url'
2 |
3 | import { defineConfig } from 'vite'
4 | import vue from '@vitejs/plugin-vue'
5 | import * as path from 'path';
6 |
7 | // https://vitejs.dev/config/
8 | export default defineConfig({
9 | plugins: [vue()],
10 | resolve: {
11 | alias: {
12 | '@': fileURLToPath(new URL('./src', import.meta.url))
13 | }
14 | },
15 | build: {
16 | lib: {
17 | entry: path.resolve(__dirname, 'src/main.js'),
18 | name: 'VueNestable',
19 | fileName: (format) => `index.${format}.js`
20 | },
21 | rollupOptions: {
22 | // make sure to externalize deps that shouldn't be bundled
23 | // into your library
24 | external: ['vue'],
25 | output: {
26 | // Provide global variables to use in the UMD build
27 | // for externalized deps
28 | globals: {
29 | vue: 'Vue'
30 | }
31 | }
32 | }
33 | }
34 | })
35 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | const VueLoaderPlugin = require('vue-loader/lib/plugin')
3 | const HtmlWebpackPlugin = require('html-webpack-plugin')
4 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
5 |
6 | module.exports = {
7 | entry: './example/main.js',
8 | output: {
9 | path: path.resolve(__dirname, './build')
10 | },
11 | resolve: {
12 | extensions: ['.js', '.json', '.vue']
13 | },
14 | module: {
15 | rules: [
16 | {
17 | test: /\.vue$/,
18 | loader: 'vue-loader'
19 | },
20 | {
21 | test: /\.js$/,
22 | exclude: /node_modules/,
23 | loader: 'babel-loader'
24 | },
25 | {
26 | test: /\.css$/,
27 | use: [
28 | 'vue-style-loader',
29 | 'css-loader'
30 | ]
31 | },
32 | {
33 | test: /\.(png|jpg|gif|svg)$/,
34 | loader: 'file-loader',
35 | options: {
36 | name: 'img/[name].[hash:8].[ext]'
37 | }
38 | }
39 | ]
40 | },
41 | plugins: [
42 | new VueLoaderPlugin(),
43 | new HtmlWebpackPlugin({
44 | template: 'index.html',
45 | title: process.env.npm_package_description
46 | })
47 | ],
48 | optimization: {
49 | minimizer: [
50 | new UglifyJsPlugin({
51 | cache: true,
52 | parallel: true,
53 | uglifyOptions: {
54 | output: {
55 | comments: false
56 | }
57 | }
58 | })
59 | ]
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/parser@^7.16.4":
6 | version "7.17.9"
7 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef"
8 | integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==
9 |
10 | "@eslint/eslintrc@^1.2.1":
11 | version "1.2.1"
12 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6"
13 | integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==
14 | dependencies:
15 | ajv "^6.12.4"
16 | debug "^4.3.2"
17 | espree "^9.3.1"
18 | globals "^13.9.0"
19 | ignore "^5.2.0"
20 | import-fresh "^3.2.1"
21 | js-yaml "^4.1.0"
22 | minimatch "^3.0.4"
23 | strip-json-comments "^3.1.1"
24 |
25 | "@humanwhocodes/config-array@^0.9.2":
26 | version "0.9.5"
27 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
28 | integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==
29 | dependencies:
30 | "@humanwhocodes/object-schema" "^1.2.1"
31 | debug "^4.1.1"
32 | minimatch "^3.0.4"
33 |
34 | "@humanwhocodes/object-schema@^1.2.1":
35 | version "1.2.1"
36 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
37 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
38 |
39 | "@vitejs/plugin-vue@^2.3.1":
40 | version "2.3.1"
41 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.3.1.tgz#5f286b8d3515381c6d5c8fa8eee5e6335f727e14"
42 | integrity sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==
43 |
44 | "@vue/compiler-core@3.2.33":
45 | version "3.2.33"
46 | resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz#e915d59cce85898f5c5cfebe4c09e539278c3d59"
47 | integrity sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==
48 | dependencies:
49 | "@babel/parser" "^7.16.4"
50 | "@vue/shared" "3.2.33"
51 | estree-walker "^2.0.2"
52 | source-map "^0.6.1"
53 |
54 | "@vue/compiler-dom@3.2.33":
55 | version "3.2.33"
56 | resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz#6db84296f949f18e5d3e7fd5e80f943dbed7d5ec"
57 | integrity sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==
58 | dependencies:
59 | "@vue/compiler-core" "3.2.33"
60 | "@vue/shared" "3.2.33"
61 |
62 | "@vue/compiler-sfc@3.2.33":
63 | version "3.2.33"
64 | resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz#7ce01dc947a8b76c099811dc6ca58494d4dc773d"
65 | integrity sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==
66 | dependencies:
67 | "@babel/parser" "^7.16.4"
68 | "@vue/compiler-core" "3.2.33"
69 | "@vue/compiler-dom" "3.2.33"
70 | "@vue/compiler-ssr" "3.2.33"
71 | "@vue/reactivity-transform" "3.2.33"
72 | "@vue/shared" "3.2.33"
73 | estree-walker "^2.0.2"
74 | magic-string "^0.25.7"
75 | postcss "^8.1.10"
76 | source-map "^0.6.1"
77 |
78 | "@vue/compiler-ssr@3.2.33":
79 | version "3.2.33"
80 | resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz#3e820267e4eea48fde9519f006dedca3f5e42e71"
81 | integrity sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==
82 | dependencies:
83 | "@vue/compiler-dom" "3.2.33"
84 | "@vue/shared" "3.2.33"
85 |
86 | "@vue/reactivity-transform@3.2.33":
87 | version "3.2.33"
88 | resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz#286063f44ca56150ae9b52f8346a26e5913fa699"
89 | integrity sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==
90 | dependencies:
91 | "@babel/parser" "^7.16.4"
92 | "@vue/compiler-core" "3.2.33"
93 | "@vue/shared" "3.2.33"
94 | estree-walker "^2.0.2"
95 | magic-string "^0.25.7"
96 |
97 | "@vue/reactivity@3.2.33":
98 | version "3.2.33"
99 | resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.33.tgz#c84eedb5225138dbfc2472864c151d3efbb4b673"
100 | integrity sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==
101 | dependencies:
102 | "@vue/shared" "3.2.33"
103 |
104 | "@vue/runtime-core@3.2.33":
105 | version "3.2.33"
106 | resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz#2df8907c85c37c3419fbd1bdf1a2df097fa40df2"
107 | integrity sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==
108 | dependencies:
109 | "@vue/reactivity" "3.2.33"
110 | "@vue/shared" "3.2.33"
111 |
112 | "@vue/runtime-dom@3.2.33":
113 | version "3.2.33"
114 | resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz#123b8969247029ea0d9c1983676d4706a962d848"
115 | integrity sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==
116 | dependencies:
117 | "@vue/runtime-core" "3.2.33"
118 | "@vue/shared" "3.2.33"
119 | csstype "^2.6.8"
120 |
121 | "@vue/server-renderer@3.2.33":
122 | version "3.2.33"
123 | resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz#4b45d6d2ae10ea4e3d2cf8e676804cf60f331979"
124 | integrity sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==
125 | dependencies:
126 | "@vue/compiler-ssr" "3.2.33"
127 | "@vue/shared" "3.2.33"
128 |
129 | "@vue/shared@3.2.33":
130 | version "3.2.33"
131 | resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.33.tgz#69a8c99ceb37c1b031d5cc4aec2ff1dc77e1161e"
132 | integrity sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==
133 |
134 | acorn-jsx@^5.3.1:
135 | version "5.3.2"
136 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
137 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
138 |
139 | acorn@^8.7.0:
140 | version "8.7.0"
141 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
142 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
143 |
144 | ajv@^6.10.0, ajv@^6.12.4:
145 | version "6.12.6"
146 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
147 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
148 | dependencies:
149 | fast-deep-equal "^3.1.1"
150 | fast-json-stable-stringify "^2.0.0"
151 | json-schema-traverse "^0.4.1"
152 | uri-js "^4.2.2"
153 |
154 | ansi-regex@^5.0.1:
155 | version "5.0.1"
156 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
157 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
158 |
159 | ansi-styles@^4.1.0:
160 | version "4.3.0"
161 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
162 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
163 | dependencies:
164 | color-convert "^2.0.1"
165 |
166 | argparse@^2.0.1:
167 | version "2.0.1"
168 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
169 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
170 |
171 | balanced-match@^1.0.0:
172 | version "1.0.2"
173 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
174 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
175 |
176 | brace-expansion@^1.1.7:
177 | version "1.1.11"
178 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
179 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
180 | dependencies:
181 | balanced-match "^1.0.0"
182 | concat-map "0.0.1"
183 |
184 | callsites@^3.0.0:
185 | version "3.1.0"
186 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
187 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
188 |
189 | chalk@^4.0.0:
190 | version "4.1.2"
191 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
192 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
193 | dependencies:
194 | ansi-styles "^4.1.0"
195 | supports-color "^7.1.0"
196 |
197 | color-convert@^2.0.1:
198 | version "2.0.1"
199 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
200 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
201 | dependencies:
202 | color-name "~1.1.4"
203 |
204 | color-name@~1.1.4:
205 | version "1.1.4"
206 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
207 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
208 |
209 | concat-map@0.0.1:
210 | version "0.0.1"
211 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
212 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
213 |
214 | cross-spawn@^7.0.2:
215 | version "7.0.3"
216 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
217 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
218 | dependencies:
219 | path-key "^3.1.0"
220 | shebang-command "^2.0.0"
221 | which "^2.0.1"
222 |
223 | csstype@^2.6.8:
224 | version "2.6.20"
225 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda"
226 | integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==
227 |
228 | debug@^4.1.1, debug@^4.3.2:
229 | version "4.3.4"
230 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
231 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
232 | dependencies:
233 | ms "2.1.2"
234 |
235 | deep-is@^0.1.3:
236 | version "0.1.4"
237 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
238 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
239 |
240 | doctrine@^3.0.0:
241 | version "3.0.0"
242 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
243 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
244 | dependencies:
245 | esutils "^2.0.2"
246 |
247 | esbuild-android-64@0.14.36:
248 | version "0.14.36"
249 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz#fc5f95ce78c8c3d790fa16bc71bd904f2bb42aa1"
250 | integrity sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==
251 |
252 | esbuild-android-arm64@0.14.36:
253 | version "0.14.36"
254 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz#44356fbb9f8de82a5cdf11849e011dfb3ad0a8a8"
255 | integrity sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==
256 |
257 | esbuild-darwin-64@0.14.36:
258 | version "0.14.36"
259 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz#3d9324b21489c70141665c2e740d6e84f16f725d"
260 | integrity sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==
261 |
262 | esbuild-darwin-arm64@0.14.36:
263 | version "0.14.36"
264 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz#2a8040c2e465131e5281034f3c72405e643cb7b2"
265 | integrity sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==
266 |
267 | esbuild-freebsd-64@0.14.36:
268 | version "0.14.36"
269 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz#d82c387b4d01fe9e8631f97d41eb54f2dbeb68a3"
270 | integrity sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==
271 |
272 | esbuild-freebsd-arm64@0.14.36:
273 | version "0.14.36"
274 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz#e8ce2e6c697da6c7ecd0cc0ac821d47c5ab68529"
275 | integrity sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==
276 |
277 | esbuild-linux-32@0.14.36:
278 | version "0.14.36"
279 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz#a4a261e2af91986ea62451f2db712a556cb38a15"
280 | integrity sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==
281 |
282 | esbuild-linux-64@0.14.36:
283 | version "0.14.36"
284 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz#4a9500f9197e2c8fcb884a511d2c9d4c2debde72"
285 | integrity sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==
286 |
287 | esbuild-linux-arm64@0.14.36:
288 | version "0.14.36"
289 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz#c91c21e25b315464bd7da867365dd1dae14ca176"
290 | integrity sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==
291 |
292 | esbuild-linux-arm@0.14.36:
293 | version "0.14.36"
294 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz#90e23bca2e6e549affbbe994f80ba3bb6c4d934a"
295 | integrity sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==
296 |
297 | esbuild-linux-mips64le@0.14.36:
298 | version "0.14.36"
299 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz#40e11afb08353ff24709fc89e4db0f866bc131d2"
300 | integrity sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==
301 |
302 | esbuild-linux-ppc64le@0.14.36:
303 | version "0.14.36"
304 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz#9e8a588c513d06cc3859f9dcc52e5fdfce8a1a5e"
305 | integrity sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==
306 |
307 | esbuild-linux-riscv64@0.14.36:
308 | version "0.14.36"
309 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz#e578c09b23b3b97652e60e3692bfda628b541f06"
310 | integrity sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==
311 |
312 | esbuild-linux-s390x@0.14.36:
313 | version "0.14.36"
314 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz#3c9dab40d0d69932ffded0fd7317bb403626c9bc"
315 | integrity sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==
316 |
317 | esbuild-netbsd-64@0.14.36:
318 | version "0.14.36"
319 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz#e27847f6d506218291619b8c1e121ecd97628494"
320 | integrity sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==
321 |
322 | esbuild-openbsd-64@0.14.36:
323 | version "0.14.36"
324 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz#c94c04c557fae516872a586eae67423da6d2fabb"
325 | integrity sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==
326 |
327 | esbuild-sunos-64@0.14.36:
328 | version "0.14.36"
329 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz#9b79febc0df65a30f1c9bd63047d1675511bf99d"
330 | integrity sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==
331 |
332 | esbuild-windows-32@0.14.36:
333 | version "0.14.36"
334 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz#910d11936c8d2122ffdd3275e5b28d8a4e1240ec"
335 | integrity sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==
336 |
337 | esbuild-windows-64@0.14.36:
338 | version "0.14.36"
339 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz#21b4ce8b42a4efc63f4b58ec617f1302448aad26"
340 | integrity sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==
341 |
342 | esbuild-windows-arm64@0.14.36:
343 | version "0.14.36"
344 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz#ba21546fecb7297667d0052d00150de22c044b24"
345 | integrity sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==
346 |
347 | esbuild@^0.14.27:
348 | version "0.14.36"
349 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.36.tgz#0023a73eab57886ac5605df16ee421e471a971b3"
350 | integrity sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==
351 | optionalDependencies:
352 | esbuild-android-64 "0.14.36"
353 | esbuild-android-arm64 "0.14.36"
354 | esbuild-darwin-64 "0.14.36"
355 | esbuild-darwin-arm64 "0.14.36"
356 | esbuild-freebsd-64 "0.14.36"
357 | esbuild-freebsd-arm64 "0.14.36"
358 | esbuild-linux-32 "0.14.36"
359 | esbuild-linux-64 "0.14.36"
360 | esbuild-linux-arm "0.14.36"
361 | esbuild-linux-arm64 "0.14.36"
362 | esbuild-linux-mips64le "0.14.36"
363 | esbuild-linux-ppc64le "0.14.36"
364 | esbuild-linux-riscv64 "0.14.36"
365 | esbuild-linux-s390x "0.14.36"
366 | esbuild-netbsd-64 "0.14.36"
367 | esbuild-openbsd-64 "0.14.36"
368 | esbuild-sunos-64 "0.14.36"
369 | esbuild-windows-32 "0.14.36"
370 | esbuild-windows-64 "0.14.36"
371 | esbuild-windows-arm64 "0.14.36"
372 |
373 | escape-string-regexp@^4.0.0:
374 | version "4.0.0"
375 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
376 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
377 |
378 | eslint-plugin-vue@^8.2.0:
379 | version "8.6.0"
380 | resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-8.6.0.tgz#fbdf0f13f8d208a4cba752bf54042661a1aec5c3"
381 | integrity sha512-abXiF2J18n/7ZPy9foSlJyouKf54IqpKlNvNmzhM93N0zs3QUxZG/oBd3tVPOJTKg7SlhBUtPxugpqzNbgGpQQ==
382 | dependencies:
383 | eslint-utils "^3.0.0"
384 | natural-compare "^1.4.0"
385 | semver "^7.3.5"
386 | vue-eslint-parser "^8.0.1"
387 |
388 | eslint-scope@^7.0.0, eslint-scope@^7.1.1:
389 | version "7.1.1"
390 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
391 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
392 | dependencies:
393 | esrecurse "^4.3.0"
394 | estraverse "^5.2.0"
395 |
396 | eslint-utils@^3.0.0:
397 | version "3.0.0"
398 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
399 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
400 | dependencies:
401 | eslint-visitor-keys "^2.0.0"
402 |
403 | eslint-visitor-keys@^2.0.0:
404 | version "2.1.0"
405 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
406 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
407 |
408 | eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0:
409 | version "3.3.0"
410 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
411 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
412 |
413 | eslint@^8.5.0:
414 | version "8.13.0"
415 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.13.0.tgz#6fcea43b6811e655410f5626cfcf328016badcd7"
416 | integrity sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==
417 | dependencies:
418 | "@eslint/eslintrc" "^1.2.1"
419 | "@humanwhocodes/config-array" "^0.9.2"
420 | ajv "^6.10.0"
421 | chalk "^4.0.0"
422 | cross-spawn "^7.0.2"
423 | debug "^4.3.2"
424 | doctrine "^3.0.0"
425 | escape-string-regexp "^4.0.0"
426 | eslint-scope "^7.1.1"
427 | eslint-utils "^3.0.0"
428 | eslint-visitor-keys "^3.3.0"
429 | espree "^9.3.1"
430 | esquery "^1.4.0"
431 | esutils "^2.0.2"
432 | fast-deep-equal "^3.1.3"
433 | file-entry-cache "^6.0.1"
434 | functional-red-black-tree "^1.0.1"
435 | glob-parent "^6.0.1"
436 | globals "^13.6.0"
437 | ignore "^5.2.0"
438 | import-fresh "^3.0.0"
439 | imurmurhash "^0.1.4"
440 | is-glob "^4.0.0"
441 | js-yaml "^4.1.0"
442 | json-stable-stringify-without-jsonify "^1.0.1"
443 | levn "^0.4.1"
444 | lodash.merge "^4.6.2"
445 | minimatch "^3.0.4"
446 | natural-compare "^1.4.0"
447 | optionator "^0.9.1"
448 | regexpp "^3.2.0"
449 | strip-ansi "^6.0.1"
450 | strip-json-comments "^3.1.0"
451 | text-table "^0.2.0"
452 | v8-compile-cache "^2.0.3"
453 |
454 | espree@^9.0.0, espree@^9.3.1:
455 | version "9.3.1"
456 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd"
457 | integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==
458 | dependencies:
459 | acorn "^8.7.0"
460 | acorn-jsx "^5.3.1"
461 | eslint-visitor-keys "^3.3.0"
462 |
463 | esquery@^1.4.0:
464 | version "1.4.0"
465 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
466 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
467 | dependencies:
468 | estraverse "^5.1.0"
469 |
470 | esrecurse@^4.3.0:
471 | version "4.3.0"
472 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
473 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
474 | dependencies:
475 | estraverse "^5.2.0"
476 |
477 | estraverse@^5.1.0, estraverse@^5.2.0:
478 | version "5.3.0"
479 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
480 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
481 |
482 | estree-walker@^2.0.2:
483 | version "2.0.2"
484 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
485 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
486 |
487 | esutils@^2.0.2:
488 | version "2.0.3"
489 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
490 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
491 |
492 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
493 | version "3.1.3"
494 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
495 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
496 |
497 | fast-json-stable-stringify@^2.0.0:
498 | version "2.1.0"
499 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
500 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
501 |
502 | fast-levenshtein@^2.0.6:
503 | version "2.0.6"
504 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
505 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
506 |
507 | file-entry-cache@^6.0.1:
508 | version "6.0.1"
509 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
510 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
511 | dependencies:
512 | flat-cache "^3.0.4"
513 |
514 | flat-cache@^3.0.4:
515 | version "3.0.4"
516 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
517 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
518 | dependencies:
519 | flatted "^3.1.0"
520 | rimraf "^3.0.2"
521 |
522 | flatted@^3.1.0:
523 | version "3.2.5"
524 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
525 | integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
526 |
527 | fs.realpath@^1.0.0:
528 | version "1.0.0"
529 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
530 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
531 |
532 | fsevents@~2.3.2:
533 | version "2.3.2"
534 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
535 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
536 |
537 | function-bind@^1.1.1:
538 | version "1.1.1"
539 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
540 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
541 |
542 | functional-red-black-tree@^1.0.1:
543 | version "1.0.1"
544 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
545 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
546 |
547 | glob-parent@^6.0.1:
548 | version "6.0.2"
549 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
550 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
551 | dependencies:
552 | is-glob "^4.0.3"
553 |
554 | glob@^7.1.3:
555 | version "7.2.0"
556 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
557 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
558 | dependencies:
559 | fs.realpath "^1.0.0"
560 | inflight "^1.0.4"
561 | inherits "2"
562 | minimatch "^3.0.4"
563 | once "^1.3.0"
564 | path-is-absolute "^1.0.0"
565 |
566 | globals@^13.6.0, globals@^13.9.0:
567 | version "13.13.0"
568 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b"
569 | integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==
570 | dependencies:
571 | type-fest "^0.20.2"
572 |
573 | has-flag@^4.0.0:
574 | version "4.0.0"
575 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
576 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
577 |
578 | has@^1.0.3:
579 | version "1.0.3"
580 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
581 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
582 | dependencies:
583 | function-bind "^1.1.1"
584 |
585 | ignore@^5.2.0:
586 | version "5.2.0"
587 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
588 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
589 |
590 | immutability-helper@^3.1.1:
591 | version "3.1.1"
592 | resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-3.1.1.tgz#2b86b2286ed3b1241c9e23b7b21e0444f52f77b7"
593 | integrity sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==
594 |
595 | import-fresh@^3.0.0, import-fresh@^3.2.1:
596 | version "3.3.0"
597 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
598 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
599 | dependencies:
600 | parent-module "^1.0.0"
601 | resolve-from "^4.0.0"
602 |
603 | imurmurhash@^0.1.4:
604 | version "0.1.4"
605 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
606 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
607 |
608 | inflight@^1.0.4:
609 | version "1.0.6"
610 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
611 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
612 | dependencies:
613 | once "^1.3.0"
614 | wrappy "1"
615 |
616 | inherits@2:
617 | version "2.0.4"
618 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
619 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
620 |
621 | inherits@2.0.3:
622 | version "2.0.3"
623 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
624 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
625 |
626 | is-core-module@^2.8.1:
627 | version "2.8.1"
628 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
629 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
630 | dependencies:
631 | has "^1.0.3"
632 |
633 | is-extglob@^2.1.1:
634 | version "2.1.1"
635 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
636 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
637 |
638 | is-glob@^4.0.0, is-glob@^4.0.3:
639 | version "4.0.3"
640 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
641 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
642 | dependencies:
643 | is-extglob "^2.1.1"
644 |
645 | isexe@^2.0.0:
646 | version "2.0.0"
647 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
648 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
649 |
650 | js-yaml@^4.1.0:
651 | version "4.1.0"
652 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
653 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
654 | dependencies:
655 | argparse "^2.0.1"
656 |
657 | json-schema-traverse@^0.4.1:
658 | version "0.4.1"
659 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
660 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
661 |
662 | json-stable-stringify-without-jsonify@^1.0.1:
663 | version "1.0.1"
664 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
665 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
666 |
667 | levn@^0.4.1:
668 | version "0.4.1"
669 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
670 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
671 | dependencies:
672 | prelude-ls "^1.2.1"
673 | type-check "~0.4.0"
674 |
675 | lodash.merge@^4.6.2:
676 | version "4.6.2"
677 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
678 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
679 |
680 | lodash@^4.17.21:
681 | version "4.17.21"
682 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
683 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
684 |
685 | lru-cache@^6.0.0:
686 | version "6.0.0"
687 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
688 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
689 | dependencies:
690 | yallist "^4.0.0"
691 |
692 | magic-string@^0.25.7:
693 | version "0.25.9"
694 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
695 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
696 | dependencies:
697 | sourcemap-codec "^1.4.8"
698 |
699 | minimatch@^3.0.4:
700 | version "3.1.2"
701 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
702 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
703 | dependencies:
704 | brace-expansion "^1.1.7"
705 |
706 | ms@2.1.2:
707 | version "2.1.2"
708 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
709 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
710 |
711 | nanoid@^3.3.1:
712 | version "3.3.2"
713 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557"
714 | integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==
715 |
716 | natural-compare@^1.4.0:
717 | version "1.4.0"
718 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
719 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
720 |
721 | once@^1.3.0:
722 | version "1.4.0"
723 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
724 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
725 | dependencies:
726 | wrappy "1"
727 |
728 | optionator@^0.9.1:
729 | version "0.9.1"
730 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
731 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
732 | dependencies:
733 | deep-is "^0.1.3"
734 | fast-levenshtein "^2.0.6"
735 | levn "^0.4.1"
736 | prelude-ls "^1.2.1"
737 | type-check "^0.4.0"
738 | word-wrap "^1.2.3"
739 |
740 | parent-module@^1.0.0:
741 | version "1.0.1"
742 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
743 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
744 | dependencies:
745 | callsites "^3.0.0"
746 |
747 | path-is-absolute@^1.0.0:
748 | version "1.0.1"
749 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
750 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
751 |
752 | path-key@^3.1.0:
753 | version "3.1.1"
754 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
755 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
756 |
757 | path-parse@^1.0.7:
758 | version "1.0.7"
759 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
760 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
761 |
762 | path@^0.12.7:
763 | version "0.12.7"
764 | resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f"
765 | integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=
766 | dependencies:
767 | process "^0.11.1"
768 | util "^0.10.3"
769 |
770 | picocolors@^1.0.0:
771 | version "1.0.0"
772 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
773 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
774 |
775 | postcss@^8.1.10, postcss@^8.4.12:
776 | version "8.4.12"
777 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
778 | integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
779 | dependencies:
780 | nanoid "^3.3.1"
781 | picocolors "^1.0.0"
782 | source-map-js "^1.0.2"
783 |
784 | prelude-ls@^1.2.1:
785 | version "1.2.1"
786 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
787 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
788 |
789 | process@^0.11.1:
790 | version "0.11.10"
791 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
792 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
793 |
794 | punycode@^2.1.0:
795 | version "2.1.1"
796 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
797 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
798 |
799 | regexpp@^3.2.0:
800 | version "3.2.0"
801 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
802 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
803 |
804 | resolve-from@^4.0.0:
805 | version "4.0.0"
806 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
807 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
808 |
809 | resolve@^1.22.0:
810 | version "1.22.0"
811 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
812 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
813 | dependencies:
814 | is-core-module "^2.8.1"
815 | path-parse "^1.0.7"
816 | supports-preserve-symlinks-flag "^1.0.0"
817 |
818 | rimraf@^3.0.2:
819 | version "3.0.2"
820 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
821 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
822 | dependencies:
823 | glob "^7.1.3"
824 |
825 | rollup@^2.59.0:
826 | version "2.70.1"
827 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e"
828 | integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==
829 | optionalDependencies:
830 | fsevents "~2.3.2"
831 |
832 | semver@^7.3.5:
833 | version "7.3.7"
834 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
835 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
836 | dependencies:
837 | lru-cache "^6.0.0"
838 |
839 | shebang-command@^2.0.0:
840 | version "2.0.0"
841 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
842 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
843 | dependencies:
844 | shebang-regex "^3.0.0"
845 |
846 | shebang-regex@^3.0.0:
847 | version "3.0.0"
848 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
849 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
850 |
851 | source-map-js@^1.0.2:
852 | version "1.0.2"
853 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
854 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
855 |
856 | source-map@^0.6.1:
857 | version "0.6.1"
858 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
859 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
860 |
861 | sourcemap-codec@^1.4.8:
862 | version "1.4.8"
863 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
864 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
865 |
866 | strip-ansi@^6.0.1:
867 | version "6.0.1"
868 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
869 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
870 | dependencies:
871 | ansi-regex "^5.0.1"
872 |
873 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
874 | version "3.1.1"
875 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
876 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
877 |
878 | supports-color@^7.1.0:
879 | version "7.2.0"
880 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
881 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
882 | dependencies:
883 | has-flag "^4.0.0"
884 |
885 | supports-preserve-symlinks-flag@^1.0.0:
886 | version "1.0.0"
887 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
888 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
889 |
890 | text-table@^0.2.0:
891 | version "0.2.0"
892 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
893 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
894 |
895 | type-check@^0.4.0, type-check@~0.4.0:
896 | version "0.4.0"
897 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
898 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
899 | dependencies:
900 | prelude-ls "^1.2.1"
901 |
902 | type-fest@^0.20.2:
903 | version "0.20.2"
904 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
905 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
906 |
907 | uri-js@^4.2.2:
908 | version "4.4.1"
909 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
910 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
911 | dependencies:
912 | punycode "^2.1.0"
913 |
914 | util@^0.10.3:
915 | version "0.10.4"
916 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
917 | integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
918 | dependencies:
919 | inherits "2.0.3"
920 |
921 | v8-compile-cache@^2.0.3:
922 | version "2.3.0"
923 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
924 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
925 |
926 | vite@^2.9.1:
927 | version "2.9.5"
928 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.5.tgz#08ef37ac7a6d879c96f328b791732c9a00ea25ea"
929 | integrity sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==
930 | dependencies:
931 | esbuild "^0.14.27"
932 | postcss "^8.4.12"
933 | resolve "^1.22.0"
934 | rollup "^2.59.0"
935 | optionalDependencies:
936 | fsevents "~2.3.2"
937 |
938 | vue-eslint-parser@^8.0.1:
939 | version "8.3.0"
940 | resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz#5d31129a1b3dd89c0069ca0a1c88f970c360bd0d"
941 | integrity sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==
942 | dependencies:
943 | debug "^4.3.2"
944 | eslint-scope "^7.0.0"
945 | eslint-visitor-keys "^3.1.0"
946 | espree "^9.0.0"
947 | esquery "^1.4.0"
948 | lodash "^4.17.21"
949 | semver "^7.3.5"
950 |
951 | vue@^3.2.31:
952 | version "3.2.33"
953 | resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2"
954 | integrity sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==
955 | dependencies:
956 | "@vue/compiler-dom" "3.2.33"
957 | "@vue/compiler-sfc" "3.2.33"
958 | "@vue/runtime-dom" "3.2.33"
959 | "@vue/server-renderer" "3.2.33"
960 | "@vue/shared" "3.2.33"
961 |
962 | which@^2.0.1:
963 | version "2.0.2"
964 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
965 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
966 | dependencies:
967 | isexe "^2.0.0"
968 |
969 | word-wrap@^1.2.3:
970 | version "1.2.3"
971 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
972 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
973 |
974 | wrappy@1:
975 | version "1.0.2"
976 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
977 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
978 |
979 | yallist@^4.0.0:
980 | version "4.0.0"
981 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
982 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
983 |
--------------------------------------------------------------------------------