Changed NumberRange Structure to Tenant JSON Column

This commit is contained in:
2024-08-10 14:25:56 +02:00
parent 4ded159c49
commit 98d14a3e34
8 changed files with 674 additions and 368 deletions

View File

@@ -1,24 +1,131 @@
<template>
<editor-content :editor="editor" />
<div>
<div v-if="editor">
<InputGroup class="mx-3 mt-3">
<UButton
@click="editor.chain().focus().toggleBold().run()"
:disabled="!editor.can().chain().focus().toggleBold().run()"
:class="{ 'is-active': editor.isActive('bold') }"
icon="i-heroicons-bold"
/>
<UButton
@click="editor.chain().focus().toggleItalic().run()"
:disabled="!editor.can().chain().focus().toggleItalic().run()"
:class="{ 'is-active': editor.isActive('italic') }"
icon="i-heroicons-italic"
/>
<UButton
@click="editor.chain().focus().toggleStrike().run()"
:disabled="!editor.can().chain().focus().toggleStrike().run()"
:class="{ 'is-active': editor.isActive('strike') }"
icon="i-mdi-format-strikethrough"
/>
<UButton
@click="editor.chain().focus().toggleCode().run()"
:disabled="!editor.can().chain().focus().toggleCode().run()"
:class="{ 'is-active': editor.isActive('code') }"
icon="i-heroicons-code-bracket"
/>
<!-- <UButton @click="editor.chain().focus().unsetAllMarks().run()">
clear marks
</UButton>
<UButton @click="editor.chain().focus().clearNodes().run()">
clear nodes
</UButton>-->
<UButton
@click="editor.chain().focus().setParagraph().run()"
:class="{ 'is-active': editor.isActive('paragraph') }"
>
paragraph
</UButton>
<UButton
@click="editor.chain().focus().toggleHeading({ level: 1 }).run()"
:class="{ 'is-active': editor.isActive('heading', { level: 1 }) }"
>h1</UButton>
<UButton
@click="editor.chain().focus().toggleHeading({ level: 2 }).run()"
:class="{ 'is-active': editor.isActive('heading', { level: 2 }) }"
>h2</UButton>
<UButton
@click="editor.chain().focus().toggleHeading({ level: 3 }).run()"
:class="{ 'is-active': editor.isActive('heading', { level: 3 }) }"
>
h3
</UButton>
<UButton
@click="editor.chain().focus().toggleHeading({ level: 4 }).run()"
:class="{ 'is-active': editor.isActive('heading', { level: 4 }) }"
>
h4
</UButton>
<UButton
@click="editor.chain().focus().toggleHeading({ level: 5 }).run()"
:class="{ 'is-active': editor.isActive('heading', { level: 5 }) }"
>
h5
</UButton>
<UButton
@click="editor.chain().focus().toggleHeading({ level: 6 }).run()"
:class="{ 'is-active': editor.isActive('heading', { level: 6 }) }"
>
h6
</UButton>
<UButton
@click="editor.chain().focus().toggleBulletList().run()"
:class="{ 'is-active': editor.isActive('bulletList') }"
icon="i-heroicons-list-bullet"
/>
<UButton
@click="editor.chain().focus().toggleOrderedList().run()"
:class="{ 'is-active': editor.isActive('orderedList') }"
icon="i-mdi-format-list-numbered"
/>
<!-- <UButton
@click="editor.chain().focus().toggleCodeBlock().run()"
:class="{ 'is-active': editor.isActive('codeBlock') }"
>
code block
</UButton>
<UButton
@click="editor.chain().focus().toggleBlockquote().run()"
:class="{ 'is-active': editor.isActive('blockquote') }"
>
blockquote
</UButton>
<UButton @click="editor.chain().focus().setHorizontalRule().run()">
horizontal rule
</UButton>
<UButton @click="editor.chain().focus().setHardBreak().run()">
hard break
</UButton>
<UButton
@click="editor.chain().focus().undo().run()"
:disabled="!editor.can().chain().focus().undo().run()"
>
undo
</UButton>
<UButton
@click="editor.chain().focus().redo().run()"
:disabled="!editor.can().chain().focus().redo().run()"
>
redo
</UButton>-->
</InputGroup>
</div>
<TiptapEditorContent :editor="editor" />
</div>
</template>
<script setup>
import { useEditor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
const props = defineProps({
content: {
type: "String",
required: true
}
})
const {content } = props
const editor = useEditor({
content: '<p>Im running Tiptap with Vue.js. 🎉</p>',
extensions: [
StarterKit,
],
})
content: "<p>I'm running Tiptap with Vue.js. 🎉</p>",
extensions: [TiptapStarterKit],
});
onBeforeUnmount(() => {
unref(editor).destroy();
});
</script>

View File

@@ -2,6 +2,51 @@
export const useNumberRange = (resourceType) => {
const supabase = useSupabaseClient()
console.log(resourceType)
/*const {numberRanges} = storeToRefs(useDataStore())
const {fetchNumberRanges} = useDataStore()
const numberRange = numberRanges.value.find(range => range.resourceType === resourceType)*/
const dataStore = useDataStore()
const numberRanges = dataStore.ownTenant.numberRanges
console.log(numberRanges)
const numberRange = numberRanges[resourceType]
const useNextNumber = async () => {
let nextNumber = numberRange.nextNumber
let newNumberRanges = numberRanges
newNumberRanges[resourceType].nextNumber += 1
console.log(newNumberRanges)
const {data,error} = await supabase
.from("tenants")
.update({numberRanges: newNumberRanges})
.eq('id',dataStore.currentTenant)
dataStore.fetchOwnTenant()
return (numberRange.prefix ? numberRange.prefix : "") + nextNumber + (numberRange.suffix ? numberRange.suffix : "")
}
return { useNextNumber}
}
/*export const useNumberRange = (resourceType) => {
const supabase = useSupabaseClient()
const {numberRanges} = storeToRefs(useDataStore())
const {fetchNumberRanges} = useDataStore()
@@ -26,4 +71,4 @@ export const useNumberRange = (resourceType) => {
}
return { useNextNumber}
}
}*/

