feat(node-resizer): add node-resizer pkg

Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
braks
2022-12-09 18:28:50 +01:00
committed by Braks
parent 745f1c2682
commit 681551507a
10 changed files with 585 additions and 72 deletions

View File

@@ -0,0 +1,8 @@
module.exports = {
rules: {
'no-use-before-define': 0,
'vue/no-setup-props-destructure': 0,
},
extends: ['../../.eslintrc.js'],
ignorePatterns: ['!**/*'],
}

View File

@@ -0,0 +1,3 @@
# Vue Flow: Toolbar Component
This is a toolbar component for Vue Flow.

View File

@@ -0,0 +1,48 @@
{
"name": "@vue-flow/node-resizer",
"version": "0.0.1",
"private": false,
"license": "MIT",
"author": "Burak Cakmakoglu<78412429+bcakmakoglu@users.noreply.github.com>",
"repository": {
"type": "git",
"url": "git+https://github.com/bcakmakoglu/vue-flow/packages/plugins/node-resizer"
},
"homepage": "https://github.com/bcakmakoglu/vue-flow#readme",
"bugs": {
"url": "https://github.com/bcakmakoglu/vue-flow/issues"
},
"main": "./dist/vue-flow-plugin-node-resizer.js",
"module": "./dist/vue-flow-node-resizer.mjs",
"types": "./dist/index.d.ts",
"unpkg": "./dist/vue-flow-node-resizer.iife.js",
"jsdelivr": "./dist/vue-flow-node-resizer.iife.js",
"files": [
"dist"
],
"sideEffects": false,
"scripts": {
"build": "vite build",
"types": "vue-tsc --declaration --emitDeclarationOnly && pnpm lint:dist",
"lint": "eslint --ext \".js,.jsx,.ts,.tsx\" --fix --ignore-path ../../.gitignore .",
"lint:dist": "eslint --ext \".ts,.tsx\" -c .eslintrc.js --fix ./dist",
"test": "exit 0"
},
"peerDependencies": {
"@vue-flow/core": "^1.0.0",
"vue": "^3.2.37"
},
"dependencies": {},
"devDependencies": {
"@vue-flow/core": "workspace:*",
"@vitejs/plugin-vue": "^3.2.0",
"unplugin-auto-import": "^0.12.0",
"vite": "^3.2.5",
"vite-plugin-vue-type-imports": "0.2.0",
"vue-tsc": "^1.0.11"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
}
}

View File

@@ -0,0 +1,91 @@
<script lang="ts" setup>
import { computed, inject } from 'vue'
import type { GraphNode, Rect, ViewpaneTransform } from '@vue-flow/core'
import { NodeIdInjection, Position, getRectOfNodes, useVueFlow } from '@vue-flow/core'
import type { CSSProperties } from 'vue'
import type { NodeToolbarProps } from './types'
const props = withDefaults(defineProps<NodeToolbarProps>(), {
position: Position.Top,
offset: 10,
})
const contextNodeId = inject(NodeIdInjection, null)
const { viewportRef, viewport, getSelectedNodes, findNode } = useVueFlow()
function getTransform(nodeRect: Rect, transform: ViewpaneTransform, position: Position, offset: number): string {
// position === Position.Top
let xPos = (nodeRect.x + nodeRect.width / 2) * transform.zoom + transform.x
let yPos = nodeRect.y * transform.zoom + transform.y - offset
let xShift = -50
let yShift = -100
switch (position) {
case Position.Right:
xPos = (nodeRect.x + nodeRect.width) * transform.zoom + transform.x + offset
yPos = (nodeRect.y + nodeRect.height / 2) * transform.zoom + transform.y
xShift = 0
yShift = -50
break
case Position.Bottom:
yPos = (nodeRect.y + nodeRect.height) * transform.zoom + transform.y + offset
yShift = 0
break
case Position.Left:
xPos = nodeRect.x * transform.zoom + transform.x - offset
yPos = (nodeRect.y + nodeRect.height / 2) * transform.zoom + transform.y
xShift = -100
yShift = -50
break
}
return `translate(${xPos}px, ${yPos}px) translate(${xShift}%, ${yShift}%)`
}
const nodes = computed(() => {
const nodeIds = Array.isArray(props.nodeId) ? props.nodeId : [props.nodeId || contextNodeId || '']
return nodeIds.reduce<GraphNode[]>((acc, id) => {
const node = findNode(id)
if (node) {
acc.push(node)
}
return acc
}, [] as GraphNode[])
})
const isActive = computed(() =>
typeof props.isVisible === 'boolean'
? props.isVisible
: nodes.value.length === 1 && nodes.value[0].selected && getSelectedNodes.value.length === 1,
)
const nodeRect = computed<Rect>(() => getRectOfNodes(nodes.value))
const zIndex = computed<number>(() => Math.max(...nodes.value.map((node) => (node.computedPosition.z || 1) + 1)))
const wrapperStyle = computed<CSSProperties>(() => ({
position: 'absolute',
transform: getTransform(nodeRect.value, viewport.value, props.position, props.offset),
zIndex: zIndex.value,
}))
</script>
<script lang="ts">
export default {
name: 'NodeToolbar',
inheritAttrs: false,
}
</script>
<template>
<Teleport :to="viewportRef">
<div v-if="isActive && nodes.length" v-bind="$attrs" :style="wrapperStyle" class="vue-flow__node-toolbar">
<slot />
</div>
</Teleport>
</template>

