├── docs ├── logo.png ├── favicon.ico ├── index.html └── assets │ └── index.851dd584.css ├── public ├── logo.png └── favicon.ico ├── src ├── main.ts ├── env.d.ts ├── components │ ├── index.ts │ ├── help.ts │ └── vue-grid-layout-split.vue └── App.vue ├── .gitignore ├── config ├── prod-html.config.ts ├── dev.config.ts └── prod-comp.config.ts ├── types ├── help.d.ts └── index.d.ts ├── vite.config.ts ├── tsconfig.json ├── index.html ├── plugins ├── vite-plugin-external │ └── index.ts └── vite-plugin-vue-export-helper │ └── index.ts ├── LICENSE ├── package.json ├── README.md ├── lib ├── vue-grid-layout-split.es.js ├── vue-grid-layout-split.cjs.js └── vue-grid-layout-split.umd.js └── yarn.lock /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paobai/vue-grid-layout-split/HEAD/docs/logo.png -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paobai/vue-grid-layout-split/HEAD/docs/favicon.ico -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paobai/vue-grid-layout-split/HEAD/public/logo.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paobai/vue-grid-layout-split/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue" 2 | import App from "./App.vue" 3 | import layoutInstall from "./components/index" 4 | 5 | let app = createApp(App) 6 | app.use(layoutInstall) 7 | app.mount("#app") 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | 3 | node_modules 4 | .DS_Store 5 | 6 | # Editor directories and files 7 | .vscode/* 8 | !.vscode/extensions.json 9 | .idea 10 | *.suo 11 | *.ntvs* 12 | *.njsproj 13 | *.sln 14 | *.sw? 15 | -------------------------------------------------------------------------------- /config/prod-html.config.ts: -------------------------------------------------------------------------------- 1 | import { InlineConfig } from 'vite'; 2 | import vue from '@vitejs/plugin-vue'; 3 | 4 | const config: InlineConfig = { 5 | mode: 'production', 6 | build:{ 7 | emptyOutDir: true, 8 | outDir: 'docs', 9 | }, 10 | base: "./", 11 | plugins: [vue()] 12 | }; 13 | 14 | export default config; 15 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | const component: DefineComponent<{}, {}, any> 6 | export default component 7 | } 8 | 9 | 10 | declare module 'vue-grid-layout' { 11 | export class GridLayout { 12 | } 13 | export class GridItem { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /types/help.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum GridItemType { 2 | SMALL = 0, 3 | BIG = 1 4 | } 5 | export declare enum GridPosition { 6 | LEFT = 0, 7 | RIGHT = 1 8 | } 9 | export interface LayoutType { 10 | id: number; 11 | x: number; 12 | y: number; 13 | h: number; 14 | height: number; 15 | resetH: number; 16 | type: GridItemType; 17 | [key: string]: any; 18 | } 19 | export declare function fixCardHeight(layout: LayoutType[]): void; 20 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import prodCompConfig from "./config/prod-comp.config" 2 | import prodHtmlConfig from "./config/prod-html.config" 3 | import devConfig from "./config/dev.config" 4 | import { ConfigEnv, UserConfigExport } from "vite" 5 | 6 | //vitejs.dev/config/ 7 | export default ({ command, mode }: ConfigEnv): UserConfigExport => { 8 | if (command === "serve") return devConfig 9 | else { 10 | if (process.env["BUILD_DIST"] === "component") return prodCompConfig 11 | else return prodHtmlConfig 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "types", 4 | "target": "ES6", 5 | "module": "ES2020", 6 | "moduleResolution": "node", 7 | "removeComments": true, 8 | "strict": true, 9 | "allowJs": true, 10 | "isolatedModules": true, 11 | "esModuleInterop": true, 12 | "jsx": "preserve", 13 | "skipLibCheck": true, 14 | "allowUmdGlobalAccess": true 15 | }, 16 | "files": [ 17 | "./src/components/index.ts", 18 | "./src/env.d.ts" 19 | ], 20 | "include": ["./src/**/*.d.ts"] 21 | } 22 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Vue-Grid-Layout-Split 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /plugins/vite-plugin-external/index.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'vite'; 2 | 3 | export default function externalPlugin(): Plugin { 4 | return { 5 | name: 'vite:external-node_modules', 6 | enforce: 'pre', 7 | async resolveId(source: string, importer) { 8 | const result = await this.resolve(source, importer, { 9 | skipSelf: true, 10 | custom: { 'node-resolve': {} }, 11 | }); 12 | 13 | if (result && /node_modules/.test(result.id)) { 14 | return false; 15 | } 16 | 17 | return null; 18 | }, 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /src/components/index.ts: -------------------------------------------------------------------------------- 1 | import _VueGridLayoutSplit from "./vue-grid-layout-split.vue" 2 | import type { App } from 'vue'; 3 | export { GridItemType, GridPosition } from "./help" 4 | export type { LayoutType } from "./help" 5 | import vueGridLayoutInstall from "vue-grid-layout" 6 | 7 | 8 | const vueGridLayoutSplit = Object.assign(_VueGridLayoutSplit, { 9 | install: (app: App) => { 10 | app.component(_VueGridLayoutSplit.name, _VueGridLayoutSplit); 11 | // @ts-ignore 12 | app.use(vueGridLayoutInstall) 13 | console.log("had install3") 14 | }, 15 | }) 16 | 17 | export default vueGridLayoutSplit -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Vue-Grid-Layout-Split 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /types/index.d.ts: -------------------------------------------------------------------------------- 1 | import type { App } from 'vue'; 2 | export { GridItemType, GridPosition } from "./help"; 3 | export type { LayoutType } from "./help"; 4 | declare const vueGridLayoutSplit: { 5 | new (...args: any[]): any; 6 | __isFragment?: undefined; 7 | __isTeleport?: undefined; 8 | __isSuspense?: undefined; 9 | } & import("vue").ComponentOptionsBase>, {}, any, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & { 10 | install: (app: App) => void; 11 | }; 12 | export default vueGridLayoutSplit; 13 | -------------------------------------------------------------------------------- /plugins/vite-plugin-vue-export-helper/index.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'vite'; 2 | 3 | const EXPORT_HELPER_ID = 'plugin-vue:export-helper'; 4 | const helperCode = ` 5 | export default (sfc, props) => { 6 | for (const [key, val] of props) { 7 | sfc[key] = val 8 | } 9 | return sfc 10 | } 11 | `; 12 | 13 | export default function virtualPlugin(): Plugin { 14 | return { 15 | name: 'vite:vue-export-helper', 16 | enforce: 'pre', 17 | resolveId(source: string) { 18 | if (source === EXPORT_HELPER_ID) { 19 | return `${EXPORT_HELPER_ID}.js`; 20 | } 21 | return null; 22 | }, 23 | load(source) { 24 | if (source === `${EXPORT_HELPER_ID}.js`) { 25 | return helperCode; 26 | } 27 | return null; 28 | }, 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /config/dev.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig, InlineConfig } from 'vite'; 2 | import vue from '@vitejs/plugin-vue'; 3 | import vueJsx from '@vitejs/plugin-vue-jsx'; 4 | import eslint from 'vite-plugin-eslint'; 5 | import external from '../plugins/vite-plugin-external'; 6 | 7 | export default defineConfig({ 8 | mode: 'development', 9 | build: { 10 | target: 'modules', 11 | outDir: 'es', 12 | emptyOutDir: true, 13 | minify: false, 14 | brotliSize: false, 15 | rollupOptions: { 16 | output: { 17 | entryFileNames: '[name].js', 18 | preserveModules: true, 19 | preserveModulesRoot: 'components', 20 | }, 21 | }, 22 | lib: { 23 | entry: 'components/index.ts', 24 | formats: ['es'], 25 | }, 26 | watch: {}, 27 | }, 28 | server:{ 29 | }, 30 | optimizeDeps: { 31 | // exclude: ['vue-grid-layout'] 32 | }, 33 | 34 | plugins: [ 35 | // external(), 36 | vue(), 37 | vueJsx(), 38 | ], 39 | }) as InlineConfig; 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 greyby 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 | 23 | -------------------------------------------------------------------------------- /config/prod-comp.config.ts: -------------------------------------------------------------------------------- 1 | import { InlineConfig } from 'vite'; 2 | import vue from '@vitejs/plugin-vue'; 3 | import vueJsx from '@vitejs/plugin-vue-jsx'; 4 | import external from '../plugins/vite-plugin-external'; 5 | import vueExportHelper from '../plugins/vite-plugin-vue-export-helper'; 6 | import cssInjectedByJsPlugin from "vite-plugin-css-injected-by-js"; 7 | 8 | 9 | 10 | const config: InlineConfig = { 11 | mode: 'production', 12 | publicDir: false, 13 | build: { 14 | cssCodeSplit: false, 15 | target: 'modules', 16 | outDir: 'lib', 17 | emptyOutDir: true, 18 | minify: false, 19 | brotliSize: false, 20 | rollupOptions: { 21 | input: ['src/components/index.ts'], 22 | // output: [ 23 | // { 24 | // format: 'es', 25 | // dir: 'es', 26 | // entryFileNames: '[name].js', 27 | // preserveModules: true, 28 | // preserveModulesRoot: 'components', 29 | // }, 30 | // { 31 | // format: 'umd', 32 | // dir: 'lib', 33 | // entryFileNames: '[name].js', 34 | // preserveModules: true, 35 | // preserveModulesRoot: 'components', 36 | // }, 37 | // ], 38 | }, 39 | // 开启lib模式,但不使用下面配置 40 | lib: { 41 | name: "vue-grid-layout-split", 42 | entry: 'src/components/index.ts', 43 | formats: ['cjs', 'umd', 'es'], 44 | }, 45 | }, 46 | // @ts-ignore vite内部类型错误 47 | plugins: [external(), vue(), vueJsx(), vueExportHelper(), cssInjectedByJsPlugin()], 48 | }; 49 | 50 | export default config; 51 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-grid-layout-split", 3 | "version": "1.0.2", 4 | "description": "A draggable layout", 5 | "main": "lib/vue-grid-layout-split.es.js", 6 | "module": "lib/vue-grid-layout-split.umd.js", 7 | "types": "types/index.d.ts", 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1", 10 | "start": "vite", 11 | "preview": "cross-env BUILD_DIST=html vite preview --port 5050", 12 | "build": "vue-tsc --noEmit && yarn run build:types && yarn run build:component && yarn run build:html", 13 | "build:component": "cross-env BUILD_DIST=component vite build", 14 | "build:html": "cross-env BUILD_DIST=html vite build", 15 | "build:types": "tsc --emitDeclarationOnly --declaration" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/paobai/vue-grid-layout-split.git" 20 | }, 21 | "author": "", 22 | "license": "ISC", 23 | "dependencies": { 24 | "@vitejs/plugin-vue": "^1.6.2", 25 | "@vitejs/plugin-vue-jsx": "^1.1.8", 26 | "cross-env": "^7.0.3", 27 | "glob": "^7.1.6", 28 | "ts-node": "^10.1.0", 29 | "vite": "^2.5.6", 30 | "vite-plugin-eslint": "^1.1.2", 31 | "vue": "^3.2.13", 32 | "vue-grid-layout": "^3.0.0-beta1" 33 | }, 34 | "devDependencies": { 35 | "@types/node": "^18.6.4", 36 | "eslint": "^7.21.0", 37 | "eslint-plugin-vue": "^7.7.0", 38 | "less": "^4.1.2", 39 | "less-loader": "^10.2.0", 40 | "ts-node": "^10.1.0", 41 | "typescript": "^4.2.4", 42 | "vite-plugin-css-injected-by-js": "^1.5.1", 43 | "vue-tsc": "^0.38.4", 44 | "yarn": "^1.22.19" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /docs/assets/index.851dd584.css: -------------------------------------------------------------------------------- 1 | .vue-grid-layout[data-v-82449fba]{height:100%;width:100%}.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder{background-color:#000}.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder.not-allowed{background-color:red}.vue-grid-layout[data-v-82449fba] .vue-grid-item:not(.vue-grid-placeholder){border:1px solid black}.vue-grid-layout[data-v-82449fba] .vue-grid-item .resizing{opacity:.9}.vue-grid-layout[data-v-82449fba] .vue-grid-item .static{background:#cce}.vue-grid-layout[data-v-82449fba] .vue-grid-item.moving{border-radius:4px;border:2px solid #538dff}.vue-grid-layout[data-v-82449fba] .vue-grid-item .edit-mask{background-color:#5e739f33;position:absolute;left:0;top:0;width:100%;height:100%}.vue-grid-layout[data-v-82449fba] .vue-grid-item .delete-options{position:absolute;font-size:16px;color:#4e5969;top:0;right:0;padding:10px;cursor:pointer}.vue-grid-layout[data-v-82449fba] .vue-grid-item .default-show-text{font-size:24px;display:flex;align-items:center;justify-content:center;position:absolute;height:100%;width:100%}.vue-grid-layout[data-v-82449fba] .vue-grid-item .no-drag{height:100%;width:100%}.vue-grid-layout[data-v-82449fba] .vue-grid-item .minMax{font-size:12px}.vue-grid-layout[data-v-82449fba] .vue-grid-item .add{cursor:pointer}.vue-draggable-handle[data-v-82449fba]{position:absolute;width:20px;height:20px;top:0;left:0;padding:0 8px 8px 0;background:url("data:image/svg+xml;utf8,") no-repeat bottom right;background-origin:content-box;box-sizing:border-box;cursor:pointer}.layoutJSON[data-v-82449fba]{background:#ddd;border:1px solid black;margin-top:10px;padding:10px}.columns[data-v-82449fba]{-moz-columns:120px;-webkit-columns:120px;columns:120px}#app,body,html{height:100%;width:100%;margin:0}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#8f9097 transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:transparent;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}::-webkit-scrollbar-thumb{background-color:#8f9097;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}.App[data-v-514bce1b]{padding:12px;width:100%;height:100%;display:flex;flex-direction:column}.App .top-wrapper[data-v-514bce1b]{display:flex;align-items:center;justify-content:center}.App .top-wrapper .logo[data-v-514bce1b]{width:64px;height:64px;margin-right:26px}.App .top-wrapper .title[data-v-514bce1b]{margin-right:32px;font-size:26px;font-weight:700}.App .header-wrapper[data-v-514bce1b]{padding:10px}.App .header-wrapper .control-wrapper[data-v-514bce1b]{display:flex;flex-wrap:wrap;justify-content:space-between}.App .header-wrapper .control-wrapper .left-wrapper[data-v-514bce1b],.App .header-wrapper .control-wrapper .right-wrapper[data-v-514bce1b]{display:flex;align-items:center;margin-bottom:18px}.App .header-wrapper .control-wrapper .bt-class[data-v-514bce1b]{cursor:pointer;height:36px;color:#fff;line-height:36px;padding:0 13px;background:#538DFF;box-shadow:0 0 12px #538dff80;border-radius:25px;margin-right:16px}.App .header-wrapper .control-wrapper .bt-class.edit[data-v-514bce1b]{background:#ef0a0a;box-shadow:0 0 12px #ef0a0a80}.App .header-wrapper .control-wrapper .bt-class[data-v-514bce1b]:hover{filter:grayscale(20%)}.App .header-wrapper .control-wrapper .input-class[data-v-514bce1b]{width:80px;padding-left:8px;height:30px}.App .header-wrapper .item-wrapper[data-v-514bce1b]{display:grid;grid-template-columns:repeat(auto-fill,300px);grid-gap:8px}.App .header-wrapper .item-wrapper .item-card[data-v-514bce1b]{text-align:center;padding:8px 0;height:40px;border:1px gray solid;border-radius:8px}.App .layout-wrapper[data-v-514bce1b]{height:0;flex:1}.App .layout-wrapper .content-wrapper[data-v-514bce1b]{width:100%;height:100%;display:flex;font-size:28px;justify-content:center;align-items:center} 2 | -------------------------------------------------------------------------------- /src/components/help.ts: -------------------------------------------------------------------------------- 1 | export enum GridItemType { 2 | SMALL = 0, 3 | BIG = 1 4 | } 5 | export enum GridPosition { 6 | LEFT = 0, 7 | RIGHT = 1 8 | } 9 | 10 | export interface LayoutType { 11 | id: number 12 | x: number 13 | y: number 14 | h: number 15 | height: number 16 | resetH: number 17 | type: GridItemType 18 | [key: string]: any 19 | } 20 | 21 | // 修复vue-grid-layout y高度小于0情况 22 | export function fixCardHeight(layout: LayoutType[]) { 23 | // 修复bug Y有可能从负数开始 24 | checkLessThanZeroY(layout) 25 | // 使在两个大卡片之间的卡片高度一样 26 | fixCardSameHeight(layout) 27 | } 28 | 29 | function fixCardSameHeight(layout: LayoutType[]) { 30 | const findLeftBigList = getLeftBigList(layout) 31 | findLeftBigList.forEach((e, index) => { 32 | const lessThanY = e.y + e.h 33 | let moreThanY = 0 34 | if (index > 0) moreThanY = findLeftBigList[index - 1].y + findLeftBigList[index - 1].h 35 | const { sumH: x0SumH, lastDist: x0LastDist } = findMaxY(layout, 0, lessThanY, moreThanY) 36 | const { sumH: x1SumH, lastDist: x1LastDist } = findMaxY(layout, 1, lessThanY, moreThanY) 37 | if (x0LastDist && x1LastDist) { 38 | const maxYAddH = Math.max(x0SumH, x1SumH) 39 | x0LastDist.h = x0LastDist.h + maxYAddH - x0SumH 40 | x1LastDist.h = x1LastDist.h + maxYAddH - x1SumH 41 | } 42 | }) 43 | } 44 | function findMaxY(layout: LayoutType[], x: number, lessThanY: number, moreThanY: number) { 45 | const findInRangeList = layout 46 | .filter(e => e.x === x && e.y + e.h < lessThanY && e.y >= moreThanY) 47 | .sort((a, b) => a.y - b.y) 48 | findInRangeList.forEach(e => { 49 | e.h = e.resetH 50 | }) 51 | let sumH = 0 52 | findInRangeList.forEach(e => { 53 | sumH += e.h 54 | }) 55 | return { sumH, lastDist: findInRangeList[findInRangeList.length - 1], findInRangeList } 56 | } 57 | 58 | function getLeftBigList(layout: LayoutType[]): LayoutType[] { 59 | return layout 60 | .filter(e => { 61 | return e.type === GridItemType.BIG && e.x === 0 62 | }) 63 | .sort((a, b) => a.y - b.y) 64 | } 65 | 66 | function checkLessThanZeroY(layout: LayoutType[]) { 67 | const findLeftBigList = getLeftBigList(layout) 68 | const fixLeft = () => { 69 | // 左边第一个是大的情况 70 | if (findLeftBigList.length > 0 && findLeftBigList[0].y <= 0) { 71 | const leftList = layout 72 | .filter(e => { 73 | return e.x === 0 || e.x === 1 74 | }) 75 | .sort((a, b) => a.y - b.y) 76 | const diffY = Math.abs(findLeftBigList[0].y) 77 | leftList.forEach(e => { 78 | e.y += diffY 79 | }) 80 | } else { 81 | let lessThanY = Number.MAX_SAFE_INTEGER 82 | let moreThanY = Number.MAX_SAFE_INTEGER 83 | if (findLeftBigList.length > 0) { 84 | lessThanY = findLeftBigList[0].y + findLeftBigList[0].h 85 | moreThanY = findLeftBigList[0].y 86 | } 87 | 88 | const { sumH: x0SumH, findInRangeList: x0FindInRangeList } = findMaxY( 89 | layout, 90 | 0, 91 | lessThanY, 92 | Number.MIN_SAFE_INTEGER 93 | ) 94 | const { sumH: x1SumH, findInRangeList: x1FindInRangeList } = findMaxY( 95 | layout, 96 | 1, 97 | lessThanY, 98 | Number.MIN_SAFE_INTEGER 99 | ) 100 | let startX0Y = 0 101 | let startX1Y = 0 102 | if (x0FindInRangeList.length !== 0) startX0Y = x0FindInRangeList[0].y 103 | if (x1FindInRangeList.length !== 0) startX1Y = x1FindInRangeList[0].y 104 | const maxYAddHBefore = Math.max(x0SumH, x1SumH) 105 | const maxYAddHAfter = Math.max(x0SumH + Math.abs(startX0Y), x1SumH + Math.abs(startX1Y)) 106 | const diffY = maxYAddHAfter - maxYAddHBefore 107 | x0FindInRangeList.forEach((e: any) => { 108 | e.y += Math.abs(startX0Y) 109 | }) 110 | x1FindInRangeList.forEach((e: any) => { 111 | e.y += Math.abs(startX1Y) 112 | }) 113 | layout 114 | .filter(e => { 115 | return e.y >= moreThanY && (e.x === 0 || e.x === 1) 116 | }) 117 | .forEach(e => { 118 | e.y += diffY 119 | }) 120 | } 121 | } 122 | const fixRight = () => { 123 | const rightList = layout 124 | .filter(e => { 125 | return e.x === 2 126 | }) 127 | .sort((a, b) => a.y - b.y) 128 | if (rightList.length === 0) return 129 | const diffY = Math.abs(rightList[0].y) 130 | rightList.forEach(e => { 131 | e.y += diffY 132 | }) 133 | } 134 | fixLeft() 135 | fixRight() 136 | } 137 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

