diff --git a/package-lock.json b/package-lock.json index 644ccb494..5fd8c5597 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,11 +31,10 @@ "@tiptap/vue-3": "^3.3.0", "@unovis/ts": "^1.6.5", "@unovis/vue": "^1.6.5", - "@uppy/core": "^4.4.1", - "@uppy/drop-target": "^3.1.1", - "@uppy/thumbnail-generator": "^4.1.1", - "@uppy/utils": "^6.1.1", - "@uppy/xhr-upload": "^4.3.2", + "@uppy/core": "^5.2.0", + "@uppy/drop-target": "^4.1.0", + "@uppy/utils": "^7.2.0", + "@uppy/xhr-upload": "^5.2.0", "@vue-leaflet/vue-leaflet": "^0.10.1", "@vueuse/components": "^12.5.0", "@vueuse/core": "^12.8.2", @@ -44,6 +43,7 @@ "axios": "^1.5.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "compressorjs": "^1.3.0", "cropperjs": "^1.5.12", "dompurify": "^3.2.6", "filesize": "^10.1.0", @@ -4131,7 +4131,8 @@ "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "license": "MIT" }, "node_modules/@types/sortablejs": { "version": "1.15.8", @@ -4365,26 +4366,28 @@ } }, "node_modules/@uppy/companion-client": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-4.4.1.tgz", - "integrity": "sha512-ardMacShsfzaIbqHEH48YlpzWZkBj1qhAj0Dvn3r31p9d0HA5xFUvAdLYrZ6ezKvZ0RcDbf0SB5qCrQMkjscXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-5.1.1.tgz", + "integrity": "sha512-DzrOWTbIZHvtgAFXBMYHk2wD27NjpBSVhY2tEiEIUhPd2CxbFRZjHM/N3HOt3VwZEAP471QWFLlJRWPcIY3A2Q==", + "license": "MIT", "dependencies": { - "@uppy/utils": "^6.1.1", + "@uppy/utils": "^7.1.1", "namespace-emitter": "^2.0.1", "p-retry": "^6.1.0" }, "peerDependencies": { - "@uppy/core": "^4.4.1" + "@uppy/core": "^5.1.1" } }, "node_modules/@uppy/core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@uppy/core/-/core-4.4.1.tgz", - "integrity": "sha512-WQnphWj3bk0EYzy4j4rn7nEHKOExqYLm/YOWIpBjXZMY7tJIHbzpv60qHqE6oQsRMwmNcz3mkq8PGR5NubBbvQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-5.2.0.tgz", + "integrity": "sha512-uvfNyz4cnaplt7LYJmEZHuqOuav0tKp4a9WKJIaH6iIj7XiqYvS2J5SEByexAlUFlzefOAyjzj4Ja2dd/8aMrw==", + "license": "MIT", "dependencies": { "@transloadit/prettier-bytes": "^0.3.4", - "@uppy/store-default": "^4.2.0", - "@uppy/utils": "^6.1.1", + "@uppy/store-default": "^5.0.0", + "@uppy/utils": "^7.1.4", "lodash": "^4.17.21", "mime-match": "^1.0.2", "namespace-emitter": "^2.0.1", @@ -4410,52 +4413,44 @@ } }, "node_modules/@uppy/drop-target": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@uppy/drop-target/-/drop-target-3.1.1.tgz", - "integrity": "sha512-/2jnQ3DqfcWGjgoasLBLvwJ3fozavwSXFVULenDmPUI8YPjuxmEtOu61XnZ/OLhRnZo6Qm+kltSd+YUS0P/LNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@uppy/drop-target/-/drop-target-4.1.0.tgz", + "integrity": "sha512-QPOwlOfYlf4gOzdj75Mx0YxM0d6Jv1ui2aCERse1pwtIeQGQ0QPe5lmTi0o3p8dTnqACUmoM6SJOpAHQozCSkA==", + "license": "MIT", "dependencies": { - "@uppy/utils": "^6.1.1" + "@uppy/utils": "^7.1.4" }, "peerDependencies": { - "@uppy/core": "^4.4.1" + "@uppy/core": "^5.2.0" } }, "node_modules/@uppy/store-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-4.2.0.tgz", - "integrity": "sha512-PieFVa8yTvRHIqsNKfpO/yaJw5Ae/hT7uT58ryw7gvCBY5bHrNWxH5N0XFe8PFHMpLpLn8v3UXGx9ib9QkB6+Q==" - }, - "node_modules/@uppy/thumbnail-generator": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@uppy/thumbnail-generator/-/thumbnail-generator-4.1.1.tgz", - "integrity": "sha512-65znkGNgVTbVte51IKOhgxOpHGSwYj9Qik2jF2ZBocMbhBY4gPkWFwqMrKQBfddA9KbUa4jVe1psxhAQTzYgiA==", - "dependencies": { - "@uppy/utils": "^6.1.1", - "exifr": "^7.0.0" - }, - "peerDependencies": { - "@uppy/core": "^4.4.1" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-5.0.0.tgz", + "integrity": "sha512-hQtCSQ1yGiaval/wVYUWquYGDJ+bpQ7e4FhUUAsRQz1x1K+o7NBtjfp63O9I4Ks1WRoKunpkarZ+as09l02cPw==", + "license": "MIT" }, "node_modules/@uppy/utils": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-6.1.1.tgz", - "integrity": "sha512-60guVvz+TXvN1gEgbTjDAfleo6HeTGE02/9T+tycv7hVqIkzLbYsJBgVFhVY/Y2fBW0fOX/lzKc1kN4YZQtvpA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-6lC246qszMv6bTyl/+QyHwrudgeguWkA94ME1wHn+a6uRAvmtAEaUManIfGqTJfoKvWAiCJqdJPl5xRJjhAloQ==", + "license": "MIT", "dependencies": { - "lodash": "^4.17.21", - "preact": "^10.5.13" + "lodash": "^4.17.23", + "preact": "^10.26.10" } }, "node_modules/@uppy/xhr-upload": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-4.3.2.tgz", - "integrity": "sha512-dgj7MCZ50fM1mx446PWV/u3X4qgcRw26tIepoHfVI1UNby4p+GS7G7VxcE6IK9zM0epRXmhe609UdMtKWH7NaQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-5.2.0.tgz", + "integrity": "sha512-3LV/X5Of6BINnKplP+CwUJ0a4/7cRFfzxwGyXnW+uCrNQHoo09dttcz3begWHejGvzenQHuUnMO3Fxyc71Pryg==", + "license": "MIT", "dependencies": { - "@uppy/companion-client": "^4.4.1", - "@uppy/utils": "^6.1.1" + "@uppy/companion-client": "^5.1.1", + "@uppy/utils": "^7.2.0" }, "peerDependencies": { - "@uppy/core": "^4.4.1" + "@uppy/core": "^5.2.0" } }, "node_modules/@vitejs/plugin-legacy": { @@ -6102,6 +6097,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "node_modules/blueimp-canvas-to-blob": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", + "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==", + "license": "MIT" + }, "node_modules/bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -6798,6 +6799,16 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/compressorjs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/compressorjs/-/compressorjs-1.3.0.tgz", + "integrity": "sha512-TsvzkRgDm/6mIRUdxJbrTH7kfSW3oJzOw8b1xU60fziQSosTML5TczpO6Z4H1LGF0yRmTotk6r5UNhuRxEwA1A==", + "license": "MIT", + "dependencies": { + "blueimp-canvas-to-blob": "^3.29.0", + "is-blob": "^2.1.0" + } + }, "node_modules/computeds": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", @@ -8714,11 +8725,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/exifr": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/exifr/-/exifr-7.1.3.tgz", - "integrity": "sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==" - }, "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -9425,16 +9431,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fuse.js": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", - "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -10432,6 +10428,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-blob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", + "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -10640,9 +10648,10 @@ } }, "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", + "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -11388,9 +11397,10 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.22", @@ -12179,13 +12189,6 @@ "node": ">=0.10.0" } }, - "node_modules/nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", - "optional": true, - "peer": true - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -12636,6 +12639,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", @@ -12652,6 +12656,7 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -13095,9 +13100,10 @@ "license": "ISC" }, "node_modules/preact": { - "version": "10.25.4", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.4.tgz", - "integrity": "sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==", + "version": "10.29.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.2.tgz", + "integrity": "sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -14016,24 +14022,6 @@ "dev": true, "license": "MIT" }, - "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/rollup-plugin-visualizer": { "version": "5.9.2", "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz", @@ -17306,24 +17294,6 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, - "node_modules/yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -23624,23 +23594,23 @@ "requires": {} }, "@uppy/companion-client": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-4.4.1.tgz", - "integrity": "sha512-ardMacShsfzaIbqHEH48YlpzWZkBj1qhAj0Dvn3r31p9d0HA5xFUvAdLYrZ6ezKvZ0RcDbf0SB5qCrQMkjscXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-5.1.1.tgz", + "integrity": "sha512-DzrOWTbIZHvtgAFXBMYHk2wD27NjpBSVhY2tEiEIUhPd2CxbFRZjHM/N3HOt3VwZEAP471QWFLlJRWPcIY3A2Q==", "requires": { - "@uppy/utils": "^6.1.1", + "@uppy/utils": "^7.1.1", "namespace-emitter": "^2.0.1", "p-retry": "^6.1.0" } }, "@uppy/core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@uppy/core/-/core-4.4.1.tgz", - "integrity": "sha512-WQnphWj3bk0EYzy4j4rn7nEHKOExqYLm/YOWIpBjXZMY7tJIHbzpv60qHqE6oQsRMwmNcz3mkq8PGR5NubBbvQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-5.2.0.tgz", + "integrity": "sha512-uvfNyz4cnaplt7LYJmEZHuqOuav0tKp4a9WKJIaH6iIj7XiqYvS2J5SEByexAlUFlzefOAyjzj4Ja2dd/8aMrw==", "requires": { "@transloadit/prettier-bytes": "^0.3.4", - "@uppy/store-default": "^4.2.0", - "@uppy/utils": "^6.1.1", + "@uppy/store-default": "^5.0.0", + "@uppy/utils": "^7.1.4", "lodash": "^4.17.21", "mime-match": "^1.0.2", "namespace-emitter": "^2.0.1", @@ -23656,43 +23626,34 @@ } }, "@uppy/drop-target": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@uppy/drop-target/-/drop-target-3.1.1.tgz", - "integrity": "sha512-/2jnQ3DqfcWGjgoasLBLvwJ3fozavwSXFVULenDmPUI8YPjuxmEtOu61XnZ/OLhRnZo6Qm+kltSd+YUS0P/LNA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@uppy/drop-target/-/drop-target-4.1.0.tgz", + "integrity": "sha512-QPOwlOfYlf4gOzdj75Mx0YxM0d6Jv1ui2aCERse1pwtIeQGQ0QPe5lmTi0o3p8dTnqACUmoM6SJOpAHQozCSkA==", "requires": { - "@uppy/utils": "^6.1.1" + "@uppy/utils": "^7.1.4" } }, "@uppy/store-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-4.2.0.tgz", - "integrity": "sha512-PieFVa8yTvRHIqsNKfpO/yaJw5Ae/hT7uT58ryw7gvCBY5bHrNWxH5N0XFe8PFHMpLpLn8v3UXGx9ib9QkB6+Q==" - }, - "@uppy/thumbnail-generator": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@uppy/thumbnail-generator/-/thumbnail-generator-4.1.1.tgz", - "integrity": "sha512-65znkGNgVTbVte51IKOhgxOpHGSwYj9Qik2jF2ZBocMbhBY4gPkWFwqMrKQBfddA9KbUa4jVe1psxhAQTzYgiA==", - "requires": { - "@uppy/utils": "^6.1.1", - "exifr": "^7.0.0" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-5.0.0.tgz", + "integrity": "sha512-hQtCSQ1yGiaval/wVYUWquYGDJ+bpQ7e4FhUUAsRQz1x1K+o7NBtjfp63O9I4Ks1WRoKunpkarZ+as09l02cPw==" }, "@uppy/utils": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-6.1.1.tgz", - "integrity": "sha512-60guVvz+TXvN1gEgbTjDAfleo6HeTGE02/9T+tycv7hVqIkzLbYsJBgVFhVY/Y2fBW0fOX/lzKc1kN4YZQtvpA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-6lC246qszMv6bTyl/+QyHwrudgeguWkA94ME1wHn+a6uRAvmtAEaUManIfGqTJfoKvWAiCJqdJPl5xRJjhAloQ==", "requires": { - "lodash": "^4.17.21", - "preact": "^10.5.13" + "lodash": "^4.17.23", + "preact": "^10.26.10" } }, "@uppy/xhr-upload": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-4.3.2.tgz", - "integrity": "sha512-dgj7MCZ50fM1mx446PWV/u3X4qgcRw26tIepoHfVI1UNby4p+GS7G7VxcE6IK9zM0epRXmhe609UdMtKWH7NaQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-5.2.0.tgz", + "integrity": "sha512-3LV/X5Of6BINnKplP+CwUJ0a4/7cRFfzxwGyXnW+uCrNQHoo09dttcz3begWHejGvzenQHuUnMO3Fxyc71Pryg==", "requires": { - "@uppy/companion-client": "^4.4.1", - "@uppy/utils": "^6.1.1" + "@uppy/companion-client": "^5.1.1", + "@uppy/utils": "^7.2.0" } }, "@vitejs/plugin-legacy": { @@ -25069,6 +25030,11 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "blueimp-canvas-to-blob": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", + "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==" + }, "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -25646,6 +25612,15 @@ } } }, + "compressorjs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/compressorjs/-/compressorjs-1.3.0.tgz", + "integrity": "sha512-TsvzkRgDm/6mIRUdxJbrTH7kfSW3oJzOw8b1xU60fziQSosTML5TczpO6Z4H1LGF0yRmTotk6r5UNhuRxEwA1A==", + "requires": { + "blueimp-canvas-to-blob": "^3.29.0", + "is-blob": "^2.1.0" + } + }, "computeds": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", @@ -27085,11 +27060,6 @@ "safe-buffer": "^5.1.1" } }, - "exifr": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/exifr/-/exifr-7.1.3.tgz", - "integrity": "sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==" - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -27630,13 +27600,6 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, - "fuse.js": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", - "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", - "optional": true, - "peer": true - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -28424,6 +28387,11 @@ "has-bigints": "^1.0.1" } }, + "is-blob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", + "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==" + }, "is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -28572,9 +28540,9 @@ "dev": true }, "is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", + "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==" }, "is-number-object": { "version": "1.0.7", @@ -29019,9 +28987,9 @@ } }, "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" }, "lodash-es": { "version": "4.17.22", @@ -29660,13 +29628,6 @@ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, - "nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", - "optional": true, - "peer": true - }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -30342,9 +30303,9 @@ "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" }, "preact": { - "version": "10.25.4", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.4.tgz", - "integrity": "sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==" + "version": "10.29.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.2.tgz", + "integrity": "sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==" }, "prettier": { "version": "2.5.1", @@ -31111,17 +31072,6 @@ } } }, - "rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "fsevents": "~2.3.2" - } - }, "rollup-plugin-visualizer": { "version": "5.9.2", "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz", @@ -36387,14 +36337,6 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, - "yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", - "dev": true, - "optional": true, - "peer": true - }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index 0a267e331..d096c1ba4 100644 --- a/package.json +++ b/package.json @@ -59,11 +59,10 @@ "@tiptap/vue-3": "^3.3.0", "@unovis/ts": "^1.6.5", "@unovis/vue": "^1.6.5", - "@uppy/core": "^4.4.1", - "@uppy/drop-target": "^3.1.1", - "@uppy/thumbnail-generator": "^4.1.1", - "@uppy/utils": "^6.1.1", - "@uppy/xhr-upload": "^4.3.2", + "@uppy/core": "^5.2.0", + "@uppy/drop-target": "^4.1.0", + "@uppy/utils": "^7.2.0", + "@uppy/xhr-upload": "^5.2.0", "@vue-leaflet/vue-leaflet": "^0.10.1", "@vueuse/components": "^12.5.0", "@vueuse/core": "^12.8.2", @@ -72,6 +71,7 @@ "axios": "^1.5.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "compressorjs": "^1.3.0", "cropperjs": "^1.5.12", "dompurify": "^3.2.6", "filesize": "^10.1.0", diff --git a/resources/js/form/components/fields/editor/extensions/upload/UploadNode.vue b/resources/js/form/components/fields/editor/extensions/upload/UploadNode.vue index 9cfc8ecc9..b4e826a3c 100644 --- a/resources/js/form/components/fields/editor/extensions/upload/UploadNode.vue +++ b/resources/js/form/components/fields/editor/extensions/upload/UploadNode.vue @@ -19,12 +19,9 @@ const uploadComponent = ref>(); const upload = computed(() => uploadManager.getUpload(props.node.attrs['data-key'])); - function onThumbnailGenerated(preview: string) { + function onThumbnailGenerated(value: FormUploadFieldData['value']) { uploadManager.updateUpload(props.node.attrs['data-key'], { - file: { - ...upload.value.file, - thumbnail: preview, - } + file: value, }); } diff --git a/resources/js/form/components/fields/upload/Upload.vue b/resources/js/form/components/fields/upload/Upload.vue index 1c3d6877c..793e50a8e 100644 --- a/resources/js/form/components/fields/upload/Upload.vue +++ b/resources/js/form/components/fields/upload/Upload.vue @@ -6,7 +6,8 @@ import DropTarget from '@uppy/drop-target'; import Cropper from 'cropperjs'; import { - computed, nextTick, + computed, + nextTick, onMounted, onUnmounted, ref, useTemplateRef, @@ -63,7 +64,7 @@ (e: 'error', message: string, file: Blob | File): void (e: 'success', file: typeof props['value']): void (e: 'clear'): void - (e: 'thumbnail', preview: string): void + (e: 'thumbnail', preview: typeof props['value']): void (e: 'uploading', uploading: boolean): void (e: 'remove'): void (e: 'transform', value: typeof props['value']): void @@ -129,8 +130,8 @@ if(file.type === 'image/svg+xml') { transformedImg.value = URL.createObjectURL(file.data); } else if(file.type?.startsWith('image/')) { - const preview = await createThumbnail(file, { width: 300, height: 300 }); - emit('thumbnail', preview); + const preview = await createThumbnail(file, { width: 600, height: 600 }); + emit('thumbnail', { ...props.value, thumbnail: preview }); uppy.setFileState(file.id, { preview }); uppyFile.value = uppy.getFile(file.id); console.log('thumbnail:generated', JSON.parse(JSON.stringify(uppyFile.value))); @@ -144,6 +145,7 @@ return new Cropper(image, { aspectRatio: props.field.imageCropRatio[0] / props.field.imageCropRatio[1], autoCropArea: 1, + checkOrientation: false, ready: (e) => { resolve(e.currentTarget.cropper); }, @@ -161,6 +163,10 @@ const response = await fetch(await createThumbnail(uppyFile.value, { width: 1200, height: 1000 })); const blob = await response.blob(); persistedEditableImg.value = URL.createObjectURL(blob); + emit('thumbnail', { ...props.value, editable_thumbnail: persistedEditableImg.value }); + if(props.value) { + emit('input', { ...props.value, editable_thumbnail: persistedEditableImg.value }); + } } } else if(file.type?.startsWith('video/') || file.type?.startsWith('audio/')) { playablePreviewUrl.value = URL.createObjectURL(file.data); @@ -335,6 +341,7 @@ : null, autoCropArea: 1, guides: false, + checkOrientation: false, background: true, rotatable: true, restore: false, // reset crop area on resize because it's buggy diff --git a/resources/js/form/components/fields/upload/util/thumbnail.ts b/resources/js/form/components/fields/upload/util/thumbnail.ts index 927eca8f1..a1b880561 100644 --- a/resources/js/form/components/fields/upload/util/thumbnail.ts +++ b/resources/js/form/components/fields/upload/util/thumbnail.ts @@ -1,16 +1,20 @@ -import Uppy, { MinimalRequiredUppyFile, UppyFile } from "@uppy/core"; -import ThumbnailGenerator from "@uppy/thumbnail-generator"; - +import { UppyFile } from "@uppy/core"; +import Compressor from 'compressorjs'; export function createThumbnail(file: UppyFile, { width, height }: { width: number, height: number }) { return new Promise((resolve, reject) => { - new Uppy() - .use(ThumbnailGenerator, { thumbnailWidth: width, thumbnailHeight: height, thumbnailType: 'image/png' }) - .on('thumbnail:generated', (thumbnailFile, preview) => resolve(preview)) - .on('thumbnail:error', (error) => reject(error)) - .addFile({ - ...(file as MinimalRequiredUppyFile<{}, {}>), - preview: null - }); + new Compressor(file.data as File, { + checkOrientation: true, + maxWidth: width, + maxHeight: height, + quality: 0.8, + convertTypes: [], + success(blob) { + resolve(URL.createObjectURL(blob)); + }, + error(error) { + reject(error); + } + }); }); }