42
numberRanges.json Normal file
View File

@@ -0,0 +1,42 @@
{
"vendors": {
"prefix": "",
"suffix": "",
"nextNumber": 1000
},
"customers": {
"prefix": "",
"suffix": "",
"nextNumber": 1000
},
"products": {
"prefix": "AT-",
"suffix": "",
"nextNumber": 1000
},
"quotes": {
"prefix": "AN-",
"suffix": "",
"nextNumber": 1000
},
"confirmationOrders": {
"prefix": "AB-",
"suffix": "",
"nextNumber": 1000
},
"invoices": {
"prefix": "RE-",
"suffix": "",
"nextNumber": 1000
},
"spaces": {
"prefix": "LP-",
"suffix": "",
"nextNumber": 1000
},
"inventoryitems": {
"prefix": "IA-",
"suffix": "",
"nextNumber": 1000
}
}

View File

@@ -79,5 +79,4 @@ export default defineNuxtConfig({
}
})
})

549
package-lock.json generated
View File

@@ -21,7 +21,6 @@
"@nuxtjs/fontaine": "^0.4.1",
"@nuxtjs/google-fonts": "^3.1.0",
"@nuxtjs/strapi": "^1.9.3",
"@nuxtjs/toast": "^3.3.1",
"@pinia/nuxt": "^0.5.1",
"@popperjs/core": "^2.11.8",
"@tiptap/extension-underline": "^2.1.15",
@@ -34,6 +33,7 @@
"axios": "^1.6.7",
"base64-arraybuffer": "^1.0.2",
"buffer": "^6.0.3",
"chart.js": "^4.4.3",
"client-oauth2": "^4.3.3",
"date-fns": "^3.6.0",
"dayjs": "^1.11.10",
@@ -48,6 +48,7 @@
"socket.io-client": "^4.7.2",
"uuidv4": "^6.2.13",
"v-calendar": "^3.1.2",
"vue-chartjs": "^5.3.1",
"vuedraggable": "^4.1.0",
"vuetify": "^3.4.0-beta.1",
"zebra-browser-print-wrapper": "^0.1.4"
@@ -57,7 +58,7 @@
"@nuxtjs/supabase": "^1.1.4",
"@vite-pwa/nuxt": "^0.3.3",
"nuxt": "^3.8.0",
"nuxt-tiptap-editor": "^0.0.13",
"nuxt-tiptap-editor": "^1.2.0",
"vite-plugin-pwa": "^0.17.3",
"vue": "^3.3.7",
"vue-router": "^4.2.5"
@@ -2765,9 +2766,9 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
@@ -2793,6 +2794,11 @@
"node": ">= 12"
}
},
"node_modules/@kurkle/color": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
"integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
},
"node_modules/@kwsites/file-exists": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
@@ -3880,14 +3886,6 @@
"node": "^14.18.0 || >=16.10.0"
}
},
"node_modules/@nuxtjs/toast": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@nuxtjs/toast/-/toast-3.3.1.tgz",
"integrity": "sha512-b9JpyjSw5ZOyjskBvNc4NEebe0qxB6LivBlO84gHOnsaF23rLkJoBfVNDcXwGNDl7vm09yM4WqBGTkm/OQ0ZCQ==",
"dependencies": {
"vue-toasted": "^1.1.28"
}
},
"node_modules/@parcel/watcher": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz",
@@ -4870,45 +4868,45 @@
}
},
"node_modules/@tiptap/core": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.6.tgz",
"integrity": "sha512-v7S7RhQhTXQo9KSk2jM/jJlTd3clU2FsJA3Omjz7GbgYtPSy67qSiaTbH/tWq12GzDHbKymx+oQnKmyx+yPucA==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.5.9.tgz",
"integrity": "sha512-PPUR+0tbr+wX2G8RG4FEps4qhbnAPEeXK1FUtirLXSRh8vm+TDgafu3sms7wBc4fAyw9zTO/KNNZ90GBe04guA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/pm": "^2.0.0"
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-blockquote": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.6.tgz",
"integrity": "sha512-Qoq4Tl4wyEGfuBrMFth5hWP1SroJtgDYPnyzAZeLiGzF3Yxtu7FFqjGtD1/Bos9ftnFVCAj+nIXnuKsM1YUaGg==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.5.9.tgz",
"integrity": "sha512-LhGyigmd/v1OjYPeoVK8UvFHbH6ffh175ZuNvseZY4PsBd7kZhrSUiuMG8xYdNX8FxamsxAzr2YpsYnOzu3W7A==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-bold": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.6.tgz",
"integrity": "sha512-PI/jNH7rmi6hBvWy/z+3KUTYqeaDXBUjidM74gWP6OLV28HTJ5SkIPCriYe4u2j2Wc/nk3gPxs4/hPOAu/YiXA==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.5.9.tgz",
"integrity": "sha512-XUJdzFb31t0+bwiRquJf0btBpqOB3axQNHTKM9XADuL4S+Z6OBPj0I5rYINeElw/Q7muvdWrHWHh/ovNJA1/5A==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-bubble-menu": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.6.tgz",
"integrity": "sha512-nRWxbgkInhdGUL+e6iISgALcWh8A1PxeVB66w7yYZHS/WoZO0DXdXYT/BWb/XmEJ8r6B4c9SDZRklCiXT8dSXw==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.5.9.tgz",
"integrity": "sha512-NddZ8Qn5dgPPa1W4yk0jdhF4tDBh0FwzBpbnDu2Xz/0TUHrA36ugB2CvR5xS1we4zUKckgpVqOqgdelrmqqFVg==",
"dependencies": {
"tippy.js": "^6.3.7"
},
@@ -4917,91 +4915,93 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-bullet-list": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.6.tgz",
"integrity": "sha512-bSrmYlWfj/bXXoBMVB+gCTlsficVVzWi1jcAjAn+qNAENkhampmlFIUG4DiKGYtn18ZoTbyLgQGDMCO3SBdeDQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.5.9.tgz",
"integrity": "sha512-hJTv1x4omFgaID4LMRT5tOZb/VKmi8Kc6jsf4JNq4Grxd2sANmr9qpmKtBZvviK+XD5PpTXHvL+1c8C1SQtuHQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-code": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.6.tgz",
"integrity": "sha512-UGsSFvVWrWWWQFU4atk+b/qeewTLadOZG/BHZXQDloyP5eJ1SkgUVy9nv3y2cT8QWRbvF6sxkV+SdFoWnvaG3Q==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.5.9.tgz",
"integrity": "sha512-Q1PL3DUXiEe5eYUwOug1haRjSaB0doAKwx7KFVI+kSGbDwCV6BdkKAeYf3us/O2pMP9D0im8RWX4dbSnatgwBA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-code-block": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.2.6.tgz",
"integrity": "sha512-834gVybNyI4nY6NINqnOosFPa4WKylMQTraEY2KhUH2XU1mh0Ni7EgyK10dfZvOUj90OjaxZtXkyZrZ89RTxog==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.5.9.tgz",
"integrity": "sha512-+MUwp0VFFv2aFiZ/qN6q10vfIc6VhLoFFpfuETX10eIRks0Xuj2nGiqCDj7ca0/M44bRg2VvW8+tg/ZEHFNl9g==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-code-block-lowlight": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.2.6.tgz",
"integrity": "sha512-W/8C5nIwgGLvxjc+PfnCcWkfrUuJsIKjyZGXmq1hVXTTVA9eVGbS7m1YB/fsYTEg1ccwoM2JjKO9yuKCeR2xiQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.5.9.tgz",
"integrity": "sha512-taIXxXQ/Lka9CegHFHQS+nx6cX9i9Ws63ZFMPbrXLMSJRhXk8+m4UAoGZQJH9CGGb5/Rv0p3Z8I59AGiyUHLEw==",
"dev": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/extension-code-block": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/extension-code-block": "^2.5.9",
"@tiptap/pm": "^2.5.9",
"highlight.js": "^11",
"lowlight": "^2 || ^3"
}
},
"node_modules/@tiptap/extension-document": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.6.tgz",
"integrity": "sha512-yT9m5Oo9U/xAypcylaLiDE8qmVd3SCZSc8s5lqyC1OW+psb1oC0d14+TgKetO2s8K2wAbW2DxYG3yoxWffGYsQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.5.9.tgz",
"integrity": "sha512-VdNZYDyCzC3W430UdeRXR9IZzPeODSbi5Xz/JEdV93THVp8AC9CrZR7/qjqdBTgbTB54VP8Yr6bKfCoIAF0BeQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-dropcursor": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.6.tgz",
"integrity": "sha512-mCeIbbfe4rl8CuxVQvT7iYSKGVX/ls1LOwALwlHJz5Uw5l3VknAJdjEmHt6hNFdHu162JivL02Il0QYQ8BZwvA==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.5.9.tgz",
"integrity": "sha512-nEOb37UryG6bsU9JAs/HojE6Jg43LupNTAMISbnuB1CPAeAqNsFMwORd9eEPkyEwnQT7MkhsMOSJM44GoPGIFA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-floating-menu": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.6.tgz",
"integrity": "sha512-6ONKC6Dx8zCc5YffXpnQ9FxGRoUp5Jm9mOO3losgiDFhdJqaO7SCk1ziOiD7enoWqIc2shZh8ADnqttCfnFVFQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.5.9.tgz",
"integrity": "sha512-MWJIQQT6e5MgqHny8neeH2Dx926nVPF7sv4p84nX4E0dnkRbEYUP8mCsWYhSUvxxIif6e+yY+4654f2Q9qTx1w==",
"dependencies": {
"tippy.js": "^6.3.7"
},
@@ -5010,89 +5010,89 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-gapcursor": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.6.tgz",
"integrity": "sha512-HDYu+FmL9V+khsiT5904Dy2qG6KrAvnXEjZk1+vVul0TabnQvl2rqHjTxmev3P1rOYTgePmaWXazxAWFIvbMBQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.5.9.tgz",
"integrity": "sha512-yW7V2ebezsa7mWEDWCg4A1ZGsmSV5bEHKse9wzHCDkb7TutSVhLZxGo72U6hNN9PnAksv+FJQk03NuZNYvNyRQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-hard-break": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.6.tgz",
"integrity": "sha512-gwavC76sn26XQLyDaDtf28KIcbhMYPP+C5pkbRvAhVSckQB3Ebz3GRttVbm/jp+Uifp3bmoQEzISGCONEdKQoQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.5.9.tgz",
"integrity": "sha512-8hQ63SgZRG4BqHOeSfeaowG2eMr2beced018pOGbpHbE3XSYoISkMVuFz4Z8UEVR3W9dTbKo4wxNufSTducocQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-heading": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.6.tgz",
"integrity": "sha512-XOmY+uezm42xSO1ero2bRBMdQxWytpxLJS+2shK0QogZ3sDplnfWfP5KV9Z2juXjTdPgPWG0ZaHzIIaLquEcfA==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.5.9.tgz",
"integrity": "sha512-HHowAlGUbFn1qvmY02ydM7qiPPMTGhAJn2A46enDRjNHW5UoqeMfkMpTEYaioOexyguRFSfDT3gpK68IHkQORQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-history": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.6.tgz",
"integrity": "sha512-c2Aeozc+pHcpqghLjXRX/tGU/C+Gp6hApUWPXdhZw5Y/ARj6ZRwx2/ym2K8MOrJ36/W7gc7Xyxd9ZbG7m7pcjA==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.5.9.tgz",
"integrity": "sha512-hGPtJgoZSwnVVqi/xipC2ET/9X2G2UI/Y+M3IYV1ZlM0tCYsv4spNi3uXlZqnXRwYcBXLk5u6e/dmsy5QFbL8g==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-horizontal-rule": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.6.tgz",
"integrity": "sha512-zyLU+Xlk8y3yBCblE8pFwqAP2Rju1csyAu45hi3NCJ6HDGQGdjy8oh+Xa8y2kTPxRNMZARxqB+vCiEoW3YZn2A==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.5.9.tgz",
"integrity": "sha512-/ES5NdxCndBmZAgIXSpCJH8YzENcpxR0S8w34coSWyv+iW0Sq7rW/mksQw8ZIVsj8a7ntpoY5OoRFpSlqcvyGw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-italic": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.6.tgz",
"integrity": "sha512-wB+Y6p2gbc1f2hKYeGNXRQ7P2xi3+JzD3PjSyC9Ss/yyujZhxSOtxBF0nzFXdI+7nmN0Qm4inwPDU/DVrIPb+A==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.5.9.tgz",
"integrity": "sha512-Bw+P139L4cy+B56zpUiRjP8BZSaAUl3JFMnr/FO+FG55QhCxFMXIc6XrC3vslNy5ef3B3zv4gCttS3ee8ByMiw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-link": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.6.tgz",
"integrity": "sha512-Jj0oXSfQ8gZlzzwd669B8sEKBkoK8xV31Lu55tRv9PKHSU6p9CUqBuxY8qR+cquCtO28f3u0cdl5o4HzeIUL5A==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.5.9.tgz",
"integrity": "sha512-7v9yRsX7NuiY8DPslIsPIlFqcD8aGBMLqfEGXltJDvuG6kykdr+khEZeWcJ8ihHIL4yWR3/MAgeT2W72Z/nxiQ==",
"dev": true,
"dependencies": {
"linkifyjs": "^4.1.0"
@@ -5102,68 +5102,68 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0"
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9"
}
},
"node_modules/@tiptap/extension-list-item": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.6.tgz",
"integrity": "sha512-3xig1q0jtOyV49TkAbvxBoOJdNypwq6vLYerfblhj6dK+hIIZUM33S+SmGl2+QaB25VwyeSHjiCvrJjB9PKWHQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.5.9.tgz",
"integrity": "sha512-d9Eo+vBz74SMxP0r25aqiErV256C+lGz+VWMjOoqJa6xWLM1keYy12JtGQWJi8UDVZrDskJKCHq81A0uLt27WA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-ordered-list": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.6.tgz",
"integrity": "sha512-h4HOv+TAMnoueh3CzUY2/Pp2n8eCdEQtKSfiMtHSO3NTTSlst0XEvq+3Z4K81F+ni3baXc+JUALP5dRVpI4apQ==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.5.9.tgz",
"integrity": "sha512-9MsWpvVvzILuEOd/GdroF7RI7uDuE1M6at9rzsaVGvCPVHZBvu1XR3MSVK5OdiJbbJuPGttlzEFLaN/rQdCGFg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-paragraph": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.6.tgz",
"integrity": "sha512-M2rM3pfzziUb7xS9x2dANCokO89okbqg5IqU4VPkZhk0Mfq9czyCatt58TYkAsE3ccsGhdTYtFBTDeKBtsHUqg==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.5.9.tgz",
"integrity": "sha512-HDXGiHTJ/V85dbDMjcFj4XfqyTQZqry6V21ucMzgBZYX60X3gIn7VpQTQnnRjvULSgtfOASSJP6BELc5TyiK0w==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-strike": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.6.tgz",
"integrity": "sha512-0fRh0SwPgqi+ZKD2NpRrmIAHdsgf27ddEUfvlIuFG5b9zqFa6pRZGpXW/6LyBwU0+0bkjW8/Wg3otyaRGjvZGw==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.5.9.tgz",
"integrity": "sha512-QezkOZpczpl09S8lp5JL7sRkwREoPY16Y/lTvBcFKm3TZbVzYZZ/KwS0zpwK9HXTfXr8os4L9AGjQf0tHonX+w==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-text": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.6.tgz",
"integrity": "sha512-wVpo0I/2tJsBK/2yNZfRXOsThOfHCdTY+FDNO/USx9MCJaJ3LPs3H1AuGO549zNmZgkD+1MqcZqrYt9n4i03cw==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.5.9.tgz",
"integrity": "sha512-W0pfiQUPsMkwaV5Y/wKW4cFsyXAIkyOFt7uN5u6LrZ/iW9KZ/IsDODPJDikWp0aeQnXzT9NNQULTpCjbHzzS6g==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0"
"@tiptap/core": "^2.5.9"
}
},
"node_modules/@tiptap/extension-underline": {
@@ -5179,28 +5179,28 @@
}
},
"node_modules/@tiptap/pm": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.6.tgz",
"integrity": "sha512-gSKJtsaMLiYNwcAdwgnlTVM9zHiHy6/WgJvXFmIoOnUgvMN10Bbr+KO5hoffwgLCCSpIWw6qJoVKMpHBexLm0w==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.5.9.tgz",
"integrity": "sha512-YSUaEQVtvZnGzGjif2Tl2o9utE+6tR2Djhz0EqFUcAUEVhOMk7UYUO+r/aPfcCRraIoKKuDQzyCpjKmJicjCUA==",
"dependencies": {
"prosemirror-changeset": "^2.2.1",
"prosemirror-collab": "^1.3.1",
"prosemirror-commands": "^1.5.2",
"prosemirror-dropcursor": "^1.8.1",
"prosemirror-gapcursor": "^1.3.2",
"prosemirror-history": "^1.3.2",
"prosemirror-inputrules": "^1.3.0",
"prosemirror-history": "^1.4.1",
"prosemirror-inputrules": "^1.4.0",
"prosemirror-keymap": "^1.2.2",
"prosemirror-markdown": "^1.12.0",
"prosemirror-markdown": "^1.13.0",
"prosemirror-menu": "^1.2.4",
"prosemirror-model": "^1.19.4",
"prosemirror-schema-basic": "^1.2.2",
"prosemirror-schema-list": "^1.3.0",
"prosemirror-model": "^1.22.2",
"prosemirror-schema-basic": "^1.2.3",
"prosemirror-schema-list": "^1.4.1",
"prosemirror-state": "^1.4.3",
"prosemirror-tables": "^1.3.5",
"prosemirror-trailing-node": "^2.0.7",
"prosemirror-transform": "^1.8.0",
"prosemirror-view": "^1.32.7"
"prosemirror-tables": "^1.4.0",
"prosemirror-trailing-node": "^2.0.9",
"prosemirror-transform": "^1.9.0",
"prosemirror-view": "^1.33.9"
},
"funding": {
"type": "github",
@@ -5208,29 +5208,29 @@
}
},
"node_modules/@tiptap/starter-kit": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.2.6.tgz",
"integrity": "sha512-dWdLcx7g9DTYYzlnStft8vNLrnn+nUWj5Hx4i1dRRW31hBvIxnPwFYcEPKd+7xguozuUX5g+P4OYI6M3LOUxlA==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.5.9.tgz",
"integrity": "sha512-nZ4V+vRayomjxUsajFMHv1iJ5SiSaEA65LAXze/CzyZXGMXfL2OLzY7wJoaVJ4BgwINuO0dOSAtpNDN6jI+6mQ==",
"dependencies": {
"@tiptap/core": "^2.2.6",
"@tiptap/extension-blockquote": "^2.2.6",
"@tiptap/extension-bold": "^2.2.6",
"@tiptap/extension-bullet-list": "^2.2.6",
"@tiptap/extension-code": "^2.2.6",
"@tiptap/extension-code-block": "^2.2.6",
"@tiptap/extension-document": "^2.2.6",
"@tiptap/extension-dropcursor": "^2.2.6",
"@tiptap/extension-gapcursor": "^2.2.6",
"@tiptap/extension-hard-break": "^2.2.6",
"@tiptap/extension-heading": "^2.2.6",
"@tiptap/extension-history": "^2.2.6",
"@tiptap/extension-horizontal-rule": "^2.2.6",
"@tiptap/extension-italic": "^2.2.6",
"@tiptap/extension-list-item": "^2.2.6",
"@tiptap/extension-ordered-list": "^2.2.6",
"@tiptap/extension-paragraph": "^2.2.6",
"@tiptap/extension-strike": "^2.2.6",
"@tiptap/extension-text": "^2.2.6"
"@tiptap/core": "^2.5.9",
"@tiptap/extension-blockquote": "^2.5.9",
"@tiptap/extension-bold": "^2.5.9",
"@tiptap/extension-bullet-list": "^2.5.9",
"@tiptap/extension-code": "^2.5.9",
"@tiptap/extension-code-block": "^2.5.9",
"@tiptap/extension-document": "^2.5.9",
"@tiptap/extension-dropcursor": "^2.5.9",
"@tiptap/extension-gapcursor": "^2.5.9",
"@tiptap/extension-hard-break": "^2.5.9",
"@tiptap/extension-heading": "^2.5.9",
"@tiptap/extension-history": "^2.5.9",
"@tiptap/extension-horizontal-rule": "^2.5.9",
"@tiptap/extension-italic": "^2.5.9",
"@tiptap/extension-list-item": "^2.5.9",
"@tiptap/extension-ordered-list": "^2.5.9",
"@tiptap/extension-paragraph": "^2.5.9",
"@tiptap/extension-strike": "^2.5.9",
"@tiptap/extension-text": "^2.5.9"
},
"funding": {
"type": "github",
@@ -5238,20 +5238,20 @@
}
},
"node_modules/@tiptap/vue-3": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-2.2.6.tgz",
"integrity": "sha512-F8hC133AF/48cvZReJun5TV35NtRcoH8LVEGsuHGNkH7BvJjXAciomvEO4HlSfqz1YT8M/hzRGNg1/R6ixv3bw==",
"version": "2.5.9",
"resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-2.5.9.tgz",
"integrity": "sha512-Iz7HMW9A0jinYnMs2wZxjI+e5fc5MQmjgmfE0kQmimpgISBregW8vJyDKDPIZVJz5LQPLL045G3mL+7V8fExrQ==",
"dependencies": {
"@tiptap/extension-bubble-menu": "^2.2.6",
"@tiptap/extension-floating-menu": "^2.2.6"
"@tiptap/extension-bubble-menu": "^2.5.9",
"@tiptap/extension-floating-menu": "^2.5.9"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0",
"@tiptap/core": "^2.5.9",
"@tiptap/pm": "^2.5.9",
"vue": "^3.0.0"
}
},
@@ -7580,6 +7580,17 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/chart.js": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz",
"integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
"dependencies": {
"@kurkle/color": "^0.3.0"
},
"engines": {
"pnpm": ">=8"
}
},
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -11450,11 +11461,11 @@
}
},
"node_modules/magic-string": {
"version": "0.30.10",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
"integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
"version": "0.30.11",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/magic-string-ast": {
@@ -13246,20 +13257,74 @@
}
},
"node_modules/nuxt-tiptap-editor": {
"version": "0.0.13",
"resolved": "https://registry.npmjs.org/nuxt-tiptap-editor/-/nuxt-tiptap-editor-0.0.13.tgz",
"integrity": "sha512-Vcf7BibSkTIc05vEeHm15Prd17+duE40jN7uk9TU8tPd+nEqLchoTpJzo72g4TzckeyzbZ1e0De0r9b2bC3Stw==",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/nuxt-tiptap-editor/-/nuxt-tiptap-editor-1.2.0.tgz",
"integrity": "sha512-G5T1je54o1WNcnDj21oUiM0vC/MDo4LgygGB0RABeZUtKk1ualYvvcL1xp14ygXYNuZR6XASPhuC9ujei/uVNQ==",
"dev": true,
"dependencies": {
"@nuxt/kit": "^3.8.2",
"@tiptap/extension-code-block-lowlight": "^2.1.13",
"@tiptap/extension-link": "^2.1.13",
"@tiptap/pm": "^2.1.13",
"@tiptap/starter-kit": "^2.1.13",
"@tiptap/vue-3": "^2.1.13",
"@nuxt/kit": "^3.12.4",
"@tiptap/extension-code-block-lowlight": "^2.5.9",
"@tiptap/extension-link": "^2.5.9",
"@tiptap/pm": "^2.5.9",
"@tiptap/starter-kit": "^2.5.9",
"@tiptap/vue-3": "^2.5.9",
"lowlight": "^3.1.0"
}
},
"node_modules/nuxt-tiptap-editor/node_modules/@nuxt/kit": {
"version": "3.12.4",
"resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.12.4.tgz",
"integrity": "sha512-aNRD1ylzijY0oYolldNcZJXVyxdGzNTl+Xd0UYyFQCu9f4wqUZqQ9l+b7arCEzchr96pMK0xdpvLcS3xo1wDcw==",
"dev": true,
"dependencies": {
"@nuxt/schema": "3.12.4",
"c12": "^1.11.1",
"consola": "^3.2.3",
"defu": "^6.1.4",
"destr": "^2.0.3",
"globby": "^14.0.2",
"hash-sum": "^2.0.0",
"ignore": "^5.3.1",
"jiti": "^1.21.6",
"klona": "^2.0.6",
"knitwork": "^1.1.0",
"mlly": "^1.7.1",
"pathe": "^1.1.2",
"pkg-types": "^1.1.3",
"scule": "^1.3.0",
"semver": "^7.6.3",
"ufo": "^1.5.4",
"unctx": "^2.3.1",
"unimport": "^3.9.0",
"untyped": "^1.4.2"
},
"engines": {
"node": "^14.18.0 || >=16.10.0"
}
},
"node_modules/nuxt-tiptap-editor/node_modules/@nuxt/schema": {
"version": "3.12.4",
"resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.12.4.tgz",
"integrity": "sha512-H7FwBV4ChssMaeiLyPdVLOLUa0326ebp3pNbJfGgFt7rSoKh1MmgjorecA8JMxOQZziy3w6EELf4+5cgLh/F1w==",
"dev": true,
"dependencies": {
"compatx": "^0.1.8",
"consola": "^3.2.3",
"defu": "^6.1.4",
"hookable": "^5.5.3",
"pathe": "^1.1.2",
"pkg-types": "^1.1.3",
"scule": "^1.3.0",
"std-env": "^3.7.0",
"ufo": "^1.5.4",
"uncrypto": "^0.1.3",
"unimport": "^3.9.0",
"untyped": "^1.4.2"
},
"engines": {
"node": "^14.18.0 || >=16.10.0"
}
},
"node_modules/nuxt-viewport": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/nuxt-viewport/-/nuxt-viewport-2.1.4.tgz",
@@ -14792,9 +14857,9 @@
}
},
"node_modules/prosemirror-history": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz",
"integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz",
"integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==",
"dependencies": {
"prosemirror-state": "^1.2.2",
"prosemirror-transform": "^1.0.0",
@@ -14821,12 +14886,12 @@
}
},
"node_modules/prosemirror-markdown": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz",
"integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz",
"integrity": "sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==",
"dependencies": {
"markdown-it": "^14.0.0",
"prosemirror-model": "^1.0.0"
"prosemirror-model": "^1.20.0"
}
},
"node_modules/prosemirror-menu": {
@@ -14841,25 +14906,25 @@
}
},
"node_modules/prosemirror-model": {
"version": "1.19.4",
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz",
"integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==",
"version": "1.22.3",
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.3.tgz",
"integrity": "sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==",
"dependencies": {
"orderedmap": "^2.0.0"
}
},
"node_modules/prosemirror-schema-basic": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz",
"integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==",
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.3.tgz",
"integrity": "sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==",
"dependencies": {
"prosemirror-model": "^1.19.0"
}
},
"node_modules/prosemirror-schema-list": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz",
"integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz",
"integrity": "sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==",
"dependencies": {
"prosemirror-model": "^1.0.0",
"prosemirror-state": "^1.0.0",
@@ -14877,9 +14942,9 @@
}
},
"node_modules/prosemirror-tables": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz",
"integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.4.0.tgz",
"integrity": "sha512-fxryZZkQG12fSCNuZDrYx6Xvo2rLYZTbKLRd8rglOPgNJGMKIS8uvTt6gGC38m7UCu/ENnXIP9pEz5uDaPc+cA==",
"dependencies": {
"prosemirror-keymap": "^1.1.2",
"prosemirror-model": "^1.8.1",
@@ -14889,17 +14954,17 @@
}
},
"node_modules/prosemirror-trailing-node": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.8.tgz",
"integrity": "sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.9.tgz",
"integrity": "sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg==",
"dependencies": {
"@remirror/core-constants": "^2.0.2",
"escape-string-regexp": "^4.0.0"
},
"peerDependencies": {
"prosemirror-model": "^1.19.0",
"prosemirror-model": "^1.22.1",
"prosemirror-state": "^1.4.2",
"prosemirror-view": "^1.31.2"
"prosemirror-view": "^1.33.8"
}
},
"node_modules/prosemirror-trailing-node/node_modules/escape-string-regexp": {
@@ -14914,19 +14979,19 @@
}
},
"node_modules/prosemirror-transform": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz",
"integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==",
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.9.0.tgz",
"integrity": "sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==",
"dependencies": {
"prosemirror-model": "^1.0.0"
"prosemirror-model": "^1.21.0"
}
},
"node_modules/prosemirror-view": {
"version": "1.33.3",
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.3.tgz",
"integrity": "sha512-P4Ao/bc4OrU/2yLIf8dL4lJaEtjLR3QjIvQHgJYp2jUS7kYM4bSR6okbBjkqzOs/FwUon6UGjTLdKMnPL1MZqw==",
"version": "1.33.9",
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.9.tgz",
"integrity": "sha512-xV1A0Vz9cIcEnwmMhKKFAOkfIp8XmJRnaZoPqNXrPS7EK5n11Ov8V76KhR0RsfQd/SIzmWY+bg+M44A2Lx/Nnw==",
"dependencies": {
"prosemirror-model": "^1.16.0",
"prosemirror-model": "^1.20.0",
"prosemirror-state": "^1.0.0",
"prosemirror-transform": "^1.1.0"
}
@@ -15916,9 +15981,9 @@
"integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="
},
"node_modules/semver": {
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
"integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
"version": "7.6.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -17359,9 +17424,9 @@
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="
},
"node_modules/ufo": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz",
"integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw=="
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
"integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="
},
"node_modules/uglify-js": {
"version": "3.17.4",
@@ -17588,23 +17653,34 @@
}
},
"node_modules/unimport": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.2.tgz",
"integrity": "sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==",
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/unimport/-/unimport-3.10.0.tgz",
"integrity": "sha512-/UvKRfWx3mNDWwWQhR62HsoM3wxHwYdTq8ellZzMOHnnw4Dp8tovgthyW7DjTrbjDL+i4idOp06voz2VKlvrLw==",
"dependencies": {
"@rollup/pluginutils": "^5.1.0",
"acorn": "^8.11.3",
"acorn": "^8.12.1",
"escape-string-regexp": "^5.0.0",
"estree-walker": "^3.0.3",
"fast-glob": "^3.3.2",
"local-pkg": "^0.5.0",
"magic-string": "^0.30.10",
"mlly": "^1.7.0",
"magic-string": "^0.30.11",
"mlly": "^1.7.1",
"pathe": "^1.1.2",
"pkg-types": "^1.1.1",
"pkg-types": "^1.1.3",
"scule": "^1.3.0",
"strip-literal": "^2.1.0",
"unplugin": "^1.10.1"
"unplugin": "^1.12.0"
}
},
"node_modules/unimport/node_modules/acorn": {
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
"bin": {
"acorn": "bin/acorn"
},
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/unimport/node_modules/estree-walker": {
@@ -17779,14 +17855,14 @@
}
},
"node_modules/unplugin": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz",
"integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==",
"version": "1.12.1",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.12.1.tgz",
"integrity": "sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==",
"dependencies": {
"acorn": "^8.11.3",
"acorn": "^8.12.1",
"chokidar": "^3.6.0",
"webpack-sources": "^3.2.3",
"webpack-virtual-modules": "^0.6.1"
"webpack-virtual-modules": "^0.6.2"
},
"engines": {
"node": ">=14.0.0"
@@ -17831,6 +17907,17 @@
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/unplugin/node_modules/acorn": {
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
"bin": {
"acorn": "bin/acorn"
},
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/unstorage": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.2.tgz",
@@ -18588,6 +18675,15 @@
"ufo": "^1.2.0"
}
},
"node_modules/vue-chartjs": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.1.tgz",
"integrity": "sha512-rZjqcHBxKiHrBl0CIvcOlVEBwRhpWAVf6rDU3vUfa7HuSRmGtCslc0Oc8m16oAVuk0erzc1FCtH1VCriHsrz+A==",
"peerDependencies": {
"chart.js": "^4.1.1",
"vue": "^3.0.0-0 || ^2.7.0"
}
},
"node_modules/vue-devtools-stub": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz",
@@ -18631,11 +18727,6 @@
"vue": "^3.2.0"
}
},
"node_modules/vue-toasted": {
"version": "1.1.28",
"resolved": "https://registry.npmjs.org/vue-toasted/-/vue-toasted-1.1.28.tgz",
"integrity": "sha512-UUzr5LX51UbbiROSGZ49GOgSzFxaMHK6L00JV8fir/CYNJCpIIvNZ5YmS4Qc8Y2+Z/4VVYRpeQL2UO0G800Raw=="
},
"node_modules/vue-virtual-scroller": {
"version": "2.0.0-beta.8",
"resolved": "https://registry.npmjs.org/vue-virtual-scroller/-/vue-virtual-scroller-2.0.0-beta.8.tgz",
@@ -18737,9 +18828,9 @@
}
},
"node_modules/webpack-virtual-modules": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz",
"integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg=="
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
"integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
},
"node_modules/whatwg-url": {
"version": "5.0.0",

View File

@@ -14,7 +14,7 @@
"@nuxtjs/supabase": "^1.1.4",
"@vite-pwa/nuxt": "^0.3.3",
"nuxt": "^3.8.0",
"nuxt-tiptap-editor": "^0.0.13",
"nuxt-tiptap-editor": "^1.2.0",
"vite-plugin-pwa": "^0.17.3",
"vue": "^3.3.7",
"vue-router": "^4.2.5"
@@ -46,6 +46,7 @@
"axios": "^1.6.7",
"base64-arraybuffer": "^1.0.2",
"buffer": "^6.0.3",
"chart.js": "^4.4.3",
"client-oauth2": "^4.3.3",
"date-fns": "^3.6.0",
"dayjs": "^1.11.10",
@@ -60,6 +61,7 @@
"socket.io-client": "^4.7.2",
"uuidv4": "^6.2.13",
"v-calendar": "^3.1.2",
"vue-chartjs": "^5.3.1",
"vuedraggable": "^4.1.0",
"vuetify": "^3.4.0-beta.1",
"zebra-browser-print-wrapper": "^0.1.4"

View File

@@ -111,8 +111,8 @@ const templateColumns = [
sortable: true
},
{
key: "description",
label: "Beschreibung"
key: "notes",
label: "Notizen"
}
]
const selectedColumns = ref(templateColumns)