View File

@@ -0,0 +1,63 @@
// Generated by 'unplugin-auto-import'
export {}
declare global {
const $$: typeof import('vue/macros')['$$']
const $: typeof import('vue/macros')['$']
const $computed: typeof import('vue/macros')['$computed']
const $customRef: typeof import('vue/macros')['$customRef']
const $ref: typeof import('vue/macros')['$ref']
const $shallowRef: typeof import('vue/macros')['$shallowRef']
const $toRef: typeof import('vue/macros')['$toRef']
const EffectScope: typeof import('vue')['EffectScope']
const computed: typeof import('vue')['computed']
const createApp: typeof import('vue')['createApp']
const customRef: typeof import('vue')['customRef']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const effectScope: typeof import('vue')['effectScope']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
const inject: typeof import('vue')['inject']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const markRaw: typeof import('vue')['markRaw']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onMounted: typeof import('vue')['onMounted']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const provide: typeof import('vue')['provide']
const reactive: typeof import('vue')['reactive']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const resolveComponent: typeof import('vue')['resolveComponent']
const resolveDirective: typeof import('vue')['resolveDirective']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const toRaw: typeof import('vue')['toRaw']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const triggerRef: typeof import('vue')['triggerRef']
const unref: typeof import('vue')['unref']
const useAttrs: typeof import('vue')['useAttrs']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useSlots: typeof import('vue')['useSlots']
const watch: typeof import('vue')['watch']
const watchEffect: typeof import('vue')['watchEffect']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
}

View File

@@ -0,0 +1,2 @@
export * from './types'
export { default as NodeResizer } from './NodeResizer.vue'

View File

@@ -0,0 +1,8 @@
import type { Position } from '@vue-flow/core'
export interface NodeToolbarProps {
nodeId?: string | string[]
isVisible?: boolean
position?: Position
offset?: number
}

View File

@@ -0,0 +1,31 @@
{
"compilerOptions": {
"baseUrl": ".",
"module": "ESNext",
"target": "es2017",
"lib": [
"DOM",
"ESNext"
],
"strict": true,
"esModuleInterop": true,
"incremental": false,
"skipLibCheck": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"noUnusedLocals": false,
"strictNullChecks": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"declarationDir": "./dist",
"emitDeclarationOnly": true,
"types": [],
},
"include": [
"./src",
],
"exclude": [
"node_modules",
"dist"
]
}

View File

@@ -0,0 +1,45 @@
import { resolve } from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import vueTypes from 'vite-plugin-vue-type-imports'
// https://vitejs.dev/config/
export default defineConfig({
resolve: {
extensions: ['.ts', '.vue'],
},
build: {
emptyOutDir: false,
lib: {
formats: ['es', 'cjs', 'iife'],
entry: resolve(__dirname, 'src/index.ts'),
fileName: 'vue-flow-node-resizer',
name: 'vueFlowNodeResizer',
},
rollupOptions: {
// make sure to externalize deps that shouldn't be bundled
// into your library
external: ['vue', '@vue-flow/core'],
output: {
dir: './dist',
// Provide global variables to use in the UMD build
// for externalized deps
globals: {
'vue': 'Vue',
'@vue-flow/core': 'VueFlow',
},
},
},
},
plugins: [
vue({
reactivityTransform: true,
}),
vueTypes(),
AutoImport({
imports: ['vue', 'vue/macros'],
dts: 'src/auto-imports.d.ts',
}),
],
})