vue-grid-layout-split

2 |

3 | 4 | Vue Grid Layout 5 | 6 |

7 |

8 | 9 | 10 | 11 | 12 |

13 | 14 | `vue-grid-layout-split`是模仿阿里云控制台布局方式的栅格布局系统, 适用于Vue.js。 15 | **灵感源自于 [vue-grid-layout](https://www.npmjs.com/package/vue-grid-layout)** 16 | 17 | ### **当前版本:** 1.0.2 (目前仅支持 Vue 3.0+) 18 | 19 | 20 | # [在线演示](https://paobai.github.io/vue-grid-layout-split/) 21 | 22 | ## 特性 23 | 24 | * 参考阿里云控制台模块布局方式 25 | * 可拖拽 26 | * 可自定义栅格元素高度 27 | * 固定左右布局 28 | * 可自定义栅格元素间隙 29 | * 可序列化和还原的布局 30 | 31 | 32 | ## 入门指南 33 | 34 | ### 安装 35 | 36 | #### npm 37 | 38 | # 使用 npm 39 | npm install vue-grid-layout-split --save 40 | 41 | # 使用 yarn 42 | yarn add vue-grid-layout-split 43 | 44 | 45 | 引入 46 | 47 | 再main.js中使用组件 48 | ```javascript 49 | import vueGridLayoutSplit from "vue-grid-layout-split"; 50 | app.use(vueGridLayoutSplit); 51 | ``` 52 | 53 | ### 使用 54 | 55 | ```javascript 56 | import { GridItemType } from "vue-grid-layout-split"; 57 | // ······ 58 | var defaultLayout = [ 59 | {id: 0, x: 0, y: 0, height: 100, type: GridItemType.SMALL}, 60 | {id: 1, x: 0, y: 0, height: 200, type: GridItemType.BIG}, 61 | {id: 2, x: 0, y: 0, height: 150, type: GridItemType.SMALL}, 62 | 63 | {id: 3, x: 1, y: 0, height: 250, type: GridItemType.SMALL}, 64 | {id: 4, x: 2, y: 0, height: 130, type: GridItemType.SMALL}, 65 | {id: 5, x: 1, y: 0, height: 100, type: GridItemType.SMALL}, 66 | 67 | {id: 6, x: 2, y: 0, height: 100, type: GridItemType.SMALL}, 68 | {id: 7, x: 2, y: 0, height: 180, type: GridItemType.SMALL}, 69 | {id: 8, x: 2, y: 0, height: 100, type: GridItemType.SMALL} 70 | ]; 71 | 72 | new Vue({ 73 | el: '#app', 74 | data: { 75 | defaultLayout: defaultLayout, 76 | }, 77 | }); 78 | ``` 79 | 80 | 81 | ```html 82 | 86 | 93 | 94 | ``` 95 | 96 | 97 | ## 文档 98 | 99 | ### 属性 100 | 101 | #### vueGridLayoutSplit 102 | 103 | * **defaultLayout** 104 | 105 | * type: `Array` 106 | * required: `true` 107 | 108 | 数据源。值必须为 `Array`,其数据项为 `Object`。 每条数据项有 `id`, `x`, `y`, `height` 和 `type(GridItemType)` 属性。 109 | 其中 `id`, `height`为必填项。请参考下面的 `GridItem`。 110 | 111 | * **editMode** 112 | 113 | * type: `Boolean` 114 | * required: `false` 115 | * default: `false` 116 | 117 | 组件是否为编辑状态,为编辑状态可以进行拖动和删除操作。 118 | 119 | * **gridMargin** 120 | 121 | * type: `Number | Array` 122 | * required: `false` 123 | * default: `20` 124 | 125 | 定义栅格之间的间距,为列表时第一个参数为行间距,第二个参数为列间距。 126 | 127 | * **editMask** 128 | 129 | * type: `Boolean` 130 | * required: `false` 131 | * default: `true` 132 | 133 | 是否需要编辑状态的mask蒙版 134 | 135 | ##### GridItem 136 | 137 | * **id** 138 | 139 | * type: `String | Number` 140 | * required: `true` 141 | 142 | 栅格中元素的ID。 143 | 144 | * **x** 145 | 146 | * type: `Number` 147 | * required: `false` 148 | * default: `0` 149 | 150 | 标识栅格元素位于第几列。一共三列,其中左边布局为0,1列。右边布局为2列,其中的当`type`为`GridItemType.BIG`时候,自动调整为`0`。需为自然数。 151 | 152 | * **y** 153 | 154 | * type: `Number` 155 | * required: `false` 156 | * default: `0` 157 | 158 | 标识栅格元素位于第几行,需为自然数。 159 | 160 | * **height** 161 | 162 | * type: `Number` 163 | * required: `true` 164 | 165 | 标识栅格元素的高度,单位为px。 166 | 167 | * **type** 168 | 169 | * type: `GridItemType` 170 | * required: `false` 171 | * default: `GridItemType.SMALL` 172 | 173 | 标识栅格元素的类型。 174 | 175 | * **其他参数** 176 | * 其他参数自动保存到属性中,改变布局时一并返回 177 | 178 | ##### GridItemType 179 | 180 | * SMALL: 小号元素 181 | * BIG: 大号元素 182 | 183 | ### 事件 184 | 185 | * **changeLayout** 186 | 187 | 组件布局改变时的回调方法, 返回为当前layout 188 | 189 | * **addCardEvent** 190 | 191 | 调用新增方法`addCard`成功时的回调 192 | ### 方法 193 | 194 | * **getLayout** 195 | 获取当前layout布局 196 | * 参数: 无 197 | * 返回 198 | * `Array` 199 | 200 | * **setLayout** 201 | 重新设置layout布局 202 | * 参数 203 | * `Array` 204 | * 返回 205 | * 无 206 | 207 | * **clearLayout** 208 | 清空当前layout 209 | * 参数: 无 210 | * 返回: 无 211 | 212 | * **deleteCard** 213 | 删除某个栅格 214 | * 参数 215 | * id(元素的id) 216 | * 返回:无 217 | 218 | * **addCard** 219 | 添加某个栅格 220 | * 参数 221 | * obj 222 | * type: `GridItemType` 223 | * required: `true` 224 | * toTop(是否从头加入栅格元素, false从尾部) 225 | * type: `Boolean` 226 | * required: `false` 227 | * default: `true` 228 | * 返回: 无 229 | ### 插槽(slot) 230 | * **default** 231 | 232 | 元素内容 233 | * 参数 234 | * value 235 | * type: `GridItemType` 236 | 237 | * **delete-tip** 238 | 239 | 右上角删除内容 240 | * 参数 241 | * value 242 | * type: `GridItemType` 243 | ## 如何贡献 244 | 245 | 请提交issue或PR。 246 | 247 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 58 | 59 | 108 | 136 | 226 | -------------------------------------------------------------------------------- /src/components/vue-grid-layout-split.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 257 | 258 | 348 | -------------------------------------------------------------------------------- /lib/vue-grid-layout-split.es.js: -------------------------------------------------------------------------------- 1 | (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode(".vue-grid-layout[data-v-82449fba] {\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder {\n background-color: black;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder.not-allowed {\n background-color: red;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item:not(.vue-grid-placeholder) {\n border: 1px solid black;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .resizing {\n opacity: 0.9;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .static {\n background: #cce;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.moving {\n border-radius: 4px;\n border: 2px solid #538dff;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .edit-mask {\n background-color: rgba(94, 115, 159, 0.2);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .delete-options {\n position: absolute;\n font-size: 16px;\n color: #4e5969;\n top: 0;\n right: 0;\n padding: 10px;\n cursor: pointer;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .default-show-text {\n font-size: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .no-drag {\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .minMax {\n font-size: 12px;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .add {\n cursor: pointer;\n}\n.vue-draggable-handle[data-v-82449fba] {\n position: absolute;\n width: 20px;\n height: 20px;\n top: 0;\n left: 0;\n padding: 0 8px 8px 0;\n background: url(\"data:image/svg+xml;utf8,\") no-repeat bottom right;\n background-origin: content-box;\n box-sizing: border-box;\n cursor: pointer;\n}\n.layoutJSON[data-v-82449fba] {\n background: #ddd;\n border: 1px solid black;\n margin-top: 10px;\n padding: 10px;\n}\n.columns[data-v-82449fba] {\n -moz-columns: 120px;\n -webkit-columns: 120px;\n columns: 120px;\n}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();import vueGridLayoutInstall, { GridLayout, GridItem } from "vue-grid-layout"; 2 | import { resolveComponent, openBlock, createBlock, withCtx, createElementBlock, Fragment, renderList, normalizeClass, renderSlot, createElementVNode, toDisplayString, withModifiers, createCommentVNode, pushScopeId, popScopeId } from "vue"; 3 | var GridItemType = /* @__PURE__ */ ((GridItemType2) => { 4 | GridItemType2[GridItemType2["SMALL"] = 0] = "SMALL"; 5 | GridItemType2[GridItemType2["BIG"] = 1] = "BIG"; 6 | return GridItemType2; 7 | })(GridItemType || {}); 8 | var GridPosition = /* @__PURE__ */ ((GridPosition2) => { 9 | GridPosition2[GridPosition2["LEFT"] = 0] = "LEFT"; 10 | GridPosition2[GridPosition2["RIGHT"] = 1] = "RIGHT"; 11 | return GridPosition2; 12 | })(GridPosition || {}); 13 | function fixCardHeight(layout) { 14 | checkLessThanZeroY(layout); 15 | fixCardSameHeight(layout); 16 | } 17 | function fixCardSameHeight(layout) { 18 | const findLeftBigList = getLeftBigList(layout); 19 | findLeftBigList.forEach((e, index) => { 20 | const lessThanY = e.y + e.h; 21 | let moreThanY = 0; 22 | if (index > 0) 23 | moreThanY = findLeftBigList[index - 1].y + findLeftBigList[index - 1].h; 24 | const { sumH: x0SumH, lastDist: x0LastDist } = findMaxY(layout, 0, lessThanY, moreThanY); 25 | const { sumH: x1SumH, lastDist: x1LastDist } = findMaxY(layout, 1, lessThanY, moreThanY); 26 | if (x0LastDist && x1LastDist) { 27 | const maxYAddH = Math.max(x0SumH, x1SumH); 28 | x0LastDist.h = x0LastDist.h + maxYAddH - x0SumH; 29 | x1LastDist.h = x1LastDist.h + maxYAddH - x1SumH; 30 | } 31 | }); 32 | } 33 | function findMaxY(layout, x, lessThanY, moreThanY) { 34 | const findInRangeList = layout.filter((e) => e.x === x && e.y + e.h < lessThanY && e.y >= moreThanY).sort((a, b) => a.y - b.y); 35 | findInRangeList.forEach((e) => { 36 | e.h = e.resetH; 37 | }); 38 | let sumH = 0; 39 | findInRangeList.forEach((e) => { 40 | sumH += e.h; 41 | }); 42 | return { sumH, lastDist: findInRangeList[findInRangeList.length - 1], findInRangeList }; 43 | } 44 | function getLeftBigList(layout) { 45 | return layout.filter((e) => { 46 | return e.type === 1 && e.x === 0; 47 | }).sort((a, b) => a.y - b.y); 48 | } 49 | function checkLessThanZeroY(layout) { 50 | const findLeftBigList = getLeftBigList(layout); 51 | const fixLeft = () => { 52 | if (findLeftBigList.length > 0 && findLeftBigList[0].y <= 0) { 53 | const leftList = layout.filter((e) => { 54 | return e.x === 0 || e.x === 1; 55 | }).sort((a, b) => a.y - b.y); 56 | const diffY = Math.abs(findLeftBigList[0].y); 57 | leftList.forEach((e) => { 58 | e.y += diffY; 59 | }); 60 | } else { 61 | let lessThanY = Number.MAX_SAFE_INTEGER; 62 | let moreThanY = Number.MAX_SAFE_INTEGER; 63 | if (findLeftBigList.length > 0) { 64 | lessThanY = findLeftBigList[0].y + findLeftBigList[0].h; 65 | moreThanY = findLeftBigList[0].y; 66 | } 67 | const { sumH: x0SumH, findInRangeList: x0FindInRangeList } = findMaxY( 68 | layout, 69 | 0, 70 | lessThanY, 71 | Number.MIN_SAFE_INTEGER 72 | ); 73 | const { sumH: x1SumH, findInRangeList: x1FindInRangeList } = findMaxY( 74 | layout, 75 | 1, 76 | lessThanY, 77 | Number.MIN_SAFE_INTEGER 78 | ); 79 | let startX0Y = 0; 80 | let startX1Y = 0; 81 | if (x0FindInRangeList.length !== 0) 82 | startX0Y = x0FindInRangeList[0].y; 83 | if (x1FindInRangeList.length !== 0) 84 | startX1Y = x1FindInRangeList[0].y; 85 | const maxYAddHBefore = Math.max(x0SumH, x1SumH); 86 | const maxYAddHAfter = Math.max(x0SumH + Math.abs(startX0Y), x1SumH + Math.abs(startX1Y)); 87 | const diffY = maxYAddHAfter - maxYAddHBefore; 88 | x0FindInRangeList.forEach((e) => { 89 | e.y += Math.abs(startX0Y); 90 | }); 91 | x1FindInRangeList.forEach((e) => { 92 | e.y += Math.abs(startX1Y); 93 | }); 94 | layout.filter((e) => { 95 | return e.y >= moreThanY && (e.x === 0 || e.x === 1); 96 | }).forEach((e) => { 97 | e.y += diffY; 98 | }); 99 | } 100 | }; 101 | const fixRight = () => { 102 | const rightList = layout.filter((e) => { 103 | return e.x === 2; 104 | }).sort((a, b) => a.y - b.y); 105 | if (rightList.length === 0) 106 | return; 107 | const diffY = Math.abs(rightList[0].y); 108 | rightList.forEach((e) => { 109 | e.y += diffY; 110 | }); 111 | }; 112 | fixLeft(); 113 | fixRight(); 114 | } 115 | var vueGridLayoutSplit_vue_vue_type_style_index_0_scoped_true_lang = ""; 116 | var _export_sfc = (sfc, props) => { 117 | for (const [key, val] of props) { 118 | sfc[key] = val; 119 | } 120 | return sfc; 121 | }; 122 | const _sfc_main = { 123 | name: "VueGridLayoutSplit", 124 | components: { 125 | GridLayout, 126 | GridItem 127 | }, 128 | props: { 129 | defaultLayout: { 130 | type: Array, 131 | default: () => [], 132 | required: true 133 | }, 134 | editMode: { 135 | type: Boolean, 136 | default: false 137 | }, 138 | gridMargin: { 139 | type: [Number, Array], 140 | default: 20 141 | }, 142 | editMask: { 143 | type: Boolean, 144 | default: true 145 | } 146 | }, 147 | computed: { 148 | realGridMargin() { 149 | if (this.gridMargin instanceof Array) 150 | return this.gridMargin; 151 | else 152 | return [this.gridMargin, this.gridMargin]; 153 | } 154 | }, 155 | emits: ["changeLayout", "addCardEvent"], 156 | data() { 157 | return { 158 | layout: [], 159 | draggable: true, 160 | resizable: false, 161 | responsive: false, 162 | moving: false, 163 | index: 0, 164 | cashLayout: [], 165 | gridPlaceholder: null, 166 | rowHeight: 10 167 | }; 168 | }, 169 | watch: { 170 | editMode: { 171 | handler(v) { 172 | if (v) { 173 | this.draggable = true; 174 | } else { 175 | this.draggable = false; 176 | } 177 | }, 178 | immediate: true 179 | } 180 | }, 181 | created() { 182 | this.setLayout(this.defaultLayout); 183 | }, 184 | methods: { 185 | transformLayoutToLocal(sourceLayout) { 186 | let res = JSON.parse(JSON.stringify(sourceLayout)); 187 | res.forEach((e) => { 188 | e.x = e.x || 0; 189 | e.y = e.y || 0; 190 | e.type = e.type || GridItemType.SMALL; 191 | e.h = this.transH(e.height); 192 | e.resetH = e.h; 193 | e.i = e.id; 194 | e.w = e.type === GridItemType.BIG ? 2 : 1; 195 | e.x = e.type === GridItemType.BIG ? 0 : e.x; 196 | }); 197 | return res; 198 | }, 199 | transH(height) { 200 | if (height < this.rowHeight) 201 | return 1; 202 | else { 203 | return +((height - this.rowHeight) / (this.rowHeight + this.realGridMargin[1]) + 1).toFixed(2); 204 | } 205 | }, 206 | getLayout() { 207 | return JSON.parse(JSON.stringify(this.layout)); 208 | }, 209 | addCard(obj, toTop = true) { 210 | let id = obj.id; 211 | let height = obj.height; 212 | let type = obj.type || GridItemType.SMALL; 213 | let y = -1; 214 | if (!toTop) { 215 | this.layout.forEach((e) => { 216 | y = Math.max(y, e.y + e.h); 217 | }); 218 | } 219 | let dist = { ...obj, w: 1, x: 2, y, id, type, height }; 220 | if (type === GridItemType.BIG) 221 | dist.x = 0; 222 | this.layout.push(...this.transformLayoutToLocal([dist])); 223 | this.$nextTick(() => { 224 | this.$refs.gridLayout.layoutUpdate(); 225 | this.$nextTick(() => { 226 | this.changeLayoutEvent(); 227 | this.$emit("addCardEvent"); 228 | }); 229 | }); 230 | }, 231 | deleteCard(i) { 232 | let findIndex = this.layout.findIndex((e) => e.i === i); 233 | if (findIndex !== -1) { 234 | this.layout.splice(findIndex, 1); 235 | this.$nextTick(() => { 236 | this.changeLayoutEvent(); 237 | this.$refs.gridLayout.layoutUpdate(); 238 | }); 239 | } 240 | }, 241 | removeCard(i) { 242 | this.layout.splice(i, 1); 243 | }, 244 | movedEvent(i) { 245 | let dist = this.findDistById(i); 246 | if (!this.checkCanMove(dist)) { 247 | let cashLayout = JSON.parse(JSON.stringify(this.cashLayout)); 248 | this.$nextTick(() => { 249 | this.layout = cashLayout; 250 | }); 251 | } 252 | }, 253 | layoutUpdatedEvent() { 254 | this.moving = false; 255 | this.cashLayout = null; 256 | this.checkHeight(); 257 | let distDom = this.$refs.gridLayout.$el.getElementsByClassName(".moving"); 258 | if (distDom.length > 0) { 259 | distDom.forEach((e) => { 260 | e.classList.remove("moving"); 261 | }); 262 | } 263 | this.changeLayoutEvent(); 264 | }, 265 | findDistById(i) { 266 | return this.layout.find((e) => e.i === i); 267 | }, 268 | startMoveEvent(i, x) { 269 | let distCard = this.findDistById(i); 270 | if (!this.moving) { 271 | this.moving = true; 272 | this.cashLayout = JSON.parse(JSON.stringify(this.layout)); 273 | this.layout.forEach((e) => { 274 | e.h = e.resetH; 275 | }); 276 | } 277 | let distDom = this.getGridItem(this.$refs.gridLayout.$el, i); 278 | distDom.classList.add("moving"); 279 | let gridPlaceholder = this.getGridPlaceholder(this.$refs.gridLayout.$el); 280 | if (distCard.type === GridItemType.BIG && x !== 0) { 281 | gridPlaceholder.classList.add("not-allowed"); 282 | } else { 283 | gridPlaceholder.classList.remove("not-allowed"); 284 | } 285 | }, 286 | getGridPlaceholder(gridLayoutDom) { 287 | return gridLayoutDom.getElementsByClassName("vue-grid-placeholder")[0]; 288 | }, 289 | getGridItem(gridLayoutDom, i) { 290 | return gridLayoutDom.getElementsByClassName(`sk-grid-item-${i}`)[0]; 291 | }, 292 | layoutReadyEvent() { 293 | this.checkHeight(); 294 | }, 295 | checkHeight() { 296 | let sourceLayout = JSON.stringify(this.layout); 297 | fixCardHeight(this.layout); 298 | if (JSON.stringify(this.layout) !== sourceLayout) { 299 | this.$nextTick(() => { 300 | this.$refs.gridLayout.layoutUpdate(); 301 | }); 302 | } 303 | }, 304 | clearLayout() { 305 | this.layout.splice(0, this.layout.length); 306 | this.$nextTick(() => { 307 | this.changeLayoutEvent(); 308 | }); 309 | }, 310 | changeLayoutEvent() { 311 | this.$emit("changeLayout", this.getLayout()); 312 | }, 313 | checkCanMove(dist) { 314 | return !(dist.type === GridItemType.BIG && (dist.x === 1 || dist.x === 2)); 315 | }, 316 | setLayout(sourceLayout) { 317 | this.layout = this.transformLayoutToLocal(sourceLayout); 318 | } 319 | } 320 | }; 321 | const _withScopeId = (n) => (pushScopeId("data-v-82449fba"), n = n(), popScopeId(), n); 322 | const _hoisted_1 = { class: "default-show-text" }; 323 | const _hoisted_2 = ["onClick"]; 324 | const _hoisted_3 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("svg", { 325 | t: "1659345568198", 326 | class: "icon", 327 | viewBox: "0 0 1024 1024", 328 | version: "1.1", 329 | xmlns: "http://www.w3.org/2000/svg", 330 | "p-id": "13132", 331 | width: "16", 332 | height: "16" 333 | }, [ 334 | /* @__PURE__ */ createElementVNode("path", { 335 | d: "M972.8 204.8c28.16 0 51.2 23.04 51.2 51.2 0 28.16-23.04 51.2-51.2 51.2h-51.2v563.2c0 84.65-68.95 153.6-153.6 153.6H256c-84.65 0-153.6-68.95-153.6-153.6V307.2H51.2C23.04 307.2 0 284.16 0 256c0-28.16 23.04-51.2 51.2-51.2h256v-85.59C307.2 53.505 364.63 0 435.2 0h153.6c70.57 0 128 53.419 128 119.21v85.59h256z m-563.2-85.59v85.59h204.8v-85.59c0-7.935-10.923-16.81-25.6-16.81H435.2c-14.677 0-25.6 8.875-25.6 16.81zM819.2 870.4V307.2H204.8v563.2c0 28.16 22.955 51.2 51.2 51.2h512a51.2 51.2 0 0 0 51.2-51.2zM358.4 768c-28.16 0-51.2-23.04-51.2-51.2V512c0-28.16 23.04-51.2 51.2-51.2 28.16 0 51.2 23.04 51.2 51.2v204.8c0 28.16-23.04 51.2-51.2 51.2z m307.2 0c-28.16 0-51.2-23.04-51.2-51.2V512c0-28.16 23.04-51.2 51.2-51.2 28.16 0 51.2 23.04 51.2 51.2v204.8c0 28.16-23.04 51.2-51.2 51.2z", 336 | "p-id": "13133" 337 | }) 338 | ], -1)); 339 | function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { 340 | const _component_grid_item = resolveComponent("grid-item"); 341 | const _component_grid_layout = resolveComponent("grid-layout"); 342 | return openBlock(), createBlock(_component_grid_layout, { 343 | ref: "gridLayout", 344 | layout: $data.layout, 345 | "onUpdate:layout": _cache[1] || (_cache[1] = ($event) => $data.layout = $event), 346 | "col-num": 3, 347 | margin: $options.realGridMargin, 348 | "row-height": $data.rowHeight, 349 | "is-draggable": $data.draggable, 350 | "is-resizable": $data.resizable, 351 | responsive: $data.responsive, 352 | "vertical-compact": true, 353 | "use-css-transforms": true, 354 | onLayoutUpdated: $options.layoutUpdatedEvent, 355 | onLayoutReady: $options.layoutReadyEvent 356 | }, { 357 | default: withCtx(() => [ 358 | (openBlock(true), createElementBlock(Fragment, null, renderList($data.layout, (item) => { 359 | return openBlock(), createBlock(_component_grid_item, { 360 | key: item.i, 361 | x: item.x, 362 | y: item.y, 363 | w: item.w, 364 | h: item.h, 365 | i: item.i, 366 | "drag-ignore-from": ".delete-options", 367 | class: normalizeClass(`sk-grid-item-${item.i}`), 368 | onMove: $options.startMoveEvent, 369 | onMoved: $options.movedEvent 370 | }, { 371 | default: withCtx(() => [ 372 | renderSlot(_ctx.$slots, "default", { value: item }, () => [ 373 | createElementVNode("div", _hoisted_1, toDisplayString(item.i), 1) 374 | ], true), 375 | $props.editMode ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ 376 | $props.editMode && $props.editMask ? (openBlock(), createElementBlock("div", { 377 | key: 0, 378 | class: "edit-mask", 379 | onClick: _cache[0] || (_cache[0] = withModifiers(() => { 380 | }, ["stop"])) 381 | })) : createCommentVNode("", true), 382 | createElementVNode("div", { 383 | class: "delete-options", 384 | onClick: ($event) => $options.deleteCard(item.i) 385 | }, [ 386 | renderSlot(_ctx.$slots, "delete-tip", { value: item }, () => [ 387 | _hoisted_3 388 | ], true) 389 | ], 8, _hoisted_2) 390 | ], 64)) : createCommentVNode("", true) 391 | ]), 392 | _: 2 393 | }, 1032, ["x", "y", "w", "h", "i", "class", "onMove", "onMoved"]); 394 | }), 128)) 395 | ]), 396 | _: 3 397 | }, 8, ["layout", "margin", "row-height", "is-draggable", "is-resizable", "responsive", "onLayoutUpdated", "onLayoutReady"]); 398 | } 399 | var _VueGridLayoutSplit = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-82449fba"]]); 400 | const vueGridLayoutSplit = Object.assign(_VueGridLayoutSplit, { 401 | install: (app) => { 402 | app.component(_VueGridLayoutSplit.name, _VueGridLayoutSplit); 403 | app.use(vueGridLayoutInstall); 404 | console.log("had install3"); 405 | } 406 | }); 407 | export { GridItemType, GridPosition, vueGridLayoutSplit as default }; 408 | -------------------------------------------------------------------------------- /lib/vue-grid-layout-split.cjs.js: -------------------------------------------------------------------------------- 1 | (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode(".vue-grid-layout[data-v-82449fba] {\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder {\n background-color: black;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder.not-allowed {\n background-color: red;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item:not(.vue-grid-placeholder) {\n border: 1px solid black;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .resizing {\n opacity: 0.9;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .static {\n background: #cce;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.moving {\n border-radius: 4px;\n border: 2px solid #538dff;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .edit-mask {\n background-color: rgba(94, 115, 159, 0.2);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .delete-options {\n position: absolute;\n font-size: 16px;\n color: #4e5969;\n top: 0;\n right: 0;\n padding: 10px;\n cursor: pointer;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .default-show-text {\n font-size: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .no-drag {\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .minMax {\n font-size: 12px;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .add {\n cursor: pointer;\n}\n.vue-draggable-handle[data-v-82449fba] {\n position: absolute;\n width: 20px;\n height: 20px;\n top: 0;\n left: 0;\n padding: 0 8px 8px 0;\n background: url(\"data:image/svg+xml;utf8,\") no-repeat bottom right;\n background-origin: content-box;\n box-sizing: border-box;\n cursor: pointer;\n}\n.layoutJSON[data-v-82449fba] {\n background: #ddd;\n border: 1px solid black;\n margin-top: 10px;\n padding: 10px;\n}\n.columns[data-v-82449fba] {\n -moz-columns: 120px;\n -webkit-columns: 120px;\n columns: 120px;\n}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();"use strict"; 2 | Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); 3 | var vueGridLayoutInstall = require("vue-grid-layout"); 4 | var vue = require("vue"); 5 | function _interopDefaultLegacy(e) { 6 | return e && typeof e === "object" && "default" in e ? e : { "default": e }; 7 | } 8 | var vueGridLayoutInstall__default = /* @__PURE__ */ _interopDefaultLegacy(vueGridLayoutInstall); 9 | var GridItemType = /* @__PURE__ */ ((GridItemType2) => { 10 | GridItemType2[GridItemType2["SMALL"] = 0] = "SMALL"; 11 | GridItemType2[GridItemType2["BIG"] = 1] = "BIG"; 12 | return GridItemType2; 13 | })(GridItemType || {}); 14 | var GridPosition = /* @__PURE__ */ ((GridPosition2) => { 15 | GridPosition2[GridPosition2["LEFT"] = 0] = "LEFT"; 16 | GridPosition2[GridPosition2["RIGHT"] = 1] = "RIGHT"; 17 | return GridPosition2; 18 | })(GridPosition || {}); 19 | function fixCardHeight(layout) { 20 | checkLessThanZeroY(layout); 21 | fixCardSameHeight(layout); 22 | } 23 | function fixCardSameHeight(layout) { 24 | const findLeftBigList = getLeftBigList(layout); 25 | findLeftBigList.forEach((e, index) => { 26 | const lessThanY = e.y + e.h; 27 | let moreThanY = 0; 28 | if (index > 0) 29 | moreThanY = findLeftBigList[index - 1].y + findLeftBigList[index - 1].h; 30 | const { sumH: x0SumH, lastDist: x0LastDist } = findMaxY(layout, 0, lessThanY, moreThanY); 31 | const { sumH: x1SumH, lastDist: x1LastDist } = findMaxY(layout, 1, lessThanY, moreThanY); 32 | if (x0LastDist && x1LastDist) { 33 | const maxYAddH = Math.max(x0SumH, x1SumH); 34 | x0LastDist.h = x0LastDist.h + maxYAddH - x0SumH; 35 | x1LastDist.h = x1LastDist.h + maxYAddH - x1SumH; 36 | } 37 | }); 38 | } 39 | function findMaxY(layout, x, lessThanY, moreThanY) { 40 | const findInRangeList = layout.filter((e) => e.x === x && e.y + e.h < lessThanY && e.y >= moreThanY).sort((a, b) => a.y - b.y); 41 | findInRangeList.forEach((e) => { 42 | e.h = e.resetH; 43 | }); 44 | let sumH = 0; 45 | findInRangeList.forEach((e) => { 46 | sumH += e.h; 47 | }); 48 | return { sumH, lastDist: findInRangeList[findInRangeList.length - 1], findInRangeList }; 49 | } 50 | function getLeftBigList(layout) { 51 | return layout.filter((e) => { 52 | return e.type === 1 && e.x === 0; 53 | }).sort((a, b) => a.y - b.y); 54 | } 55 | function checkLessThanZeroY(layout) { 56 | const findLeftBigList = getLeftBigList(layout); 57 | const fixLeft = () => { 58 | if (findLeftBigList.length > 0 && findLeftBigList[0].y <= 0) { 59 | const leftList = layout.filter((e) => { 60 | return e.x === 0 || e.x === 1; 61 | }).sort((a, b) => a.y - b.y); 62 | const diffY = Math.abs(findLeftBigList[0].y); 63 | leftList.forEach((e) => { 64 | e.y += diffY; 65 | }); 66 | } else { 67 | let lessThanY = Number.MAX_SAFE_INTEGER; 68 | let moreThanY = Number.MAX_SAFE_INTEGER; 69 | if (findLeftBigList.length > 0) { 70 | lessThanY = findLeftBigList[0].y + findLeftBigList[0].h; 71 | moreThanY = findLeftBigList[0].y; 72 | } 73 | const { sumH: x0SumH, findInRangeList: x0FindInRangeList } = findMaxY( 74 | layout, 75 | 0, 76 | lessThanY, 77 | Number.MIN_SAFE_INTEGER 78 | ); 79 | const { sumH: x1SumH, findInRangeList: x1FindInRangeList } = findMaxY( 80 | layout, 81 | 1, 82 | lessThanY, 83 | Number.MIN_SAFE_INTEGER 84 | ); 85 | let startX0Y = 0; 86 | let startX1Y = 0; 87 | if (x0FindInRangeList.length !== 0) 88 | startX0Y = x0FindInRangeList[0].y; 89 | if (x1FindInRangeList.length !== 0) 90 | startX1Y = x1FindInRangeList[0].y; 91 | const maxYAddHBefore = Math.max(x0SumH, x1SumH); 92 | const maxYAddHAfter = Math.max(x0SumH + Math.abs(startX0Y), x1SumH + Math.abs(startX1Y)); 93 | const diffY = maxYAddHAfter - maxYAddHBefore; 94 | x0FindInRangeList.forEach((e) => { 95 | e.y += Math.abs(startX0Y); 96 | }); 97 | x1FindInRangeList.forEach((e) => { 98 | e.y += Math.abs(startX1Y); 99 | }); 100 | layout.filter((e) => { 101 | return e.y >= moreThanY && (e.x === 0 || e.x === 1); 102 | }).forEach((e) => { 103 | e.y += diffY; 104 | }); 105 | } 106 | }; 107 | const fixRight = () => { 108 | const rightList = layout.filter((e) => { 109 | return e.x === 2; 110 | }).sort((a, b) => a.y - b.y); 111 | if (rightList.length === 0) 112 | return; 113 | const diffY = Math.abs(rightList[0].y); 114 | rightList.forEach((e) => { 115 | e.y += diffY; 116 | }); 117 | }; 118 | fixLeft(); 119 | fixRight(); 120 | } 121 | var vueGridLayoutSplit_vue_vue_type_style_index_0_scoped_true_lang = ""; 122 | var _export_sfc = (sfc, props) => { 123 | for (const [key, val] of props) { 124 | sfc[key] = val; 125 | } 126 | return sfc; 127 | }; 128 | const _sfc_main = { 129 | name: "VueGridLayoutSplit", 130 | components: { 131 | GridLayout: vueGridLayoutInstall.GridLayout, 132 | GridItem: vueGridLayoutInstall.GridItem 133 | }, 134 | props: { 135 | defaultLayout: { 136 | type: Array, 137 | default: () => [], 138 | required: true 139 | }, 140 | editMode: { 141 | type: Boolean, 142 | default: false 143 | }, 144 | gridMargin: { 145 | type: [Number, Array], 146 | default: 20 147 | }, 148 | editMask: { 149 | type: Boolean, 150 | default: true 151 | } 152 | }, 153 | computed: { 154 | realGridMargin() { 155 | if (this.gridMargin instanceof Array) 156 | return this.gridMargin; 157 | else 158 | return [this.gridMargin, this.gridMargin]; 159 | } 160 | }, 161 | emits: ["changeLayout", "addCardEvent"], 162 | data() { 163 | return { 164 | layout: [], 165 | draggable: true, 166 | resizable: false, 167 | responsive: false, 168 | moving: false, 169 | index: 0, 170 | cashLayout: [], 171 | gridPlaceholder: null, 172 | rowHeight: 10 173 | }; 174 | }, 175 | watch: { 176 | editMode: { 177 | handler(v) { 178 | if (v) { 179 | this.draggable = true; 180 | } else { 181 | this.draggable = false; 182 | } 183 | }, 184 | immediate: true 185 | } 186 | }, 187 | created() { 188 | this.setLayout(this.defaultLayout); 189 | }, 190 | methods: { 191 | transformLayoutToLocal(sourceLayout) { 192 | let res = JSON.parse(JSON.stringify(sourceLayout)); 193 | res.forEach((e) => { 194 | e.x = e.x || 0; 195 | e.y = e.y || 0; 196 | e.type = e.type || GridItemType.SMALL; 197 | e.h = this.transH(e.height); 198 | e.resetH = e.h; 199 | e.i = e.id; 200 | e.w = e.type === GridItemType.BIG ? 2 : 1; 201 | e.x = e.type === GridItemType.BIG ? 0 : e.x; 202 | }); 203 | return res; 204 | }, 205 | transH(height) { 206 | if (height < this.rowHeight) 207 | return 1; 208 | else { 209 | return +((height - this.rowHeight) / (this.rowHeight + this.realGridMargin[1]) + 1).toFixed(2); 210 | } 211 | }, 212 | getLayout() { 213 | return JSON.parse(JSON.stringify(this.layout)); 214 | }, 215 | addCard(obj, toTop = true) { 216 | let id = obj.id; 217 | let height = obj.height; 218 | let type = obj.type || GridItemType.SMALL; 219 | let y = -1; 220 | if (!toTop) { 221 | this.layout.forEach((e) => { 222 | y = Math.max(y, e.y + e.h); 223 | }); 224 | } 225 | let dist = { ...obj, w: 1, x: 2, y, id, type, height }; 226 | if (type === GridItemType.BIG) 227 | dist.x = 0; 228 | this.layout.push(...this.transformLayoutToLocal([dist])); 229 | this.$nextTick(() => { 230 | this.$refs.gridLayout.layoutUpdate(); 231 | this.$nextTick(() => { 232 | this.changeLayoutEvent(); 233 | this.$emit("addCardEvent"); 234 | }); 235 | }); 236 | }, 237 | deleteCard(i) { 238 | let findIndex = this.layout.findIndex((e) => e.i === i); 239 | if (findIndex !== -1) { 240 | this.layout.splice(findIndex, 1); 241 | this.$nextTick(() => { 242 | this.changeLayoutEvent(); 243 | this.$refs.gridLayout.layoutUpdate(); 244 | }); 245 | } 246 | }, 247 | removeCard(i) { 248 | this.layout.splice(i, 1); 249 | }, 250 | movedEvent(i) { 251 | let dist = this.findDistById(i); 252 | if (!this.checkCanMove(dist)) { 253 | let cashLayout = JSON.parse(JSON.stringify(this.cashLayout)); 254 | this.$nextTick(() => { 255 | this.layout = cashLayout; 256 | }); 257 | } 258 | }, 259 | layoutUpdatedEvent() { 260 | this.moving = false; 261 | this.cashLayout = null; 262 | this.checkHeight(); 263 | let distDom = this.$refs.gridLayout.$el.getElementsByClassName(".moving"); 264 | if (distDom.length > 0) { 265 | distDom.forEach((e) => { 266 | e.classList.remove("moving"); 267 | }); 268 | } 269 | this.changeLayoutEvent(); 270 | }, 271 | findDistById(i) { 272 | return this.layout.find((e) => e.i === i); 273 | }, 274 | startMoveEvent(i, x) { 275 | let distCard = this.findDistById(i); 276 | if (!this.moving) { 277 | this.moving = true; 278 | this.cashLayout = JSON.parse(JSON.stringify(this.layout)); 279 | this.layout.forEach((e) => { 280 | e.h = e.resetH; 281 | }); 282 | } 283 | let distDom = this.getGridItem(this.$refs.gridLayout.$el, i); 284 | distDom.classList.add("moving"); 285 | let gridPlaceholder = this.getGridPlaceholder(this.$refs.gridLayout.$el); 286 | if (distCard.type === GridItemType.BIG && x !== 0) { 287 | gridPlaceholder.classList.add("not-allowed"); 288 | } else { 289 | gridPlaceholder.classList.remove("not-allowed"); 290 | } 291 | }, 292 | getGridPlaceholder(gridLayoutDom) { 293 | return gridLayoutDom.getElementsByClassName("vue-grid-placeholder")[0]; 294 | }, 295 | getGridItem(gridLayoutDom, i) { 296 | return gridLayoutDom.getElementsByClassName(`sk-grid-item-${i}`)[0]; 297 | }, 298 | layoutReadyEvent() { 299 | this.checkHeight(); 300 | }, 301 | checkHeight() { 302 | let sourceLayout = JSON.stringify(this.layout); 303 | fixCardHeight(this.layout); 304 | if (JSON.stringify(this.layout) !== sourceLayout) { 305 | this.$nextTick(() => { 306 | this.$refs.gridLayout.layoutUpdate(); 307 | }); 308 | } 309 | }, 310 | clearLayout() { 311 | this.layout.splice(0, this.layout.length); 312 | this.$nextTick(() => { 313 | this.changeLayoutEvent(); 314 | }); 315 | }, 316 | changeLayoutEvent() { 317 | this.$emit("changeLayout", this.getLayout()); 318 | }, 319 | checkCanMove(dist) { 320 | return !(dist.type === GridItemType.BIG && (dist.x === 1 || dist.x === 2)); 321 | }, 322 | setLayout(sourceLayout) { 323 | this.layout = this.transformLayoutToLocal(sourceLayout); 324 | } 325 | } 326 | }; 327 | const _withScopeId = (n) => (vue.pushScopeId("data-v-82449fba"), n = n(), vue.popScopeId(), n); 328 | const _hoisted_1 = { class: "default-show-text" }; 329 | const _hoisted_2 = ["onClick"]; 330 | const _hoisted_3 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("svg", { 331 | t: "1659345568198", 332 | class: "icon", 333 | viewBox: "0 0 1024 1024", 334 | version: "1.1", 335 | xmlns: "http://www.w3.org/2000/svg", 336 | "p-id": "13132", 337 | width: "16", 338 | height: "16" 339 | }, [ 340 | /* @__PURE__ */ vue.createElementVNode("path", { 341 | d: "M972.8 204.8c28.16 0 51.2 23.04 51.2 51.2 0 28.16-23.04 51.2-51.2 51.2h-51.2v563.2c0 84.65-68.95 153.6-153.6 153.6H256c-84.65 0-153.6-68.95-153.6-153.6V307.2H51.2C23.04 307.2 0 284.16 0 256c0-28.16 23.04-51.2 51.2-51.2h256v-85.59C307.2 53.505 364.63 0 435.2 0h153.6c70.57 0 128 53.419 128 119.21v85.59h256z m-563.2-85.59v85.59h204.8v-85.59c0-7.935-10.923-16.81-25.6-16.81H435.2c-14.677 0-25.6 8.875-25.6 16.81zM819.2 870.4V307.2H204.8v563.2c0 28.16 22.955 51.2 51.2 51.2h512a51.2 51.2 0 0 0 51.2-51.2zM358.4 768c-28.16 0-51.2-23.04-51.2-51.2V512c0-28.16 23.04-51.2 51.2-51.2 28.16 0 51.2 23.04 51.2 51.2v204.8c0 28.16-23.04 51.2-51.2 51.2z m307.2 0c-28.16 0-51.2-23.04-51.2-51.2V512c0-28.16 23.04-51.2 51.2-51.2 28.16 0 51.2 23.04 51.2 51.2v204.8c0 28.16-23.04 51.2-51.2 51.2z", 342 | "p-id": "13133" 343 | }) 344 | ], -1)); 345 | function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { 346 | const _component_grid_item = vue.resolveComponent("grid-item"); 347 | const _component_grid_layout = vue.resolveComponent("grid-layout"); 348 | return vue.openBlock(), vue.createBlock(_component_grid_layout, { 349 | ref: "gridLayout", 350 | layout: $data.layout, 351 | "onUpdate:layout": _cache[1] || (_cache[1] = ($event) => $data.layout = $event), 352 | "col-num": 3, 353 | margin: $options.realGridMargin, 354 | "row-height": $data.rowHeight, 355 | "is-draggable": $data.draggable, 356 | "is-resizable": $data.resizable, 357 | responsive: $data.responsive, 358 | "vertical-compact": true, 359 | "use-css-transforms": true, 360 | onLayoutUpdated: $options.layoutUpdatedEvent, 361 | onLayoutReady: $options.layoutReadyEvent 362 | }, { 363 | default: vue.withCtx(() => [ 364 | (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.layout, (item) => { 365 | return vue.openBlock(), vue.createBlock(_component_grid_item, { 366 | key: item.i, 367 | x: item.x, 368 | y: item.y, 369 | w: item.w, 370 | h: item.h, 371 | i: item.i, 372 | "drag-ignore-from": ".delete-options", 373 | class: vue.normalizeClass(`sk-grid-item-${item.i}`), 374 | onMove: $options.startMoveEvent, 375 | onMoved: $options.movedEvent 376 | }, { 377 | default: vue.withCtx(() => [ 378 | vue.renderSlot(_ctx.$slots, "default", { value: item }, () => [ 379 | vue.createElementVNode("div", _hoisted_1, vue.toDisplayString(item.i), 1) 380 | ], true), 381 | $props.editMode ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ 382 | $props.editMode && $props.editMask ? (vue.openBlock(), vue.createElementBlock("div", { 383 | key: 0, 384 | class: "edit-mask", 385 | onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => { 386 | }, ["stop"])) 387 | })) : vue.createCommentVNode("", true), 388 | vue.createElementVNode("div", { 389 | class: "delete-options", 390 | onClick: ($event) => $options.deleteCard(item.i) 391 | }, [ 392 | vue.renderSlot(_ctx.$slots, "delete-tip", { value: item }, () => [ 393 | _hoisted_3 394 | ], true) 395 | ], 8, _hoisted_2) 396 | ], 64)) : vue.createCommentVNode("", true) 397 | ]), 398 | _: 2 399 | }, 1032, ["x", "y", "w", "h", "i", "class", "onMove", "onMoved"]); 400 | }), 128)) 401 | ]), 402 | _: 3 403 | }, 8, ["layout", "margin", "row-height", "is-draggable", "is-resizable", "responsive", "onLayoutUpdated", "onLayoutReady"]); 404 | } 405 | var _VueGridLayoutSplit = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-82449fba"]]); 406 | const vueGridLayoutSplit = Object.assign(_VueGridLayoutSplit, { 407 | install: (app) => { 408 | app.component(_VueGridLayoutSplit.name, _VueGridLayoutSplit); 409 | app.use(vueGridLayoutInstall__default["default"]); 410 | console.log("had install3"); 411 | } 412 | }); 413 | exports.GridItemType = GridItemType; 414 | exports.GridPosition = GridPosition; 415 | exports["default"] = vueGridLayoutSplit; 416 | -------------------------------------------------------------------------------- /lib/vue-grid-layout-split.umd.js: -------------------------------------------------------------------------------- 1 | (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode(".vue-grid-layout[data-v-82449fba] {\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder {\n background-color: black;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.vue-grid-placeholder.not-allowed {\n background-color: red;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item:not(.vue-grid-placeholder) {\n border: 1px solid black;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .resizing {\n opacity: 0.9;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .static {\n background: #cce;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item.moving {\n border-radius: 4px;\n border: 2px solid #538dff;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .edit-mask {\n background-color: rgba(94, 115, 159, 0.2);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .delete-options {\n position: absolute;\n font-size: 16px;\n color: #4e5969;\n top: 0;\n right: 0;\n padding: 10px;\n cursor: pointer;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .default-show-text {\n font-size: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .no-drag {\n height: 100%;\n width: 100%;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .minMax {\n font-size: 12px;\n}\n.vue-grid-layout[data-v-82449fba] .vue-grid-item .add {\n cursor: pointer;\n}\n.vue-draggable-handle[data-v-82449fba] {\n position: absolute;\n width: 20px;\n height: 20px;\n top: 0;\n left: 0;\n padding: 0 8px 8px 0;\n background: url(\"data:image/svg+xml;utf8,\") no-repeat bottom right;\n background-origin: content-box;\n box-sizing: border-box;\n cursor: pointer;\n}\n.layoutJSON[data-v-82449fba] {\n background: #ddd;\n border: 1px solid black;\n margin-top: 10px;\n padding: 10px;\n}\n.columns[data-v-82449fba] {\n -moz-columns: 120px;\n -webkit-columns: 120px;\n columns: 120px;\n}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();(function(global, factory) { 2 | typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue-grid-layout"), require("vue")) : typeof define === "function" && define.amd ? define(["exports", "vue-grid-layout", "vue"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["vue-grid-layout-split"] = {}, global.vueGridLayoutInstall, global.vue)); 3 | })(this, function(exports2, vueGridLayoutInstall, vue) { 4 | "use strict"; 5 | function _interopDefaultLegacy(e) { 6 | return e && typeof e === "object" && "default" in e ? e : { "default": e }; 7 | } 8 | var vueGridLayoutInstall__default = /* @__PURE__ */ _interopDefaultLegacy(vueGridLayoutInstall); 9 | var GridItemType = /* @__PURE__ */ ((GridItemType2) => { 10 | GridItemType2[GridItemType2["SMALL"] = 0] = "SMALL"; 11 | GridItemType2[GridItemType2["BIG"] = 1] = "BIG"; 12 | return GridItemType2; 13 | })(GridItemType || {}); 14 | var GridPosition = /* @__PURE__ */ ((GridPosition2) => { 15 | GridPosition2[GridPosition2["LEFT"] = 0] = "LEFT"; 16 | GridPosition2[GridPosition2["RIGHT"] = 1] = "RIGHT"; 17 | return GridPosition2; 18 | })(GridPosition || {}); 19 | function fixCardHeight(layout) { 20 | checkLessThanZeroY(layout); 21 | fixCardSameHeight(layout); 22 | } 23 | function fixCardSameHeight(layout) { 24 | const findLeftBigList = getLeftBigList(layout); 25 | findLeftBigList.forEach((e, index) => { 26 | const lessThanY = e.y + e.h; 27 | let moreThanY = 0; 28 | if (index > 0) 29 | moreThanY = findLeftBigList[index - 1].y + findLeftBigList[index - 1].h; 30 | const { sumH: x0SumH, lastDist: x0LastDist } = findMaxY(layout, 0, lessThanY, moreThanY); 31 | const { sumH: x1SumH, lastDist: x1LastDist } = findMaxY(layout, 1, lessThanY, moreThanY); 32 | if (x0LastDist && x1LastDist) { 33 | const maxYAddH = Math.max(x0SumH, x1SumH); 34 | x0LastDist.h = x0LastDist.h + maxYAddH - x0SumH; 35 | x1LastDist.h = x1LastDist.h + maxYAddH - x1SumH; 36 | } 37 | }); 38 | } 39 | function findMaxY(layout, x, lessThanY, moreThanY) { 40 | const findInRangeList = layout.filter((e) => e.x === x && e.y + e.h < lessThanY && e.y >= moreThanY).sort((a, b) => a.y - b.y); 41 | findInRangeList.forEach((e) => { 42 | e.h = e.resetH; 43 | }); 44 | let sumH = 0; 45 | findInRangeList.forEach((e) => { 46 | sumH += e.h; 47 | }); 48 | return { sumH, lastDist: findInRangeList[findInRangeList.length - 1], findInRangeList }; 49 | } 50 | function getLeftBigList(layout) { 51 | return layout.filter((e) => { 52 | return e.type === 1 && e.x === 0; 53 | }).sort((a, b) => a.y - b.y); 54 | } 55 | function checkLessThanZeroY(layout) { 56 | const findLeftBigList = getLeftBigList(layout); 57 | const fixLeft = () => { 58 | if (findLeftBigList.length > 0 && findLeftBigList[0].y <= 0) { 59 | const leftList = layout.filter((e) => { 60 | return e.x === 0 || e.x === 1; 61 | }).sort((a, b) => a.y - b.y); 62 | const diffY = Math.abs(findLeftBigList[0].y); 63 | leftList.forEach((e) => { 64 | e.y += diffY; 65 | }); 66 | } else { 67 | let lessThanY = Number.MAX_SAFE_INTEGER; 68 | let moreThanY = Number.MAX_SAFE_INTEGER; 69 | if (findLeftBigList.length > 0) { 70 | lessThanY = findLeftBigList[0].y + findLeftBigList[0].h; 71 | moreThanY = findLeftBigList[0].y; 72 | } 73 | const { sumH: x0SumH, findInRangeList: x0FindInRangeList } = findMaxY( 74 | layout, 75 | 0, 76 | lessThanY, 77 | Number.MIN_SAFE_INTEGER 78 | ); 79 | const { sumH: x1SumH, findInRangeList: x1FindInRangeList } = findMaxY( 80 | layout, 81 | 1, 82 | lessThanY, 83 | Number.MIN_SAFE_INTEGER 84 | ); 85 | let startX0Y = 0; 86 | let startX1Y = 0; 87 | if (x0FindInRangeList.length !== 0) 88 | startX0Y = x0FindInRangeList[0].y; 89 | if (x1FindInRangeList.length !== 0) 90 | startX1Y = x1FindInRangeList[0].y; 91 | const maxYAddHBefore = Math.max(x0SumH, x1SumH); 92 | const maxYAddHAfter = Math.max(x0SumH + Math.abs(startX0Y), x1SumH + Math.abs(startX1Y)); 93 | const diffY = maxYAddHAfter - maxYAddHBefore; 94 | x0FindInRangeList.forEach((e) => { 95 | e.y += Math.abs(startX0Y); 96 | }); 97 | x1FindInRangeList.forEach((e) => { 98 | e.y += Math.abs(startX1Y); 99 | }); 100 | layout.filter((e) => { 101 | return e.y >= moreThanY && (e.x === 0 || e.x === 1); 102 | }).forEach((e) => { 103 | e.y += diffY; 104 | }); 105 | } 106 | }; 107 | const fixRight = () => { 108 | const rightList = layout.filter((e) => { 109 | return e.x === 2; 110 | }).sort((a, b) => a.y - b.y); 111 | if (rightList.length === 0) 112 | return; 113 | const diffY = Math.abs(rightList[0].y); 114 | rightList.forEach((e) => { 115 | e.y += diffY; 116 | }); 117 | }; 118 | fixLeft(); 119 | fixRight(); 120 | } 121 | var vueGridLayoutSplit_vue_vue_type_style_index_0_scoped_true_lang = ""; 122 | var _export_sfc = (sfc, props) => { 123 | for (const [key, val] of props) { 124 | sfc[key] = val; 125 | } 126 | return sfc; 127 | }; 128 | const _sfc_main = { 129 | name: "VueGridLayoutSplit", 130 | components: { 131 | GridLayout: vueGridLayoutInstall.GridLayout, 132 | GridItem: vueGridLayoutInstall.GridItem 133 | }, 134 | props: { 135 | defaultLayout: { 136 | type: Array, 137 | default: () => [], 138 | required: true 139 | }, 140 | editMode: { 141 | type: Boolean, 142 | default: false 143 | }, 144 | gridMargin: { 145 | type: [Number, Array], 146 | default: 20 147 | }, 148 | editMask: { 149 | type: Boolean, 150 | default: true 151 | } 152 | }, 153 | computed: { 154 | realGridMargin() { 155 | if (this.gridMargin instanceof Array) 156 | return this.gridMargin; 157 | else 158 | return [this.gridMargin, this.gridMargin]; 159 | } 160 | }, 161 | emits: ["changeLayout", "addCardEvent"], 162 | data() { 163 | return { 164 | layout: [], 165 | draggable: true, 166 | resizable: false, 167 | responsive: false, 168 | moving: false, 169 | index: 0, 170 | cashLayout: [], 171 | gridPlaceholder: null, 172 | rowHeight: 10 173 | }; 174 | }, 175 | watch: { 176 | editMode: { 177 | handler(v) { 178 | if (v) { 179 | this.draggable = true; 180 | } else { 181 | this.draggable = false; 182 | } 183 | }, 184 | immediate: true 185 | } 186 | }, 187 | created() { 188 | this.setLayout(this.defaultLayout); 189 | }, 190 | methods: { 191 | transformLayoutToLocal(sourceLayout) { 192 | let res = JSON.parse(JSON.stringify(sourceLayout)); 193 | res.forEach((e) => { 194 | e.x = e.x || 0; 195 | e.y = e.y || 0; 196 | e.type = e.type || GridItemType.SMALL; 197 | e.h = this.transH(e.height); 198 | e.resetH = e.h; 199 | e.i = e.id; 200 | e.w = e.type === GridItemType.BIG ? 2 : 1; 201 | e.x = e.type === GridItemType.BIG ? 0 : e.x; 202 | }); 203 | return res; 204 | }, 205 | transH(height) { 206 | if (height < this.rowHeight) 207 | return 1; 208 | else { 209 | return +((height - this.rowHeight) / (this.rowHeight + this.realGridMargin[1]) + 1).toFixed(2); 210 | } 211 | }, 212 | getLayout() { 213 | return JSON.parse(JSON.stringify(this.layout)); 214 | }, 215 | addCard(obj, toTop = true) { 216 | let id = obj.id; 217 | let height = obj.height; 218 | let type = obj.type || GridItemType.SMALL; 219 | let y = -1; 220 | if (!toTop) { 221 | this.layout.forEach((e) => { 222 | y = Math.max(y, e.y + e.h); 223 | }); 224 | } 225 | let dist = { ...obj, w: 1, x: 2, y, id, type, height }; 226 | if (type === GridItemType.BIG) 227 | dist.x = 0; 228 | this.layout.push(...this.transformLayoutToLocal([dist])); 229 | this.$nextTick(() => { 230 | this.$refs.gridLayout.layoutUpdate(); 231 | this.$nextTick(() => { 232 | this.changeLayoutEvent(); 233 | this.$emit("addCardEvent"); 234 | }); 235 | }); 236 | }, 237 | deleteCard(i) { 238 | let findIndex = this.layout.findIndex((e) => e.i === i); 239 | if (findIndex !== -1) { 240 | this.layout.splice(findIndex, 1); 241 | this.$nextTick(() => { 242 | this.changeLayoutEvent(); 243 | this.$refs.gridLayout.layoutUpdate(); 244 | }); 245 | } 246 | }, 247 | removeCard(i) { 248 | this.layout.splice(i, 1); 249 | }, 250 | movedEvent(i) { 251 | let dist = this.findDistById(i); 252 | if (!this.checkCanMove(dist)) { 253 | let cashLayout = JSON.parse(JSON.stringify(this.cashLayout)); 254 | this.$nextTick(() => { 255 | this.layout = cashLayout; 256 | }); 257 | } 258 | }, 259 | layoutUpdatedEvent() { 260 | this.moving = false; 261 | this.cashLayout = null; 262 | this.checkHeight(); 263 | let distDom = this.$refs.gridLayout.$el.getElementsByClassName(".moving"); 264 | if (distDom.length > 0) { 265 | distDom.forEach((e) => { 266 | e.classList.remove("moving"); 267 | }); 268 | } 269 | this.changeLayoutEvent(); 270 | }, 271 | findDistById(i) { 272 | return this.layout.find((e) => e.i === i); 273 | }, 274 | startMoveEvent(i, x) { 275 | let distCard = this.findDistById(i); 276 | if (!this.moving) { 277 | this.moving = true; 278 | this.cashLayout = JSON.parse(JSON.stringify(this.layout)); 279 | this.layout.forEach((e) => { 280 | e.h = e.resetH; 281 | }); 282 | } 283 | let distDom = this.getGridItem(this.$refs.gridLayout.$el, i); 284 | distDom.classList.add("moving"); 285 | let gridPlaceholder = this.getGridPlaceholder(this.$refs.gridLayout.$el); 286 | if (distCard.type === GridItemType.BIG && x !== 0) { 287 | gridPlaceholder.classList.add("not-allowed"); 288 | } else { 289 | gridPlaceholder.classList.remove("not-allowed"); 290 | } 291 | }, 292 | getGridPlaceholder(gridLayoutDom) { 293 | return gridLayoutDom.getElementsByClassName("vue-grid-placeholder")[0]; 294 | }, 295 | getGridItem(gridLayoutDom, i) { 296 | return gridLayoutDom.getElementsByClassName(`sk-grid-item-${i}`)[0]; 297 | }, 298 | layoutReadyEvent() { 299 | this.checkHeight(); 300 | }, 301 | checkHeight() { 302 | let sourceLayout = JSON.stringify(this.layout); 303 | fixCardHeight(this.layout); 304 | if (JSON.stringify(this.layout) !== sourceLayout) { 305 | this.$nextTick(() => { 306 | this.$refs.gridLayout.layoutUpdate(); 307 | }); 308 | } 309 | }, 310 | clearLayout() { 311 | this.layout.splice(0, this.layout.length); 312 | this.$nextTick(() => { 313 | this.changeLayoutEvent(); 314 | }); 315 | }, 316 | changeLayoutEvent() { 317 | this.$emit("changeLayout", this.getLayout()); 318 | }, 319 | checkCanMove(dist) { 320 | return !(dist.type === GridItemType.BIG && (dist.x === 1 || dist.x === 2)); 321 | }, 322 | setLayout(sourceLayout) { 323 | this.layout = this.transformLayoutToLocal(sourceLayout); 324 | } 325 | } 326 | }; 327 | const _withScopeId = (n) => (vue.pushScopeId("data-v-82449fba"), n = n(), vue.popScopeId(), n); 328 | const _hoisted_1 = { class: "default-show-text" }; 329 | const _hoisted_2 = ["onClick"]; 330 | const _hoisted_3 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("svg", { 331 | t: "1659345568198", 332 | class: "icon", 333 | viewBox: "0 0 1024 1024", 334 | version: "1.1", 335 | xmlns: "http://www.w3.org/2000/svg", 336 | "p-id": "13132", 337 | width: "16", 338 | height: "16" 339 | }, [ 340 | /* @__PURE__ */ vue.createElementVNode("path", { 341 | d: "M972.8 204.8c28.16 0 51.2 23.04 51.2 51.2 0 28.16-23.04 51.2-51.2 51.2h-51.2v563.2c0 84.65-68.95 153.6-153.6 153.6H256c-84.65 0-153.6-68.95-153.6-153.6V307.2H51.2C23.04 307.2 0 284.16 0 256c0-28.16 23.04-51.2 51.2-51.2h256v-85.59C307.2 53.505 364.63 0 435.2 0h153.6c70.57 0 128 53.419 128 119.21v85.59h256z m-563.2-85.59v85.59h204.8v-85.59c0-7.935-10.923-16.81-25.6-16.81H435.2c-14.677 0-25.6 8.875-25.6 16.81zM819.2 870.4V307.2H204.8v563.2c0 28.16 22.955 51.2 51.2 51.2h512a51.2 51.2 0 0 0 51.2-51.2zM358.4 768c-28.16 0-51.2-23.04-51.2-51.2V512c0-28.16 23.04-51.2 51.2-51.2 28.16 0 51.2 23.04 51.2 51.2v204.8c0 28.16-23.04 51.2-51.2 51.2z m307.2 0c-28.16 0-51.2-23.04-51.2-51.2V512c0-28.16 23.04-51.2 51.2-51.2 28.16 0 51.2 23.04 51.2 51.2v204.8c0 28.16-23.04 51.2-51.2 51.2z", 342 | "p-id": "13133" 343 | }) 344 | ], -1)); 345 | function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { 346 | const _component_grid_item = vue.resolveComponent("grid-item"); 347 | const _component_grid_layout = vue.resolveComponent("grid-layout"); 348 | return vue.openBlock(), vue.createBlock(_component_grid_layout, { 349 | ref: "gridLayout", 350 | layout: $data.layout, 351 | "onUpdate:layout": _cache[1] || (_cache[1] = ($event) => $data.layout = $event), 352 | "col-num": 3, 353 | margin: $options.realGridMargin, 354 | "row-height": $data.rowHeight, 355 | "is-draggable": $data.draggable, 356 | "is-resizable": $data.resizable, 357 | responsive: $data.responsive, 358 | "vertical-compact": true, 359 | "use-css-transforms": true, 360 | onLayoutUpdated: $options.layoutUpdatedEvent, 361 | onLayoutReady: $options.layoutReadyEvent 362 | }, { 363 | default: vue.withCtx(() => [ 364 | (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.layout, (item) => { 365 | return vue.openBlock(), vue.createBlock(_component_grid_item, { 366 | key: item.i, 367 | x: item.x, 368 | y: item.y, 369 | w: item.w, 370 | h: item.h, 371 | i: item.i, 372 | "drag-ignore-from": ".delete-options", 373 | class: vue.normalizeClass(`sk-grid-item-${item.i}`), 374 | onMove: $options.startMoveEvent, 375 | onMoved: $options.movedEvent 376 | }, { 377 | default: vue.withCtx(() => [ 378 | vue.renderSlot(_ctx.$slots, "default", { value: item }, () => [ 379 | vue.createElementVNode("div", _hoisted_1, vue.toDisplayString(item.i), 1) 380 | ], true), 381 | $props.editMode ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ 382 | $props.editMode && $props.editMask ? (vue.openBlock(), vue.createElementBlock("div", { 383 | key: 0, 384 | class: "edit-mask", 385 | onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => { 386 | }, ["stop"])) 387 | })) : vue.createCommentVNode("", true), 388 | vue.createElementVNode("div", { 389 | class: "delete-options", 390 | onClick: ($event) => $options.deleteCard(item.i) 391 | }, [ 392 | vue.renderSlot(_ctx.$slots, "delete-tip", { value: item }, () => [ 393 | _hoisted_3 394 | ], true) 395 | ], 8, _hoisted_2) 396 | ], 64)) : vue.createCommentVNode("", true) 397 | ]), 398 | _: 2 399 | }, 1032, ["x", "y", "w", "h", "i", "class", "onMove", "onMoved"]); 400 | }), 128)) 401 | ]), 402 | _: 3 403 | }, 8, ["layout", "margin", "row-height", "is-draggable", "is-resizable", "responsive", "onLayoutUpdated", "onLayoutReady"]); 404 | } 405 | var _VueGridLayoutSplit = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-82449fba"]]); 406 | const vueGridLayoutSplit = Object.assign(_VueGridLayoutSplit, { 407 | install: (app) => { 408 | app.component(_VueGridLayoutSplit.name, _VueGridLayoutSplit); 409 | app.use(vueGridLayoutInstall__default["default"]); 410 | console.log("had install3"); 411 | } 412 | }); 413 | exports2.GridItemType = GridItemType; 414 | exports2.GridPosition = GridPosition; 415 | exports2["default"] = vueGridLayoutSplit; 416 | Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); 417 | }); 418 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" 7 | "resolved" "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz" 8 | "version" "2.2.0" 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.1.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.18.6": 14 | "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" 15 | "resolved" "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz" 16 | "version" "7.18.6" 17 | dependencies: 18 | "@babel/highlight" "^7.18.6" 19 | 20 | "@babel/code-frame@7.12.11": 21 | "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" 22 | "resolved" "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz" 23 | "version" "7.12.11" 24 | dependencies: 25 | "@babel/highlight" "^7.10.4" 26 | 27 | "@babel/compat-data@^7.18.8": 28 | "integrity" "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==" 29 | "resolved" "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.18.8.tgz" 30 | "version" "7.18.8" 31 | 32 | "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.17.9": 33 | "integrity" "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==" 34 | "resolved" "https://registry.npmmirror.com/@babel/core/-/core-7.18.9.tgz" 35 | "version" "7.18.9" 36 | dependencies: 37 | "@ampproject/remapping" "^2.1.0" 38 | "@babel/code-frame" "^7.18.6" 39 | "@babel/generator" "^7.18.9" 40 | "@babel/helper-compilation-targets" "^7.18.9" 41 | "@babel/helper-module-transforms" "^7.18.9" 42 | "@babel/helpers" "^7.18.9" 43 | "@babel/parser" "^7.18.9" 44 | "@babel/template" "^7.18.6" 45 | "@babel/traverse" "^7.18.9" 46 | "@babel/types" "^7.18.9" 47 | "convert-source-map" "^1.7.0" 48 | "debug" "^4.1.0" 49 | "gensync" "^1.0.0-beta.2" 50 | "json5" "^2.2.1" 51 | "semver" "^6.3.0" 52 | 53 | "@babel/generator@^7.18.9": 54 | "integrity" "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==" 55 | "resolved" "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.9.tgz" 56 | "version" "7.18.9" 57 | dependencies: 58 | "@babel/types" "^7.18.9" 59 | "@jridgewell/gen-mapping" "^0.3.2" 60 | "jsesc" "^2.5.1" 61 | 62 | "@babel/helper-annotate-as-pure@^7.18.6": 63 | "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" 64 | "resolved" "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" 65 | "version" "7.18.6" 66 | dependencies: 67 | "@babel/types" "^7.18.6" 68 | 69 | "@babel/helper-compilation-targets@^7.18.9": 70 | "integrity" "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==" 71 | "resolved" "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz" 72 | "version" "7.18.9" 73 | dependencies: 74 | "@babel/compat-data" "^7.18.8" 75 | "@babel/helper-validator-option" "^7.18.6" 76 | "browserslist" "^4.20.2" 77 | "semver" "^6.3.0" 78 | 79 | "@babel/helper-create-class-features-plugin@^7.18.6": 80 | "integrity" "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==" 81 | "resolved" "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz" 82 | "version" "7.18.9" 83 | dependencies: 84 | "@babel/helper-annotate-as-pure" "^7.18.6" 85 | "@babel/helper-environment-visitor" "^7.18.9" 86 | "@babel/helper-function-name" "^7.18.9" 87 | "@babel/helper-member-expression-to-functions" "^7.18.9" 88 | "@babel/helper-optimise-call-expression" "^7.18.6" 89 | "@babel/helper-replace-supers" "^7.18.9" 90 | "@babel/helper-split-export-declaration" "^7.18.6" 91 | 92 | "@babel/helper-environment-visitor@^7.18.9": 93 | "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" 94 | "resolved" "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" 95 | "version" "7.18.9" 96 | 97 | "@babel/helper-function-name@^7.18.9": 98 | "integrity" "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==" 99 | "resolved" "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz" 100 | "version" "7.18.9" 101 | dependencies: 102 | "@babel/template" "^7.18.6" 103 | "@babel/types" "^7.18.9" 104 | 105 | "@babel/helper-hoist-variables@^7.18.6": 106 | "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" 107 | "resolved" "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" 108 | "version" "7.18.6" 109 | dependencies: 110 | "@babel/types" "^7.18.6" 111 | 112 | "@babel/helper-member-expression-to-functions@^7.18.9": 113 | "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" 114 | "resolved" "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" 115 | "version" "7.18.9" 116 | dependencies: 117 | "@babel/types" "^7.18.9" 118 | 119 | "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.18.6": 120 | "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" 121 | "resolved" "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" 122 | "version" "7.18.6" 123 | dependencies: 124 | "@babel/types" "^7.18.6" 125 | 126 | "@babel/helper-module-transforms@^7.18.9": 127 | "integrity" "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==" 128 | "resolved" "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz" 129 | "version" "7.18.9" 130 | dependencies: 131 | "@babel/helper-environment-visitor" "^7.18.9" 132 | "@babel/helper-module-imports" "^7.18.6" 133 | "@babel/helper-simple-access" "^7.18.6" 134 | "@babel/helper-split-export-declaration" "^7.18.6" 135 | "@babel/helper-validator-identifier" "^7.18.6" 136 | "@babel/template" "^7.18.6" 137 | "@babel/traverse" "^7.18.9" 138 | "@babel/types" "^7.18.9" 139 | 140 | "@babel/helper-optimise-call-expression@^7.18.6": 141 | "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" 142 | "resolved" "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" 143 | "version" "7.18.6" 144 | dependencies: 145 | "@babel/types" "^7.18.6" 146 | 147 | "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.18.6": 148 | "integrity" "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" 149 | "resolved" "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz" 150 | "version" "7.18.9" 151 | 152 | "@babel/helper-replace-supers@^7.18.9": 153 | "integrity" "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==" 154 | "resolved" "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz" 155 | "version" "7.18.9" 156 | dependencies: 157 | "@babel/helper-environment-visitor" "^7.18.9" 158 | "@babel/helper-member-expression-to-functions" "^7.18.9" 159 | "@babel/helper-optimise-call-expression" "^7.18.6" 160 | "@babel/traverse" "^7.18.9" 161 | "@babel/types" "^7.18.9" 162 | 163 | "@babel/helper-simple-access@^7.18.6": 164 | "integrity" "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==" 165 | "resolved" "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" 166 | "version" "7.18.6" 167 | dependencies: 168 | "@babel/types" "^7.18.6" 169 | 170 | "@babel/helper-split-export-declaration@^7.18.6": 171 | "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" 172 | "resolved" "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" 173 | "version" "7.18.6" 174 | dependencies: 175 | "@babel/types" "^7.18.6" 176 | 177 | "@babel/helper-validator-identifier@^7.18.6": 178 | "integrity" "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" 179 | "resolved" "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" 180 | "version" "7.18.6" 181 | 182 | "@babel/helper-validator-option@^7.18.6": 183 | "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" 184 | "resolved" "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" 185 | "version" "7.18.6" 186 | 187 | "@babel/helpers@^7.18.9": 188 | "integrity" "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==" 189 | "resolved" "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.9.tgz" 190 | "version" "7.18.9" 191 | dependencies: 192 | "@babel/template" "^7.18.6" 193 | "@babel/traverse" "^7.18.9" 194 | "@babel/types" "^7.18.9" 195 | 196 | "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": 197 | "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" 198 | "resolved" "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz" 199 | "version" "7.18.6" 200 | dependencies: 201 | "@babel/helper-validator-identifier" "^7.18.6" 202 | "chalk" "^2.0.0" 203 | "js-tokens" "^4.0.0" 204 | 205 | "@babel/parser@^7.16.4", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": 206 | "integrity" "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==" 207 | "resolved" "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.9.tgz" 208 | "version" "7.18.9" 209 | 210 | "@babel/plugin-syntax-import-meta@^7.10.4": 211 | "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" 212 | "resolved" "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" 213 | "version" "7.10.4" 214 | dependencies: 215 | "@babel/helper-plugin-utils" "^7.10.4" 216 | 217 | "@babel/plugin-syntax-jsx@^7.0.0": 218 | "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" 219 | "resolved" "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" 220 | "version" "7.18.6" 221 | dependencies: 222 | "@babel/helper-plugin-utils" "^7.18.6" 223 | 224 | "@babel/plugin-syntax-typescript@^7.18.6": 225 | "integrity" "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==" 226 | "resolved" "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz" 227 | "version" "7.18.6" 228 | dependencies: 229 | "@babel/helper-plugin-utils" "^7.18.6" 230 | 231 | "@babel/plugin-transform-typescript@^7.16.8": 232 | "integrity" "sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==" 233 | "resolved" "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz" 234 | "version" "7.18.8" 235 | dependencies: 236 | "@babel/helper-create-class-features-plugin" "^7.18.6" 237 | "@babel/helper-plugin-utils" "^7.18.6" 238 | "@babel/plugin-syntax-typescript" "^7.18.6" 239 | 240 | "@babel/template@^7.0.0", "@babel/template@^7.18.6": 241 | "integrity" "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==" 242 | "resolved" "https://registry.npmmirror.com/@babel/template/-/template-7.18.6.tgz" 243 | "version" "7.18.6" 244 | dependencies: 245 | "@babel/code-frame" "^7.18.6" 246 | "@babel/parser" "^7.18.6" 247 | "@babel/types" "^7.18.6" 248 | 249 | "@babel/traverse@^7.0.0", "@babel/traverse@^7.18.9": 250 | "integrity" "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==" 251 | "resolved" "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.9.tgz" 252 | "version" "7.18.9" 253 | dependencies: 254 | "@babel/code-frame" "^7.18.6" 255 | "@babel/generator" "^7.18.9" 256 | "@babel/helper-environment-visitor" "^7.18.9" 257 | "@babel/helper-function-name" "^7.18.9" 258 | "@babel/helper-hoist-variables" "^7.18.6" 259 | "@babel/helper-split-export-declaration" "^7.18.6" 260 | "@babel/parser" "^7.18.9" 261 | "@babel/types" "^7.18.9" 262 | "debug" "^4.1.0" 263 | "globals" "^11.1.0" 264 | 265 | "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9": 266 | "integrity" "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==" 267 | "resolved" "https://registry.npmmirror.com/@babel/types/-/types-7.18.9.tgz" 268 | "version" "7.18.9" 269 | dependencies: 270 | "@babel/helper-validator-identifier" "^7.18.6" 271 | "to-fast-properties" "^2.0.0" 272 | 273 | "@cspotcode/source-map-support@^0.8.0": 274 | "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" 275 | "resolved" "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" 276 | "version" "0.8.1" 277 | dependencies: 278 | "@jridgewell/trace-mapping" "0.3.9" 279 | 280 | "@eslint/eslintrc@^0.4.3": 281 | "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" 282 | "resolved" "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" 283 | "version" "0.4.3" 284 | dependencies: 285 | "ajv" "^6.12.4" 286 | "debug" "^4.1.1" 287 | "espree" "^7.3.0" 288 | "globals" "^13.9.0" 289 | "ignore" "^4.0.6" 290 | "import-fresh" "^3.2.1" 291 | "js-yaml" "^3.13.1" 292 | "minimatch" "^3.0.4" 293 | "strip-json-comments" "^3.1.1" 294 | 295 | "@humanwhocodes/config-array@^0.5.0": 296 | "integrity" "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==" 297 | "resolved" "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" 298 | "version" "0.5.0" 299 | dependencies: 300 | "@humanwhocodes/object-schema" "^1.2.0" 301 | "debug" "^4.1.1" 302 | "minimatch" "^3.0.4" 303 | 304 | "@humanwhocodes/object-schema@^1.2.0": 305 | "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" 306 | "resolved" "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" 307 | "version" "1.2.1" 308 | 309 | "@interactjs/actions@^1.10.2", "@interactjs/actions@1.10.17": 310 | "integrity" "sha512-wyB1ZqpaZy5gmz6VDqK9KWh98xKnFgL7VyLvxHODFi9V0IYX4HJAAOBlhtfze0D1R1f1cY+gqPDK+dLaHMlE+w==" 311 | "resolved" "https://registry.npmmirror.com/@interactjs/actions/-/actions-1.10.17.tgz" 312 | "version" "1.10.17" 313 | optionalDependencies: 314 | "@interactjs/interact" "1.10.17" 315 | 316 | "@interactjs/auto-scroll@1.10.17": 317 | "integrity" "sha512-IQcW7N3xOaoL8RnAGOGMk0Y2gue7L4S3BT6Id4VBBu8so163DtLiZVW6jXu9rKVntzbluaAeqNZlfAVyu3kIWg==" 318 | "resolved" "https://registry.npmmirror.com/@interactjs/auto-scroll/-/auto-scroll-1.10.17.tgz" 319 | "version" "1.10.17" 320 | optionalDependencies: 321 | "@interactjs/interact" "1.10.17" 322 | 323 | "@interactjs/auto-start@^1.10.2", "@interactjs/auto-start@1.10.17": 324 | "integrity" "sha512-qYVxhAbYnwxjD/NLEegUoAST7WASJ4VmWNjsyWRx/js5Op+I4E2zteARIeZGgrutcGIXMCcQzhCMgE3PjOpbpw==" 325 | "resolved" "https://registry.npmmirror.com/@interactjs/auto-start/-/auto-start-1.10.17.tgz" 326 | "version" "1.10.17" 327 | optionalDependencies: 328 | "@interactjs/interact" "1.10.17" 329 | 330 | "@interactjs/core@1.10.17": 331 | "integrity" "sha512-rL9w+83HDRuXub8Ezqs+97CYLl/ne7bLT/sAeduUWaxYhsW9iOqBoob9JnkkCZOaOsYizWI1EWy0+fNc5ibtLQ==" 332 | "resolved" "https://registry.npmmirror.com/@interactjs/core/-/core-1.10.17.tgz" 333 | "version" "1.10.17" 334 | 335 | "@interactjs/dev-tools@^1.10.2", "@interactjs/dev-tools@1.10.17": 336 | "integrity" "sha512-Oi9nEw3FfSwkNmW+V0WwdHqvzEkVHc24mH1v5EjRn60sqgrGLK9nTQ+NSuqcnUY8GxC3TkyuxnsOodxiadIRmA==" 337 | "resolved" "https://registry.npmmirror.com/@interactjs/dev-tools/-/dev-tools-1.10.17.tgz" 338 | "version" "1.10.17" 339 | optionalDependencies: 340 | "@interactjs/interact" "1.10.17" 341 | 342 | "@interactjs/inertia@1.10.17": 343 | "integrity" "sha512-41vbYUjZIDCKt2/yhmjPrEW5+0uoL/hldFsll9pkvnLhmm12Xk0VXOlmR2zXKAmsTK3fJlKMyBYUX92qHLkyVQ==" 344 | "resolved" "https://registry.npmmirror.com/@interactjs/inertia/-/inertia-1.10.17.tgz" 345 | "version" "1.10.17" 346 | dependencies: 347 | "@interactjs/offset" "1.10.17" 348 | optionalDependencies: 349 | "@interactjs/interact" "1.10.17" 350 | 351 | "@interactjs/interact@1.10.17": 352 | "integrity" "sha512-NyKsf8EFudvdahBjPz1Gt5QnynVwa/2LUfBc2/w8QOnOBiyzUm0HLloJSaB8a50QbQkSWN243/Lgpd8GTMQvuQ==" 353 | "resolved" "https://registry.npmmirror.com/@interactjs/interact/-/interact-1.10.17.tgz" 354 | "version" "1.10.17" 355 | dependencies: 356 | "@interactjs/core" "1.10.17" 357 | "@interactjs/types" "1.10.17" 358 | "@interactjs/utils" "1.10.17" 359 | 360 | "@interactjs/interactjs@^1.10.2": 361 | "integrity" "sha512-hHmiukARbZhiM12zNKx0yQlFVl4C+NMeYNAYh6Mf9U3ZziQ47C+JEW8Gr7Zr/MxfNZyPu5nLKCpVQjh/JvBO9g==" 362 | "resolved" "https://registry.npmmirror.com/@interactjs/interactjs/-/interactjs-1.10.17.tgz" 363 | "version" "1.10.17" 364 | dependencies: 365 | "@interactjs/actions" "1.10.17" 366 | "@interactjs/auto-scroll" "1.10.17" 367 | "@interactjs/auto-start" "1.10.17" 368 | "@interactjs/core" "1.10.17" 369 | "@interactjs/dev-tools" "1.10.17" 370 | "@interactjs/inertia" "1.10.17" 371 | "@interactjs/interact" "1.10.17" 372 | "@interactjs/modifiers" "1.10.17" 373 | "@interactjs/offset" "1.10.17" 374 | "@interactjs/pointer-events" "1.10.17" 375 | "@interactjs/reflow" "1.10.17" 376 | "@interactjs/utils" "1.10.17" 377 | 378 | "@interactjs/modifiers@^1.10.2", "@interactjs/modifiers@1.10.17": 379 | "integrity" "sha512-Dxw8kv9VBIxnhNvQncR6CKAGMzKXczLvuAUIdSPFYtyerX/XiDulJUqhR+jVKNp/WjF1DvdBxWo0kGGLbM84LQ==" 380 | "resolved" "https://registry.npmmirror.com/@interactjs/modifiers/-/modifiers-1.10.17.tgz" 381 | "version" "1.10.17" 382 | dependencies: 383 | "@interactjs/snappers" "1.10.17" 384 | optionalDependencies: 385 | "@interactjs/interact" "1.10.17" 386 | 387 | "@interactjs/offset@1.10.17": 388 | "integrity" "sha512-wWBnIQWgLrmJNTBbd/FdxHxAJjiXl/5ND8Jbw2DuP9gIGDxhFSdEt62Fgqimn9ICb8v8ycvSLObEmcvJF/8hQQ==" 389 | "resolved" "https://registry.npmmirror.com/@interactjs/offset/-/offset-1.10.17.tgz" 390 | "version" "1.10.17" 391 | optionalDependencies: 392 | "@interactjs/interact" "1.10.17" 393 | 394 | "@interactjs/pointer-events@1.10.17": 395 | "integrity" "sha512-VsfluouEKb8QRGyH6jQATCW+QdAd/3dkENS7rj2m+EcVUhz2Ob5mpMRopjALi4pwltMowqTfuJ4LtwMSX2G29A==" 396 | "resolved" "https://registry.npmmirror.com/@interactjs/pointer-events/-/pointer-events-1.10.17.tgz" 397 | "version" "1.10.17" 398 | optionalDependencies: 399 | "@interactjs/interact" "1.10.17" 400 | 401 | "@interactjs/reflow@1.10.17": 402 | "integrity" "sha512-ncpWP5k93FRQptEhjzPZsbuRRajd4rkW17lDavCrEjrDi/LHnYekWGqZTaFzfJ80n1x8xUm9ujDjxCTylNqEIA==" 403 | "resolved" "https://registry.npmmirror.com/@interactjs/reflow/-/reflow-1.10.17.tgz" 404 | "version" "1.10.17" 405 | optionalDependencies: 406 | "@interactjs/interact" "1.10.17" 407 | 408 | "@interactjs/snappers@1.10.17": 409 | "integrity" "sha512-m753DGsNOts797e3zDT6wqELoc+BlpIC1w+TyMyISRxU6n1RlS8Q6LHBGgwAgV79LHLaahv/a5haFF9H1VG0FQ==" 410 | "resolved" "https://registry.npmmirror.com/@interactjs/snappers/-/snappers-1.10.17.tgz" 411 | "version" "1.10.17" 412 | optionalDependencies: 413 | "@interactjs/interact" "1.10.17" 414 | 415 | "@interactjs/types@1.10.17": 416 | "integrity" "sha512-X2JpoM7xUw0p9Me0tMaI0HNfcF/Hd07ZZlzpnpEMpGerUZOLoyeThrV9P+CrBHxZrluWJrigJbcdqXliFd0YMA==" 417 | "resolved" "https://registry.npmmirror.com/@interactjs/types/-/types-1.10.17.tgz" 418 | "version" "1.10.17" 419 | 420 | "@interactjs/utils@1.10.17": 421 | "integrity" "sha512-sZAW08CkqgvqRjUIaLRjScjObcCzN9D75yekLA21EClYAZIhi4A+GEt2z/WqOCOksTaEPLYmQyhkpXcboc0LhQ==" 422 | "resolved" "https://registry.npmmirror.com/@interactjs/utils/-/utils-1.10.17.tgz" 423 | "version" "1.10.17" 424 | 425 | "@jridgewell/gen-mapping@^0.1.0": 426 | "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" 427 | "resolved" "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" 428 | "version" "0.1.1" 429 | dependencies: 430 | "@jridgewell/set-array" "^1.0.0" 431 | "@jridgewell/sourcemap-codec" "^1.4.10" 432 | 433 | "@jridgewell/gen-mapping@^0.3.2": 434 | "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" 435 | "resolved" "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" 436 | "version" "0.3.2" 437 | dependencies: 438 | "@jridgewell/set-array" "^1.0.1" 439 | "@jridgewell/sourcemap-codec" "^1.4.10" 440 | "@jridgewell/trace-mapping" "^0.3.9" 441 | 442 | "@jridgewell/resolve-uri@^3.0.3": 443 | "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" 444 | "resolved" "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" 445 | "version" "3.1.0" 446 | 447 | "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": 448 | "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" 449 | "resolved" "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz" 450 | "version" "1.1.2" 451 | 452 | "@jridgewell/sourcemap-codec@^1.4.10": 453 | "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" 454 | "resolved" "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" 455 | "version" "1.4.14" 456 | 457 | "@jridgewell/trace-mapping@^0.3.9": 458 | "integrity" "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==" 459 | "resolved" "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz" 460 | "version" "0.3.14" 461 | dependencies: 462 | "@jridgewell/resolve-uri" "^3.0.3" 463 | "@jridgewell/sourcemap-codec" "^1.4.10" 464 | 465 | "@jridgewell/trace-mapping@0.3.9": 466 | "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" 467 | "resolved" "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" 468 | "version" "0.3.9" 469 | dependencies: 470 | "@jridgewell/resolve-uri" "^3.0.3" 471 | "@jridgewell/sourcemap-codec" "^1.4.10" 472 | 473 | "@rollup/pluginutils@^4.2.0", "@rollup/pluginutils@^4.2.1": 474 | "integrity" "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==" 475 | "resolved" "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz" 476 | "version" "4.2.1" 477 | dependencies: 478 | "estree-walker" "^2.0.1" 479 | "picomatch" "^2.2.2" 480 | 481 | "@tsconfig/node10@^1.0.7": 482 | "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" 483 | "resolved" "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.9.tgz" 484 | "version" "1.0.9" 485 | 486 | "@tsconfig/node12@^1.0.7": 487 | "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" 488 | "resolved" "https://registry.npmmirror.com/@tsconfig/node12/-/node12-1.0.11.tgz" 489 | "version" "1.0.11" 490 | 491 | "@tsconfig/node14@^1.0.0": 492 | "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" 493 | "resolved" "https://registry.npmmirror.com/@tsconfig/node14/-/node14-1.0.3.tgz" 494 | "version" "1.0.3" 495 | 496 | "@tsconfig/node16@^1.0.2": 497 | "integrity" "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" 498 | "resolved" "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.3.tgz" 499 | "version" "1.0.3" 500 | 501 | "@types/eslint@^8.4.5": 502 | "integrity" "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==" 503 | "resolved" "https://registry.npmmirror.com/@types/eslint/-/eslint-8.4.5.tgz" 504 | "version" "8.4.5" 505 | dependencies: 506 | "@types/estree" "*" 507 | "@types/json-schema" "*" 508 | 509 | "@types/estree@*": 510 | "integrity" "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" 511 | "resolved" "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz" 512 | "version" "1.0.0" 513 | 514 | "@types/json-schema@*": 515 | "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" 516 | "resolved" "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz" 517 | "version" "7.0.11" 518 | 519 | "@types/node@*", "@types/node@^18.6.4": 520 | "integrity" "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==" 521 | "resolved" "https://registry.npmmirror.com/@types/node/-/node-18.6.4.tgz" 522 | "version" "18.6.4" 523 | 524 | "@vitejs/plugin-vue-jsx@^1.1.8": 525 | "integrity" "sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==" 526 | "resolved" "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.3.10.tgz" 527 | "version" "1.3.10" 528 | dependencies: 529 | "@babel/core" "^7.17.9" 530 | "@babel/plugin-syntax-import-meta" "^7.10.4" 531 | "@babel/plugin-transform-typescript" "^7.16.8" 532 | "@rollup/pluginutils" "^4.2.0" 533 | "@vue/babel-plugin-jsx" "^1.1.1" 534 | "hash-sum" "^2.0.0" 535 | 536 | "@vitejs/plugin-vue@^1.6.2": 537 | "integrity" "sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==" 538 | "resolved" "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-1.10.2.tgz" 539 | "version" "1.10.2" 540 | 541 | "@volar/code-gen@0.38.9": 542 | "integrity" "sha512-n6LClucfA+37rQeskvh9vDoZV1VvCVNy++MAPKj2dT4FT+Fbmty/SDQqnsEBtdEe6E3OQctFvA/IcKsx3Mns0A==" 543 | "resolved" "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.38.9.tgz" 544 | "version" "0.38.9" 545 | dependencies: 546 | "@volar/source-map" "0.38.9" 547 | 548 | "@volar/source-map@0.38.9": 549 | "integrity" "sha512-ba0UFoHDYry+vwKdgkWJ6xlQT+8TFtZg1zj9tSjj4PykW1JZDuM0xplMotLun4h3YOoYfY9K1huY5gvxmrNLIw==" 550 | "resolved" "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.38.9.tgz" 551 | "version" "0.38.9" 552 | 553 | "@volar/vue-code-gen@0.38.9": 554 | "integrity" "sha512-tzj7AoarFBKl7e41MR006ncrEmNPHALuk8aG4WdDIaG387X5//5KhWC5Ff3ZfB2InGSeNT+CVUd74M0gS20rjA==" 555 | "resolved" "https://registry.npmmirror.com/@volar/vue-code-gen/-/vue-code-gen-0.38.9.tgz" 556 | "version" "0.38.9" 557 | dependencies: 558 | "@volar/code-gen" "0.38.9" 559 | "@volar/source-map" "0.38.9" 560 | "@vue/compiler-core" "^3.2.37" 561 | "@vue/compiler-dom" "^3.2.37" 562 | "@vue/shared" "^3.2.37" 563 | 564 | "@volar/vue-typescript@0.38.9": 565 | "integrity" "sha512-iJMQGU91ADi98u8V1vXd2UBmELDAaeSP0ZJaFjwosClQdKlJQYc6MlxxKfXBZisHqfbhdtrGRyaryulnYtliZw==" 566 | "resolved" "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.38.9.tgz" 567 | "version" "0.38.9" 568 | dependencies: 569 | "@volar/code-gen" "0.38.9" 570 | "@volar/source-map" "0.38.9" 571 | "@volar/vue-code-gen" "0.38.9" 572 | "@vue/compiler-sfc" "^3.2.37" 573 | "@vue/reactivity" "^3.2.37" 574 | 575 | "@vue/babel-helper-vue-transform-on@^1.0.2": 576 | "integrity" "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==" 577 | "resolved" "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz" 578 | "version" "1.0.2" 579 | 580 | "@vue/babel-plugin-jsx@^1.1.1": 581 | "integrity" "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==" 582 | "resolved" "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz" 583 | "version" "1.1.1" 584 | dependencies: 585 | "@babel/helper-module-imports" "^7.0.0" 586 | "@babel/plugin-syntax-jsx" "^7.0.0" 587 | "@babel/template" "^7.0.0" 588 | "@babel/traverse" "^7.0.0" 589 | "@babel/types" "^7.0.0" 590 | "@vue/babel-helper-vue-transform-on" "^1.0.2" 591 | "camelcase" "^6.0.0" 592 | "html-tags" "^3.1.0" 593 | "svg-tags" "^1.0.0" 594 | 595 | "@vue/compiler-core@^3.2.37", "@vue/compiler-core@3.2.37": 596 | "integrity" "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==" 597 | "resolved" "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz" 598 | "version" "3.2.37" 599 | dependencies: 600 | "@babel/parser" "^7.16.4" 601 | "@vue/shared" "3.2.37" 602 | "estree-walker" "^2.0.2" 603 | "source-map" "^0.6.1" 604 | 605 | "@vue/compiler-dom@^3.2.37", "@vue/compiler-dom@3.2.37": 606 | "integrity" "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==" 607 | "resolved" "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz" 608 | "version" "3.2.37" 609 | dependencies: 610 | "@vue/compiler-core" "3.2.37" 611 | "@vue/shared" "3.2.37" 612 | 613 | "@vue/compiler-sfc@^3.2.37", "@vue/compiler-sfc@3.2.37": 614 | "integrity" "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==" 615 | "resolved" "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz" 616 | "version" "3.2.37" 617 | dependencies: 618 | "@babel/parser" "^7.16.4" 619 | "@vue/compiler-core" "3.2.37" 620 | "@vue/compiler-dom" "3.2.37" 621 | "@vue/compiler-ssr" "3.2.37" 622 | "@vue/reactivity-transform" "3.2.37" 623 | "@vue/shared" "3.2.37" 624 | "estree-walker" "^2.0.2" 625 | "magic-string" "^0.25.7" 626 | "postcss" "^8.1.10" 627 | "source-map" "^0.6.1" 628 | 629 | "@vue/compiler-ssr@3.2.37": 630 | "integrity" "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==" 631 | "resolved" "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz" 632 | "version" "3.2.37" 633 | dependencies: 634 | "@vue/compiler-dom" "3.2.37" 635 | "@vue/shared" "3.2.37" 636 | 637 | "@vue/reactivity-transform@3.2.37": 638 | "integrity" "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==" 639 | "resolved" "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz" 640 | "version" "3.2.37" 641 | dependencies: 642 | "@babel/parser" "^7.16.4" 643 | "@vue/compiler-core" "3.2.37" 644 | "@vue/shared" "3.2.37" 645 | "estree-walker" "^2.0.2" 646 | "magic-string" "^0.25.7" 647 | 648 | "@vue/reactivity@^3.2.37", "@vue/reactivity@3.2.37": 649 | "integrity" "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==" 650 | "resolved" "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz" 651 | "version" "3.2.37" 652 | dependencies: 653 | "@vue/shared" "3.2.37" 654 | 655 | "@vue/runtime-core@3.2.37": 656 | "integrity" "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==" 657 | "resolved" "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz" 658 | "version" "3.2.37" 659 | dependencies: 660 | "@vue/reactivity" "3.2.37" 661 | "@vue/shared" "3.2.37" 662 | 663 | "@vue/runtime-dom@3.2.37": 664 | "integrity" "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==" 665 | "resolved" "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz" 666 | "version" "3.2.37" 667 | dependencies: 668 | "@vue/runtime-core" "3.2.37" 669 | "@vue/shared" "3.2.37" 670 | "csstype" "^2.6.8" 671 | 672 | "@vue/server-renderer@3.2.37": 673 | "integrity" "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==" 674 | "resolved" "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz" 675 | "version" "3.2.37" 676 | dependencies: 677 | "@vue/compiler-ssr" "3.2.37" 678 | "@vue/shared" "3.2.37" 679 | 680 | "@vue/shared@^3.2.37", "@vue/shared@3.2.37": 681 | "integrity" "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==" 682 | "resolved" "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz" 683 | "version" "3.2.37" 684 | 685 | "acorn-jsx@^5.2.0", "acorn-jsx@^5.3.1": 686 | "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" 687 | "resolved" "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz" 688 | "version" "5.3.2" 689 | 690 | "acorn-walk@^8.1.1": 691 | "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" 692 | "resolved" "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz" 693 | "version" "8.2.0" 694 | 695 | "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.1.1", "acorn@^7.4.0": 696 | "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" 697 | "resolved" "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz" 698 | "version" "7.4.1" 699 | 700 | "acorn@^8.4.1": 701 | "integrity" "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" 702 | "resolved" "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz" 703 | "version" "8.8.0" 704 | 705 | "ajv@^6.10.0", "ajv@^6.12.4": 706 | "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" 707 | "resolved" "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz" 708 | "version" "6.12.6" 709 | dependencies: 710 | "fast-deep-equal" "^3.1.1" 711 | "fast-json-stable-stringify" "^2.0.0" 712 | "json-schema-traverse" "^0.4.1" 713 | "uri-js" "^4.2.2" 714 | 715 | "ajv@^8.0.1": 716 | "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" 717 | "resolved" "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz" 718 | "version" "8.11.0" 719 | dependencies: 720 | "fast-deep-equal" "^3.1.1" 721 | "json-schema-traverse" "^1.0.0" 722 | "require-from-string" "^2.0.2" 723 | "uri-js" "^4.2.2" 724 | 725 | "ansi-colors@^4.1.1": 726 | "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" 727 | "resolved" "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz" 728 | "version" "4.1.3" 729 | 730 | "ansi-regex@^5.0.1": 731 | "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 732 | "resolved" "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz" 733 | "version" "5.0.1" 734 | 735 | "ansi-styles@^3.2.1": 736 | "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" 737 | "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz" 738 | "version" "3.2.1" 739 | dependencies: 740 | "color-convert" "^1.9.0" 741 | 742 | "ansi-styles@^4.0.0", "ansi-styles@^4.1.0": 743 | "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" 744 | "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz" 745 | "version" "4.3.0" 746 | dependencies: 747 | "color-convert" "^2.0.1" 748 | 749 | "arg@^4.1.0": 750 | "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" 751 | "resolved" "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz" 752 | "version" "4.1.3" 753 | 754 | "argparse@^1.0.7": 755 | "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" 756 | "resolved" "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz" 757 | "version" "1.0.10" 758 | dependencies: 759 | "sprintf-js" "~1.0.2" 760 | 761 | "astral-regex@^2.0.0": 762 | "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" 763 | "resolved" "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz" 764 | "version" "2.0.0" 765 | 766 | "balanced-match@^1.0.0": 767 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 768 | "resolved" "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz" 769 | "version" "1.0.2" 770 | 771 | "batch-processor@1.0.0": 772 | "integrity" "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" 773 | "resolved" "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz" 774 | "version" "1.0.0" 775 | 776 | "brace-expansion@^1.1.7": 777 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 778 | "resolved" "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz" 779 | "version" "1.1.11" 780 | dependencies: 781 | "balanced-match" "^1.0.0" 782 | "concat-map" "0.0.1" 783 | 784 | "browserslist@^4.20.2", "browserslist@>= 4.21.0": 785 | "integrity" "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==" 786 | "resolved" "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.3.tgz" 787 | "version" "4.21.3" 788 | dependencies: 789 | "caniuse-lite" "^1.0.30001370" 790 | "electron-to-chromium" "^1.4.202" 791 | "node-releases" "^2.0.6" 792 | "update-browserslist-db" "^1.0.5" 793 | 794 | "callsites@^3.0.0": 795 | "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 796 | "resolved" "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz" 797 | "version" "3.1.0" 798 | 799 | "camelcase@^6.0.0": 800 | "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" 801 | "resolved" "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz" 802 | "version" "6.3.0" 803 | 804 | "caniuse-lite@^1.0.30001370": 805 | "integrity" "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==" 806 | "resolved" "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz" 807 | "version" "1.0.30001373" 808 | 809 | "chalk@^2.0.0": 810 | "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" 811 | "resolved" "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" 812 | "version" "2.4.2" 813 | dependencies: 814 | "ansi-styles" "^3.2.1" 815 | "escape-string-regexp" "^1.0.5" 816 | "supports-color" "^5.3.0" 817 | 818 | "chalk@^4.0.0": 819 | "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" 820 | "resolved" "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz" 821 | "version" "4.1.2" 822 | dependencies: 823 | "ansi-styles" "^4.1.0" 824 | "supports-color" "^7.1.0" 825 | 826 | "color-convert@^1.9.0": 827 | "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" 828 | "resolved" "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz" 829 | "version" "1.9.3" 830 | dependencies: 831 | "color-name" "1.1.3" 832 | 833 | "color-convert@^2.0.1": 834 | "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" 835 | "resolved" "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz" 836 | "version" "2.0.1" 837 | dependencies: 838 | "color-name" "~1.1.4" 839 | 840 | "color-name@~1.1.4": 841 | "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 842 | "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" 843 | "version" "1.1.4" 844 | 845 | "color-name@1.1.3": 846 | "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 847 | "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" 848 | "version" "1.1.3" 849 | 850 | "concat-map@0.0.1": 851 | "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 852 | "resolved" "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz" 853 | "version" "0.0.1" 854 | 855 | "convert-source-map@^1.7.0": 856 | "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==" 857 | "resolved" "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz" 858 | "version" "1.8.0" 859 | dependencies: 860 | "safe-buffer" "~5.1.1" 861 | 862 | "copy-anything@^2.0.1": 863 | "integrity" "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==" 864 | "resolved" "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz" 865 | "version" "2.0.6" 866 | dependencies: 867 | "is-what" "^3.14.1" 868 | 869 | "create-require@^1.1.0": 870 | "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" 871 | "resolved" "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz" 872 | "version" "1.1.1" 873 | 874 | "cross-env@^7.0.3": 875 | "integrity" "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==" 876 | "resolved" "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz" 877 | "version" "7.0.3" 878 | dependencies: 879 | "cross-spawn" "^7.0.1" 880 | 881 | "cross-spawn@^7.0.1", "cross-spawn@^7.0.2": 882 | "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" 883 | "resolved" "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz" 884 | "version" "7.0.3" 885 | dependencies: 886 | "path-key" "^3.1.0" 887 | "shebang-command" "^2.0.0" 888 | "which" "^2.0.1" 889 | 890 | "csstype@^2.6.8": 891 | "integrity" "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" 892 | "resolved" "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz" 893 | "version" "2.6.20" 894 | 895 | "debug@^3.2.6": 896 | "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" 897 | "resolved" "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" 898 | "version" "3.2.7" 899 | dependencies: 900 | "ms" "^2.1.1" 901 | 902 | "debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1": 903 | "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" 904 | "resolved" "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz" 905 | "version" "4.3.4" 906 | dependencies: 907 | "ms" "2.1.2" 908 | 909 | "deep-is@^0.1.3": 910 | "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 911 | "resolved" "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz" 912 | "version" "0.1.4" 913 | 914 | "diff@^4.0.1": 915 | "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" 916 | "resolved" "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz" 917 | "version" "4.0.2" 918 | 919 | "doctrine@^3.0.0": 920 | "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" 921 | "resolved" "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz" 922 | "version" "3.0.0" 923 | dependencies: 924 | "esutils" "^2.0.2" 925 | 926 | "electron-to-chromium@^1.4.202": 927 | "integrity" "sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA==" 928 | "resolved" "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz" 929 | "version" "1.4.206" 930 | 931 | "element-resize-detector@^1.2.1": 932 | "integrity" "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==" 933 | "resolved" "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz" 934 | "version" "1.2.4" 935 | dependencies: 936 | "batch-processor" "1.0.0" 937 | 938 | "emoji-regex@^8.0.0": 939 | "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 940 | "resolved" "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz" 941 | "version" "8.0.0" 942 | 943 | "enquirer@^2.3.5": 944 | "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" 945 | "resolved" "https://registry.npmmirror.com/enquirer/-/enquirer-2.3.6.tgz" 946 | "version" "2.3.6" 947 | dependencies: 948 | "ansi-colors" "^4.1.1" 949 | 950 | "errno@^0.1.1": 951 | "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" 952 | "resolved" "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz" 953 | "version" "0.1.8" 954 | dependencies: 955 | "prr" "~1.0.1" 956 | 957 | "esbuild-windows-64@0.14.51": 958 | "integrity" "sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==" 959 | "resolved" "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz" 960 | "version" "0.14.51" 961 | 962 | "esbuild@^0.14.27": 963 | "integrity" "sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==" 964 | "resolved" "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.51.tgz" 965 | "version" "0.14.51" 966 | optionalDependencies: 967 | "esbuild-android-64" "0.14.51" 968 | "esbuild-android-arm64" "0.14.51" 969 | "esbuild-darwin-64" "0.14.51" 970 | "esbuild-darwin-arm64" "0.14.51" 971 | "esbuild-freebsd-64" "0.14.51" 972 | "esbuild-freebsd-arm64" "0.14.51" 973 | "esbuild-linux-32" "0.14.51" 974 | "esbuild-linux-64" "0.14.51" 975 | "esbuild-linux-arm" "0.14.51" 976 | "esbuild-linux-arm64" "0.14.51" 977 | "esbuild-linux-mips64le" "0.14.51" 978 | "esbuild-linux-ppc64le" "0.14.51" 979 | "esbuild-linux-riscv64" "0.14.51" 980 | "esbuild-linux-s390x" "0.14.51" 981 | "esbuild-netbsd-64" "0.14.51" 982 | "esbuild-openbsd-64" "0.14.51" 983 | "esbuild-sunos-64" "0.14.51" 984 | "esbuild-windows-32" "0.14.51" 985 | "esbuild-windows-64" "0.14.51" 986 | "esbuild-windows-arm64" "0.14.51" 987 | 988 | "escalade@^3.1.1": 989 | "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 990 | "resolved" "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz" 991 | "version" "3.1.1" 992 | 993 | "escape-string-regexp@^1.0.5": 994 | "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 995 | "resolved" "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 996 | "version" "1.0.5" 997 | 998 | "escape-string-regexp@^4.0.0": 999 | "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 1000 | "resolved" "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 1001 | "version" "4.0.0" 1002 | 1003 | "eslint-plugin-vue@^7.7.0": 1004 | "integrity" "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==" 1005 | "resolved" "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz" 1006 | "version" "7.20.0" 1007 | dependencies: 1008 | "eslint-utils" "^2.1.0" 1009 | "natural-compare" "^1.4.0" 1010 | "semver" "^6.3.0" 1011 | "vue-eslint-parser" "^7.10.0" 1012 | 1013 | "eslint-scope@^5.1.1": 1014 | "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" 1015 | "resolved" "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz" 1016 | "version" "5.1.1" 1017 | dependencies: 1018 | "esrecurse" "^4.3.0" 1019 | "estraverse" "^4.1.1" 1020 | 1021 | "eslint-utils@^2.1.0": 1022 | "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" 1023 | "resolved" "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz" 1024 | "version" "2.1.0" 1025 | dependencies: 1026 | "eslint-visitor-keys" "^1.1.0" 1027 | 1028 | "eslint-visitor-keys@^1.1.0", "eslint-visitor-keys@^1.3.0": 1029 | "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" 1030 | "resolved" "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" 1031 | "version" "1.3.0" 1032 | 1033 | "eslint-visitor-keys@^2.0.0": 1034 | "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" 1035 | "resolved" "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" 1036 | "version" "2.1.0" 1037 | 1038 | "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", "eslint@^7.21.0", "eslint@>=5.0.0", "eslint@>=7": 1039 | "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" 1040 | "resolved" "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz" 1041 | "version" "7.32.0" 1042 | dependencies: 1043 | "@babel/code-frame" "7.12.11" 1044 | "@eslint/eslintrc" "^0.4.3" 1045 | "@humanwhocodes/config-array" "^0.5.0" 1046 | "ajv" "^6.10.0" 1047 | "chalk" "^4.0.0" 1048 | "cross-spawn" "^7.0.2" 1049 | "debug" "^4.0.1" 1050 | "doctrine" "^3.0.0" 1051 | "enquirer" "^2.3.5" 1052 | "escape-string-regexp" "^4.0.0" 1053 | "eslint-scope" "^5.1.1" 1054 | "eslint-utils" "^2.1.0" 1055 | "eslint-visitor-keys" "^2.0.0" 1056 | "espree" "^7.3.1" 1057 | "esquery" "^1.4.0" 1058 | "esutils" "^2.0.2" 1059 | "fast-deep-equal" "^3.1.3" 1060 | "file-entry-cache" "^6.0.1" 1061 | "functional-red-black-tree" "^1.0.1" 1062 | "glob-parent" "^5.1.2" 1063 | "globals" "^13.6.0" 1064 | "ignore" "^4.0.6" 1065 | "import-fresh" "^3.0.0" 1066 | "imurmurhash" "^0.1.4" 1067 | "is-glob" "^4.0.0" 1068 | "js-yaml" "^3.13.1" 1069 | "json-stable-stringify-without-jsonify" "^1.0.1" 1070 | "levn" "^0.4.1" 1071 | "lodash.merge" "^4.6.2" 1072 | "minimatch" "^3.0.4" 1073 | "natural-compare" "^1.4.0" 1074 | "optionator" "^0.9.1" 1075 | "progress" "^2.0.0" 1076 | "regexpp" "^3.1.0" 1077 | "semver" "^7.2.1" 1078 | "strip-ansi" "^6.0.0" 1079 | "strip-json-comments" "^3.1.0" 1080 | "table" "^6.0.9" 1081 | "text-table" "^0.2.0" 1082 | "v8-compile-cache" "^2.0.3" 1083 | 1084 | "espree@^6.2.1": 1085 | "integrity" "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==" 1086 | "resolved" "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz" 1087 | "version" "6.2.1" 1088 | dependencies: 1089 | "acorn" "^7.1.1" 1090 | "acorn-jsx" "^5.2.0" 1091 | "eslint-visitor-keys" "^1.1.0" 1092 | 1093 | "espree@^7.3.0", "espree@^7.3.1": 1094 | "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" 1095 | "resolved" "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz" 1096 | "version" "7.3.1" 1097 | dependencies: 1098 | "acorn" "^7.4.0" 1099 | "acorn-jsx" "^5.3.1" 1100 | "eslint-visitor-keys" "^1.3.0" 1101 | 1102 | "esprima@^4.0.0": 1103 | "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 1104 | "resolved" "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz" 1105 | "version" "4.0.1" 1106 | 1107 | "esquery@^1.4.0": 1108 | "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" 1109 | "resolved" "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz" 1110 | "version" "1.4.0" 1111 | dependencies: 1112 | "estraverse" "^5.1.0" 1113 | 1114 | "esrecurse@^4.3.0": 1115 | "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" 1116 | "resolved" "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz" 1117 | "version" "4.3.0" 1118 | dependencies: 1119 | "estraverse" "^5.2.0" 1120 | 1121 | "estraverse@^4.1.1": 1122 | "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" 1123 | "resolved" "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz" 1124 | "version" "4.3.0" 1125 | 1126 | "estraverse@^5.1.0", "estraverse@^5.2.0": 1127 | "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" 1128 | "resolved" "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz" 1129 | "version" "5.3.0" 1130 | 1131 | "estree-walker@^2.0.1", "estree-walker@^2.0.2": 1132 | "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1133 | "resolved" "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz" 1134 | "version" "2.0.2" 1135 | 1136 | "esutils@^2.0.2": 1137 | "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 1138 | "resolved" "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz" 1139 | "version" "2.0.3" 1140 | 1141 | "fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": 1142 | "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1143 | "resolved" "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 1144 | "version" "3.1.3" 1145 | 1146 | "fast-json-stable-stringify@^2.0.0": 1147 | "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1148 | "resolved" "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 1149 | "version" "2.1.0" 1150 | 1151 | "fast-levenshtein@^2.0.6": 1152 | "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 1153 | "resolved" "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 1154 | "version" "2.0.6" 1155 | 1156 | "file-entry-cache@^6.0.1": 1157 | "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" 1158 | "resolved" "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz" 1159 | "version" "6.0.1" 1160 | dependencies: 1161 | "flat-cache" "^3.0.4" 1162 | 1163 | "flat-cache@^3.0.4": 1164 | "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" 1165 | "resolved" "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz" 1166 | "version" "3.0.4" 1167 | dependencies: 1168 | "flatted" "^3.1.0" 1169 | "rimraf" "^3.0.2" 1170 | 1171 | "flatted@^3.1.0": 1172 | "integrity" "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==" 1173 | "resolved" "https://registry.npmmirror.com/flatted/-/flatted-3.2.6.tgz" 1174 | "version" "3.2.6" 1175 | 1176 | "fs.realpath@^1.0.0": 1177 | "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 1178 | "resolved" "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz" 1179 | "version" "1.0.0" 1180 | 1181 | "function-bind@^1.1.1": 1182 | "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1183 | "resolved" "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz" 1184 | "version" "1.1.1" 1185 | 1186 | "functional-red-black-tree@^1.0.1": 1187 | "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" 1188 | "resolved" "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" 1189 | "version" "1.0.1" 1190 | 1191 | "gensync@^1.0.0-beta.2": 1192 | "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" 1193 | "resolved" "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz" 1194 | "version" "1.0.0-beta.2" 1195 | 1196 | "glob-parent@^5.1.2": 1197 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" 1198 | "resolved" "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" 1199 | "version" "5.1.2" 1200 | dependencies: 1201 | "is-glob" "^4.0.1" 1202 | 1203 | "glob@^7.1.3", "glob@^7.1.6": 1204 | "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" 1205 | "resolved" "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" 1206 | "version" "7.2.3" 1207 | dependencies: 1208 | "fs.realpath" "^1.0.0" 1209 | "inflight" "^1.0.4" 1210 | "inherits" "2" 1211 | "minimatch" "^3.1.1" 1212 | "once" "^1.3.0" 1213 | "path-is-absolute" "^1.0.0" 1214 | 1215 | "globals@^11.1.0": 1216 | "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" 1217 | "resolved" "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz" 1218 | "version" "11.12.0" 1219 | 1220 | "globals@^13.6.0", "globals@^13.9.0": 1221 | "integrity" "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==" 1222 | "resolved" "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz" 1223 | "version" "13.17.0" 1224 | dependencies: 1225 | "type-fest" "^0.20.2" 1226 | 1227 | "graceful-fs@^4.1.2": 1228 | "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 1229 | "resolved" "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz" 1230 | "version" "4.2.10" 1231 | 1232 | "has-flag@^3.0.0": 1233 | "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1234 | "resolved" "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz" 1235 | "version" "3.0.0" 1236 | 1237 | "has-flag@^4.0.0": 1238 | "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1239 | "resolved" "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz" 1240 | "version" "4.0.0" 1241 | 1242 | "has@^1.0.3": 1243 | "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" 1244 | "resolved" "https://registry.npmmirror.com/has/-/has-1.0.3.tgz" 1245 | "version" "1.0.3" 1246 | dependencies: 1247 | "function-bind" "^1.1.1" 1248 | 1249 | "hash-sum@^2.0.0": 1250 | "integrity" "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" 1251 | "resolved" "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz" 1252 | "version" "2.0.0" 1253 | 1254 | "html-tags@^3.1.0": 1255 | "integrity" "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==" 1256 | "resolved" "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz" 1257 | "version" "3.2.0" 1258 | 1259 | "iconv-lite@^0.6.3": 1260 | "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" 1261 | "resolved" "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" 1262 | "version" "0.6.3" 1263 | dependencies: 1264 | "safer-buffer" ">= 2.1.2 < 3.0.0" 1265 | 1266 | "ignore@^4.0.6": 1267 | "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" 1268 | "resolved" "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz" 1269 | "version" "4.0.6" 1270 | 1271 | "image-size@~0.5.0": 1272 | "integrity" "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==" 1273 | "resolved" "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz" 1274 | "version" "0.5.5" 1275 | 1276 | "import-fresh@^3.0.0", "import-fresh@^3.2.1": 1277 | "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" 1278 | "resolved" "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz" 1279 | "version" "3.3.0" 1280 | dependencies: 1281 | "parent-module" "^1.0.0" 1282 | "resolve-from" "^4.0.0" 1283 | 1284 | "imurmurhash@^0.1.4": 1285 | "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 1286 | "resolved" "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz" 1287 | "version" "0.1.4" 1288 | 1289 | "inflight@^1.0.4": 1290 | "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" 1291 | "resolved" "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz" 1292 | "version" "1.0.6" 1293 | dependencies: 1294 | "once" "^1.3.0" 1295 | "wrappy" "1" 1296 | 1297 | "inherits@2": 1298 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1299 | "resolved" "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" 1300 | "version" "2.0.4" 1301 | 1302 | "is-core-module@^2.9.0": 1303 | "integrity" "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==" 1304 | "resolved" "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz" 1305 | "version" "2.9.0" 1306 | dependencies: 1307 | "has" "^1.0.3" 1308 | 1309 | "is-extglob@^2.1.1": 1310 | "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1311 | "resolved" "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz" 1312 | "version" "2.1.1" 1313 | 1314 | "is-fullwidth-code-point@^3.0.0": 1315 | "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1316 | "resolved" "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 1317 | "version" "3.0.0" 1318 | 1319 | "is-glob@^4.0.0", "is-glob@^4.0.1": 1320 | "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" 1321 | "resolved" "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz" 1322 | "version" "4.0.3" 1323 | dependencies: 1324 | "is-extglob" "^2.1.1" 1325 | 1326 | "is-what@^3.14.1": 1327 | "integrity" "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" 1328 | "resolved" "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz" 1329 | "version" "3.14.1" 1330 | 1331 | "isexe@^2.0.0": 1332 | "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1333 | "resolved" "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz" 1334 | "version" "2.0.0" 1335 | 1336 | "js-tokens@^4.0.0": 1337 | "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1338 | "resolved" "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz" 1339 | "version" "4.0.0" 1340 | 1341 | "js-yaml@^3.13.1": 1342 | "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" 1343 | "resolved" "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz" 1344 | "version" "3.14.1" 1345 | dependencies: 1346 | "argparse" "^1.0.7" 1347 | "esprima" "^4.0.0" 1348 | 1349 | "jsesc@^2.5.1": 1350 | "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" 1351 | "resolved" "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz" 1352 | "version" "2.5.2" 1353 | 1354 | "json-schema-traverse@^0.4.1": 1355 | "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1356 | "resolved" "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 1357 | "version" "0.4.1" 1358 | 1359 | "json-schema-traverse@^1.0.0": 1360 | "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" 1361 | "resolved" "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" 1362 | "version" "1.0.0" 1363 | 1364 | "json-stable-stringify-without-jsonify@^1.0.1": 1365 | "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" 1366 | "resolved" "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" 1367 | "version" "1.0.1" 1368 | 1369 | "json5@^2.2.1": 1370 | "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" 1371 | "resolved" "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz" 1372 | "version" "2.2.1" 1373 | 1374 | "klona@^2.0.4": 1375 | "integrity" "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" 1376 | "resolved" "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz" 1377 | "version" "2.0.5" 1378 | 1379 | "less-loader@^10.2.0": 1380 | "integrity" "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==" 1381 | "resolved" "https://registry.npmmirror.com/less-loader/-/less-loader-10.2.0.tgz" 1382 | "version" "10.2.0" 1383 | dependencies: 1384 | "klona" "^2.0.4" 1385 | 1386 | "less@*", "less@^3.5.0 || ^4.0.0", "less@^4.1.2": 1387 | "integrity" "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==" 1388 | "resolved" "https://registry.npmmirror.com/less/-/less-4.1.3.tgz" 1389 | "version" "4.1.3" 1390 | dependencies: 1391 | "copy-anything" "^2.0.1" 1392 | "parse-node-version" "^1.0.1" 1393 | "tslib" "^2.3.0" 1394 | optionalDependencies: 1395 | "errno" "^0.1.1" 1396 | "graceful-fs" "^4.1.2" 1397 | "image-size" "~0.5.0" 1398 | "make-dir" "^2.1.0" 1399 | "mime" "^1.4.1" 1400 | "needle" "^3.1.0" 1401 | "source-map" "~0.6.0" 1402 | 1403 | "levn@^0.4.1": 1404 | "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" 1405 | "resolved" "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz" 1406 | "version" "0.4.1" 1407 | dependencies: 1408 | "prelude-ls" "^1.2.1" 1409 | "type-check" "~0.4.0" 1410 | 1411 | "lodash.merge@^4.6.2": 1412 | "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 1413 | "resolved" "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz" 1414 | "version" "4.6.2" 1415 | 1416 | "lodash.truncate@^4.4.2": 1417 | "integrity" "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" 1418 | "resolved" "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz" 1419 | "version" "4.4.2" 1420 | 1421 | "lodash@^4.17.21": 1422 | "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1423 | "resolved" "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz" 1424 | "version" "4.17.21" 1425 | 1426 | "lru-cache@^6.0.0": 1427 | "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" 1428 | "resolved" "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz" 1429 | "version" "6.0.0" 1430 | dependencies: 1431 | "yallist" "^4.0.0" 1432 | 1433 | "magic-string@^0.25.7": 1434 | "integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" 1435 | "resolved" "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz" 1436 | "version" "0.25.9" 1437 | dependencies: 1438 | "sourcemap-codec" "^1.4.8" 1439 | 1440 | "make-dir@^2.1.0": 1441 | "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" 1442 | "resolved" "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz" 1443 | "version" "2.1.0" 1444 | dependencies: 1445 | "pify" "^4.0.1" 1446 | "semver" "^5.6.0" 1447 | 1448 | "make-error@^1.1.1": 1449 | "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 1450 | "resolved" "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz" 1451 | "version" "1.3.6" 1452 | 1453 | "mime@^1.4.1": 1454 | "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1455 | "resolved" "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz" 1456 | "version" "1.6.0" 1457 | 1458 | "minimatch@^3.0.4", "minimatch@^3.1.1": 1459 | "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" 1460 | "resolved" "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz" 1461 | "version" "3.1.2" 1462 | dependencies: 1463 | "brace-expansion" "^1.1.7" 1464 | 1465 | "mitt@^2.1.0": 1466 | "integrity" "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==" 1467 | "resolved" "https://registry.npmmirror.com/mitt/-/mitt-2.1.0.tgz" 1468 | "version" "2.1.0" 1469 | 1470 | "ms@^2.1.1": 1471 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1472 | "resolved" "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" 1473 | "version" "2.1.3" 1474 | 1475 | "ms@2.1.2": 1476 | "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1477 | "resolved" "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz" 1478 | "version" "2.1.2" 1479 | 1480 | "nanoid@^3.3.4": 1481 | "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 1482 | "resolved" "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz" 1483 | "version" "3.3.4" 1484 | 1485 | "natural-compare@^1.4.0": 1486 | "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" 1487 | "resolved" "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" 1488 | "version" "1.4.0" 1489 | 1490 | "needle@^3.1.0": 1491 | "integrity" "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==" 1492 | "resolved" "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz" 1493 | "version" "3.1.0" 1494 | dependencies: 1495 | "debug" "^3.2.6" 1496 | "iconv-lite" "^0.6.3" 1497 | "sax" "^1.2.4" 1498 | 1499 | "node-releases@^2.0.6": 1500 | "integrity" "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" 1501 | "resolved" "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.6.tgz" 1502 | "version" "2.0.6" 1503 | 1504 | "once@^1.3.0": 1505 | "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" 1506 | "resolved" "https://registry.npmmirror.com/once/-/once-1.4.0.tgz" 1507 | "version" "1.4.0" 1508 | dependencies: 1509 | "wrappy" "1" 1510 | 1511 | "optionator@^0.9.1": 1512 | "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" 1513 | "resolved" "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz" 1514 | "version" "0.9.1" 1515 | dependencies: 1516 | "deep-is" "^0.1.3" 1517 | "fast-levenshtein" "^2.0.6" 1518 | "levn" "^0.4.1" 1519 | "prelude-ls" "^1.2.1" 1520 | "type-check" "^0.4.0" 1521 | "word-wrap" "^1.2.3" 1522 | 1523 | "parent-module@^1.0.0": 1524 | "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" 1525 | "resolved" "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz" 1526 | "version" "1.0.1" 1527 | dependencies: 1528 | "callsites" "^3.0.0" 1529 | 1530 | "parse-node-version@^1.0.1": 1531 | "integrity" "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" 1532 | "resolved" "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz" 1533 | "version" "1.0.1" 1534 | 1535 | "path-is-absolute@^1.0.0": 1536 | "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1537 | "resolved" "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1538 | "version" "1.0.1" 1539 | 1540 | "path-key@^3.1.0": 1541 | "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 1542 | "resolved" "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" 1543 | "version" "3.1.1" 1544 | 1545 | "path-parse@^1.0.7": 1546 | "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1547 | "resolved" "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz" 1548 | "version" "1.0.7" 1549 | 1550 | "picocolors@^1.0.0": 1551 | "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1552 | "resolved" "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz" 1553 | "version" "1.0.0" 1554 | 1555 | "picomatch@^2.2.2": 1556 | "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1557 | "resolved" "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz" 1558 | "version" "2.3.1" 1559 | 1560 | "pify@^4.0.1": 1561 | "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" 1562 | "resolved" "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz" 1563 | "version" "4.0.1" 1564 | 1565 | "postcss@^8.1.10", "postcss@^8.4.13": 1566 | "integrity" "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==" 1567 | "resolved" "https://registry.npmmirror.com/postcss/-/postcss-8.4.14.tgz" 1568 | "version" "8.4.14" 1569 | dependencies: 1570 | "nanoid" "^3.3.4" 1571 | "picocolors" "^1.0.0" 1572 | "source-map-js" "^1.0.2" 1573 | 1574 | "prelude-ls@^1.2.1": 1575 | "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" 1576 | "resolved" "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz" 1577 | "version" "1.2.1" 1578 | 1579 | "progress@^2.0.0": 1580 | "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1581 | "resolved" "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz" 1582 | "version" "2.0.3" 1583 | 1584 | "prr@~1.0.1": 1585 | "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" 1586 | "resolved" "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz" 1587 | "version" "1.0.1" 1588 | 1589 | "punycode@^2.1.0": 1590 | "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1591 | "resolved" "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz" 1592 | "version" "2.1.1" 1593 | 1594 | "regexpp@^3.1.0": 1595 | "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" 1596 | "resolved" "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz" 1597 | "version" "3.2.0" 1598 | 1599 | "require-from-string@^2.0.2": 1600 | "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" 1601 | "resolved" "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz" 1602 | "version" "2.0.2" 1603 | 1604 | "resolve-from@^4.0.0": 1605 | "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1606 | "resolved" "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz" 1607 | "version" "4.0.0" 1608 | 1609 | "resolve@^1.22.0": 1610 | "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" 1611 | "resolved" "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz" 1612 | "version" "1.22.1" 1613 | dependencies: 1614 | "is-core-module" "^2.9.0" 1615 | "path-parse" "^1.0.7" 1616 | "supports-preserve-symlinks-flag" "^1.0.0" 1617 | 1618 | "rimraf@^3.0.2": 1619 | "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" 1620 | "resolved" "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz" 1621 | "version" "3.0.2" 1622 | dependencies: 1623 | "glob" "^7.1.3" 1624 | 1625 | "rollup@^2.59.0", "rollup@^2.77.0": 1626 | "integrity" "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==" 1627 | "resolved" "https://registry.npmmirror.com/rollup/-/rollup-2.77.2.tgz" 1628 | "version" "2.77.2" 1629 | optionalDependencies: 1630 | "fsevents" "~2.3.2" 1631 | 1632 | "safe-buffer@~5.1.1": 1633 | "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1634 | "resolved" "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz" 1635 | "version" "5.1.2" 1636 | 1637 | "safer-buffer@>= 2.1.2 < 3.0.0": 1638 | "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1639 | "resolved" "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz" 1640 | "version" "2.1.2" 1641 | 1642 | "sax@^1.2.4": 1643 | "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 1644 | "resolved" "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz" 1645 | "version" "1.2.4" 1646 | 1647 | "semver@^5.6.0": 1648 | "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1649 | "resolved" "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz" 1650 | "version" "5.7.1" 1651 | 1652 | "semver@^6.3.0": 1653 | "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1654 | "resolved" "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz" 1655 | "version" "6.3.0" 1656 | 1657 | "semver@^7.2.1": 1658 | "integrity" "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==" 1659 | "resolved" "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz" 1660 | "version" "7.3.7" 1661 | dependencies: 1662 | "lru-cache" "^6.0.0" 1663 | 1664 | "shebang-command@^2.0.0": 1665 | "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" 1666 | "resolved" "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz" 1667 | "version" "2.0.0" 1668 | dependencies: 1669 | "shebang-regex" "^3.0.0" 1670 | 1671 | "shebang-regex@^3.0.0": 1672 | "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 1673 | "resolved" "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz" 1674 | "version" "3.0.0" 1675 | 1676 | "slice-ansi@^4.0.0": 1677 | "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" 1678 | "resolved" "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz" 1679 | "version" "4.0.0" 1680 | dependencies: 1681 | "ansi-styles" "^4.0.0" 1682 | "astral-regex" "^2.0.0" 1683 | "is-fullwidth-code-point" "^3.0.0" 1684 | 1685 | "source-map-js@^1.0.2": 1686 | "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 1687 | "resolved" "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz" 1688 | "version" "1.0.2" 1689 | 1690 | "source-map@^0.6.1", "source-map@~0.6.0": 1691 | "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1692 | "resolved" "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" 1693 | "version" "0.6.1" 1694 | 1695 | "sourcemap-codec@^1.4.8": 1696 | "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" 1697 | "resolved" "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" 1698 | "version" "1.4.8" 1699 | 1700 | "sprintf-js@~1.0.2": 1701 | "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" 1702 | "resolved" "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz" 1703 | "version" "1.0.3" 1704 | 1705 | "string-width@^4.2.3": 1706 | "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" 1707 | "resolved" "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz" 1708 | "version" "4.2.3" 1709 | dependencies: 1710 | "emoji-regex" "^8.0.0" 1711 | "is-fullwidth-code-point" "^3.0.0" 1712 | "strip-ansi" "^6.0.1" 1713 | 1714 | "strip-ansi@^6.0.0", "strip-ansi@^6.0.1": 1715 | "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" 1716 | "resolved" "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz" 1717 | "version" "6.0.1" 1718 | dependencies: 1719 | "ansi-regex" "^5.0.1" 1720 | 1721 | "strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": 1722 | "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" 1723 | "resolved" "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 1724 | "version" "3.1.1" 1725 | 1726 | "supports-color@^5.3.0": 1727 | "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" 1728 | "resolved" "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz" 1729 | "version" "5.5.0" 1730 | dependencies: 1731 | "has-flag" "^3.0.0" 1732 | 1733 | "supports-color@^7.1.0": 1734 | "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" 1735 | "resolved" "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz" 1736 | "version" "7.2.0" 1737 | dependencies: 1738 | "has-flag" "^4.0.0" 1739 | 1740 | "supports-preserve-symlinks-flag@^1.0.0": 1741 | "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 1742 | "resolved" "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 1743 | "version" "1.0.0" 1744 | 1745 | "svg-tags@^1.0.0": 1746 | "integrity" "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" 1747 | "resolved" "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz" 1748 | "version" "1.0.0" 1749 | 1750 | "table@^6.0.9": 1751 | "integrity" "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==" 1752 | "resolved" "https://registry.npmmirror.com/table/-/table-6.8.0.tgz" 1753 | "version" "6.8.0" 1754 | dependencies: 1755 | "ajv" "^8.0.1" 1756 | "lodash.truncate" "^4.4.2" 1757 | "slice-ansi" "^4.0.0" 1758 | "string-width" "^4.2.3" 1759 | "strip-ansi" "^6.0.1" 1760 | 1761 | "text-table@^0.2.0": 1762 | "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" 1763 | "resolved" "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz" 1764 | "version" "0.2.0" 1765 | 1766 | "to-fast-properties@^2.0.0": 1767 | "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" 1768 | "resolved" "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz" 1769 | "version" "2.0.0" 1770 | 1771 | "ts-node@^10.1.0": 1772 | "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" 1773 | "resolved" "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.1.tgz" 1774 | "version" "10.9.1" 1775 | dependencies: 1776 | "@cspotcode/source-map-support" "^0.8.0" 1777 | "@tsconfig/node10" "^1.0.7" 1778 | "@tsconfig/node12" "^1.0.7" 1779 | "@tsconfig/node14" "^1.0.0" 1780 | "@tsconfig/node16" "^1.0.2" 1781 | "acorn" "^8.4.1" 1782 | "acorn-walk" "^8.1.1" 1783 | "arg" "^4.1.0" 1784 | "create-require" "^1.1.0" 1785 | "diff" "^4.0.1" 1786 | "make-error" "^1.1.1" 1787 | "v8-compile-cache-lib" "^3.0.1" 1788 | "yn" "3.1.1" 1789 | 1790 | "tslib@^2.3.0": 1791 | "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 1792 | "resolved" "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz" 1793 | "version" "2.4.0" 1794 | 1795 | "type-check@^0.4.0", "type-check@~0.4.0": 1796 | "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" 1797 | "resolved" "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz" 1798 | "version" "0.4.0" 1799 | dependencies: 1800 | "prelude-ls" "^1.2.1" 1801 | 1802 | "type-fest@^0.20.2": 1803 | "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" 1804 | "resolved" "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz" 1805 | "version" "0.20.2" 1806 | 1807 | "typescript@*", "typescript@^4.2.4", "typescript@>=2.7": 1808 | "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" 1809 | "resolved" "https://registry.npmmirror.com/typescript/-/typescript-4.7.4.tgz" 1810 | "version" "4.7.4" 1811 | 1812 | "update-browserslist-db@^1.0.5": 1813 | "integrity" "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==" 1814 | "resolved" "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz" 1815 | "version" "1.0.5" 1816 | dependencies: 1817 | "escalade" "^3.1.1" 1818 | "picocolors" "^1.0.0" 1819 | 1820 | "uri-js@^4.2.2": 1821 | "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" 1822 | "resolved" "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz" 1823 | "version" "4.4.1" 1824 | dependencies: 1825 | "punycode" "^2.1.0" 1826 | 1827 | "v8-compile-cache-lib@^3.0.1": 1828 | "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" 1829 | "resolved" "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" 1830 | "version" "3.0.1" 1831 | 1832 | "v8-compile-cache@^2.0.3": 1833 | "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" 1834 | "resolved" "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" 1835 | "version" "2.3.0" 1836 | 1837 | "vite-plugin-css-injected-by-js@^1.5.1": 1838 | "integrity" "sha512-D/xdY9sWijCdoIbp5qiUejVShyTt1omzeyMwoyXWSuaXc9d/RtWdv/v7iv+i8F0KavWhK+U7nmOuxliyeFR+pA==" 1839 | "resolved" "https://registry.npmmirror.com/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-1.5.1.tgz" 1840 | "version" "1.5.1" 1841 | 1842 | "vite-plugin-eslint@^1.1.2": 1843 | "integrity" "sha512-Kz2HwBeAArmsE0QmWSm+e7CaEQrfMkEZpFw4hngoy6JmERjw7WUH8HLbG1OkreOKX4iIUReOss9N1Mkw4wEk8g==" 1844 | "resolved" "https://registry.npmmirror.com/vite-plugin-eslint/-/vite-plugin-eslint-1.7.0.tgz" 1845 | "version" "1.7.0" 1846 | dependencies: 1847 | "@rollup/pluginutils" "^4.2.1" 1848 | "@types/eslint" "^8.4.5" 1849 | "rollup" "^2.77.0" 1850 | 1851 | "vite@^2.5.10", "vite@^2.5.6", "vite@>=2", "vite@>2.0.0-0": 1852 | "integrity" "sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==" 1853 | "resolved" "https://registry.npmmirror.com/vite/-/vite-2.9.14.tgz" 1854 | "version" "2.9.14" 1855 | dependencies: 1856 | "esbuild" "^0.14.27" 1857 | "postcss" "^8.4.13" 1858 | "resolve" "^1.22.0" 1859 | "rollup" "^2.59.0" 1860 | optionalDependencies: 1861 | "fsevents" "~2.3.2" 1862 | 1863 | "vue-eslint-parser@^7.10.0": 1864 | "integrity" "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==" 1865 | "resolved" "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz" 1866 | "version" "7.11.0" 1867 | dependencies: 1868 | "debug" "^4.1.1" 1869 | "eslint-scope" "^5.1.1" 1870 | "eslint-visitor-keys" "^1.1.0" 1871 | "espree" "^6.2.1" 1872 | "esquery" "^1.4.0" 1873 | "lodash" "^4.17.21" 1874 | "semver" "^6.3.0" 1875 | 1876 | "vue-grid-layout@^3.0.0-beta1": 1877 | "integrity" "sha512-MsW0yfYNtnAO/uDhfZvkP6effxSJxvhAFbIL37x6Rn3vW9xf0WHVefKaSbQMLpSq3mXnR6ut0pg2Cd5lqIIZzg==" 1878 | "resolved" "https://registry.npmmirror.com/vue-grid-layout/-/vue-grid-layout-3.0.0-beta1.tgz" 1879 | "version" "3.0.0-beta1" 1880 | dependencies: 1881 | "@interactjs/actions" "^1.10.2" 1882 | "@interactjs/auto-start" "^1.10.2" 1883 | "@interactjs/dev-tools" "^1.10.2" 1884 | "@interactjs/interactjs" "^1.10.2" 1885 | "@interactjs/modifiers" "^1.10.2" 1886 | "element-resize-detector" "^1.2.1" 1887 | "mitt" "^2.1.0" 1888 | 1889 | "vue-tsc@^0.38.4": 1890 | "integrity" "sha512-Yoy5phgvGqyF98Fb4mYqboR4Q149jrdcGv5kSmufXJUq++RZJ2iMVG0g6zl+v3t4ORVWkQmRpsV4x2szufZ0LQ==" 1891 | "resolved" "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.38.9.tgz" 1892 | "version" "0.38.9" 1893 | dependencies: 1894 | "@volar/vue-typescript" "0.38.9" 1895 | 1896 | "vue@^3.2.13", "vue@3.2.37": 1897 | "integrity" "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==" 1898 | "resolved" "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz" 1899 | "version" "3.2.37" 1900 | dependencies: 1901 | "@vue/compiler-dom" "3.2.37" 1902 | "@vue/compiler-sfc" "3.2.37" 1903 | "@vue/runtime-dom" "3.2.37" 1904 | "@vue/server-renderer" "3.2.37" 1905 | "@vue/shared" "3.2.37" 1906 | 1907 | "which@^2.0.1": 1908 | "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" 1909 | "resolved" "https://registry.npmmirror.com/which/-/which-2.0.2.tgz" 1910 | "version" "2.0.2" 1911 | dependencies: 1912 | "isexe" "^2.0.0" 1913 | 1914 | "word-wrap@^1.2.3": 1915 | "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 1916 | "resolved" "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz" 1917 | "version" "1.2.3" 1918 | 1919 | "wrappy@1": 1920 | "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1921 | "resolved" "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz" 1922 | "version" "1.0.2" 1923 | 1924 | "yallist@^4.0.0": 1925 | "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1926 | "resolved" "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz" 1927 | "version" "4.0.0" 1928 | 1929 | "yarn@^1.22.19": 1930 | "integrity" "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==" 1931 | "resolved" "https://registry.npmmirror.com/yarn/-/yarn-1.22.19.tgz" 1932 | "version" "1.22.19" 1933 | 1934 | "yn@3.1.1": 1935 | "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" 1936 | "resolved" "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz" 1937 | "version" "3.1.1" 1938 | --------------------------------------------------------------------------------