diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 05aaec2f1..15da6ec01 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -43,6 +43,7 @@ "firebase": "^10.3.1", "floating-vue": "^2.0.0-beta.24", "flowbite": "^1.8.1", + "gridstack": "^9.2.0", "js-cookie": "^3.0.5", "jwt-decode": "^3.1.2", "mitt": "^3.0.1", @@ -65,6 +66,7 @@ "vue-simple-password-meter": "^1.3.4", "vue-toastification": "^2.0.0-rc.5", "vue-top-progress": "^0.7.0", + "vue-ts-responsive-grid-layout": "^1.2.1", "vue3-gettext": "^3.0.0-beta.1", "vue3-popper": "^1.5.0", "vuedraggable": "^4.1.0", @@ -5395,6 +5397,11 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -7609,6 +7616,14 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.503.tgz", "integrity": "sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==" }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "dependencies": { + "batch-processor": "1.0.0" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -9278,6 +9293,21 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/gridstack": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/gridstack/-/gridstack-9.2.0.tgz", + "integrity": "sha512-+uWb4p1Za3j6OfvumXzuWQ4EcDh3kZZFLr0vONLPdrtGPJuxb73TjqttEu4igW7iP2Y80kewfYnNT6kQ0blJQQ==", + "funding": [ + { + "type": "paypal", + "url": "https://www.paypal.me/alaind831" + }, + { + "type": "venmo", + "url": "https://www.venmo.com/adumesny" + } + ] + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -16081,6 +16111,197 @@ "resolved": "https://registry.npmjs.org/vue-top-progress/-/vue-top-progress-0.7.0.tgz", "integrity": "sha512-pkZQuT3yxkRtB3QvrL2eF1h/F01JbJaI3eqdiM4CGZbsexLKJctYRolGHzK87c11moyx+aK8lwzeq8aPPoNOqA==" }, + "node_modules/vue-ts-responsive-grid-layout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vue-ts-responsive-grid-layout/-/vue-ts-responsive-grid-layout-1.2.1.tgz", + "integrity": "sha512-ugh995mC35BJ+u//X9CcWvnkqxXF593Uevd0y6SYX8Z1DEZYU5cPgSTvqTvI9cFScKy2uHJCVRZ5cEug15MgHg==", + "dependencies": { + "@interactjs/actions": "^1.10.17", + "@interactjs/auto-scroll": "^1.10.17", + "@interactjs/auto-start": "^1.10.17", + "@interactjs/dev-tools": "^1.10.17", + "@interactjs/interactjs": "^1.10.17", + "@interactjs/modifiers": "^1.10.17", + "element-resize-detector": "^1.2.4", + "mitt": "^3.0.0" + }, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/gwinnem" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/actions": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/actions/-/actions-1.10.18.tgz", + "integrity": "sha512-3hsDg87HNZUNE2G3heshSdyrUu4yd2I3b4hb5yz3pLIqvHoPyqZSreOs1l5Rb5NfecS1SNwR0Gygoyy/F3qGZA==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/auto-scroll": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/auto-scroll/-/auto-scroll-1.10.18.tgz", + "integrity": "sha512-1rj8O/0cweCyuwlvULC6fF20uAKwsrWKlhOrWYbuRIl0+IJTJa/vpOuIUFUhppG+ELqkwp0u2vOCtMWfVUMqrA==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/auto-start": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/auto-start/-/auto-start-1.10.18.tgz", + "integrity": "sha512-LNItRKgMI68P3JGFfwRulkhsDfCjN0AYguKehWNkTlmtzWHtHK4GRwr4rpHoCqSZJHM/GBZOZQSq/0g9d/Hzow==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/core": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/core/-/core-1.10.18.tgz", + "integrity": "sha512-shXHL+U5BMLtWMY84Bpo7OCMEueQdj0NgDGZDPzXMrmxriz1Ovn8fw2VmI18xFWryTbKJc2RwRDK/NJ6Vg+tNg==", + "peerDependencies": { + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/dev-tools": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/dev-tools/-/dev-tools-1.10.18.tgz", + "integrity": "sha512-E/VcI8ZA9nwjUCsAyT5dNYmVYH3alCoRhgTmhuNyjMFUgwzw1owEkUSmnS8nzhsW30indlMvtFJVR/9+Onbp0A==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/modifiers": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/inertia": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/inertia/-/inertia-1.10.18.tgz", + "integrity": "sha512-68BNYAzRKK2LyhyLKwnX3hyRuVX9FYK4V8HcwGrztwP6fe3nkuUhjHeNRh1T7Lpt9n2P+UIvZZT86ZqYCa7Mew==", + "dependencies": { + "@interactjs/offset": "1.10.18" + }, + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/modifiers": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/interact": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/interact/-/interact-1.10.18.tgz", + "integrity": "sha512-09H1uUK3Ly25+DZAuocYee5TET08LfwcvtFOkr+MvdWETjAED5ZVQwrD+LzyUpJ7pQ1WOFGk03nF/QmnPDO43w==", + "dependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/interactjs": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/interactjs/-/interactjs-1.10.18.tgz", + "integrity": "sha512-0Kb6VL9kcum/YP0GjCy8lgQbfgs6KCBaz8AouMwUSN4Owx8D3YSOqxM4pHnYJbStufp4SkHcsspJy5nKGyk28Q==", + "dependencies": { + "@interactjs/actions": "1.10.18", + "@interactjs/auto-scroll": "1.10.18", + "@interactjs/auto-start": "1.10.18", + "@interactjs/core": "1.10.18", + "@interactjs/dev-tools": "1.10.18", + "@interactjs/inertia": "1.10.18", + "@interactjs/interact": "1.10.18", + "@interactjs/modifiers": "1.10.18", + "@interactjs/offset": "1.10.18", + "@interactjs/pointer-events": "1.10.18", + "@interactjs/reflow": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/modifiers": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/modifiers/-/modifiers-1.10.18.tgz", + "integrity": "sha512-Ahf/cOfUrpbjSaLzDdOECEITeEZuvA9ImWfGSdZaFmuPP3wDEIaY+oLa1A26y79XxGBMKsbB/2wIrLePcLq3Pg==", + "dependencies": { + "@interactjs/snappers": "1.10.18" + }, + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/offset": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/offset/-/offset-1.10.18.tgz", + "integrity": "sha512-oM2JbGpwuV67HUBNOx6cb/5iXIE+NRUGkO694/9EhY7C3VnAHusZbFpEMo6IvzoPu0BWhMsss6apE3V6FHMMFQ==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/pointer-events": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/pointer-events/-/pointer-events-1.10.18.tgz", + "integrity": "sha512-QPRgNXP5rVuBqFFUxfj3S+ZQ9e5OWIgmhz6lS4+kezqcMoa1p1lZ3c5FIs+Enfn4TvEkUuxKT9cqmJP9oi6YOA==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/reflow": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/reflow/-/reflow-1.10.18.tgz", + "integrity": "sha512-1VpKaWmh5oSjSH6VYpUiFScwK9cX3cu7HvX0vguzI3NjtvvRNrU8cqhPdWr9AE8FQlBf3lQ9ptgVbU9oh/SQyw==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/core": "1.10.18", + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/snappers": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/snappers/-/snappers-1.10.18.tgz", + "integrity": "sha512-FI6FkJCYrMgctZFX1A9YPC+GVaSJPKUsKgcs5lp+AShfhsuNXvXLAmfWV7JecO/GXfoNTbjmEWUqrKLTAyCYWw==", + "optionalDependencies": { + "@interactjs/interact": "1.10.18" + }, + "peerDependencies": { + "@interactjs/utils": "1.10.18" + } + }, + "node_modules/vue-ts-responsive-grid-layout/node_modules/@interactjs/utils": { + "version": "1.10.18", + "resolved": "https://registry.npmjs.org/@interactjs/utils/-/utils-1.10.18.tgz", + "integrity": "sha512-nt+uQat9pbjzNeP8I2X7rjBmmuoNwMCgXb+5Vl6zHHlOzM3Y6RATwsciR65E1X8Q/OrKtH2G49C1Zy1RoGw3UQ==" + }, "node_modules/vue-tsc": { "version": "1.8.8", "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.8.tgz",