From 075c6cc7e4e4ff596cb5be72384c07048fd7171b Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Mon, 14 Jul 2025 10:27:27 +0200 Subject: [PATCH 01/21] change: improve pwa loading on new version --- vite.config.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vite.config.ts b/vite.config.ts index 2944004..ea7a6fb 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -41,6 +41,8 @@ export default defineConfig({ injectRegister: "auto", manifest: false, workbox: { + cleanupOutdatedCaches: true, + skipWaiting: true, navigateFallbackDenylist: [/^\/api*/], runtimeCaching: [ { From a2101db747502d8747c6a6e5a8e5a7d38748a254 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Thu, 17 Jul 2025 12:56:33 +0200 Subject: [PATCH 02/21] add QuillEditor Component --- package-lock.json | 105 ++++++++++++++++++++++--------- package.json | 1 + src/components/QuillEditor.vue | 110 +++++++++++++++++++++++++++++++++ 3 files changed, 187 insertions(+), 29 deletions(-) create mode 100644 src/components/QuillEditor.vue diff --git a/package-lock.json b/package-lock.json index 54f23a8..3c53095 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,7 @@ "pwacompat": "^2.0.17", "qrcode": "^1.5.4", "qs": "^6.14.0", + "quill": "^2.0.3", "socket.io-client": "^4.8.1", "unplugin-vue-markdown": "^29.1.0", "uuid": "^11.1.0", @@ -4652,6 +4653,52 @@ "vue": "^3.2.41" } }, + "node_modules/@vueup/vue-quill/node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", + "license": "MIT" + }, + "node_modules/@vueup/vue-quill/node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "license": "Apache-2.0" + }, + "node_modules/@vueup/vue-quill/node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", + "license": "BSD-3-Clause" + }, + "node_modules/@vueup/vue-quill/node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "license": "BSD-3-Clause", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/@vueup/vue-quill/node_modules/quill/node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "license": "MIT", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -6219,9 +6266,9 @@ "license": "MIT" }, "node_modules/eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, "node_modules/execa": { @@ -6280,7 +6327,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, "license": "Apache-2.0" }, "node_modules/fast-glob": { @@ -8129,6 +8175,12 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -8710,9 +8762,9 @@ } }, "node_modules/parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==", "license": "BSD-3-Clause" }, "node_modules/parent-module": { @@ -9111,17 +9163,18 @@ "license": "MIT" }, "node_modules/quill": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", - "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.3.tgz", + "integrity": "sha512-xEYQBqfYx/sfb33VJiKnSJp8ehloavImQ2A6564GAbqG55PGw1dAWUn1MUbQB62t0azawUS2CZZhWCjO8gRvTw==", "license": "BSD-3-Clause", "dependencies": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.2", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" + }, + "engines": { + "npm": ">=8.2.3" } }, "node_modules/quill-delta": { @@ -9141,24 +9194,18 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "license": "Apache-2.0" }, - "node_modules/quill/node_modules/fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "license": "Apache-2.0" - }, "node_modules/quill/node_modules/quill-delta": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", - "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", "license": "MIT", "dependencies": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.1.2" + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" }, "engines": { - "node": ">=0.10" + "node": ">= 12.0.0" } }, "node_modules/randombytes": { diff --git a/package.json b/package.json index 7d23ae8..4aea9cc 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "pwacompat": "^2.0.17", "qrcode": "^1.5.4", "qs": "^6.14.0", + "quill": "^2.0.3", "socket.io-client": "^4.8.1", "unplugin-vue-markdown": "^29.1.0", "uuid": "^11.1.0", diff --git a/src/components/QuillEditor.vue b/src/components/QuillEditor.vue new file mode 100644 index 0000000..55c39b2 --- /dev/null +++ b/src/components/QuillEditor.vue @@ -0,0 +1,110 @@ + + + + + From 08c3698dd8490508586302f878fb5ad0405dc18d Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Thu, 17 Jul 2025 13:57:50 +0200 Subject: [PATCH 03/21] update Editor usage --- src/components/QuillEditor.vue | 34 ++++++++++++++----- .../admin/club/newsletter/NewsletterData.vue | 3 +- .../admin/club/newsletter/NewsletterDates.vue | 3 +- .../club/newsletter/NewsletterOverview.vue | 6 ++-- .../admin/club/protocol/ProtocolAgenda.vue | 3 +- .../admin/club/protocol/ProtocolDecisions.vue | 3 +- .../admin/club/protocol/ProtocolOverview.vue | 3 +- .../admin/club/protocol/ProtocolVoting.vue | 3 +- 8 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/components/QuillEditor.vue b/src/components/QuillEditor.vue index 55c39b2..8264879 100644 --- a/src/components/QuillEditor.vue +++ b/src/components/QuillEditor.vue @@ -4,7 +4,7 @@ diff --git a/src/views/admin/club/newsletter/NewsletterDates.vue b/src/views/admin/club/newsletter/NewsletterDates.vue index 66a9baf..b47c903 100644 --- a/src/views/admin/club/newsletter/NewsletterDates.vue +++ b/src/views/admin/club/newsletter/NewsletterDates.vue @@ -107,8 +107,7 @@ import { defineComponent } from "vue"; import { mapActions, mapState, mapWritableState } from "pinia"; import Spinner from "@/components/Spinner.vue"; -import { QuillEditor } from "@vueup/vue-quill"; -import "@vueup/vue-quill/dist/vue-quill.snow.css"; +import QuillEditor from "@/components/QuillEditor.vue"; import { toolbarOptions } from "@/helpers/quillConfig"; import { useNewsletterDatesStore } from "@/stores/admin/club/newsletter/newsletterDates"; import { useAbilityStore } from "@/stores/ability"; diff --git a/src/views/admin/club/newsletter/NewsletterOverview.vue b/src/views/admin/club/newsletter/NewsletterOverview.vue index 5283ac0..1f4e1f9 100644 --- a/src/views/admin/club/newsletter/NewsletterOverview.vue +++ b/src/views/admin/club/newsletter/NewsletterOverview.vue @@ -18,13 +18,12 @@ @@ -42,8 +41,7 @@ import { defineComponent } from "vue"; import { mapActions, mapState, mapWritableState } from "pinia"; import Spinner from "@/components/Spinner.vue"; import { useNewsletterStore } from "@/stores/admin/club/newsletter/newsletter"; -import { QuillEditor } from "@vueup/vue-quill"; -import "@vueup/vue-quill/dist/vue-quill.snow.css"; +import QuillEditor from "@/components/QuillEditor.vue"; import { toolbarOptions } from "@/helpers/quillConfig"; import { useAbilityStore } from "@/stores/ability"; diff --git a/src/views/admin/club/protocol/ProtocolAgenda.vue b/src/views/admin/club/protocol/ProtocolAgenda.vue index 8e17344..300facc 100644 --- a/src/views/admin/club/protocol/ProtocolAgenda.vue +++ b/src/views/admin/club/protocol/ProtocolAgenda.vue @@ -78,8 +78,7 @@ import { defineComponent } from "vue"; import { mapActions, mapState, mapWritableState } from "pinia"; import Spinner from "@/components/Spinner.vue"; -import { QuillEditor } from "@vueup/vue-quill"; -import "@vueup/vue-quill/dist/vue-quill.snow.css"; +import QuillEditor from "@/components/QuillEditor.vue"; import { toolbarOptions } from "@/helpers/quillConfig"; import { useProtocolAgendaStore } from "@/stores/admin/club/protocol/protocolAgenda"; import { useAbilityStore } from "@/stores/ability"; diff --git a/src/views/admin/club/protocol/ProtocolDecisions.vue b/src/views/admin/club/protocol/ProtocolDecisions.vue index e63570e..2d3dd3a 100644 --- a/src/views/admin/club/protocol/ProtocolDecisions.vue +++ b/src/views/admin/club/protocol/ProtocolDecisions.vue @@ -78,8 +78,7 @@ import { defineComponent } from "vue"; import { mapActions, mapState, mapWritableState } from "pinia"; import Spinner from "@/components/Spinner.vue"; -import { QuillEditor } from "@vueup/vue-quill"; -import "@vueup/vue-quill/dist/vue-quill.snow.css"; +import QuillEditor from "@/components/QuillEditor.vue"; import { toolbarOptions } from "@/helpers/quillConfig"; import { useProtocolDecisionStore } from "@/stores/admin/club/protocol/protocolDecision"; import { useAbilityStore } from "@/stores/ability"; diff --git a/src/views/admin/club/protocol/ProtocolOverview.vue b/src/views/admin/club/protocol/ProtocolOverview.vue index d5f984a..7c696f7 100644 --- a/src/views/admin/club/protocol/ProtocolOverview.vue +++ b/src/views/admin/club/protocol/ProtocolOverview.vue @@ -64,8 +64,7 @@ import { defineComponent } from "vue"; import { mapActions, mapState, mapWritableState } from "pinia"; import Spinner from "@/components/Spinner.vue"; import { useProtocolStore } from "@/stores/admin/club/protocol/protocol"; -import { QuillEditor } from "@vueup/vue-quill"; -import "@vueup/vue-quill/dist/vue-quill.snow.css"; +import QuillEditor from "@/components/QuillEditor.vue"; import { toolbarOptions } from "@/helpers/quillConfig"; import { useAbilityStore } from "@/stores/ability"; diff --git a/src/views/admin/club/protocol/ProtocolVoting.vue b/src/views/admin/club/protocol/ProtocolVoting.vue index 6d26871..0692486 100644 --- a/src/views/admin/club/protocol/ProtocolVoting.vue +++ b/src/views/admin/club/protocol/ProtocolVoting.vue @@ -95,8 +95,7 @@ import { defineComponent } from "vue"; import { mapActions, mapState, mapWritableState } from "pinia"; import Spinner from "@/components/Spinner.vue"; -import { QuillEditor } from "@vueup/vue-quill"; -import "@vueup/vue-quill/dist/vue-quill.snow.css"; +import QuillEditor from "@/components/QuillEditor.vue"; import { toolbarOptions } from "@/helpers/quillConfig"; import { useProtocolVotingStore } from "@/stores/admin/club/protocol/protocolVoting"; import { useAbilityStore } from "@/stores/ability"; From e6dfde058d2e239ca05666ac93a68e27bd63ff41 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 18 Jul 2025 15:18:09 +0200 Subject: [PATCH 04/21] rewirte in composition api to prevent this ref errors --- src/components/QuillEditor.vue | 217 ++++++++++++++++----------------- 1 file changed, 108 insertions(+), 109 deletions(-) diff --git a/src/components/QuillEditor.vue b/src/components/QuillEditor.vue index 8264879..6787edf 100644 --- a/src/components/QuillEditor.vue +++ b/src/components/QuillEditor.vue @@ -3,126 +3,125 @@ - From 4265ed679197a64c3f89379549d35f5d2bc49e5d Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 18 Jul 2025 15:52:54 +0200 Subject: [PATCH 05/21] enhance unmount and format --- src/components/QuillEditor.vue | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/components/QuillEditor.vue b/src/components/QuillEditor.vue index 6787edf..ae00810 100644 --- a/src/components/QuillEditor.vue +++ b/src/components/QuillEditor.vue @@ -1,5 +1,7 @@ + + From 53fd89dd9ebca766f2467f76951b58a6ffc3ec8b Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 18 Jul 2025 16:16:07 +0200 Subject: [PATCH 06/21] fix: return text with normal whitespace --- src/components/QuillEditor.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/QuillEditor.vue b/src/components/QuillEditor.vue index ae00810..1cd192d 100644 --- a/src/components/QuillEditor.vue +++ b/src/components/QuillEditor.vue @@ -113,9 +113,9 @@ function getContent(): string | Delta { if (props.contentType === "delta") { return (instance.value?.getContents() ?? {}) as Delta; } else if (props.contentType === "html") { - return instance.value?.getSemanticHTML() ?? ""; + return instance.value?.getSemanticHTML().replace(/ /g, " ") ?? ""; } else { - return instance.value?.getText() ?? ""; + return instance.value?.getText().replace(/ /g, " ") ?? ""; } } function setContent(content: Delta | string) { From ada4da7aa890f9d8f3f7e5fd7f16f83b6883f1cb Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 18 Jul 2025 16:17:00 +0200 Subject: [PATCH 07/21] 1.7.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0eb9855..c80c45f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ff-admin", - "version": "1.7.1", + "version": "1.7.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ff-admin", - "version": "1.7.1", + "version": "1.7.2", "license": "AGPL-3.0-only", "dependencies": { "@fullcalendar/core": "^6.1.18", diff --git a/package.json b/package.json index 836ec96..d9cac98 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ff-admin", - "version": "1.7.1", + "version": "1.7.2", "description": "Feuerwehr/Verein Mitgliederverwaltung UI", "type": "module", "scripts": { From 7252ae74ba7e7d8a99399437ac63c2b58f2aff91 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sat, 19 Jul 2025 11:06:10 +0200 Subject: [PATCH 08/21] package update and CVE close --- package-lock.json | 292 ++++++++++------------------------------------ package.json | 9 +- 2 files changed, 64 insertions(+), 237 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0eb9855..b53f993 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,10 +18,9 @@ "@headlessui/vue": "^1.7.23", "@heroicons/vue": "^2.2.0", "@tailwindcss/vite": "^4.1.11", - "@vueup/vue-quill": "^1.2.0", "axios": "^1.10.0", "event-source-polyfill": "^1.0.31", - "grapesjs": "^0.22.9", + "grapesjs": "^0.22.11", "grapesjs-preset-newsletter": "^1.0.2", "highlight.js": "^11.11.1", "jwt-decode": "^4.0.0", @@ -56,7 +55,7 @@ "@types/lodash.differencewith": "^4.5.9", "@types/lodash.isequal": "^4.5.8", "@types/markdown-it": "^14.1.2", - "@types/node": "^24.0.13", + "@types/node": "^24.0.15", "@types/nprogress": "^0.2.3", "@types/qrcode": "^1.5.5", "@types/qs": "^6.14.0", @@ -72,10 +71,10 @@ "prettier": "^3.6.2", "tailwindcss": "^4.1.11", "typescript": "^5.8.3", - "vite": "^7.0.4", + "vite": "^7.0.5", "vite-plugin-pwa": "^1.0.1", "vite-plugin-vue-devtools": "^7.7.7", - "vue-tsc": "^3.0.1" + "vue-tsc": "^3.0.3" } }, "node_modules/@alloc/quick-lru": { @@ -2268,9 +2267,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2352,13 +2351,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz", + "integrity": "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.1", "levn": "^0.4.1" }, "engines": { @@ -2893,29 +2892,6 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", @@ -3925,9 +3901,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.0.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.13.tgz", - "integrity": "sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==", + "version": "24.0.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.15.tgz", + "integrity": "sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -4277,30 +4253,30 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.17", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.17.tgz", - "integrity": "sha512-chmRZMbKmcGpKMoO7Reb70uiLrzo0KWC2CkFttKUuKvrE+VYgi+fL9vWMJ07Fv5ulX0V1TAyyacN9q3nc5/ecA==", + "version": "2.4.20", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.20.tgz", + "integrity": "sha512-dRDF1G33xaAIDqR6+mXUIjXYdu9vzSxlMGfMEwBxQsfY/JMUEXSpLTR057oTKlUQ2nIvCmP9k94A8h8z2VrNSA==", "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.17" + "@volar/source-map": "2.4.20" } }, "node_modules/@volar/source-map": { - "version": "2.4.17", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.17.tgz", - "integrity": "sha512-QDybtQyO3Ms/NjFqNHTC5tbDN2oK5VH7ZaKrcubtfHBDj63n2pizHC3wlMQ+iT55kQXZUUAbmBX5L1C8CHFeBw==", + "version": "2.4.20", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.20.tgz", + "integrity": "sha512-mVjmFQH8mC+nUaVwmbxoYUy8cww+abaO8dWzqPUjilsavjxH0jCJ3Mp8HFuHsdewZs2c+SP+EO7hCd8Z92whJg==", "dev": true, "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.17", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.17.tgz", - "integrity": "sha512-3paEFNh4P5DkgNUB2YkTRrfUekN4brAXxd3Ow1syMqdIPtCZHbUy4AW99S5RO/7mzyTWPMdDSo3mqTpB/LPObQ==", + "version": "2.4.20", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.20.tgz", + "integrity": "sha512-Oc4DczPwQyXcVbd+5RsNEqX6ia0+w3p+klwdZQ6ZKhFjWoBP9PCPQYlKYRi/tDemWphW93P/Vv13vcE9I9D2GQ==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.17", + "@volar/language-core": "2.4.20", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -4531,20 +4507,20 @@ } }, "node_modules/@vue/language-core": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.0.1.tgz", - "integrity": "sha512-sq+/Mc1IqIexWEQ+Q2XPiDb5SxSvY5JPqHnMOl/PlF5BekslzduX8dglSkpC17VeiAQB6dpS+4aiwNLJRduCNw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.0.3.tgz", + "integrity": "sha512-I9wY0ULMN9tMSua+2C7g+ez1cIziVMUzIHlDYGSl2rtru3Eh4sXj95vZ+4GBuXwwPnEmYfzSApVbXiVbI8V5Gg==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.17", + "@volar/language-core": "2.4.20", "@vue/compiler-dom": "^3.5.0", "@vue/compiler-vue2": "^2.7.16", "@vue/shared": "^3.5.0", "alien-signals": "^2.0.5", - "minimatch": "^10.0.1", "muggle-string": "^0.4.1", - "path-browserify": "^1.0.1" + "path-browserify": "^1.0.1", + "picomatch": "^4.0.2" }, "peerDependencies": { "typescript": "*" @@ -4555,20 +4531,17 @@ } } }, - "node_modules/@vue/language-core/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "node_modules/@vue/language-core/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/@vue/reactivity": { @@ -4640,65 +4613,6 @@ } } }, - "node_modules/@vueup/vue-quill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.2.0.tgz", - "integrity": "sha512-kd5QPSHMDpycklojPXno2Kw2JSiKMYduKYQckTm1RJoVDA557MnyUXgcuuDpry4HY/Rny9nGNcK+m3AHk94wag==", - "license": "MIT", - "dependencies": { - "quill": "^1.3.7", - "quill-delta": "^4.2.2" - }, - "peerDependencies": { - "vue": "^3.2.41" - } - }, - "node_modules/@vueup/vue-quill/node_modules/eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", - "license": "MIT" - }, - "node_modules/@vueup/vue-quill/node_modules/fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "license": "Apache-2.0" - }, - "node_modules/@vueup/vue-quill/node_modules/parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", - "license": "BSD-3-Clause" - }, - "node_modules/@vueup/vue-quill/node_modules/quill": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", - "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", - "license": "BSD-3-Clause", - "dependencies": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.2", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" - } - }, - "node_modules/@vueup/vue-quill/node_modules/quill/node_modules/quill-delta": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", - "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", - "license": "MIT", - "dependencies": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.1.2" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -5062,6 +4976,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -5182,15 +5097,6 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/codemirror": { "version": "5.63.0", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.0.tgz", @@ -5496,26 +5402,6 @@ "node": ">=8.6" } }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "license": "MIT", - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5567,6 +5453,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -5597,6 +5484,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -6113,19 +6001,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -6298,12 +6173,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -6645,6 +6514,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6856,9 +6726,9 @@ "license": "ISC" }, "node_modules/grapesjs": { - "version": "0.22.9", - "resolved": "https://registry.npmjs.org/grapesjs/-/grapesjs-0.22.9.tgz", - "integrity": "sha512-ni9b/M1ydkq3ifkOVRWf1iL8JcGmwpQqX3zdrTvOg1KCxYX0dLX5bg5EpQmS/bewHW2r+8c47SdoNCbUiVOZKg==", + "version": "0.22.11", + "resolved": "https://registry.npmjs.org/grapesjs/-/grapesjs-0.22.11.tgz", + "integrity": "sha512-zGG13MEPDwbnijjJ56GZ9mCWIPbcZ53OXyC6fIDiipJC3/ZnsRSDMIivzltoVOn61cv64tcHuyrcltCuVeMi+A==", "license": "BSD-3-Clause", "dependencies": { "@types/backbone": "1.4.15", @@ -6948,6 +6818,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -7137,22 +7008,6 @@ "node": ">= 0.4" } }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -7282,6 +7137,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -7479,6 +7335,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -8609,26 +8466,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9177,23 +9019,6 @@ "npm": ">=8.2.3" } }, - "node_modules/quill-delta": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-4.2.2.tgz", - "integrity": "sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==", - "license": "MIT", - "dependencies": { - "fast-diff": "1.2.0", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0" - } - }, - "node_modules/quill-delta/node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "license": "Apache-2.0" - }, "node_modules/quill/node_modules/quill-delta": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", @@ -9279,6 +9104,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -9617,6 +9443,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -9634,6 +9461,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -10852,9 +10680,9 @@ } }, "node_modules/vite": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz", - "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz", + "integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -11157,14 +10985,14 @@ "license": "MIT" }, "node_modules/vue-tsc": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.0.1.tgz", - "integrity": "sha512-UvMLQD0hAGL1g/NfEQelnSVB4H5gtf/gz2lJKjMMwWNOUmSNyWkejwJagAxEbSjtV5CPPJYslOtoSuqJ63mhdg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.0.3.tgz", + "integrity": "sha512-uU1OMSzWE8/y0+kDTc0iEIu9v82bmFkGyJpAO/x3wQqBkkHkButKgtygREyOkxL4E/xtcf/ExvgNhhjdzonldw==", "dev": true, "license": "MIT", "dependencies": { - "@volar/typescript": "2.4.17", - "@vue/language-core": "3.0.1" + "@volar/typescript": "2.4.20", + "@vue/language-core": "3.0.3" }, "bin": { "vue-tsc": "bin/vue-tsc.js" diff --git a/package.json b/package.json index 836ec96..e58b5ba 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,9 @@ "@headlessui/vue": "^1.7.23", "@heroicons/vue": "^2.2.0", "@tailwindcss/vite": "^4.1.11", - "@vueup/vue-quill": "^1.2.0", "axios": "^1.10.0", "event-source-polyfill": "^1.0.31", - "grapesjs": "^0.22.9", + "grapesjs": "^0.22.11", "grapesjs-preset-newsletter": "^1.0.2", "highlight.js": "^11.11.1", "jwt-decode": "^4.0.0", @@ -71,7 +70,7 @@ "@types/lodash.differencewith": "^4.5.9", "@types/lodash.isequal": "^4.5.8", "@types/markdown-it": "^14.1.2", - "@types/node": "^24.0.13", + "@types/node": "^24.0.15", "@types/nprogress": "^0.2.3", "@types/qrcode": "^1.5.5", "@types/qs": "^6.14.0", @@ -87,9 +86,9 @@ "prettier": "^3.6.2", "tailwindcss": "^4.1.11", "typescript": "^5.8.3", - "vite": "^7.0.4", + "vite": "^7.0.5", "vite-plugin-pwa": "^1.0.1", "vite-plugin-vue-devtools": "^7.7.7", - "vue-tsc": "^3.0.1" + "vue-tsc": "^3.0.3" } } From f94a1e5d2f6835b0c39b11c7b6af471bd7bb4690 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sat, 19 Jul 2025 11:09:17 +0200 Subject: [PATCH 09/21] 1.7.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1aedae5..296066f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ff-admin", - "version": "1.7.2", + "version": "1.7.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ff-admin", - "version": "1.7.2", + "version": "1.7.3", "license": "AGPL-3.0-only", "dependencies": { "@fullcalendar/core": "^6.1.18", diff --git a/package.json b/package.json index 4a81073..528cb41 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ff-admin", - "version": "1.7.2", + "version": "1.7.3", "description": "Feuerwehr/Verein Mitgliederverwaltung UI", "type": "module", "scripts": { From e755a4ec37391cbd358a3194e1438aa22adb78b8 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Tue, 22 Jul 2025 07:50:26 +0200 Subject: [PATCH 10/21] enhance: allow longpress and contextmenu copy paste --- package-lock.json | 45 ++++++++++++++++++ package.json | 3 +- src/App.vue | 34 +++++++++++--- src/components/ContextMenu.vue | 3 +- src/components/CopyPasteContextMenu.vue | 61 +++++++++++++++++++++++++ src/components/Modal.vue | 11 ++--- src/stores/context-menu.ts | 5 +- 7 files changed, 144 insertions(+), 18 deletions(-) create mode 100644 src/components/CopyPasteContextMenu.vue diff --git a/package-lock.json b/package-lock.json index 1aedae5..3671099 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@headlessui/vue": "^1.7.23", "@heroicons/vue": "^2.2.0", "@tailwindcss/vite": "^4.1.11", + "@vueuse/core": "^13.5.0", "axios": "^1.10.0", "event-source-polyfill": "^1.0.31", "grapesjs": "^0.22.11", @@ -3967,6 +3968,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.36.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.36.0.tgz", @@ -4613,6 +4620,44 @@ } } }, + "node_modules/@vueuse/core": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.5.0.tgz", + "integrity": "sha512-wV7z0eUpifKmvmN78UBZX8T7lMW53Nrk6JP5+6hbzrB9+cJ3jr//hUlhl9TZO/03bUkMK6gGkQpqOPWoabr72g==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "13.5.0", + "@vueuse/shared": "13.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.5.0.tgz", + "integrity": "sha512-euhItU3b0SqXxSy8u1XHxUCdQ8M++bsRs+TYhOLDU/OykS7KvJnyIFfep0XM5WjIFry9uAPlVSjmVHiqeshmkw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.5.0.tgz", + "integrity": "sha512-K7GrQIxJ/ANtucxIXbQlUHdB0TPA8c+q5i+zbrjxuhJCnJ9GtBg75sBSnvmLSxHKPg2Yo8w62PWksl9kwH0Q8g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", diff --git a/package.json b/package.json index 4a81073..6d47398 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Feuerwehr/Verein Mitgliederverwaltung UI", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --host", "build": "run-p type-check \"build-only {@}\" --", "preview": "vite preview", "build-only": "vite build", @@ -33,6 +33,7 @@ "@headlessui/vue": "^1.7.23", "@heroicons/vue": "^2.2.0", "@tailwindcss/vite": "^4.1.11", + "@vueuse/core": "^13.5.0", "axios": "^1.10.0", "event-source-polyfill": "^1.0.31", "grapesjs": "^0.22.11", diff --git a/src/App.vue b/src/App.vue index 8ee85e5..07f15ca 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,11 +2,11 @@ -
-
+ +
-