View File

@@ -30,7 +30,7 @@ const spaces = ref([])
//Functions
const setupPage = async () => {
if(mode.value === "show"){
itemInfo.value = await useSupabaseSelectSingle("spaces",route.params.id,"*, parentSpace(*)")
itemInfo.value = await useSupabaseSelectSingle("spaces",route.params.id,"*, parentSpace(*), inventoryitems(*)")
spaceMovements.value = await dataStore.getMovementsBySpace(itemInfo.value.id)
spaceProducts.value = []
@@ -54,6 +54,9 @@ const setupPage = async () => {
}
const cancelEditorCreate = () => {
@@ -123,121 +126,138 @@ setupPage()
</UButton>
</template>
</UDashboardNavbar>
<UTabs
:items="[{label: 'Informationen'},{label: 'Logbuch'},{label: 'Bestand'}]"
v-if="itemInfo && mode == 'show'"
class="p-5"
>
<template #item="{item}">
<UCard class="mt-5">
<div v-if="item.label === 'Informationen'">
<div class="truncate">
<p>Übergeordneter Lagerplatz: <router-link v-if="itemInfo.parentSpace" :to="`/spaces/show/${itemInfo.parentSpace.id}`">{{itemInfo.parentSpace.spaceNumber}} - {{itemInfo.parentSpace.description}}</router-link></p>
<p>Beschreibung: <br>{{itemInfo.description}}</p>
</div>
</div>
<div v-else-if="item.label === 'Logbuch'">
</div>
<div v-else-if="item.label === 'Bestand'">
<div v-if="spaceProducts.length > 0">
<p class="mt-5">Artikel in diesem Lagerplatz</p>
<table>
<tr>
<th class="text-left">Artikel</th>
<th>Anzahl</th>
<th>Einheit</th>
</tr>
<tr v-for="product in spaceProducts">
<td>{{product.name}}</td>
<td>{{getSpaceProductCount(product.id)}}</td>
<td>{{dataStore.units.find(unit => unit.id === product.unit).name}}</td>
</tr>
</table>
</div>
<p v-else>Es befinden sich keine Artikel in diesem Lagerplatz</p>
</div>
</UCard>
</template>
</UTabs>
<UForm
v-else-if="mode === 'edit' || mode === 'create'"
class="p-5"
>
<div class="flex flex-row">
<div class="w-1/2 mr-5">
<UDivider>
Allgemeines
</UDivider>
<UFormGroup
label="Typ:"
>
<USelectMenu
:options="spaceTypes"
v-model="itemInfo.type"
>
</USelectMenu>
</UFormGroup>
<UFormGroup
label="Übergeordneter Lagerplatz:"
>
<USelectMenu
:options="spaces"
option-attribute="spaceNumber"
value-attribute="id"
v-model="itemInfo.parentSpace"
>
</USelectMenu>
</UFormGroup>
</div>
<div class="w-1/2">
<UDivider>
Ort
</UDivider>
<UFormGroup
label="Straße + Hausnummer:"
>
<UInput
v-model="itemInfo.address.streetNumber"
/>
</UFormGroup>
<UFormGroup
label="PLZ + Ort:"
>
<InputGroup class="w-full">
<UInput
v-model="itemInfo.address.zip"
placeholder="PLZ"
@focusout="setCityByZip"
/>
<UInput
v-model="itemInfo.address.city"
placeholder="Ort"
class="flex-auto"
:disabled="cityLoading"
/>
</InputGroup>
</UFormGroup>
</div>
</div>
<UFormGroup
label="Beschreibung:"
<UDashboardPanelContent>
<UTabs
:items="[{label: 'Informationen'},{label: 'Logbuch'},{label: 'Bestand'},{label: 'Inventarartikel'}]"
v-if="itemInfo && mode == 'show'"
class="p-5"
>
<UTextarea
v-model="itemInfo.description"
/>
</UFormGroup>
</UForm>
<template #item="{item}">
<UCard class="mt-5">
<div v-if="item.label === 'Informationen'">
<div class="truncate">
<p>Übergeordneter Lagerplatz: <router-link v-if="itemInfo.parentSpace" :to="`/spaces/show/${itemInfo.parentSpace.id}`">{{itemInfo.parentSpace.spaceNumber}} - {{itemInfo.parentSpace.description}}</router-link></p>
<p>Beschreibung: <br>{{itemInfo.description}}</p>
</div>
</div>
<div v-else-if="item.label === 'Logbuch'">
</div>
<div v-else-if="item.label === 'Bestand'">
<div v-if="spaceProducts.length > 0">
<p class="mt-5">Artikel in diesem Lagerplatz</p>
<table>
<tr>
<th class="text-left">Artikel</th>
<th>Anzahl</th>
<th>Einheit</th>
</tr>
<tr v-for="product in spaceProducts">
<td>{{product.name}}</td>
<td>{{getSpaceProductCount(product.id)}}</td>
<td>{{dataStore.units.find(unit => unit.id === product.unit).name}}</td>
</tr>
</table>
</div>
<p v-else>Es befinden sich keine Artikel in diesem Lagerplatz</p>
</div>
<div v-else-if="item.label === 'Inventarartikel'">
<UAlert
description="Hier werden alle Inventarartikel in diesem Lagerplatz aufgelistet"
color="primary"
variant="outline"
/>
<UTable
:rows="itemInfo.inventoryitems"
:columns="[{label:'Name',key:'name'}]"
@select="(row) => router.push(`/inventoryitems/show/${row.id}`)"
>
</UTable>
</div>
</UCard>
</template>
</UTabs>
<UForm
v-else-if="mode === 'edit' || mode === 'create'"
class="p-5"
>
<div class="flex flex-row">
<div class="w-1/2 mr-5">
<UDivider>
Allgemeines
</UDivider>
<UFormGroup
label="Typ:"
>
<USelectMenu
:options="spaceTypes"
v-model="itemInfo.type"
>
</USelectMenu>
</UFormGroup>
<UFormGroup
label="Übergeordneter Lagerplatz:"
>
<USelectMenu
:options="spaces"
option-attribute="spaceNumber"
value-attribute="id"
v-model="itemInfo.parentSpace"
>
</USelectMenu>
</UFormGroup>
</div>
<div class="w-1/2">
<UDivider>
Ort
</UDivider>
<UFormGroup
label="Straße + Hausnummer:"
>
<UInput
v-model="itemInfo.address.streetNumber"
/>
</UFormGroup>
<UFormGroup
label="PLZ + Ort:"
>
<InputGroup class="w-full">
<UInput
v-model="itemInfo.address.zip"
placeholder="PLZ"
@focusout="setCityByZip"
/>
<UInput
v-model="itemInfo.address.city"
placeholder="Ort"
class="flex-auto"
:disabled="cityLoading"
/>
</InputGroup>
</UFormGroup>
</div>
</div>
<UFormGroup
label="Beschreibung:"
>
<UTextarea
v-model="itemInfo.description"
/>
</UFormGroup>
</UForm>
</UDashboardPanelContent>
</template>
<style scoped>