Initial Commit
13
.editorconfig
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# editorconfig.org
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
42
.eslintrc.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
const baseRules = {
|
||||||
|
'@typescript-eslint/no-explicit-any': 0,
|
||||||
|
'@typescript-eslint/ban-ts-ignore': 0,
|
||||||
|
'@typescript-eslint/ban-ts-comment': 0,
|
||||||
|
'no-use-before-define': 0,
|
||||||
|
'no-unused-vars': 'off',
|
||||||
|
'@typescript-eslint/no-unused-vars': ['error'],
|
||||||
|
indent: ['error', 2, { SwitchCase: 1, flatTernaryExpressions: true }],
|
||||||
|
quotes: ['error', 'single', { avoidEscape: true }],
|
||||||
|
semi: ['error', 'always'],
|
||||||
|
'import/no-mutable-exports': 0,
|
||||||
|
'no-cond-assign': [2],
|
||||||
|
'no-console': 'off',
|
||||||
|
camelcase: 0,
|
||||||
|
'@typescript/camelcase': 0,
|
||||||
|
'vue/no-v-html': 'off',
|
||||||
|
'vue/attribute-hyphenation': 0,
|
||||||
|
'prettier/prettier': [
|
||||||
|
'warn',
|
||||||
|
{
|
||||||
|
singleQuote: true,
|
||||||
|
trailingComma: 'none',
|
||||||
|
semi: true,
|
||||||
|
bracketSpacing: true,
|
||||||
|
vueIndentScriptAndStyle: false,
|
||||||
|
printWidth: 130
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
node: true,
|
||||||
|
commonjs: true,
|
||||||
|
es6: true,
|
||||||
|
browser: true
|
||||||
|
},
|
||||||
|
extends: ['plugin:vue/vue3-recommended', 'eslint:recommended', '@vue/typescript/recommended', 'plugin:prettier/recommended'],
|
||||||
|
plugins: [],
|
||||||
|
rules: baseRules
|
||||||
|
};
|
||||||
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
node_modules
|
||||||
|
.DS_Store
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
8
.prettierrc
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"semi": true,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"vueIndentScriptAndStyle": false,
|
||||||
|
"printWidth": 130
|
||||||
|
}
|
||||||
27
README.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Vue 3 + Typescript + Vite
|
||||||
|
|
||||||
|
This template should help get you started developing with Vue 3 and Typescript in Vite.
|
||||||
|
|
||||||
|
## Recommended IDE Setup
|
||||||
|
|
||||||
|
[VSCode](https://code.visualstudio.com/) + [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur). Make sure to enable `vetur.experimental.templateInterpolationService` in settings!
|
||||||
|
|
||||||
|
### If Using `<script setup>`
|
||||||
|
|
||||||
|
[`<script setup>`](https://github.com/vuejs/rfcs/pull/227) is a feature that is currently in RFC stage. To get proper IDE support for the syntax, use [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) instead of Vetur (and disable Vetur).
|
||||||
|
|
||||||
|
## Type Support For `.vue` Imports in TS
|
||||||
|
|
||||||
|
Since TypeScript cannot handle type information for `.vue` imports, they are shimmed to be a generic Vue component type by default. In most cases this is fine if you don't really care about component prop types outside of templates. However, if you wish to get actual prop types in `.vue` imports (for example to get props validation when using manual `h(...)` calls), you can use the following:
|
||||||
|
|
||||||
|
### If Using Volar
|
||||||
|
|
||||||
|
Run `Volar: Switch TS Plugin on/off` from VSCode command palette.
|
||||||
|
|
||||||
|
### If Using Vetur
|
||||||
|
|
||||||
|
1. Install and add `@vuedx/typescript-plugin-vue` to the [plugins section](https://www.typescriptlang.org/tsconfig#plugins) in `tsconfig.json`
|
||||||
|
2. Delete `src/shims-vue.d.ts` as it is no longer needed to provide module info to Typescript
|
||||||
|
3. Open `src/main.ts` in VSCode
|
||||||
|
4. Open the VSCode command palette
|
||||||
|
5. Search and run "Select TypeScript version" -> "Use workspace version"
|
||||||
3
assets/icons/fitview.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 30">
|
||||||
|
<path d="M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 463 B |
3
assets/icons/lock.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 32">
|
||||||
|
<path d="M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 530 B |
3
assets/icons/minus.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 5">
|
||||||
|
<path d="M0 0h32v4.2H0z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 96 B |
3
assets/icons/plus.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||||
|
<path d="M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 152 B |
3
assets/icons/unlock.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 32">
|
||||||
|
<path d="M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 472 B |
13
index.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Vite App</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
32
package.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"version": "0.0.0",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vue-tsc --noEmit && vite build",
|
||||||
|
"serve": "vite preview"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"d3": "^7.0.0",
|
||||||
|
"pinia": "^2.0.0-beta.3",
|
||||||
|
"vue": "^3.0.5"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@typescript-eslint/eslint-plugin": "^4.28.1",
|
||||||
|
"@typescript-eslint/parser": "^4.28.1",
|
||||||
|
"@vitejs/plugin-vue": "^1.2.3",
|
||||||
|
"@vitejs/plugin-vue-jsx": "^1.1.6",
|
||||||
|
"@vue/babel-plugin-jsx": "^1.0.6",
|
||||||
|
"@vue/compiler-sfc": "^3.0.5",
|
||||||
|
"@vue/eslint-config-typescript": "^7.0.0",
|
||||||
|
"babel-eslint": "latest",
|
||||||
|
"eslint": "^7.29.0",
|
||||||
|
"eslint-config-prettier": "^8.1.0",
|
||||||
|
"eslint-plugin-nuxt": "^2.0.0",
|
||||||
|
"eslint-plugin-prettier": "^3.3.1",
|
||||||
|
"eslint-plugin-vue": "^7.12.1",
|
||||||
|
"prettier": "^2.2.1",
|
||||||
|
"typescript": "^4.3.5",
|
||||||
|
"vite": "^2.3.8",
|
||||||
|
"vue-tsc": "^0.0.24"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
27
src/App.vue
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<template>
|
||||||
|
<img alt="Vue logo" src="./assets/logo.png" />
|
||||||
|
<revue-flow></revue-flow>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent } from 'vue';
|
||||||
|
import Index from './container/RevueFlow';
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'App',
|
||||||
|
components: {
|
||||||
|
RevueFlow: Index
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#app {
|
||||||
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
text-align: center;
|
||||||
|
color: #2c3e50;
|
||||||
|
margin-top: 60px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
BIN
src/assets/logo.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
64
src/components/HelloWorld.vue
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<template>
|
||||||
|
<h1>{{ msg }}</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Recommended IDE setup:
|
||||||
|
<a href="https://code.visualstudio.com/" target="_blank">VSCode</a>
|
||||||
|
+
|
||||||
|
<a href="https://marketplace.visualstudio.com/items?itemName=octref.vetur" target="_blank"> Vetur </a>
|
||||||
|
or
|
||||||
|
<a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
|
||||||
|
(if using
|
||||||
|
<code><script setup></code>)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>See <code>README.md</code> for more information.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="https://vitejs.dev/guide/features.html" target="_blank"> Vite Docs </a>
|
||||||
|
|
|
||||||
|
<a href="https://v3.vuejs.org/" target="_blank">Vue 3 Docs</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<button type="button" @click="count++">count is: {{ count }}</button>
|
||||||
|
<p>
|
||||||
|
Edit
|
||||||
|
<code>components/HelloWorld.vue</code> to test hot module replacement.
|
||||||
|
</p>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { ref, defineComponent } from 'vue';
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'HelloWorld',
|
||||||
|
props: {
|
||||||
|
msg: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setup: () => {
|
||||||
|
const count = ref(0);
|
||||||
|
return { count };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
a {
|
||||||
|
color: #42b983;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin: 0 0.5em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: #eee;
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #304455;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
29
src/container/RevueFlow/index.tsx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import '../../style.css';
|
||||||
|
import '../../theme-default.css';
|
||||||
|
import { HTMLAttributes, defineComponent } from 'vue';
|
||||||
|
|
||||||
|
const defaultNodeTypes = {
|
||||||
|
input: 'InputNode',
|
||||||
|
default: 'DefaultNode',
|
||||||
|
output: 'OutputNode'
|
||||||
|
};
|
||||||
|
|
||||||
|
const defaultEdgeTypes = {
|
||||||
|
default: 'BezierEdge',
|
||||||
|
straight: 'StraightEdge',
|
||||||
|
step: 'StepEdge',
|
||||||
|
smoothstep: 'SmoothStepEdge'
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface ReactFlowProps extends Omit<HTMLAttributes, 'onLoad'> {}
|
||||||
|
|
||||||
|
export type ReactFlowRefType = HTMLDivElement;
|
||||||
|
|
||||||
|
const RevueFlow = defineComponent({
|
||||||
|
name: 'RevueFlow',
|
||||||
|
setup() {
|
||||||
|
return () => <div>Revue Flow!</div>;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default RevueFlow;
|
||||||
7
src/main.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { createApp } from 'vue';
|
||||||
|
import App from './App.vue';
|
||||||
|
import { createPinia } from 'pinia';
|
||||||
|
|
||||||
|
const app = createApp(App);
|
||||||
|
app.use(createPinia());
|
||||||
|
app.mount('#app');
|
||||||
5
src/shims-vue.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
declare module '*.vue' {
|
||||||
|
import { DefineComponent } from 'vue'
|
||||||
|
const component: DefineComponent<{}, {}, any>
|
||||||
|
export default component
|
||||||
|
}
|
||||||
187
src/style.css
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
.react-flow {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__renderer,
|
||||||
|
.react-flow__pane,
|
||||||
|
.react-flow__selectionpane {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__pane {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__renderer {
|
||||||
|
z-index: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__selectionpane {
|
||||||
|
z-index: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__selection {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edges {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge {
|
||||||
|
pointer-events: visibleStroke;
|
||||||
|
|
||||||
|
&.inactive {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dashdraw {
|
||||||
|
from {
|
||||||
|
stroke-dashoffset: 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge-path {
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge-textwrapper {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge-text {
|
||||||
|
pointer-events: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__connection {
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
.animated {
|
||||||
|
stroke-dasharray: 5;
|
||||||
|
animation: dashdraw 0.5s linear infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__connection-path {
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__nodes {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
pointer-events: none;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__node {
|
||||||
|
position: absolute;
|
||||||
|
user-select: none;
|
||||||
|
pointer-events: all;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__nodesselection {
|
||||||
|
z-index: 3;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
transform-origin: left top;
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
&-rect {
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: all;
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle {
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
&.connectable {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle-bottom {
|
||||||
|
top: auto;
|
||||||
|
left: 50%;
|
||||||
|
bottom: -4px;
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle-top {
|
||||||
|
left: 50%;
|
||||||
|
top: -4px;
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle-left {
|
||||||
|
top: 50%;
|
||||||
|
left: -4px;
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle-right {
|
||||||
|
right: -4px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edgeupdater {
|
||||||
|
cursor: move;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* additional components */
|
||||||
|
|
||||||
|
.react-flow__background {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__controls {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 5;
|
||||||
|
bottom: 10px;
|
||||||
|
left: 10px;
|
||||||
|
|
||||||
|
&-button {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
svg {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__minimap {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 5;
|
||||||
|
bottom: 10px;
|
||||||
|
right: 10px;
|
||||||
|
}
|
||||||
157
src/theme-default.css
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
.react-flow__selection {
|
||||||
|
background: rgba(0, 89, 220, 0.08);
|
||||||
|
border: 1px dotted rgba(0, 89, 220, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge {
|
||||||
|
&.selected {
|
||||||
|
.react-flow__edge-path {
|
||||||
|
stroke: #555;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.animated path {
|
||||||
|
stroke-dasharray: 5;
|
||||||
|
animation: dashdraw 0.5s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.updating {
|
||||||
|
.react-flow__edge-path {
|
||||||
|
stroke: #777;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge-path {
|
||||||
|
stroke: #b1b1b7;
|
||||||
|
stroke-width: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge-text {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__edge-textbg {
|
||||||
|
fill: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__connection-path {
|
||||||
|
stroke: #b1b1b7;
|
||||||
|
stroke-width: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__node {
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__node-default,
|
||||||
|
.react-flow__node-input,
|
||||||
|
.react-flow__node-output {
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 3px;
|
||||||
|
width: 150px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #222;
|
||||||
|
text-align: center;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__node-default.selectable,
|
||||||
|
.react-flow__node-input.selectable,
|
||||||
|
.react-flow__node-output.selectable {
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 1px 4px 1px rgba(0, 0, 0, 0.08);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__node-input {
|
||||||
|
background: #fff;
|
||||||
|
border-color: #0041d0;
|
||||||
|
|
||||||
|
&.selected,
|
||||||
|
&.selected:hover {
|
||||||
|
box-shadow: 0 0 0 0.5px #0041d0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle {
|
||||||
|
background: #0041d0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__node-default {
|
||||||
|
background: #fff;
|
||||||
|
border-color: #1a192b;
|
||||||
|
|
||||||
|
&.selected,
|
||||||
|
&.selected:hover {
|
||||||
|
box-shadow: 0 0 0 0.5px #1a192b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle {
|
||||||
|
background: #1a192b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__node-output {
|
||||||
|
background: #fff;
|
||||||
|
border-color: #ff0072;
|
||||||
|
|
||||||
|
&.selected,
|
||||||
|
&.selected:hover {
|
||||||
|
box-shadow: 0 0 0 0.5px #ff0072;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle {
|
||||||
|
background: #ff0072;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__nodesselection-rect {
|
||||||
|
background: rgba(0, 89, 220, 0.08);
|
||||||
|
border: 1px dotted rgba(0, 89, 220, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__handle {
|
||||||
|
position: absolute;
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
background: #555;
|
||||||
|
border: 1px solid white;
|
||||||
|
border-radius: 100%;
|
||||||
|
|
||||||
|
&.connectable {
|
||||||
|
cursor: crosshair;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__minimap {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.react-flow__controls {
|
||||||
|
box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.08);
|
||||||
|
|
||||||
|
&-button {
|
||||||
|
background: #fefefe;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
box-sizing: content-box;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
svg {
|
||||||
|
max-width: 12px;
|
||||||
|
max-height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #f4f4f4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
441
src/types/index.ts
Normal file
@@ -0,0 +1,441 @@
|
|||||||
|
import { Selection as D3Selection, ZoomBehavior } from 'd3';
|
||||||
|
import { Component, HTMLAttributes, VNode } from 'vue';
|
||||||
|
|
||||||
|
export type ElementId = string;
|
||||||
|
|
||||||
|
export type FlowElement<T = any> = Node<T> | Edge<T>;
|
||||||
|
|
||||||
|
export type Elements<T = any> = Array<FlowElement<T>>;
|
||||||
|
|
||||||
|
export type Transform = [number, number, number];
|
||||||
|
|
||||||
|
export enum Position {
|
||||||
|
Left = 'left',
|
||||||
|
Top = 'top',
|
||||||
|
Right = 'right',
|
||||||
|
Bottom = 'bottom'
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface XYPosition {
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Dimensions {
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Rect extends Dimensions, XYPosition {}
|
||||||
|
|
||||||
|
export interface Box extends XYPosition {
|
||||||
|
x2: number;
|
||||||
|
y2: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type SnapGrid = [number, number];
|
||||||
|
|
||||||
|
export interface Node<T = any> {
|
||||||
|
id: ElementId;
|
||||||
|
position: XYPosition;
|
||||||
|
type?: string;
|
||||||
|
__rf?: any;
|
||||||
|
data?: T;
|
||||||
|
style?: any;
|
||||||
|
className?: string;
|
||||||
|
targetPosition?: Position;
|
||||||
|
sourcePosition?: Position;
|
||||||
|
isHidden?: boolean;
|
||||||
|
draggable?: boolean;
|
||||||
|
selectable?: boolean;
|
||||||
|
connectable?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum ArrowHeadType {
|
||||||
|
Arrow = 'arrow',
|
||||||
|
ArrowClosed = 'arrowclosed'
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Edge<T = any> {
|
||||||
|
id: ElementId;
|
||||||
|
type?: string;
|
||||||
|
source: ElementId;
|
||||||
|
target: ElementId;
|
||||||
|
sourceHandle?: ElementId | null;
|
||||||
|
targetHandle?: ElementId | null;
|
||||||
|
label?: string | VNode;
|
||||||
|
labelStyle?: any;
|
||||||
|
labelShowBg?: boolean;
|
||||||
|
labelBgStyle?: any;
|
||||||
|
labelBgPadding?: [number, number];
|
||||||
|
labelBgBorderRadius?: number;
|
||||||
|
style?: any;
|
||||||
|
animated?: boolean;
|
||||||
|
arrowHeadType?: ArrowHeadType;
|
||||||
|
isHidden?: boolean;
|
||||||
|
data?: T;
|
||||||
|
className?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum BackgroundVariant {
|
||||||
|
Lines = 'lines',
|
||||||
|
Dots = 'dots'
|
||||||
|
}
|
||||||
|
|
||||||
|
export type HandleType = 'source' | 'target';
|
||||||
|
|
||||||
|
export type NodeTypesType = { [key: string]: VNode };
|
||||||
|
|
||||||
|
export type EdgeTypesType = NodeTypesType;
|
||||||
|
|
||||||
|
export interface SelectionRect extends Rect {
|
||||||
|
startX: number;
|
||||||
|
startY: number;
|
||||||
|
draw: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface WrapEdgeProps<T = any> {
|
||||||
|
id: ElementId;
|
||||||
|
className?: string;
|
||||||
|
type: string;
|
||||||
|
data?: T;
|
||||||
|
onClick?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
onEdgeDoubleClick?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
selected: boolean;
|
||||||
|
animated?: boolean;
|
||||||
|
label?: string | VNode;
|
||||||
|
labelStyle?: any;
|
||||||
|
labelShowBg?: boolean;
|
||||||
|
labelBgStyle?: any;
|
||||||
|
labelBgPadding?: [number, number];
|
||||||
|
labelBgBorderRadius?: number;
|
||||||
|
style?: any;
|
||||||
|
arrowHeadType?: ArrowHeadType;
|
||||||
|
source: ElementId;
|
||||||
|
target: ElementId;
|
||||||
|
sourceHandleId: ElementId | null;
|
||||||
|
targetHandleId: ElementId | null;
|
||||||
|
sourceX: number;
|
||||||
|
sourceY: number;
|
||||||
|
targetX: number;
|
||||||
|
targetY: number;
|
||||||
|
sourcePosition: Position;
|
||||||
|
targetPosition: Position;
|
||||||
|
elementsSelectable?: boolean;
|
||||||
|
markerEndId?: string;
|
||||||
|
isHidden?: boolean;
|
||||||
|
handleEdgeUpdate: boolean;
|
||||||
|
onConnectEdge: OnConnectFunc;
|
||||||
|
onContextMenu?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
onMouseEnter?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
onMouseMove?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
onMouseLeave?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
edgeUpdaterRadius?: number;
|
||||||
|
onEdgeUpdateStart?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
onEdgeUpdateEnd?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface EdgeProps<T = any> {
|
||||||
|
id: ElementId;
|
||||||
|
source: ElementId;
|
||||||
|
target: ElementId;
|
||||||
|
sourceX: number;
|
||||||
|
sourceY: number;
|
||||||
|
targetX: number;
|
||||||
|
targetY: number;
|
||||||
|
selected?: boolean;
|
||||||
|
animated?: boolean;
|
||||||
|
sourcePosition: Position;
|
||||||
|
targetPosition: Position;
|
||||||
|
label?: string | VNode;
|
||||||
|
labelStyle?: any;
|
||||||
|
labelShowBg?: boolean;
|
||||||
|
labelBgStyle?: any;
|
||||||
|
labelBgPadding?: [number, number];
|
||||||
|
labelBgBorderRadius?: number;
|
||||||
|
style?: any;
|
||||||
|
arrowHeadType?: ArrowHeadType;
|
||||||
|
markerEndId?: string;
|
||||||
|
data?: T;
|
||||||
|
sourceHandleId?: ElementId | null;
|
||||||
|
targetHandleId?: ElementId | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface EdgeSmoothStepProps<T = any> extends EdgeProps<T> {
|
||||||
|
borderRadius?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface EdgeTextProps extends HTMLAttributes {
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
label?: string | VNode;
|
||||||
|
labelStyle?: any;
|
||||||
|
labelShowBg?: boolean;
|
||||||
|
labelBgStyle?: any;
|
||||||
|
labelBgPadding?: [number, number];
|
||||||
|
labelBgBorderRadius?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface NodeProps<T = any> {
|
||||||
|
id: ElementId;
|
||||||
|
type: string;
|
||||||
|
data: T;
|
||||||
|
selected: boolean;
|
||||||
|
isConnectable: boolean;
|
||||||
|
xPos?: number;
|
||||||
|
yPos?: number;
|
||||||
|
targetPosition?: Position;
|
||||||
|
sourcePosition?: Position;
|
||||||
|
isDragging?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface NodeComponentProps<T = any> {
|
||||||
|
id: ElementId;
|
||||||
|
type: string;
|
||||||
|
data: T;
|
||||||
|
selected?: boolean;
|
||||||
|
isConnectable: boolean;
|
||||||
|
transform?: Transform;
|
||||||
|
xPos?: number;
|
||||||
|
yPos?: number;
|
||||||
|
targetPosition?: Position;
|
||||||
|
sourcePosition?: Position;
|
||||||
|
onClick?: (node: Node) => void;
|
||||||
|
onNodeDoubleClick?: (node: Node) => void;
|
||||||
|
onMouseEnter?: (node: Node) => void;
|
||||||
|
onMouseMove?: (node: Node) => void;
|
||||||
|
onMouseLeave?: (node: Node) => void;
|
||||||
|
onContextMenu?: (node: Node) => void;
|
||||||
|
onNodeDragStart?: (node: Node) => void;
|
||||||
|
onNodeDrag?: (node: Node) => void;
|
||||||
|
onNodeDragStop?: (node: Node) => void;
|
||||||
|
style?: any;
|
||||||
|
isDragging?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface WrapNodeProps<T = any> {
|
||||||
|
id: ElementId;
|
||||||
|
type: string;
|
||||||
|
data: T;
|
||||||
|
selected: boolean;
|
||||||
|
scale: number;
|
||||||
|
xPos: number;
|
||||||
|
yPos: number;
|
||||||
|
isSelectable: boolean;
|
||||||
|
isDraggable: boolean;
|
||||||
|
isConnectable: boolean;
|
||||||
|
selectNodesOnDrag: boolean;
|
||||||
|
onClick?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onNodeDoubleClick?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onMouseEnter?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onMouseMove?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onMouseLeave?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onContextMenu?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onNodeDragStart?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onNodeDrag?: (event: MouseEvent, node: Node) => void;
|
||||||
|
onNodeDragStop?: (event: MouseEvent, node: Node) => void;
|
||||||
|
style?: any;
|
||||||
|
className?: string;
|
||||||
|
sourcePosition?: Position;
|
||||||
|
targetPosition?: Position;
|
||||||
|
isHidden?: boolean;
|
||||||
|
isInitialized?: boolean;
|
||||||
|
snapToGrid?: boolean;
|
||||||
|
snapGrid?: SnapGrid;
|
||||||
|
isDragging?: boolean;
|
||||||
|
resizeObserver: ResizeObserver | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type FitViewParams = {
|
||||||
|
padding?: number;
|
||||||
|
includeHiddenNodes?: boolean;
|
||||||
|
minZoom?: number;
|
||||||
|
maxZoom?: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type FlowExportObject<T = any> = {
|
||||||
|
elements: Elements<T>;
|
||||||
|
position: [number, number];
|
||||||
|
zoom: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type FitViewFunc = (fitViewOptions?: FitViewParams) => void;
|
||||||
|
export type ProjectFunc = (position: XYPosition) => XYPosition;
|
||||||
|
export type ToObjectFunc<T = any> = () => FlowExportObject<T>;
|
||||||
|
|
||||||
|
export type OnLoadParams<T = any> = {
|
||||||
|
zoomIn: () => void;
|
||||||
|
zoomOut: () => void;
|
||||||
|
zoomTo: (zoomLevel: number) => void;
|
||||||
|
fitView: FitViewFunc;
|
||||||
|
project: ProjectFunc;
|
||||||
|
getElements: () => Elements<T>;
|
||||||
|
setTransform: (transform: FlowTransform) => void;
|
||||||
|
toObject: ToObjectFunc<T>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type OnLoadFunc<T = any> = (params: OnLoadParams<T>) => void;
|
||||||
|
|
||||||
|
export interface Connection {
|
||||||
|
source: ElementId | null;
|
||||||
|
target: ElementId | null;
|
||||||
|
sourceHandle: ElementId | null;
|
||||||
|
targetHandle: ElementId | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum ConnectionMode {
|
||||||
|
Strict = 'strict',
|
||||||
|
Loose = 'loose'
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum ConnectionLineType {
|
||||||
|
Bezier = 'default',
|
||||||
|
Straight = 'straight',
|
||||||
|
Step = 'step',
|
||||||
|
SmoothStep = 'smoothstep'
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ConnectionLineComponentProps = {
|
||||||
|
sourceX: number;
|
||||||
|
sourceY: number;
|
||||||
|
sourcePosition?: Position;
|
||||||
|
targetX: number;
|
||||||
|
targetY: number;
|
||||||
|
targetPosition?: Position;
|
||||||
|
connectionLineStyle?: any;
|
||||||
|
connectionLineType: ConnectionLineType;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ConnectionLineComponent = Component<ConnectionLineComponentProps>;
|
||||||
|
|
||||||
|
export type OnConnectFunc = (connection: Connection) => void;
|
||||||
|
export type OnConnectStartParams = {
|
||||||
|
nodeId: ElementId | null;
|
||||||
|
handleId: ElementId | null;
|
||||||
|
handleType: HandleType | null;
|
||||||
|
};
|
||||||
|
export type OnConnectStartFunc = (event: MouseEvent, params: OnConnectStartParams) => void;
|
||||||
|
export type OnConnectStopFunc = (event: MouseEvent) => void;
|
||||||
|
export type OnConnectEndFunc = (event: MouseEvent) => void;
|
||||||
|
|
||||||
|
export type SetConnectionId = {
|
||||||
|
connectionNodeId: ElementId | null;
|
||||||
|
connectionHandleId: ElementId | null;
|
||||||
|
connectionHandleType: HandleType | null;
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface HandleElement extends XYPosition, Dimensions {
|
||||||
|
id?: ElementId | null;
|
||||||
|
position: Position;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface HandleProps {
|
||||||
|
type: HandleType;
|
||||||
|
position: Position;
|
||||||
|
isConnectable?: boolean;
|
||||||
|
onConnect?: OnConnectFunc;
|
||||||
|
isValidConnection?: (connection: Connection) => boolean;
|
||||||
|
id?: ElementId;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type NodePosUpdate = {
|
||||||
|
id: ElementId;
|
||||||
|
pos: XYPosition;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type NodeDiffUpdate = {
|
||||||
|
id?: ElementId;
|
||||||
|
diff?: XYPosition;
|
||||||
|
isDragging?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type FlowTransform = {
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
zoom: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TranslateExtent = [[number, number], [number, number]];
|
||||||
|
export type NodeExtent = TranslateExtent;
|
||||||
|
|
||||||
|
export type KeyCode = number | string;
|
||||||
|
|
||||||
|
export enum PanOnScrollMode {
|
||||||
|
Free = 'free',
|
||||||
|
Vertical = 'vertical',
|
||||||
|
Horizontal = 'horizontal'
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ZoomPanHelperFunctions {
|
||||||
|
zoomIn: () => void;
|
||||||
|
zoomOut: () => void;
|
||||||
|
zoomTo: (zoomLevel: number) => void;
|
||||||
|
transform: (transform: FlowTransform) => void;
|
||||||
|
fitView: FitViewFunc;
|
||||||
|
setCenter: (x: number, y: number, zoom?: number) => void;
|
||||||
|
fitBounds: (bounds: Rect, padding?: number) => void;
|
||||||
|
project: (position: XYPosition) => XYPosition;
|
||||||
|
initialized: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type OnEdgeUpdateFunc<T = any> = (oldEdge: Edge<T>, newConnection: Connection) => void;
|
||||||
|
|
||||||
|
export type NodeDimensionUpdate = {
|
||||||
|
id: ElementId;
|
||||||
|
nodeElement: HTMLDivElement;
|
||||||
|
forceUpdate?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type InitD3ZoomPayload = {
|
||||||
|
d3Zoom: ZoomBehavior<Element, unknown>;
|
||||||
|
d3Selection: D3Selection<Element, unknown, null, undefined>;
|
||||||
|
d3ZoomHandler: ((this: Element, event: any, d: unknown) => void) | undefined;
|
||||||
|
transform: Transform;
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface ReactFlowState {
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
transform: Transform;
|
||||||
|
nodes: Node[];
|
||||||
|
edges: Edge[];
|
||||||
|
selectedElements: Elements | null;
|
||||||
|
selectedNodesBbox: Rect;
|
||||||
|
|
||||||
|
d3Zoom: ZoomBehavior<Element, unknown> | null;
|
||||||
|
d3Selection: D3Selection<Element, unknown, null, undefined> | null;
|
||||||
|
d3ZoomHandler: ((this: Element, event: any, d: unknown) => void) | undefined;
|
||||||
|
minZoom: number;
|
||||||
|
maxZoom: number;
|
||||||
|
translateExtent: TranslateExtent;
|
||||||
|
nodeExtent: NodeExtent;
|
||||||
|
|
||||||
|
nodesSelectionActive: boolean;
|
||||||
|
selectionActive: boolean;
|
||||||
|
|
||||||
|
userSelectionRect: SelectionRect;
|
||||||
|
|
||||||
|
connectionNodeId: ElementId | null;
|
||||||
|
connectionHandleId: ElementId | null;
|
||||||
|
connectionHandleType: HandleType | null;
|
||||||
|
connectionPosition: XYPosition;
|
||||||
|
connectionMode: ConnectionMode;
|
||||||
|
|
||||||
|
snapToGrid: boolean;
|
||||||
|
snapGrid: SnapGrid;
|
||||||
|
|
||||||
|
nodesDraggable: boolean;
|
||||||
|
nodesConnectable: boolean;
|
||||||
|
elementsSelectable: boolean;
|
||||||
|
|
||||||
|
multiSelectionActive: boolean;
|
||||||
|
|
||||||
|
reactFlowVersion: string;
|
||||||
|
|
||||||
|
onConnect?: OnConnectFunc;
|
||||||
|
onConnectStart?: OnConnectStartFunc;
|
||||||
|
onConnectStop?: OnConnectStopFunc;
|
||||||
|
onConnectEnd?: OnConnectEndFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateNodeInternals = (nodeId: ElementId) => void;
|
||||||
303
src/utils/graph.ts
Normal file
@@ -0,0 +1,303 @@
|
|||||||
|
import { Store } from 'pinia';
|
||||||
|
|
||||||
|
import { clampPosition, clamp } from './index';
|
||||||
|
|
||||||
|
import {
|
||||||
|
ElementId,
|
||||||
|
Node,
|
||||||
|
Edge,
|
||||||
|
Elements,
|
||||||
|
Transform,
|
||||||
|
XYPosition,
|
||||||
|
Rect,
|
||||||
|
Box,
|
||||||
|
Connection,
|
||||||
|
FlowExportObject,
|
||||||
|
ReactFlowState,
|
||||||
|
NodeExtent
|
||||||
|
} from '../types';
|
||||||
|
|
||||||
|
export const isEdge = (element: Node | Connection | Edge): element is Edge =>
|
||||||
|
'id' in element && 'source' in element && 'target' in element;
|
||||||
|
|
||||||
|
export const isNode = (element: Node | Connection | Edge): element is Node =>
|
||||||
|
'id' in element && !('source' in element) && !('target' in element);
|
||||||
|
|
||||||
|
export const getOutgoers = (node: Node, elements: Elements): Node[] => {
|
||||||
|
if (!isNode(node)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const outgoerIds = elements.filter((e) => isEdge(e) && e.source === node.id).map((e) => (e as Edge).target);
|
||||||
|
return elements.filter((e) => outgoerIds.includes(e.id)) as Node[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getIncomers = (node: Node, elements: Elements): Node[] => {
|
||||||
|
if (!isNode(node)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const incomersIds = elements.filter((e) => isEdge(e) && e.target === node.id).map((e) => (e as Edge).source);
|
||||||
|
return elements.filter((e) => incomersIds.includes(e.id)) as Node[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const removeElements = (elementsToRemove: Elements, elements: Elements): Elements => {
|
||||||
|
const nodeIdsToRemove = elementsToRemove.map((n) => n.id);
|
||||||
|
|
||||||
|
return elements.filter((element) => {
|
||||||
|
const edgeElement = element as Edge;
|
||||||
|
return !(
|
||||||
|
nodeIdsToRemove.includes(element.id) ||
|
||||||
|
nodeIdsToRemove.includes(edgeElement.target) ||
|
||||||
|
nodeIdsToRemove.includes(edgeElement.source)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const getEdgeId = ({ source, sourceHandle, target, targetHandle }: Connection): ElementId =>
|
||||||
|
`reactflow__edge-${source}${sourceHandle}-${target}${targetHandle}`;
|
||||||
|
|
||||||
|
const connectionExists = (edge: Edge, elements: Elements) => {
|
||||||
|
return elements.some(
|
||||||
|
(el) =>
|
||||||
|
isEdge(el) &&
|
||||||
|
el.source === edge.source &&
|
||||||
|
el.target === edge.target &&
|
||||||
|
(el.sourceHandle === edge.sourceHandle || (!el.sourceHandle && !edge.sourceHandle)) &&
|
||||||
|
(el.targetHandle === edge.targetHandle || (!el.targetHandle && !edge.targetHandle))
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const addEdge = (edgeParams: Edge | Connection, elements: Elements): Elements => {
|
||||||
|
if (!edgeParams.source || !edgeParams.target) {
|
||||||
|
console.warn("Can't create edge. An edge needs a source and a target.");
|
||||||
|
return elements;
|
||||||
|
}
|
||||||
|
|
||||||
|
let edge: Edge;
|
||||||
|
if (isEdge(edgeParams)) {
|
||||||
|
edge = { ...edgeParams };
|
||||||
|
} else {
|
||||||
|
edge = {
|
||||||
|
...edgeParams,
|
||||||
|
id: getEdgeId(edgeParams)
|
||||||
|
} as Edge;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (connectionExists(edge, elements)) {
|
||||||
|
return elements;
|
||||||
|
}
|
||||||
|
|
||||||
|
return elements.concat(edge);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const updateEdge = (oldEdge: Edge, newConnection: Connection, elements: Elements): Elements => {
|
||||||
|
if (!newConnection.source || !newConnection.target) {
|
||||||
|
console.warn("Can't create new edge. An edge needs a source and a target.");
|
||||||
|
return elements;
|
||||||
|
}
|
||||||
|
|
||||||
|
const foundEdge = elements.find((e) => isEdge(e) && e.id === oldEdge.id) as Edge;
|
||||||
|
|
||||||
|
if (!foundEdge) {
|
||||||
|
console.warn(`The old edge with id=${oldEdge.id} does not exist.`);
|
||||||
|
return elements;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove old edge and create the new edge with parameters of old edge.
|
||||||
|
const edge = {
|
||||||
|
...oldEdge,
|
||||||
|
id: getEdgeId(newConnection),
|
||||||
|
source: newConnection.source,
|
||||||
|
target: newConnection.target,
|
||||||
|
sourceHandle: newConnection.sourceHandle,
|
||||||
|
targetHandle: newConnection.targetHandle
|
||||||
|
} as Edge;
|
||||||
|
|
||||||
|
return elements.filter((e) => e.id !== oldEdge.id).concat(edge);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const pointToRendererPoint = (
|
||||||
|
{ x, y }: XYPosition,
|
||||||
|
[tx, ty, tScale]: Transform,
|
||||||
|
snapToGrid: boolean,
|
||||||
|
[snapX, snapY]: [number, number]
|
||||||
|
): XYPosition => {
|
||||||
|
const position: XYPosition = {
|
||||||
|
x: (x - tx) / tScale,
|
||||||
|
y: (y - ty) / tScale
|
||||||
|
};
|
||||||
|
|
||||||
|
if (snapToGrid) {
|
||||||
|
return {
|
||||||
|
x: snapX * Math.round(position.x / snapX),
|
||||||
|
y: snapY * Math.round(position.y / snapY)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return position;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const onLoadProject = (currentStore: Store<'revue-flow', ReactFlowState>) => {
|
||||||
|
return (position: XYPosition): XYPosition => {
|
||||||
|
return pointToRendererPoint(position, currentStore.transform, currentStore.snapToGrid, currentStore.snapGrid);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const parseNode = (node: Node, nodeExtent: NodeExtent): Node => {
|
||||||
|
return {
|
||||||
|
...node,
|
||||||
|
id: node.id.toString(),
|
||||||
|
type: node.type || 'default',
|
||||||
|
__rf: {
|
||||||
|
position: clampPosition(node.position, nodeExtent),
|
||||||
|
width: null,
|
||||||
|
height: null,
|
||||||
|
handleBounds: {},
|
||||||
|
isDragging: false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const parseEdge = (edge: Edge): Edge => {
|
||||||
|
return {
|
||||||
|
...edge,
|
||||||
|
source: edge.source.toString(),
|
||||||
|
target: edge.target.toString(),
|
||||||
|
sourceHandle: edge.sourceHandle ? edge.sourceHandle.toString() : null,
|
||||||
|
targetHandle: edge.targetHandle ? edge.targetHandle.toString() : null,
|
||||||
|
id: edge.id.toString(),
|
||||||
|
type: edge.type || 'default'
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const getBoundsOfBoxes = (box1: Box, box2: Box): Box => ({
|
||||||
|
x: Math.min(box1.x, box2.x),
|
||||||
|
y: Math.min(box1.y, box2.y),
|
||||||
|
x2: Math.max(box1.x2, box2.x2),
|
||||||
|
y2: Math.max(box1.y2, box2.y2)
|
||||||
|
});
|
||||||
|
|
||||||
|
export const rectToBox = ({ x, y, width, height }: Rect): Box => ({
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
x2: x + width,
|
||||||
|
y2: y + height
|
||||||
|
});
|
||||||
|
|
||||||
|
export const boxToRect = ({ x, y, x2, y2 }: Box): Rect => ({
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
width: x2 - x,
|
||||||
|
height: y2 - y
|
||||||
|
});
|
||||||
|
|
||||||
|
export const getBoundsofRects = (rect1: Rect, rect2: Rect): Rect =>
|
||||||
|
boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));
|
||||||
|
|
||||||
|
export const getRectOfNodes = (nodes: Node[]): Rect => {
|
||||||
|
const box = nodes.reduce(
|
||||||
|
(currBox, { __rf: { position, width, height } = {} }) =>
|
||||||
|
getBoundsOfBoxes(
|
||||||
|
currBox,
|
||||||
|
rectToBox({
|
||||||
|
...position,
|
||||||
|
width,
|
||||||
|
height
|
||||||
|
})
|
||||||
|
),
|
||||||
|
{ x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity }
|
||||||
|
);
|
||||||
|
|
||||||
|
return boxToRect(box);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const graphPosToZoomedPos = ({ x, y }: XYPosition, [tx, ty, tScale]: Transform): XYPosition => ({
|
||||||
|
x: x * tScale + tx,
|
||||||
|
y: y * tScale + ty
|
||||||
|
});
|
||||||
|
|
||||||
|
export const getNodesInside = (nodes: Node[], rect: Rect, [tx, ty, tScale]: Transform = [0, 0, 1], partially = false): Node[] => {
|
||||||
|
const rBox = rectToBox({
|
||||||
|
x: (rect.x - tx) / tScale,
|
||||||
|
y: (rect.y - ty) / tScale,
|
||||||
|
width: rect.width / tScale,
|
||||||
|
height: rect.height / tScale
|
||||||
|
});
|
||||||
|
|
||||||
|
return nodes.filter(({ __rf: { position, width, height, isDragging } }) => {
|
||||||
|
const nBox = rectToBox({ ...position, width, height });
|
||||||
|
const xOverlap = Math.max(0, Math.min(rBox.x2, nBox.x2) - Math.max(rBox.x, nBox.x));
|
||||||
|
const yOverlap = Math.max(0, Math.min(rBox.y2, nBox.y2) - Math.max(rBox.y, nBox.y));
|
||||||
|
const overlappingArea = Math.ceil(xOverlap * yOverlap);
|
||||||
|
|
||||||
|
if (width === null || height === null || isDragging) {
|
||||||
|
// nodes are initialized with width and height = null
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (partially) {
|
||||||
|
return overlappingArea > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const area = width * height;
|
||||||
|
|
||||||
|
return overlappingArea >= area;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getConnectedEdges = (nodes: Node[], edges: Edge[]): Edge[] => {
|
||||||
|
const nodeIds = nodes.map((node) => node.id);
|
||||||
|
|
||||||
|
return edges.filter((edge) => nodeIds.includes(edge.source) || nodeIds.includes(edge.target));
|
||||||
|
};
|
||||||
|
|
||||||
|
const parseElements = (nodes: Node[], edges: Edge[]): Elements => {
|
||||||
|
return [
|
||||||
|
...nodes.map((node) => {
|
||||||
|
const n = { ...node };
|
||||||
|
|
||||||
|
n.position = n.__rf.position;
|
||||||
|
|
||||||
|
delete n.__rf;
|
||||||
|
return n;
|
||||||
|
}),
|
||||||
|
...edges.map((e) => ({ ...e }))
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const onLoadGetElements = (currentStore: Store<'revue-flow', ReactFlowState>) => {
|
||||||
|
return (): Elements => {
|
||||||
|
return parseElements(currentStore.nodes ?? [], currentStore.edges ?? []);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const onLoadToObject = (currentStore: Store<'revue-flow', ReactFlowState>) => {
|
||||||
|
return (): FlowExportObject => {
|
||||||
|
return {
|
||||||
|
elements: parseElements(currentStore.nodes ?? [], currentStore.edges ?? []),
|
||||||
|
position: [currentStore.transform[0], currentStore.transform[1]],
|
||||||
|
zoom: currentStore.transform[2]
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getTransformForBounds = (
|
||||||
|
bounds: Rect,
|
||||||
|
width: number,
|
||||||
|
height: number,
|
||||||
|
minZoom: number,
|
||||||
|
maxZoom: number,
|
||||||
|
padding = 0.1
|
||||||
|
): Transform => {
|
||||||
|
const xZoom = width / (bounds.width * (1 + padding));
|
||||||
|
const yZoom = height / (bounds.height * (1 + padding));
|
||||||
|
const zoom = Math.min(xZoom, yZoom);
|
||||||
|
const clampedZoom = clamp(zoom, minZoom, maxZoom);
|
||||||
|
const boundsCenterX = bounds.x + bounds.width / 2;
|
||||||
|
const boundsCenterY = bounds.y + bounds.height / 2;
|
||||||
|
const x = width / 2 - boundsCenterX * clampedZoom;
|
||||||
|
const y = height / 2 - boundsCenterY * clampedZoom;
|
||||||
|
|
||||||
|
return [x, y, clampedZoom];
|
||||||
|
};
|
||||||
27
src/utils/index.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { DraggableEvent } from 'react-draggable';
|
||||||
|
import { MouseEvent as ReactMouseEvent } from 'react';
|
||||||
|
|
||||||
|
import { Dimensions, XYPosition, NodeExtent } from '../types';
|
||||||
|
|
||||||
|
export const isInputDOMNode = (e: ReactMouseEvent | DraggableEvent | KeyboardEvent) => {
|
||||||
|
const target = e?.target as HTMLElement;
|
||||||
|
|
||||||
|
return (
|
||||||
|
['INPUT', 'SELECT', 'TEXTAREA', 'BUTTON'].includes(target?.nodeName) || target?.hasAttribute('contenteditable')
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getDimensions = (node: HTMLDivElement): Dimensions => ({
|
||||||
|
width: node.offsetWidth,
|
||||||
|
height: node.offsetHeight,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const clamp = (val: number, min: number = 0, max: number = 1): number => Math.min(Math.max(val, min), max);
|
||||||
|
|
||||||
|
export const clampPosition = (position: XYPosition, extent: NodeExtent) => ({
|
||||||
|
x: clamp(position.x, extent[0][0], extent[1][0]),
|
||||||
|
y: clamp(position.y, extent[0][1], extent[1][1]),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const getHostForElement = (element: HTMLElement): Document | ShadowRoot =>
|
||||||
|
(element.getRootNode?.() as Document | ShadowRoot) || window?.document;
|
||||||
1
src/vite-env.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/// <reference types="vite/client" />
|
||||||
26
tsconfig.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "esnext",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"strict": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"sourceMap": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"lib": ["esnext", "dom"],
|
||||||
|
"declaration": true,
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"strictFunctionTypes": true,
|
||||||
|
"strictPropertyInitialization": true,
|
||||||
|
"noImplicitThis": true,
|
||||||
|
"alwaysStrict": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"noImplicitReturns": false,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
},
|
||||||
|
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
|
||||||
|
}
|
||||||
13
vite.config.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import vue from '@vitejs/plugin-vue';
|
||||||
|
import vueJsx from '@vitejs/plugin-vue-jsx';
|
||||||
|
|
||||||
|
// https://vitejs.dev/config/
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [
|
||||||
|
vue(),
|
||||||
|
vueJsx({
|
||||||
|
// options are passed on to @vue/babel-plugin-jsx
|
||||||
|
})
|
||||||
|
]
|
||||||
|
});
|
||||||
688
yarn-error.log
Normal file
@@ -0,0 +1,688 @@
|
|||||||
|
Arguments:
|
||||||
|
/Users/burak.cakmakoglumd.de/.nvm/versions/node/v14.16.0/bin/node /Users/burak.cakmakoglumd.de/.nvm/versions/node/v14.16.0/bin/yarn
|
||||||
|
|
||||||
|
PATH:
|
||||||
|
/Users/burak.cakmakoglumd.de/.nvm/versions/node/v14.16.0/bin:/Users/burak.cakmakoglumd.de/bin:/usr/local/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/munki:/Library/Apple/usr/bin
|
||||||
|
|
||||||
|
Yarn version:
|
||||||
|
1.22.10
|
||||||
|
|
||||||
|
Node version:
|
||||||
|
14.16.0
|
||||||
|
|
||||||
|
Platform:
|
||||||
|
darwin x64
|
||||||
|
|
||||||
|
Trace:
|
||||||
|
SyntaxError: /Users/burak.cakmakoglumd.de/PhpstormProjects/@braks/revue-flow/package.json: Unexpected token } in JSON at position 616
|
||||||
|
at JSON.parse (<anonymous>)
|
||||||
|
at /Users/burak.cakmakoglumd.de/.nvm/versions/node/v14.16.0/lib/node_modules/yarn/lib/cli.js:1625:59
|
||||||
|
at Generator.next (<anonymous>)
|
||||||
|
at step (/Users/burak.cakmakoglumd.de/.nvm/versions/node/v14.16.0/lib/node_modules/yarn/lib/cli.js:310:30)
|
||||||
|
at /Users/burak.cakmakoglumd.de/.nvm/versions/node/v14.16.0/lib/node_modules/yarn/lib/cli.js:321:13
|
||||||
|
|
||||||
|
npm manifest:
|
||||||
|
{
|
||||||
|
"version": "0.0.0",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vue-tsc --noEmit && vite build",
|
||||||
|
"serve": "vite preview"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"pinia": "^2.0.0-beta.3",
|
||||||
|
"vue": "^3.0.5"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vitejs/plugin-vue": "^1.2.3",
|
||||||
|
"@vue/compiler-sfc": "^3.0.5",
|
||||||
|
"typescript": "^4.3.2",
|
||||||
|
"vite": "^2.3.8",
|
||||||
|
"vue-tsc": "^0.0.24",
|
||||||
|
"babel-eslint": "latest",
|
||||||
|
"eslint": "latest",
|
||||||
|
"eslint-config-prettier": "^8.1.0",
|
||||||
|
"eslint-plugin-nuxt": "^2.0.0",
|
||||||
|
"eslint-plugin-prettier": "^3.3.1",
|
||||||
|
"eslint-plugin-vue": "^7.7.0",
|
||||||
|
"prettier": "^2.2.1",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
yarn manifest:
|
||||||
|
No manifest
|
||||||
|
|
||||||
|
Lockfile:
|
||||||
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||||
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@babel/helper-validator-identifier@^7.14.5":
|
||||||
|
version "7.14.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8"
|
||||||
|
integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==
|
||||||
|
|
||||||
|
"@babel/parser@^7.12.0", "@babel/parser@^7.13.9":
|
||||||
|
version "7.14.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595"
|
||||||
|
integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==
|
||||||
|
|
||||||
|
"@babel/types@^7.12.0", "@babel/types@^7.13.0":
|
||||||
|
version "7.14.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff"
|
||||||
|
integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-validator-identifier" "^7.14.5"
|
||||||
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
|
"@types/estree@^0.0.48":
|
||||||
|
version "0.0.48"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74"
|
||||||
|
integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==
|
||||||
|
|
||||||
|
"@vitejs/plugin-vue@^1.2.3":
|
||||||
|
version "1.2.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.2.4.tgz#a7aa6e6a31c556a8b781de730316deeecf7f56f2"
|
||||||
|
integrity sha512-D/3H9plevPQGgQGwmV6eecvOnooLTecPR63HPffVVWPEhbfvmtYLWgznzs456NBb2DItiRTCIa1yWxvGqC+I8A==
|
||||||
|
|
||||||
|
"@vue/compiler-core@3.1.2":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.2.tgz#31ab1d88e1706a5c7a545faeeb64c31bd0101db0"
|
||||||
|
integrity sha512-nHmq7vLjq/XM2IMbZUcKWoH5sPXa2uR/nIKZtjbK5F3TcbnYE/zKsrSUR9WZJ03unlwotNBX1OyxVt9HbWD7/Q==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.12.0"
|
||||||
|
"@babel/types" "^7.12.0"
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
estree-walker "^2.0.1"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
"@vue/compiler-dom@3.1.2":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.2.tgz#75a7731bcc5d9718183a3c56c18e992f7c13e7b1"
|
||||||
|
integrity sha512-k2+SWcWH0jL6WQAX7Or2ONqu5MbtTgTO0dJrvebQYzgqaKMXNI90RNeWeCxS4BnNFMDONpHBeFgbwbnDWIkmRg==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-core" "3.1.2"
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
|
||||||
|
"@vue/compiler-sfc@^3.0.5":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.2.tgz#23ff1e366d887b964899568bffcb11e3d0511fc4"
|
||||||
|
integrity sha512-SeG/2+DvwejQ7oAiSx8BrDh5qOdqCYHGClPiTvVIHTfSIHiS2JjMbCANdDCjHkTOh/O7WZzo2JhdKm98bRBxTw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.13.9"
|
||||||
|
"@babel/types" "^7.13.0"
|
||||||
|
"@types/estree" "^0.0.48"
|
||||||
|
"@vue/compiler-core" "3.1.2"
|
||||||
|
"@vue/compiler-dom" "3.1.2"
|
||||||
|
"@vue/compiler-ssr" "3.1.2"
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
consolidate "^0.16.0"
|
||||||
|
estree-walker "^2.0.1"
|
||||||
|
hash-sum "^2.0.0"
|
||||||
|
lru-cache "^5.1.1"
|
||||||
|
magic-string "^0.25.7"
|
||||||
|
merge-source-map "^1.1.0"
|
||||||
|
postcss "^8.1.10"
|
||||||
|
postcss-modules "^4.0.0"
|
||||||
|
postcss-selector-parser "^6.0.4"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
"@vue/compiler-ssr@3.1.2":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.2.tgz#e33ad0876d9b96f0950e22b0e174b94c1b049d2d"
|
||||||
|
integrity sha512-BwXo9LFk5OSWdMyZQ4bX1ELHX0Z/9F+ld/OaVnpUPzAZCHslBYLvyKUVDwv2C/lpLjRffpC2DOUEdl1+RP1aGg==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-dom" "3.1.2"
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
|
||||||
|
"@vue/devtools-api@^6.0.0-beta.14":
|
||||||
|
version "6.0.0-beta.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz#ad7cb384e062f165bcf9c83732125bffbc2ad83d"
|
||||||
|
integrity sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA==
|
||||||
|
|
||||||
|
"@vue/reactivity@3.1.2":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.2.tgz#66fa530dd726d2fef285ae55d02106a727db463b"
|
||||||
|
integrity sha512-glJzJoN2xE7I2lRvwKM5u1BHRPTd1yc8iaf//Lai/78/uYAvE5DXp5HzWRFOwMlbRvMGJHIQjOqoxj87cDAaag==
|
||||||
|
dependencies:
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
|
||||||
|
"@vue/runtime-core@3.1.2":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.1.2.tgz#f4dbc503cfc9a02ab5f1ebe002c3322512064a54"
|
||||||
|
integrity sha512-gsPZG4dRIkixuuKmoj4P9IHgfT0yaFLcqWOM5F/bCk0nxQn1XtxH8oUehWuET726KhbukvDoJfe9G2CKviy80w==
|
||||||
|
dependencies:
|
||||||
|
"@vue/reactivity" "3.1.2"
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
|
||||||
|
"@vue/runtime-dom@3.1.2":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.1.2.tgz#0fd8724f14bc7ba64b6c954d874a8d8a4fcb5fe9"
|
||||||
|
integrity sha512-QvINxjLucEZFzp5f0NVu7JqWYCv5TKQfkH2FDs/N6QNE4iKcYtKrWdT0HKfABnVXG28Znqv6rIH0dH4ZAOwxpA==
|
||||||
|
dependencies:
|
||||||
|
"@vue/runtime-core" "3.1.2"
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
csstype "^2.6.8"
|
||||||
|
|
||||||
|
"@vue/shared@3.1.2":
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.2.tgz#1069c0bc7d6f4bd15ccf3a5f3be29450aca368f9"
|
||||||
|
integrity sha512-EmH/poaDWBPJaPILXNI/1fvUbArJQmmTyVCwvvyDYDFnkPoTclAbHRAtyIvqfez7jybTDn077HTNILpxlsoWhg==
|
||||||
|
|
||||||
|
balanced-match@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||||
|
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||||
|
|
||||||
|
big-integer@^1.6.17:
|
||||||
|
version "1.6.48"
|
||||||
|
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e"
|
||||||
|
integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==
|
||||||
|
|
||||||
|
big.js@^5.2.2:
|
||||||
|
version "5.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
|
||||||
|
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
|
||||||
|
|
||||||
|
binary@~0.3.0:
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79"
|
||||||
|
integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=
|
||||||
|
dependencies:
|
||||||
|
buffers "~0.1.1"
|
||||||
|
chainsaw "~0.1.0"
|
||||||
|
|
||||||
|
bluebird@^3.7.2:
|
||||||
|
version "3.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||||
|
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
||||||
|
|
||||||
|
bluebird@~3.4.1:
|
||||||
|
version "3.4.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
|
||||||
|
integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=
|
||||||
|
|
||||||
|
brace-expansion@^1.1.7:
|
||||||
|
version "1.1.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||||
|
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||||
|
dependencies:
|
||||||
|
balanced-match "^1.0.0"
|
||||||
|
concat-map "0.0.1"
|
||||||
|
|
||||||
|
buffer-indexof-polyfill@~1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c"
|
||||||
|
integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==
|
||||||
|
|
||||||
|
buffers@~0.1.1:
|
||||||
|
version "0.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
|
||||||
|
integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s=
|
||||||
|
|
||||||
|
chainsaw@~0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98"
|
||||||
|
integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=
|
||||||
|
dependencies:
|
||||||
|
traverse ">=0.3.0 <0.4"
|
||||||
|
|
||||||
|
colorette@^1.2.2:
|
||||||
|
version "1.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
|
||||||
|
integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
|
||||||
|
|
||||||
|
concat-map@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||||
|
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||||
|
|
||||||
|
consolidate@^0.16.0:
|
||||||
|
version "0.16.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16"
|
||||||
|
integrity sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==
|
||||||
|
dependencies:
|
||||||
|
bluebird "^3.7.2"
|
||||||
|
|
||||||
|
core-util-is@~1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||||
|
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
||||||
|
|
||||||
|
cssesc@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||||
|
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||||
|
|
||||||
|
csstype@^2.6.8:
|
||||||
|
version "2.6.17"
|
||||||
|
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e"
|
||||||
|
integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==
|
||||||
|
|
||||||
|
duplexer2@~0.1.4:
|
||||||
|
version "0.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
|
||||||
|
integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
|
||||||
|
dependencies:
|
||||||
|
readable-stream "^2.0.2"
|
||||||
|
|
||||||
|
emojis-list@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
|
||||||
|
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
|
||||||
|
|
||||||
|
esbuild@^0.12.8:
|
||||||
|
version "0.12.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.13.tgz#666e1e6c50dbde40c02824cc60296574ebd588c5"
|
||||||
|
integrity sha512-fnKinmXcW1DMYnf1Ol3ZO0yU7dBDCuPcE4XDwceIy2zqTvB4G0NfonqgdvPMJi/IXRoVi/w9r9O5xxg/SqiAxA==
|
||||||
|
|
||||||
|
estree-walker@^2.0.1:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||||
|
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||||
|
|
||||||
|
fs.realpath@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||||
|
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||||
|
|
||||||
|
fsevents@~2.3.2:
|
||||||
|
version "2.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||||
|
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||||
|
|
||||||
|
fstream@^1.0.12:
|
||||||
|
version "1.0.12"
|
||||||
|
resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
|
||||||
|
integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==
|
||||||
|
dependencies:
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
inherits "~2.0.0"
|
||||||
|
mkdirp ">=0.5 0"
|
||||||
|
rimraf "2"
|
||||||
|
|
||||||
|
function-bind@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
|
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||||
|
|
||||||
|
generic-names@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872"
|
||||||
|
integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==
|
||||||
|
dependencies:
|
||||||
|
loader-utils "^1.1.0"
|
||||||
|
|
||||||
|
glob@^7.1.3:
|
||||||
|
version "7.1.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
|
||||||
|
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
once "^1.3.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
graceful-fs@^4.1.2, graceful-fs@^4.2.2:
|
||||||
|
version "4.2.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
|
||||||
|
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
|
||||||
|
|
||||||
|
has@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||||
|
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
||||||
|
dependencies:
|
||||||
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
|
hash-sum@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
|
||||||
|
integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
|
||||||
|
|
||||||
|
icss-replace-symbols@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
|
||||||
|
integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
|
||||||
|
|
||||||
|
icss-utils@^5.0.0:
|
||||||
|
version "5.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
|
||||||
|
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
|
||||||
|
|
||||||
|
inflight@^1.0.4:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||||
|
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
|
||||||
|
dependencies:
|
||||||
|
once "^1.3.0"
|
||||||
|
wrappy "1"
|
||||||
|
|
||||||
|
inherits@2, inherits@~2.0.0, inherits@~2.0.3:
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||||
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
|
|
||||||
|
is-core-module@^2.2.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
|
||||||
|
integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==
|
||||||
|
dependencies:
|
||||||
|
has "^1.0.3"
|
||||||
|
|
||||||
|
isarray@~1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||||
|
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||||
|
|
||||||
|
json5@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
|
||||||
|
integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
|
||||||
|
dependencies:
|
||||||
|
minimist "^1.2.0"
|
||||||
|
|
||||||
|
listenercount@~1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937"
|
||||||
|
integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=
|
||||||
|
|
||||||
|
loader-utils@^1.1.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
|
||||||
|
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
|
||||||
|
dependencies:
|
||||||
|
big.js "^5.2.2"
|
||||||
|
emojis-list "^3.0.0"
|
||||||
|
json5 "^1.0.1"
|
||||||
|
|
||||||
|
lodash.camelcase@^4.3.0:
|
||||||
|
version "4.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
|
||||||
|
integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
|
||||||
|
|
||||||
|
lru-cache@^5.1.1:
|
||||||
|
version "5.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||||
|
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
|
||||||
|
dependencies:
|
||||||
|
yallist "^3.0.2"
|
||||||
|
|
||||||
|
magic-string@^0.25.7:
|
||||||
|
version "0.25.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
||||||
|
integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
|
||||||
|
dependencies:
|
||||||
|
sourcemap-codec "^1.4.4"
|
||||||
|
|
||||||
|
merge-source-map@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
|
||||||
|
integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
|
||||||
|
dependencies:
|
||||||
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
minimatch@^3.0.4:
|
||||||
|
version "3.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||||
|
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||||
|
dependencies:
|
||||||
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
|
minimist@^1.2.0, minimist@^1.2.5:
|
||||||
|
version "1.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||||
|
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||||
|
|
||||||
|
"mkdirp@>=0.5 0":
|
||||||
|
version "0.5.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||||
|
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
|
||||||
|
dependencies:
|
||||||
|
minimist "^1.2.5"
|
||||||
|
|
||||||
|
nanoid@^3.1.23:
|
||||||
|
version "3.1.23"
|
||||||
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
|
||||||
|
integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
|
||||||
|
|
||||||
|
once@^1.3.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||||
|
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
|
||||||
|
dependencies:
|
||||||
|
wrappy "1"
|
||||||
|
|
||||||
|
path-is-absolute@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||||
|
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||||
|
|
||||||
|
path-parse@^1.0.6:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||||
|
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||||
|
|
||||||
|
pinia@^2.0.0-beta.3:
|
||||||
|
version "2.0.0-beta.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.0.0-beta.3.tgz#c6f0d07da54dc5aa237f4cc9281898e927b33d16"
|
||||||
|
integrity sha512-4ygKhe9FrYD69tJ7nSdgHm9Ldb0aM/Nzyb8Qz/RZuzOyOr85jWHNmCAhCytWy0l9C4/ypGJYCEJ3vuZfyWjcZA==
|
||||||
|
dependencies:
|
||||||
|
"@vue/devtools-api" "^6.0.0-beta.14"
|
||||||
|
|
||||||
|
postcss-modules-extract-imports@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
|
||||||
|
integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
|
||||||
|
|
||||||
|
postcss-modules-local-by-default@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
|
||||||
|
integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
|
||||||
|
dependencies:
|
||||||
|
icss-utils "^5.0.0"
|
||||||
|
postcss-selector-parser "^6.0.2"
|
||||||
|
postcss-value-parser "^4.1.0"
|
||||||
|
|
||||||
|
postcss-modules-scope@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
|
||||||
|
integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
|
||||||
|
dependencies:
|
||||||
|
postcss-selector-parser "^6.0.4"
|
||||||
|
|
||||||
|
postcss-modules-values@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
|
||||||
|
integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
|
||||||
|
dependencies:
|
||||||
|
icss-utils "^5.0.0"
|
||||||
|
|
||||||
|
postcss-modules@^4.0.0:
|
||||||
|
version "4.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.1.3.tgz#c4c4c41d98d97d24c70e88dacfc97af5a4b3e21d"
|
||||||
|
integrity sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==
|
||||||
|
dependencies:
|
||||||
|
generic-names "^2.0.1"
|
||||||
|
icss-replace-symbols "^1.1.0"
|
||||||
|
lodash.camelcase "^4.3.0"
|
||||||
|
postcss-modules-extract-imports "^3.0.0"
|
||||||
|
postcss-modules-local-by-default "^4.0.0"
|
||||||
|
postcss-modules-scope "^3.0.0"
|
||||||
|
postcss-modules-values "^4.0.0"
|
||||||
|
string-hash "^1.1.1"
|
||||||
|
|
||||||
|
postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
|
||||||
|
version "6.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea"
|
||||||
|
integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==
|
||||||
|
dependencies:
|
||||||
|
cssesc "^3.0.0"
|
||||||
|
util-deprecate "^1.0.2"
|
||||||
|
|
||||||
|
postcss-value-parser@^4.1.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
|
||||||
|
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
|
||||||
|
|
||||||
|
postcss@^8.1.10, postcss@^8.3.4:
|
||||||
|
version "8.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.5.tgz#982216b113412bc20a86289e91eb994952a5b709"
|
||||||
|
integrity sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==
|
||||||
|
dependencies:
|
||||||
|
colorette "^1.2.2"
|
||||||
|
nanoid "^3.1.23"
|
||||||
|
source-map-js "^0.6.2"
|
||||||
|
|
||||||
|
process-nextick-args@~2.0.0:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||||
|
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
||||||
|
|
||||||
|
readable-stream@^2.0.2, readable-stream@~2.3.6:
|
||||||
|
version "2.3.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
||||||
|
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
|
||||||
|
dependencies:
|
||||||
|
core-util-is "~1.0.0"
|
||||||
|
inherits "~2.0.3"
|
||||||
|
isarray "~1.0.0"
|
||||||
|
process-nextick-args "~2.0.0"
|
||||||
|
safe-buffer "~5.1.1"
|
||||||
|
string_decoder "~1.1.1"
|
||||||
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
|
resolve@^1.20.0:
|
||||||
|
version "1.20.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
|
||||||
|
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
|
||||||
|
dependencies:
|
||||||
|
is-core-module "^2.2.0"
|
||||||
|
path-parse "^1.0.6"
|
||||||
|
|
||||||
|
rimraf@2:
|
||||||
|
version "2.7.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||||
|
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||||
|
dependencies:
|
||||||
|
glob "^7.1.3"
|
||||||
|
|
||||||
|
rollup@^2.38.5:
|
||||||
|
version "2.52.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.52.6.tgz#7c7546d170dead0e7db0b6c709f7f34398498a8e"
|
||||||
|
integrity sha512-H+Xudmwf8KO+xji8njQNoIQRp8l+iQge/NdUR20JngTxVYdEEnlpkMvQ71YGLl3+xZcPecmdj4q2lrClKaPdRA==
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||||
|
version "5.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||||
|
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||||
|
|
||||||
|
setimmediate@~1.0.4:
|
||||||
|
version "1.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
||||||
|
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
|
||||||
|
|
||||||
|
source-map-js@^0.6.2:
|
||||||
|
version "0.6.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
|
||||||
|
integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
|
||||||
|
|
||||||
|
source-map@^0.6.1:
|
||||||
|
version "0.6.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||||
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||||
|
|
||||||
|
sourcemap-codec@^1.4.4:
|
||||||
|
version "1.4.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||||
|
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||||
|
|
||||||
|
string-hash@^1.1.1:
|
||||||
|
version "1.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
|
||||||
|
integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
|
||||||
|
|
||||||
|
string_decoder@~1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
|
||||||
|
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
|
||||||
|
dependencies:
|
||||||
|
safe-buffer "~5.1.0"
|
||||||
|
|
||||||
|
to-fast-properties@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
|
||||||
|
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
|
||||||
|
|
||||||
|
"traverse@>=0.3.0 <0.4":
|
||||||
|
version "0.3.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
|
||||||
|
integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=
|
||||||
|
|
||||||
|
typescript@^4.3.2:
|
||||||
|
version "4.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"
|
||||||
|
integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==
|
||||||
|
|
||||||
|
unzipper@0.10.11:
|
||||||
|
version "0.10.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e"
|
||||||
|
integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==
|
||||||
|
dependencies:
|
||||||
|
big-integer "^1.6.17"
|
||||||
|
binary "~0.3.0"
|
||||||
|
bluebird "~3.4.1"
|
||||||
|
buffer-indexof-polyfill "~1.0.0"
|
||||||
|
duplexer2 "~0.1.4"
|
||||||
|
fstream "^1.0.12"
|
||||||
|
graceful-fs "^4.2.2"
|
||||||
|
listenercount "~1.0.1"
|
||||||
|
readable-stream "~2.3.6"
|
||||||
|
setimmediate "~1.0.4"
|
||||||
|
|
||||||
|
util-deprecate@^1.0.2, util-deprecate@~1.0.1:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||||
|
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
||||||
|
|
||||||
|
vite@^2.3.8:
|
||||||
|
version "2.3.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/vite/-/vite-2.3.8.tgz#42e3e03953859fd410e4e6ab3d1cca0aab2adc3c"
|
||||||
|
integrity sha512-QiEx+iqNnJntSgSF2fWRQvRey9pORIrtNJzNyBJXwc+BdzWs83FQolX84cTBo393cfhObrtWa6180dAa4NLDiQ==
|
||||||
|
dependencies:
|
||||||
|
esbuild "^0.12.8"
|
||||||
|
postcss "^8.3.4"
|
||||||
|
resolve "^1.20.0"
|
||||||
|
rollup "^2.38.5"
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
vue-tsc@^0.0.24:
|
||||||
|
version "0.0.24"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.0.24.tgz#0cd90db679f53ea1694254b8663fdb3d624a0872"
|
||||||
|
integrity sha512-Qx0V7jkWMtvddtaWa1SA8YKkBCRmjq9zZUB2UIMZiso6JSH538oHD2VumSzkoDnAfFbY3t0/j1mB2abpA0bGWA==
|
||||||
|
dependencies:
|
||||||
|
unzipper "0.10.11"
|
||||||
|
|
||||||
|
vue@^3.0.5:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue/-/vue-3.1.2.tgz#647f8e3949a3d600771dca25d50225dc3e594c64"
|
||||||
|
integrity sha512-q/rbKpb7aofax4ugqu2k/uj7BYuNPcd6Z5/qJtfkJQsE0NkwVoCyeSh7IZGH61hChwYn3CEkh4bHolvUPxlQ+w==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-dom" "3.1.2"
|
||||||
|
"@vue/runtime-dom" "3.1.2"
|
||||||
|
"@vue/shared" "3.1.2"
|
||||||
|
|
||||||
|
wrappy@1:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||||
|
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||||
|
|
||||||
|
yallist@^3.0.2:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||||
|
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||||