diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9aed68c9..d0ace8ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,15 @@ importers: '@sa/materials': specifier: workspace:* version: link:packages/materials + '@sa/tinymce': + specifier: workspace:* + version: link:packages/tinymce '@sa/utils': specifier: workspace:* version: link:packages/utils + '@types/streamsaver': + specifier: ^2.0.5 + version: 2.0.5 '@vueuse/core': specifier: 13.4.0 version: 13.4.0(vue@3.5.17(typescript@5.8.3)) @@ -44,9 +50,18 @@ importers: echarts: specifier: 5.6.0 version: 5.6.0 + highlight.js: + specifier: ^11.11.1 + version: 11.11.1 + jsencrypt: + specifier: ^3.3.2 + version: 3.3.2 json5: specifier: 2.2.3 version: 2.2.3 + monaco-editor: + specifier: ^0.52.2 + version: 0.52.2 naive-ui: specifier: 2.42.0 version: 2.42.0(vue@3.5.17(typescript@5.8.3)) @@ -56,12 +71,18 @@ importers: pinia: specifier: 3.0.3 version: 3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + streamsaver: + specifier: ^2.0.6 + version: 2.0.6 tailwind-merge: specifier: 3.3.1 version: 3.3.1 vue: specifier: 3.5.17 version: 3.5.17(typescript@5.8.3) + vue-advanced-cropper: + specifier: ^2.8.9 + version: 2.8.9(vue@3.5.17(typescript@5.8.3)) vue-draggable-plus: specifier: 0.6.0 version: 0.6.0(@types/sortablejs@1.15.8) @@ -150,9 +171,15 @@ importers: vite: specifier: 7.0.0 version: 7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0) + vite-plugin-monaco-editor: + specifier: ^1.1.0 + version: 1.1.0(monaco-editor@0.52.2) vite-plugin-progress: specifier: 0.0.7 version: 0.0.7(vite@7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0)) + vite-plugin-static-copy: + specifier: ^3.0.2 + version: 3.1.0(vite@7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0)) vite-plugin-svg-icons: specifier: 2.0.1 version: 2.0.1(vite@7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0)) @@ -267,6 +294,16 @@ importers: specifier: 6.0.1 version: 6.0.1 + packages/tinymce: + dependencies: + tinymce: + specifier: 7.9.1 + version: 7.9.1 + devDependencies: + '@tinymce/tinymce-vue': + specifier: 6.2.0 + version: 6.2.0(tinymce@7.9.1)(vue@3.5.17(typescript@5.8.3)) + packages/uno-preset: {} packages/utils: @@ -1081,6 +1118,15 @@ packages: vue-eslint-parser: optional: true + '@tinymce/tinymce-vue@6.2.0': + resolution: {integrity: sha512-HiXKB+M3mJnWO6/8kY0HsP255+8zLZw5JMqHKVUvsXvzYyHW+splXXwYDYOkCYqf39R5nBqQaK2l2WL9rz3y5w==} + peerDependencies: + tinymce: ^7.0.0 || ^6.0.0 || ^5.5.1 + vue: ^3.0.0 + peerDependenciesMeta: + tinymce: + optional: true + '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -1121,6 +1167,9 @@ packages: '@types/sortablejs@1.15.8': resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + '@types/streamsaver@2.0.5': + resolution: {integrity: sha512-93o0zjV8swEhR2YI57h/2ytbJF8bJh7sI9GNB02TLJHdM4fWDxZuChwfWhyD8vt2ub4kw4rsfZ0C0yAUX+3gcg==} + '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} @@ -1688,6 +1737,9 @@ packages: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -1846,6 +1898,9 @@ packages: de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -1959,6 +2014,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + easy-bem@1.1.1: + resolution: {integrity: sha512-GJRqdiy2h+EXy6a8E6R+ubmqUM08BK0FWNq41k24fup6045biQ8NXxoXimiwegMQvFFV3t1emADdGNL1TlS61A==} + echarts@5.6.0: resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==} @@ -2751,6 +2809,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsencrypt@3.3.2: + resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==} + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -2948,6 +3009,9 @@ packages: mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + monaco-editor@0.52.2: + resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -3082,6 +3146,10 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + engines: {node: '>=18'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -3558,6 +3626,9 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + streamsaver@2.0.6: + resolution: {integrity: sha512-LK4e7TfCV8HzuM0PKXuVUfKyCB1FtT9L0EGxsFk5Up8njj0bXK8pJM9+Wq2Nya7/jslmCQwRK39LFm55h7NBTw==} + strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -3669,6 +3740,9 @@ packages: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + tinymce@7.9.1: + resolution: {integrity: sha512-zaOHwmiP1EqTeLRXAvVriDb00JYnfEjWGPdKEuac7MiZJ5aiDMZ4Unc98Gmajn+PBljOmO1GKV6G0KwWn3+k8A==} + to-object-path@0.3.0: resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} engines: {node: '>=0.10.0'} @@ -3876,12 +3950,23 @@ packages: '@nuxt/kit': optional: true + vite-plugin-monaco-editor@1.1.0: + resolution: {integrity: sha512-IvtUqZotrRoVqwT0PBBDIZPNraya3BxN/bfcNfnxZ5rkJiGcNtO5eAOWWSgT7zullIAEqQwxMU83yL9J5k7gww==} + peerDependencies: + monaco-editor: '>=0.33.0' + vite-plugin-progress@0.0.7: resolution: {integrity: sha512-zyvKdcc/X+6hnw3J1HVV1TKrlFKC4Rh8GnDnWG/2qhRXjqytTcM++xZ+SAPnoDsSyWl8O93ymK0wZRgHAoglEQ==} engines: {node: '>=14', pnpm: '>=7.0.0'} peerDependencies: vite: '>2.0.0-0' + vite-plugin-static-copy@3.1.0: + resolution: {integrity: sha512-ONFBaYoN1qIiCxMCfeHI96lqLza7ujx/QClIXp4kEULUbyH2qLgYoaL8JHhk3FWjSB4TpzoaN3iMCyCFldyXzw==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite-plugin-svg-icons@2.0.1: resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==} peerDependencies: @@ -3946,6 +4031,12 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vue-advanced-cropper@2.8.9: + resolution: {integrity: sha512-1jc5gO674kVGpJKekoaol6ZlwaF5VYDLSBwBOUpViW0IOrrRsyLw6XNszjEqgbavvqinlKNS6Kqlom3B5M72Tw==} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + vue: ^3.0.0 + vue-demi@0.13.11: resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} engines: {node: '>=12'} @@ -4799,6 +4890,12 @@ snapshots: - eslint-import-resolver-node - supports-color + '@tinymce/tinymce-vue@6.2.0(tinymce@7.9.1)(vue@3.5.17(typescript@5.8.3))': + dependencies: + vue: 3.5.17(typescript@5.8.3) + optionalDependencies: + tinymce: 7.9.1 + '@trysound/sax@0.2.0': {} '@tybys/wasm-util@0.9.0': @@ -4832,6 +4929,8 @@ snapshots: '@types/sortablejs@1.15.8': {} + '@types/streamsaver@2.0.5': {} + '@types/svgo@2.6.4': dependencies: '@types/node': 24.0.4 @@ -5536,6 +5635,8 @@ snapshots: isobject: 3.0.1 static-extend: 0.1.2 + classnames@2.5.1: {} + clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -5685,6 +5786,8 @@ snapshots: de-indent@1.0.2: {} + debounce@1.2.1: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -5788,6 +5891,8 @@ snapshots: eastasianwidth@0.2.0: {} + easy-bem@1.1.1: {} + echarts@5.6.0: dependencies: tslib: 2.3.0 @@ -6702,6 +6807,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsencrypt@3.3.2: {} + jsesc@3.0.2: {} jsesc@3.1.0: {} @@ -6891,6 +6998,8 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 + monaco-editor@0.52.2: {} + mrmime@2.0.1: {} ms@2.0.0: {} @@ -7053,6 +7162,8 @@ snapshots: dependencies: p-limit: 3.1.0 + p-map@7.0.3: {} + package-json-from-dist@1.0.1: {} package-manager-detector@1.3.0: {} @@ -7548,6 +7659,8 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + streamsaver@2.0.6: {} + strict-uri-encode@1.1.0: {} string-width@4.2.3: @@ -7681,6 +7794,8 @@ snapshots: fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 + tinymce@7.9.1: {} + to-object-path@0.3.0: dependencies: kind-of: 3.2.2 @@ -7944,6 +8059,10 @@ snapshots: - rollup - supports-color + vite-plugin-monaco-editor@1.1.0(monaco-editor@0.52.2): + dependencies: + monaco-editor: 0.52.2 + vite-plugin-progress@0.0.7(vite@7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0)): dependencies: picocolors: 1.1.1 @@ -7951,6 +8070,15 @@ snapshots: rd: 2.0.1 vite: 7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0) + vite-plugin-static-copy@3.1.0(vite@7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0)): + dependencies: + chokidar: 3.6.0 + fs-extra: 11.3.0 + p-map: 7.0.3 + picocolors: 1.1.1 + tinyglobby: 0.2.14 + vite: 7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0) + vite-plugin-svg-icons@2.0.1(vite@7.0.0(@types/node@24.0.4)(jiti@2.4.2)(sass@1.89.2)(tsx@4.20.3)(yaml@2.8.0)): dependencies: '@types/svgo': 2.6.4 @@ -8019,6 +8147,13 @@ snapshots: vscode-uri@3.1.0: {} + vue-advanced-cropper@2.8.9(vue@3.5.17(typescript@5.8.3)): + dependencies: + classnames: 2.5.1 + debounce: 1.2.1 + easy-bem: 1.1.1 + vue: 3.5.17(typescript@5.8.3) + vue-demi@0.13.11(vue@3.5.17(typescript@5.8.3)): dependencies: vue: 3.5.17(typescript@5.8.3)