basic drawing and live css style
commit
2d5591112d
@ -0,0 +1,24 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
## Clumsy mapping
|
||||||
|
|
||||||
|
Drawing app to be used for clumsy video mapping. Prototype for Making Things Bubblic - XPUB Grad Shop 2023.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
The project is a small SVG drawing app developed with Vite and Vue.js
|
||||||
|
|
||||||
|
To install the project run
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://git.xpub.nl/kamo/clumsy-mapping.git
|
||||||
|
cd clumsy-mapping
|
||||||
|
yarn
|
||||||
|
```
|
||||||
|
|
||||||
|
And then you can launch the dev server with
|
||||||
|
|
||||||
|
```
|
||||||
|
yarn dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## Devlog
|
||||||
|
|
||||||
|
### 04.06.23
|
||||||
|
|
||||||
|
Free hand drawing video mapping. Did something similar for the Milan Fashion Week last year, where we were live light painting on models. That time the system was made with vvvv, but it felt heavy and not really portable.
|
||||||
|
|
||||||
|
Here the plan is: a simple SVG drawing ~ live coding app , where clumsy hand drawn doodles can be styled on the fly with CSS.
|
||||||
|
|
||||||
|
behind the scenes:
|
||||||
|
- Was almost there to use canvas, but using SVG offers an object oriented model out of the box
|
||||||
|
- Also made a lot of experiments with SVG hand drawing last year so it's nice to build on that
|
@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="vite.svg" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Clumsy Mapping</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script type="module" src="src/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "clumsy-mapping",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"vue": "^3.2.47"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vitejs/plugin-vue": "^4.1.0",
|
||||||
|
"vite": "^4.3.9"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
@ -0,0 +1,14 @@
|
|||||||
|
<template>
|
||||||
|
<AppDraw />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import AppDraw from './components/AppDraw.vue'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
@ -0,0 +1,218 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<section v-if="editing" class="edit">
|
||||||
|
<textarea v-model="style"></textarea>
|
||||||
|
<button @click="edit">Confirm</button>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<svg ref="container" id="container" @mousedown="startDrawing" @mousemove="moveDrawing" @mouseup="stopDrawing">
|
||||||
|
<path
|
||||||
|
v-for="(p, index) in paths"
|
||||||
|
:key="p.path"
|
||||||
|
:d="p.path"
|
||||||
|
:style="p.style"
|
||||||
|
stroke-width="1px"
|
||||||
|
stroke="currentColor"
|
||||||
|
fill="none"
|
||||||
|
@click="editing = true; currentIndex = index"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import {ref, computed, onMounted} from 'vue'
|
||||||
|
|
||||||
|
let style = ref("color: white; stroke-width: 4px;")
|
||||||
|
const editing = ref(false)
|
||||||
|
const currentIndex = ref(0)
|
||||||
|
|
||||||
|
const edit = () => {
|
||||||
|
paths.value[currentIndex.value].style = style.value
|
||||||
|
currentIndex.value = null
|
||||||
|
editing.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const container = ref(null)
|
||||||
|
const paths = ref([])
|
||||||
|
let rect = null
|
||||||
|
let path = null
|
||||||
|
let strPath = ""
|
||||||
|
let buffer = []
|
||||||
|
const bufferSize = 10
|
||||||
|
|
||||||
|
const width = ref(0)
|
||||||
|
const height = ref(0)
|
||||||
|
|
||||||
|
const setViewBox = () => container.value.setAttribute('viewBox', `0 0 ${container.value.clientWidth} ${container.value.clientHeight}`)
|
||||||
|
|
||||||
|
|
||||||
|
class Drawing {
|
||||||
|
path = ""
|
||||||
|
style = ""
|
||||||
|
|
||||||
|
constructor (path) {
|
||||||
|
this.path = path
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(()=>{
|
||||||
|
width.value = container.value.clientWidth
|
||||||
|
height.value = container.value.clientHeight
|
||||||
|
rect = container.value.getBoundingClientRect()
|
||||||
|
setViewBox()
|
||||||
|
window.addEventListener("resize", ()=> setViewBox())
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const getMousePosition = (e) => {
|
||||||
|
return {
|
||||||
|
x: e.pageX - rect.left,
|
||||||
|
y: e.pageY - rect.top
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const appendToBuffer = (pt) => {
|
||||||
|
buffer.push(pt);
|
||||||
|
while (buffer.length > bufferSize) {
|
||||||
|
buffer.shift();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the average point, starting at offset in the buffer
|
||||||
|
const getAveragePoint = function (offset) {
|
||||||
|
var len = buffer.length;
|
||||||
|
if (len % 2 === 1 || len >= bufferSize) {
|
||||||
|
var totalX = 0;
|
||||||
|
var totalY = 0;
|
||||||
|
var pt, i;
|
||||||
|
var count = 0;
|
||||||
|
for (i = offset; i < len; i++) {
|
||||||
|
count++;
|
||||||
|
pt = buffer[i];
|
||||||
|
totalX += pt.x;
|
||||||
|
totalY += pt.y;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
x: totalX / count,
|
||||||
|
y: totalY / count,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateSvgPath = function () {
|
||||||
|
var pt = getAveragePoint(0);
|
||||||
|
|
||||||
|
if (pt) {
|
||||||
|
// Get the smoothed part of the path that will not change
|
||||||
|
strPath += " L" + pt.x + " " + pt.y;
|
||||||
|
|
||||||
|
// Get the last part of the path (close to the current mouse position)
|
||||||
|
// This part will change if the mouse moves again
|
||||||
|
var tmpPath = "";
|
||||||
|
for (var offset = 2; offset < buffer.length; offset += 2) {
|
||||||
|
pt = getAveragePoint(offset);
|
||||||
|
tmpPath += " L" + pt.x + " " + pt.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the complete current path coordinates
|
||||||
|
paths.value[paths.value.length-1].path += tmpPath;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const startDrawing = (e) => {
|
||||||
|
|
||||||
|
buffer = []
|
||||||
|
let pt = getMousePosition(e)
|
||||||
|
appendToBuffer(pt)
|
||||||
|
let stringPath = "M" + pt.x + " " + pt.y
|
||||||
|
|
||||||
|
path = new Drawing(stringPath)
|
||||||
|
paths.value.push(path)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const moveDrawing = (e) => {
|
||||||
|
if (!path) return
|
||||||
|
appendToBuffer(getMousePosition(e))
|
||||||
|
updateSvgPath()
|
||||||
|
}
|
||||||
|
|
||||||
|
const stopDrawing = (e) => {
|
||||||
|
if (!path) return
|
||||||
|
path = null
|
||||||
|
strPath = ""
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#container {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
path {
|
||||||
|
color: white;
|
||||||
|
pointer-events: all;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit {
|
||||||
|
color: white;
|
||||||
|
position: absolute;
|
||||||
|
padding: 32px;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit textarea {
|
||||||
|
background: none;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
display: block;
|
||||||
|
font-size: 24px;
|
||||||
|
|
||||||
|
line-height: 1.4;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
width: 500px;
|
||||||
|
border-left: 1px solid white;
|
||||||
|
padding-left: 1ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit button {
|
||||||
|
background: none;
|
||||||
|
border: 1px solid white;
|
||||||
|
color: white;
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 50%;
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit button:hover {
|
||||||
|
background-color: white;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,5 @@
|
|||||||
|
import { createApp } from 'vue'
|
||||||
|
import './style.css'
|
||||||
|
import App from './App.vue'
|
||||||
|
|
||||||
|
createApp(App).mount('#app')
|
@ -0,0 +1,7 @@
|
|||||||
|
import { defineConfig } from 'vite'
|
||||||
|
import vue from '@vitejs/plugin-vue'
|
||||||
|
|
||||||
|
// https://vitejs.dev/config/
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [vue()],
|
||||||
|
})
|
@ -0,0 +1,321 @@
|
|||||||
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||||
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@babel/parser@^7.20.15", "@babel/parser@^7.21.3":
|
||||||
|
version "7.22.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.4.tgz#a770e98fd785c231af9d93f6459d36770993fb32"
|
||||||
|
integrity sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==
|
||||||
|
|
||||||
|
"@esbuild/android-arm64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
|
||||||
|
integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
|
||||||
|
|
||||||
|
"@esbuild/android-arm@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
|
||||||
|
integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
|
||||||
|
|
||||||
|
"@esbuild/android-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
|
||||||
|
integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
|
||||||
|
|
||||||
|
"@esbuild/darwin-arm64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276"
|
||||||
|
integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
|
||||||
|
|
||||||
|
"@esbuild/darwin-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
|
||||||
|
integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
|
||||||
|
|
||||||
|
"@esbuild/freebsd-arm64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
|
||||||
|
integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
|
||||||
|
|
||||||
|
"@esbuild/freebsd-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
|
||||||
|
integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
|
||||||
|
|
||||||
|
"@esbuild/linux-arm64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
|
||||||
|
integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
|
||||||
|
|
||||||
|
"@esbuild/linux-arm@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
|
||||||
|
integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
|
||||||
|
|
||||||
|
"@esbuild/linux-ia32@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
|
||||||
|
integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
|
||||||
|
|
||||||
|
"@esbuild/linux-loong64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
|
||||||
|
integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
|
||||||
|
|
||||||
|
"@esbuild/linux-mips64el@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
|
||||||
|
integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
|
||||||
|
|
||||||
|
"@esbuild/linux-ppc64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
|
||||||
|
integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
|
||||||
|
|
||||||
|
"@esbuild/linux-riscv64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
|
||||||
|
integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
|
||||||
|
|
||||||
|
"@esbuild/linux-s390x@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
|
||||||
|
integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
|
||||||
|
|
||||||
|
"@esbuild/linux-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
|
||||||
|
integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
|
||||||
|
|
||||||
|
"@esbuild/netbsd-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
|
||||||
|
integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
|
||||||
|
|
||||||
|
"@esbuild/openbsd-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
|
||||||
|
integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
|
||||||
|
|
||||||
|
"@esbuild/sunos-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
|
||||||
|
integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
|
||||||
|
|
||||||
|
"@esbuild/win32-arm64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
|
||||||
|
integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
|
||||||
|
|
||||||
|
"@esbuild/win32-ia32@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
|
||||||
|
integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
|
||||||
|
|
||||||
|
"@esbuild/win32-x64@0.17.19":
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
|
||||||
|
integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
|
||||||
|
|
||||||
|
"@jridgewell/sourcemap-codec@^1.4.13":
|
||||||
|
version "1.4.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||||
|
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||||
|
|
||||||
|
"@vitejs/plugin-vue@^4.1.0":
|
||||||
|
version "4.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz#ee0b6dfcc62fe65364e6395bf38fa2ba10bb44b6"
|
||||||
|
integrity sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==
|
||||||
|
|
||||||
|
"@vue/compiler-core@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128"
|
||||||
|
integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.21.3"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
source-map-js "^1.0.2"
|
||||||
|
|
||||||
|
"@vue/compiler-dom@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151"
|
||||||
|
integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-core" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
|
||||||
|
"@vue/compiler-sfc@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df"
|
||||||
|
integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.20.15"
|
||||||
|
"@vue/compiler-core" "3.3.4"
|
||||||
|
"@vue/compiler-dom" "3.3.4"
|
||||||
|
"@vue/compiler-ssr" "3.3.4"
|
||||||
|
"@vue/reactivity-transform" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
magic-string "^0.30.0"
|
||||||
|
postcss "^8.1.10"
|
||||||
|
source-map-js "^1.0.2"
|
||||||
|
|
||||||
|
"@vue/compiler-ssr@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777"
|
||||||
|
integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-dom" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
|
||||||
|
"@vue/reactivity-transform@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929"
|
||||||
|
integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.20.15"
|
||||||
|
"@vue/compiler-core" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
magic-string "^0.30.0"
|
||||||
|
|
||||||
|
"@vue/reactivity@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253"
|
||||||
|
integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==
|
||||||
|
dependencies:
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
|
||||||
|
"@vue/runtime-core@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1"
|
||||||
|
integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==
|
||||||
|
dependencies:
|
||||||
|
"@vue/reactivity" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
|
||||||
|
"@vue/runtime-dom@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566"
|
||||||
|
integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==
|
||||||
|
dependencies:
|
||||||
|
"@vue/runtime-core" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
csstype "^3.1.1"
|
||||||
|
|
||||||
|
"@vue/server-renderer@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c"
|
||||||
|
integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-ssr" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
||||||
|
|
||||||
|
"@vue/shared@3.3.4":
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
|
||||||
|
integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
|
||||||
|
|
||||||
|
csstype@^3.1.1:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
|
||||||
|
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
|
||||||
|
|
||||||
|
esbuild@^0.17.5:
|
||||||
|
version "0.17.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
|
||||||
|
integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==
|
||||||
|
optionalDependencies:
|
||||||
|
"@esbuild/android-arm" "0.17.19"
|
||||||
|
"@esbuild/android-arm64" "0.17.19"
|
||||||
|
"@esbuild/android-x64" "0.17.19"
|
||||||
|
"@esbuild/darwin-arm64" "0.17.19"
|
||||||
|
"@esbuild/darwin-x64" "0.17.19"
|
||||||
|
"@esbuild/freebsd-arm64" "0.17.19"
|
||||||
|
"@esbuild/freebsd-x64" "0.17.19"
|
||||||
|
"@esbuild/linux-arm" "0.17.19"
|
||||||
|
"@esbuild/linux-arm64" "0.17.19"
|
||||||
|
"@esbuild/linux-ia32" "0.17.19"
|
||||||
|
"@esbuild/linux-loong64" "0.17.19"
|
||||||
|
"@esbuild/linux-mips64el" "0.17.19"
|
||||||
|
"@esbuild/linux-ppc64" "0.17.19"
|
||||||
|
"@esbuild/linux-riscv64" "0.17.19"
|
||||||
|
"@esbuild/linux-s390x" "0.17.19"
|
||||||
|
"@esbuild/linux-x64" "0.17.19"
|
||||||
|
"@esbuild/netbsd-x64" "0.17.19"
|
||||||
|
"@esbuild/openbsd-x64" "0.17.19"
|
||||||
|
"@esbuild/sunos-x64" "0.17.19"
|
||||||
|
"@esbuild/win32-arm64" "0.17.19"
|
||||||
|
"@esbuild/win32-ia32" "0.17.19"
|
||||||
|
"@esbuild/win32-x64" "0.17.19"
|
||||||
|
|
||||||
|
estree-walker@^2.0.2:
|
||||||
|
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==
|
||||||
|
|
||||||
|
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==
|
||||||
|
|
||||||
|
magic-string@^0.30.0:
|
||||||
|
version "0.30.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529"
|
||||||
|
integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/sourcemap-codec" "^1.4.13"
|
||||||
|
|
||||||
|
nanoid@^3.3.6:
|
||||||
|
version "3.3.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
|
||||||
|
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
|
||||||
|
|
||||||
|
picocolors@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
||||||
|
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||||
|
|
||||||
|
postcss@^8.1.10, postcss@^8.4.23:
|
||||||
|
version "8.4.24"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df"
|
||||||
|
integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==
|
||||||
|
dependencies:
|
||||||
|
nanoid "^3.3.6"
|
||||||
|
picocolors "^1.0.0"
|
||||||
|
source-map-js "^1.0.2"
|
||||||
|
|
||||||
|
rollup@^3.21.0:
|
||||||
|
version "3.23.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.23.1.tgz#a6e50cb86a17fc2e3248d8ec12ff8666992b0780"
|
||||||
|
integrity sha512-ybRdFVHOoljGEFILHLd2g/qateqUdjE6YS41WXq4p3C/WwD3xtWxV4FYWETA1u9TeXQc5K8L8zHE5d/scOvrOQ==
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
source-map-js@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
||||||
|
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||||
|
|
||||||
|
vite@^4.3.9:
|
||||||
|
version "4.3.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d"
|
||||||
|
integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==
|
||||||
|
dependencies:
|
||||||
|
esbuild "^0.17.5"
|
||||||
|
postcss "^8.4.23"
|
||||||
|
rollup "^3.21.0"
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
vue@^3.2.47:
|
||||||
|
version "3.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"
|
||||||
|
integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-dom" "3.3.4"
|
||||||
|
"@vue/compiler-sfc" "3.3.4"
|
||||||
|
"@vue/runtime-dom" "3.3.4"
|
||||||
|
"@vue/server-renderer" "3.3.4"
|
||||||
|
"@vue/shared" "3.3.4"
|
Loading…
Reference in New Issue