358
pnpm-lock.yaml generated
View File

@@ -38,11 +38,8 @@ importers:
'@types/canvas-confetti': ^1.4.3
'@types/node': ^18.7.8
'@vercel/analytics': ^0.1.5
'@vue-flow/background': workspace:*
'@vue-flow/controls': workspace:*
'@vue-flow/additional-components': workspace:*
'@vue-flow/core': workspace:*
'@vue-flow/minimap': workspace:*
'@vue-flow/node-toolbar': workspace:*
'@vue/repl': 1.1.2
'@windicss/plugin-scrollbar': ^1.2.3
blobity: ^0.2.1
@@ -67,11 +64,8 @@ importers:
'@animxyz/vue3': 0.6.7_vue@3.2.37
'@stackblitz/sdk': 1.8.0
'@vercel/analytics': 0.1.5_react@18.2.0
'@vue-flow/background': link:../packages/background
'@vue-flow/controls': link:../packages/controls
'@vue-flow/additional-components': link:../packages/additional-components
'@vue-flow/core': link:../packages/core
'@vue-flow/minimap': link:../packages/minimap
'@vue-flow/node-toolbar': link:../packages/node-toolbar
'@vue/repl': 1.1.2_vue@3.2.37
blobity: 0.2.1_react@18.2.0+vue@3.2.37
canvas-confetti: 1.6.0
@@ -98,32 +92,24 @@ importers:
e2e:
specifiers:
'@vitejs/plugin-vue': ^3.2.0
'@vue-flow/background': workspace:*
'@vue-flow/controls': workspace:*
'@vue-flow/additional-components': workspace:*
'@vue-flow/core': workspace:*
'@vue-flow/minimap': workspace:*
cypress: ^10.9.0
dependencies:
'@vue-flow/background': link:../packages/background
'@vue-flow/controls': link:../packages/controls
'@vue-flow/additional-components': link:../packages/additional-components
'@vue-flow/core': link:../packages/core
'@vue-flow/minimap': link:../packages/minimap
devDependencies:
'@vitejs/plugin-vue': 3.2.0_vite@3.2.5+vue@3.2.40
cypress: 10.9.0
examples/nuxt3:
specifiers:
'@vue-flow/background': workspace:*
'@vue-flow/controls': workspace:*
'@vue-flow/additional-components': workspace:*
'@vue-flow/core': workspace:*
'@vue-flow/minimap': workspace:*
nuxt: 3.0.0-rc.11
dependencies:
'@vue-flow/background': link:../../packages/background
'@vue-flow/controls': link:../../packages/controls
'@vue-flow/additional-components': link:../../packages/additional-components
'@vue-flow/core': link:../../packages/core
'@vue-flow/minimap': link:../../packages/minimap
devDependencies:
nuxt: 3.0.0-rc.11_rollup@2.79.1+vite@3.1.6
@@ -133,20 +119,16 @@ importers:
'@quasar/extras': ^1.15.4
'@types/node': ^18.8.3
'@vitejs/plugin-vue': ^2.3.4
'@vue-flow/background': workspace:*
'@vue-flow/controls': workspace:*
'@vue-flow/additional-components': workspace:*
'@vue-flow/core': workspace:*
'@vue-flow/minimap': workspace:*
autoprefixer: ^10.4.12
quasar: ^2.9.2
vue: ^3.2.37
vue-router: ^4.1.5
dependencies:
'@quasar/extras': 1.15.4
'@vue-flow/background': link:../../packages/background
'@vue-flow/controls': link:../../packages/controls
'@vue-flow/additional-components': link:../../packages/additional-components
'@vue-flow/core': link:../../packages/core
'@vue-flow/minimap': link:../../packages/minimap
quasar: 2.9.2
vue: 3.2.37
vue-router: 4.1.5_vue@3.2.37
@@ -160,10 +142,8 @@ importers:
specifiers:
'@types/dagre': ^0.7.48
'@vitejs/plugin-vue': ^3.2.0
'@vue-flow/background': workspace:*
'@vue-flow/controls': workspace:*
'@vue-flow/additional-components': workspace:*
'@vue-flow/core': workspace:*
'@vue-flow/minimap': workspace:*
'@vue-flow/node-toolbar': workspace:*
dagre: ^0.8.5
unplugin-auto-import: ^0.12.0
@@ -174,10 +154,8 @@ importers:
vue-router: ^4.1.6
vueflow: workspace:*
dependencies:
'@vue-flow/background': link:../../packages/background
'@vue-flow/controls': link:../../packages/controls
'@vue-flow/additional-components': link:../../packages/additional-components
'@vue-flow/core': link:../../packages/core
'@vue-flow/minimap': link:../../packages/minimap
'@vue-flow/node-toolbar': link:../../packages/node-toolbar
vueflow: link:../../packages/vue-flow
devDependencies:
@@ -191,38 +169,27 @@ importers:
vue: 3.2.37
vue-router: 4.1.6_vue@3.2.37
packages/background:
specifiers:
'@vitejs/plugin-vue': ^3.2.0
'@vue-flow/core': workspace:*
unplugin-auto-import: ^0.12.0
vite: ^3.2.5
vite-plugin-vue-type-imports: 0.2.0
vue: ^3.2.37
vue-tsc: ^1.0.11
dependencies:
vue: 3.2.40
devDependencies:
'@vitejs/plugin-vue': 3.2.0_vite@3.2.5+vue@3.2.40
'@vue-flow/core': link:../core
unplugin-auto-import: 0.12.0
vite: 3.2.5
vite-plugin-vue-type-imports: 0.2.0_ek75d3noihdfv6qzog663yntom
vue-tsc: 1.0.11_typescript@4.8.4
packages/controls:
packages/additional-components:
specifiers:
'@types/d3-selection': ^3.0.3
'@types/d3-zoom': ^3.0.1
'@vitejs/plugin-vue': ^3.2.0
'@vue-flow/core': workspace:*
d3-selection: ^3.0.0
d3-zoom: ^3.0.0
unplugin-auto-import: ^0.12.0
vite: ^3.2.5
vite-plugin-vue-type-imports: 0.2.0
vite-svg-loader: ^3.6.0
vue: ^3.2.37
vue: ^3.2.25
vue-tsc: ^1.0.11
dependencies:
d3-selection: 3.0.0
d3-zoom: 3.0.0
vue: 3.2.40
devDependencies:
'@types/d3-selection': 3.0.3
'@types/d3-zoom': 3.0.1
'@vitejs/plugin-vue': 3.2.0_vite@3.2.5+vue@3.2.40
'@vue-flow/core': link:../core
unplugin-auto-import: 0.12.0
@@ -274,26 +241,18 @@ importers:
vite-plugin-vue-type-imports: 0.2.0_ek75d3noihdfv6qzog663yntom
vue-tsc: 1.0.11_typescript@4.8.4
packages/minimap:
packages/node-resizer:
specifiers:
'@types/d3-selection': ^3.0.3
'@types/d3-zoom': ^3.0.1
'@vitejs/plugin-vue': ^3.2.0
'@vue-flow/core': workspace:*
d3-selection: ^3.0.0
d3-zoom: ^3.0.0
unplugin-auto-import: ^0.12.0
vite: ^3.2.5
vite-plugin-vue-type-imports: 0.2.0
vue: ^3.2.37
vue-tsc: ^1.0.11
dependencies:
d3-selection: 3.0.0
d3-zoom: 3.0.0
vue: 3.2.40
devDependencies:
'@types/d3-selection': 3.0.3
'@types/d3-zoom': 3.0.1
'@vitejs/plugin-vue': 3.2.0_vite@3.2.5+vue@3.2.40
'@vue-flow/core': link:../core
unplugin-auto-import: 0.12.0
@@ -349,12 +308,37 @@ importers:
vite-plugin-vue-type-imports: 0.2.0_27kt524ck4apxula6vakm6okd4
vue-tsc: 0.40.13_typescript@4.8.4
packages/resize-rotate-node:
specifiers:
'@vitejs/plugin-vue': ^2.3.4
'@vue-flow/core': workspace:*
'@vueuse/core': ^8.9.4
ts-patch: ^2.0.1
typescript-transform-paths: ^3.3.1
unplugin-auto-import: ^0.11.2
vite: ^2.9.15
vite-plugin-vue-type-imports: 0.2.0
vue: ^3.2.25
vue-tsc: ^0.40.13
vue3-moveable: ^0.4.9
dependencies:
'@vueuse/core': 8.9.4_vue@3.2.37
vue: 3.2.37
vue3-moveable: 0.4.9_@types+react@16.9.56
devDependencies:
'@vitejs/plugin-vue': 2.3.4_vite@2.9.15+vue@3.2.37
'@vue-flow/core': link:../core
ts-patch: 2.0.1_typescript@4.8.4
typescript-transform-paths: 3.3.1_typescript@4.8.4
unplugin-auto-import: 0.11.2_tz26lugnys4zsg624icbm2tdye
vite: 2.9.15
vite-plugin-vue-type-imports: 0.2.0_27kt524ck4apxula6vakm6okd4
vue-tsc: 0.40.13_typescript@4.8.4
packages/vue-flow:
specifiers:
'@vue-flow/background': workspace:*
'@vue-flow/controls': workspace:*
'@vue-flow/additional-components': workspace:*
'@vue-flow/core': workspace:*
'@vue-flow/minimap': workspace:*
autoprefixer: ^10.4.13
postcss: ^8.4.19
postcss-cli: ^10.1.0
@@ -362,10 +346,8 @@ importers:
vite: ^3.2.5
vue: ^3.2.25
dependencies:
'@vue-flow/background': link:../background
'@vue-flow/controls': link:../controls
'@vue-flow/additional-components': link:../additional-components
'@vue-flow/core': link:../core
'@vue-flow/minimap': link:../minimap
vue: 3.2.37
devDependencies:
autoprefixer: 10.4.13_postcss@8.4.19
@@ -1204,6 +1186,14 @@ packages:
- supports-color
dev: true
/@daybrush/utils/1.6.0:
resolution: {integrity: sha512-9MjMoOLl1U+l8lXByN3BbLZXf+mktoLyeb6t78Jz2WZ7LRldK0FNg8oW//9giO2hHCUyxS7LX6jS1hToGIfRWA==}
dev: false
/@daybrush/utils/1.7.1:
resolution: {integrity: sha512-ruVDIfXeVAF4s0RxJoNx5hTjxlIRMnKoJ7N5e2m9eDyluIXB12EvhMPQdoq4a/ohJ+cPgj2MiWS5Lvmpsrx8Gg==}
dev: false
/@docsearch/css/3.1.1:
resolution: {integrity: sha512-utLgg7E1agqQeqCJn05DWC7XXMk4tMUUnL7MZupcknRu2OzGN13qwey2qA/0NAKkVBGugiWtON0+rlU0QIPojg==}
dev: true
@@ -1238,6 +1228,20 @@ packages:
- '@algolia/client-search'
dev: true
/@egjs/agent/2.4.2:
resolution: {integrity: sha512-UZQzdpPl0g0M1wDAiq4EY2vUzUI6P5SKGOAPkf0yxSnlcwrU8/zuoyUWbYj11ROFeHV8iW0IetGsmia83z1Hbw==}
dev: false
/@egjs/children-differ/1.0.1:
resolution: {integrity: sha512-DRvyqMf+CPCOzAopQKHtW+X8iN6Hy6SFol+/7zCUiE5y4P/OB8JP8FtU4NxtZwtafvSL4faD5KoQYPj3JHzPFQ==}
dependencies:
'@egjs/list-differ': 1.0.0
dev: false
/@egjs/list-differ/1.0.0:
resolution: {integrity: sha512-HsbMKc0ZAQH+EUeCmI/2PvTYSybmkaWwakU8QGDYYgMVIg9BQ5sM0A0Nnombjxo2+JzXHxmH+jw//yGX+y6GYw==}
dev: false
/@esbuild/android-arm/0.15.10:
resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==}
engines: {node: '>=12'}
@@ -1861,6 +1865,25 @@ packages:
picomatch: 2.3.1
dev: true
/@scena/dragscroll/1.2.0:
resolution: {integrity: sha512-npjR1nh5on74e6dh3mBviVAS3Kx9ZkUFkJdVVPfcrEGO1O9c3IB154d//cLXwiHwV7xMzsADmEMQZrrWwVlb8Q==}
dependencies:
'@daybrush/utils': 1.6.0
'@scena/event-emitter': 1.0.5
dev: false
/@scena/event-emitter/1.0.5:
resolution: {integrity: sha512-AzY4OTb0+7ynefmWFQ6hxDdk0CySAq/D4efljfhtRHCOP7MBF9zUfhKG3TJiroVjASqVgkRJFdenS8ArZo6Olg==}
dependencies:
'@daybrush/utils': 1.7.1
dev: false
/@scena/matrix/1.1.1:
resolution: {integrity: sha512-JVKBhN0tm2Srl+Yt+Ywqu0oLgLcdemDQlD1OxmN9jaCTwaFPZ7tY8n6dhVgMEaR9qcR7r+kAlMXnSfNyYdE+Vg==}
dependencies:
'@daybrush/utils': 1.7.1
dev: false
/@stackblitz/sdk/1.8.0:
resolution: {integrity: sha512-hbS4CpQVF3bxJ+ZD8qu8lAjTZVLTPToLbMtgxbxUmp1AIgqm7i0gMFM1POBA8BqY84CT1A3z74gdCd1bsro7qA==}
dev: false
@@ -2184,7 +2207,6 @@ packages:
/@types/prop-types/15.7.5:
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
dev: true
/@types/qs/6.9.7:
resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
@@ -2194,6 +2216,13 @@ packages:
resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==}
dev: true
/@types/react/16.9.56:
resolution: {integrity: sha512-gIkl4J44G/qxbuC6r2Xh+D3CGZpJ+NdWTItAPmZbR5mUS+JQ8Zvzpl0ea5qT/ZT3ZNTUcDKUVqV3xBE8wv/DyQ==}
dependencies:
'@types/prop-types': 15.7.5
csstype: 3.1.0
dev: false
/@types/react/18.0.15:
resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==}
dependencies:
@@ -2241,7 +2270,6 @@ packages:
/@types/web-bluetooth/0.0.14:
resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==}
dev: true
/@types/web-bluetooth/0.0.16:
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
@@ -2960,6 +2988,23 @@ packages:
resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==}
dev: true
/@vueuse/core/8.9.4_vue@3.2.37:
resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==}
peerDependencies:
'@vue/composition-api': ^1.1.0
vue: ^2.6.0 || ^3.2.0
peerDependenciesMeta:
'@vue/composition-api':
optional: true
vue:
optional: true
dependencies:
'@types/web-bluetooth': 0.0.14
'@vueuse/metadata': 8.9.4
'@vueuse/shared': 8.9.4_vue@3.2.37
vue: 3.2.37
vue-demi: 0.13.6_vue@3.2.37
/@vueuse/core/8.9.4_vue@3.2.40:
resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==}
peerDependencies:
@@ -3002,11 +3047,24 @@ packages:
/@vueuse/metadata/8.9.4:
resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==}
dev: true
/@vueuse/metadata/9.6.0:
resolution: {integrity: sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==}
/@vueuse/shared/8.9.4_vue@3.2.37:
resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==}
peerDependencies:
'@vue/composition-api': ^1.1.0
vue: ^2.6.0 || ^3.2.0
peerDependenciesMeta:
'@vue/composition-api':
optional: true
vue:
optional: true
dependencies:
vue: 3.2.37
vue-demi: 0.13.6_vue@3.2.37
/@vueuse/shared/8.9.4_vue@3.2.40:
resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==}
peerDependencies:
@@ -4055,6 +4113,22 @@ packages:
nth-check: 2.1.1
dev: true
/css-styled/1.0.0_@daybrush+utils@1.7.1:
resolution: {integrity: sha512-lDdPvM2/djv+La110zVY3RGQ7X4OOlzLS+IEjRcn8UlUmJd1+GNcGfDFmsKWwnLBupsY1w0QM1gRgV4RdcCjfw==}
peerDependencies:
'@daybrush/utils': '>=1.0.0'
dependencies:
'@daybrush/utils': 1.7.1
string-hash: 1.1.3
dev: false
/css-to-mat/1.0.3:
resolution: {integrity: sha512-HADRhVqPc8wFqEp6ClK+uuPYg+FMBinNo2ReLyI/KQCncmHPJ60o5zldyJG7NjsTqXWbdfGJO51jnoxfMvWJiA==}
dependencies:
'@daybrush/utils': 1.7.1
'@scena/matrix': 1.1.1
dev: false
/css-tree/1.1.3:
resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
engines: {node: '>=8.0.0'}
@@ -4145,7 +4219,6 @@ packages:
/csstype/3.1.0:
resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==}
dev: true
/csv-generate/3.4.3:
resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==}
@@ -5870,6 +5943,10 @@ packages:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true
/framework-utils/1.1.0:
resolution: {integrity: sha512-KAfqli5PwpFJ8o3psRNs8svpMGyCSAe8nmGcjQ0zZBWN2H6dZDnq+ABp3N3hdUmFeMrLtjOCTXD4yplUJIWceg==}
dev: false
/fresh/0.5.2:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
@@ -5994,6 +6071,13 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/gesto/1.10.0:
resolution: {integrity: sha512-g/Cxpx0FiLZBKjxYjvuaEOspCCyzREn02/eHyf0HrkRF2vqQtotTnn5rH21CeucVrXjBsXw2Of0SKgV92kbHPA==}
dependencies:
'@daybrush/utils': 1.7.1
'@scena/event-emitter': 1.0.5
dev: false
/get-caller-file/2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
@@ -7483,6 +7567,17 @@ packages:
ufo: 1.0.1
dev: true
/moveable/0.29.9_@types+react@16.9.56:
resolution: {integrity: sha512-JoZRxVV81rxAaShx/3NloQu4+0AnxFNplH/v38gfO9pKTJc7b1QFqkyuqqA7oOSSTUxktRxUtka9VA88BCcEwA==}
dependencies:
'@scena/event-emitter': 1.0.5
react-compat-moveable: 0.17.9_@types+react@16.9.56
react-moveable: 0.32.9_@types+react@16.9.56
react-simple-compat: 1.2.3
transitivePeerDependencies:
- '@types/react'
dev: false
/mri/1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
@@ -7934,6 +8029,12 @@ packages:
resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
dev: true
/overlap-area/1.1.0:
resolution: {integrity: sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw==}
dependencies:
'@daybrush/utils': 1.7.1
dev: false
/p-filter/2.1.0:
resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
engines: {node: '>=8'}
@@ -8737,6 +8838,43 @@ packages:
flat: 5.0.2
dev: true
/react-compat-css-styled/1.0.8:
resolution: {integrity: sha512-CG0kVbpKjiLMQc85pP50+Z0R9PGp7NIkkGqO88QTjEsSMOGKYlCXIAnXdKR2ZII23NJmA4XrJry03jkXOxTUkg==}
dependencies:
'@daybrush/utils': 1.7.1
css-styled: 1.0.0_@daybrush+utils@1.7.1
framework-utils: 1.1.0
react-css-styled: 1.0.3_@daybrush+utils@1.7.1
dev: false
/react-compat-moveable/0.17.9_@types+react@16.9.56:
resolution: {integrity: sha512-LS9U1K3eCg7aaj+1tvsoriKpL5M2lbg8fyZfGX3knph6I1liw1k4DrrcAljLy6HAhnyY6EUoUjJ21fDgu51PUA==}
dependencies:
'@daybrush/utils': 1.7.1
'@egjs/agent': 2.4.2
'@egjs/children-differ': 1.0.1
'@scena/dragscroll': 1.2.0
'@scena/matrix': 1.1.1
css-to-mat: 1.0.3
framework-utils: 1.1.0
gesto: 1.10.0
overlap-area: 1.1.0
react-compat-css-styled: 1.0.8
react-css-styled: 1.0.3_@daybrush+utils@1.7.1
react-moveable: 0.32.9_@types+react@16.9.56
transitivePeerDependencies:
- '@types/react'
dev: false
/react-css-styled/1.0.3_@daybrush+utils@1.7.1:
resolution: {integrity: sha512-6H3aZPO66PYmYg9wx12WzOJpPlBEdA7O5JefCh+4SldlihVKBCxA6mityfWSGWL5ldOkJdHJWGwHR6nGPcVm+A==}
dependencies:
css-styled: 1.0.0_@daybrush+utils@1.7.1
framework-utils: 1.1.0
transitivePeerDependencies:
- '@daybrush/utils'
dev: false
/react-dom/18.2.0_react@18.2.0:
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
peerDependencies:
@@ -8747,6 +8885,32 @@ packages:
scheduler: 0.23.0
dev: true
/react-moveable/0.32.9_@types+react@16.9.56:
resolution: {integrity: sha512-657rbOHxBahdHkffcDZ6jU+wqHdSiNRK1wPmjWpXShjOezvd/lUfKCqB/SEW5ICuzOf23LQqO29anTpC+BWvCA==}
peerDependencies:
'@types/react': ~16.9.0
dependencies:
'@daybrush/utils': 1.7.1
'@egjs/agent': 2.4.2
'@egjs/children-differ': 1.0.1
'@scena/dragscroll': 1.2.0
'@scena/event-emitter': 1.0.5
'@scena/matrix': 1.1.1
'@types/react': 16.9.56
css-to-mat: 1.0.3
framework-utils: 1.1.0
gesto: 1.10.0
overlap-area: 1.1.0
react-css-styled: 1.0.3_@daybrush+utils@1.7.1
dev: false
/react-simple-compat/1.2.3:
resolution: {integrity: sha512-vYepRjSriGRyEmFtSsTQoHWVQRbBMYR4ONATeZtuf8GDY8jWGkc6R4+lIb5rVhPBIkx3ru68bpl+9r8V4YA/nA==}
dependencies:
'@daybrush/utils': 1.7.1
'@egjs/list-differ': 1.0.0
dev: false
/react/18.2.0:
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
engines: {node: '>=0.10.0'}
@@ -9403,6 +9567,10 @@ packages:
engines: {node: '>=10.0.0'}
dev: true
/string-hash/1.1.3:
resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==}
dev: false
/string-width/4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -10123,6 +10291,29 @@ packages:
engines: {node: '>= 0.8'}
dev: true
/unplugin-auto-import/0.11.2_tz26lugnys4zsg624icbm2tdye:
resolution: {integrity: sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==}
engines: {node: '>=14'}
peerDependencies:
'@vueuse/core': '*'
peerDependenciesMeta:
'@vueuse/core':
optional: true
dependencies:
'@antfu/utils': 0.5.2
'@rollup/pluginutils': 4.2.1
'@vueuse/core': 8.9.4_vue@3.2.37
local-pkg: 0.4.2
magic-string: 0.26.2
unimport: 0.6.7_vite@2.9.15
unplugin: 0.9.3_vite@2.9.15
transitivePeerDependencies:
- esbuild
- rollup
- vite
- webpack
dev: true
/unplugin-auto-import/0.11.2_vite@2.9.15:
resolution: {integrity: sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==}
engines: {node: '>=14'}
@@ -10801,6 +10992,20 @@ packages:
ufo: 0.8.6
dev: true
/vue-demi/0.13.6_vue@3.2.37:
resolution: {integrity: sha512-02NYpxgyGE2kKGegRPYlNQSL1UWfA/+JqvzhGCOYjhfbLWXU5QQX0+9pAm/R2sCOPKr5NBxVIab7fvFU0B1RxQ==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
peerDependencies:
'@vue/composition-api': ^1.0.0-rc.1
vue: ^3.0.0-0 || ^2.6.0
peerDependenciesMeta:
'@vue/composition-api':
optional: true
dependencies:
vue: 3.2.37
/vue-demi/0.13.6_vue@3.2.40:
resolution: {integrity: sha512-02NYpxgyGE2kKGegRPYlNQSL1UWfA/+JqvzhGCOYjhfbLWXU5QQX0+9pAm/R2sCOPKr5NBxVIab7fvFU0B1RxQ==}
engines: {node: '>=12'}
@@ -10910,6 +11115,15 @@ packages:
'@vue/server-renderer': 3.2.40_vue@3.2.40
'@vue/shared': 3.2.40
/vue3-moveable/0.4.9_@types+react@16.9.56:
resolution: {integrity: sha512-B5hLiVBcvqvflOydKOPYKrQhRZRMqbgfbpD2ZEalFKVqxJm2YRcE5al48Bq6K8w5Fg1ce3YvndfuYYgpQ0Vcfw==}
dependencies:
framework-utils: 1.1.0
moveable: 0.29.9_@types+react@16.9.56
transitivePeerDependencies:
- '@types/react'
dev: false
/wcwidth/1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
dependencies: