diff --git a/package-lock.json b/package-lock.json index 229bb639888..bc3f0dce568 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,6 +52,7 @@ "iframe-resizer": "^3.6.6", "jquery": "^3.6.0", "jwt-decode": "^3.1.2", + "lightningcss": "^1.33.0", "lz-string": "^1.4.4", "marked": "^18.0.3", "mathjax": "^3.2.2", @@ -8396,6 +8397,255 @@ "tailwindcss": "4.3.0" } }, + "node_modules/@tailwindcss/node/node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@tailwindcss/oxide": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", @@ -9447,9 +9697,9 @@ } }, "node_modules/acorn-walk/node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, "license": "MIT", "optional": true, @@ -16168,9 +16418,9 @@ } }, "node_modules/gulp-postcss/node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, "license": "MIT", "optional": true, @@ -19235,9 +19485,9 @@ } }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -19250,23 +19500,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -19284,9 +19534,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -19304,9 +19554,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -19324,9 +19574,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -19344,9 +19594,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -19364,9 +19614,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], @@ -19384,9 +19634,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], @@ -19404,9 +19654,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], @@ -19424,9 +19674,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], @@ -19444,9 +19694,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -19464,9 +19714,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], diff --git a/package.json b/package.json index b7c81b84f4f..a2843d83662 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "iframe-resizer": "^3.6.6", "jquery": "^3.6.0", "jwt-decode": "^3.1.2", + "lightningcss": "^1.33.0", "lz-string": "^1.4.4", "marked": "^18.0.3", "mathjax": "^3.2.2", @@ -235,4 +236,4 @@ ] ] } -} \ No newline at end of file +} diff --git a/src/app/possible-score/possible-score.component.ts b/src/app/possible-score/possible-score.component.ts index 732d8457948..4055d889778 100644 --- a/src/app/possible-score/possible-score.component.ts +++ b/src/app/possible-score/possible-score.component.ts @@ -12,6 +12,6 @@ export class PossibleScoreComponent { constructor(private projectService: ProjectService) {} ngOnInit(): void { - this.hidePossibleScores = this.projectService.getThemeSettings().hidePossibleScores; + this.hidePossibleScores = this.projectService.getThemeSettings()?.hidePossibleScores; } } diff --git a/src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts b/src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts index accb0b63fd3..49213bb04db 100644 --- a/src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts +++ b/src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts @@ -10,11 +10,13 @@ import { Component as WISEComponent } from '../../../common/Component'; import { EditComponentAdvancedComponent } from '../../../../../app/authoring-tool/edit-component-advanced/edit-component-advanced.component'; import { TeacherProjectService } from '../../../services/teacherProjectService'; import { ComponentInfoService } from '../../../services/componentInfoService'; +import { EditComponentTitleComponent } from '../edit-component-title/edit-component-title.component'; @Component({ encapsulation: ViewEncapsulation.None, imports: [ EditComponentComponent, + EditComponentTitleComponent, EditComponentAdvancedComponent, FormsModule, MatButtonModule, @@ -36,8 +38,9 @@ import { ComponentInfoService } from '../../../services/componentInfoService'; @if (advancedMode) { } @else { + diff --git a/src/assets/wise5/authoringTool/components/edit-component-title/edit-component-title.component.ts b/src/assets/wise5/authoringTool/components/edit-component-title/edit-component-title.component.ts new file mode 100644 index 00000000000..854f14e33f6 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/edit-component-title/edit-component-title.component.ts @@ -0,0 +1,27 @@ +import { Component, inject, Input } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { ComponentContent } from '../../../common/ComponentContent'; +import { TeacherProjectService } from '../../../services/teacherProjectService'; + +@Component({ + imports: [FormsModule, MatFormFieldModule, MatInputModule], + selector: 'edit-component-title', + template: ` + + Activity Title + + + ` +}) +export class EditComponentTitleComponent { + private projectService = inject(TeacherProjectService); + + @Input() componentContent: ComponentContent; + private title: string = ''; + + titleChanged(): void { + this.projectService.saveProject(); + } +} diff --git a/src/assets/wise5/authoringTool/components/edit-component/edit-component.component.ts b/src/assets/wise5/authoringTool/components/edit-component/edit-component.component.ts index 3ffce72642b..0bfa3193772 100644 --- a/src/assets/wise5/authoringTool/components/edit-component/edit-component.component.ts +++ b/src/assets/wise5/authoringTool/components/edit-component/edit-component.component.ts @@ -37,7 +37,7 @@ export class EditComponentComponent { nodeId: this.nodeId }); this.applicationRef.attachView(this.componentRef.hostView); - setTimeout(() => hostElement.focus()); + setTimeout(() => hostElement.focus({ preventScroll: true })); } ngOnDestroy(): void { diff --git a/src/assets/wise5/common/ComponentContent.ts b/src/assets/wise5/common/ComponentContent.ts index ea9795e1a05..2ea81b9c048 100644 --- a/src/assets/wise5/common/ComponentContent.ts +++ b/src/assets/wise5/common/ComponentContent.ts @@ -13,6 +13,7 @@ export interface ComponentContent { cRaterRubric?: CRaterRubric; dynamicPrompt?: DynamicPrompt; excludeFromTotalScore?: boolean; + title?: string; maxScore?: number; maxSubmitCount?: number; prompt?: string; diff --git a/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.html b/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.html index 05af32fd8ac..c19a2692ed7 100644 --- a/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.html +++ b/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.html @@ -1,3 +1,4 @@ +
@if (isShowAddToNotebookButton) { diff --git a/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.ts b/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.ts index 5f69f465b0a..0f81ef2fb57 100644 --- a/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.ts +++ b/src/assets/wise5/components/embedded/embedded-student/embedded-student.component.ts @@ -1,3 +1,4 @@ +import { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component'; import html2canvas from 'html2canvas'; import { ChangeDetectorRef, Component } from '@angular/core'; import { AnnotationService } from '../../../services/annotationService'; @@ -19,6 +20,7 @@ import { ComponentAnnotationsComponent } from '../../../directives/componentAnno @Component({ imports: [ + ComponentHeaderComponent, AddToNotebookButtonComponent, ComponentSaveSubmitButtonsComponent, ComponentAnnotationsComponent diff --git a/src/assets/wise5/components/html/html-student/html-student.component.html b/src/assets/wise5/components/html/html-student/html-student.component.html index a3642dee73b..e7f0694d5cf 100644 --- a/src/assets/wise5/components/html/html-student/html-student.component.html +++ b/src/assets/wise5/components/html/html-student/html-student.component.html @@ -1 +1,2 @@ +
diff --git a/src/assets/wise5/components/html/html-student/html-student.component.ts b/src/assets/wise5/components/html/html-student/html-student.component.ts index f07f8fdd315..1867a8d6720 100644 --- a/src/assets/wise5/components/html/html-student/html-student.component.ts +++ b/src/assets/wise5/components/html/html-student/html-student.component.ts @@ -9,9 +9,11 @@ import { NotebookService } from '../../../services/notebookService'; import { StudentAssetService } from '../../../services/studentAssetService'; import { StudentDataService } from '../../../services/studentDataService'; import { ComponentStudent } from '../../component-student.component'; +import { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component'; import { ComponentService } from '../../componentService'; @Component({ + imports: [ComponentHeaderComponent], selector: 'html-student', styleUrl: 'html-student.component.scss', templateUrl: 'html-student.component.html' diff --git a/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.html b/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.html index 5a36d70e629..198cdf6d5ea 100644 --- a/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.html +++ b/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.ts b/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.ts index 11591ac99df..939585e3a82 100644 --- a/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.ts +++ b/src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.ts @@ -8,9 +8,11 @@ import { NotebookService } from '../../../services/notebookService'; import { StudentAssetService } from '../../../services/studentAssetService'; import { StudentDataService } from '../../../services/studentDataService'; import { ComponentStudent } from '../../component-student.component'; +import { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component'; import { ComponentService } from '../../componentService'; @Component({ + imports: [ComponentHeaderComponent], selector: 'outside-url-student', templateUrl: 'outside-url-student.component.html' }) diff --git a/src/assets/wise5/components/summary/summary-student/summary-student.component.html b/src/assets/wise5/components/summary/summary-student/summary-student.component.html index bde6d2feb18..d8034c5ea98 100644 --- a/src/assets/wise5/components/summary/summary-student/summary-student.component.html +++ b/src/assets/wise5/components/summary/summary-student/summary-student.component.html @@ -1,3 +1,4 @@ +
@if (componentContent.prompt) {
diff --git a/src/assets/wise5/components/summary/summary-student/summary-student.component.ts b/src/assets/wise5/components/summary/summary-student/summary-student.component.ts index f47c0877d90..c2418dc0227 100644 --- a/src/assets/wise5/components/summary/summary-student/summary-student.component.ts +++ b/src/assets/wise5/components/summary/summary-student/summary-student.component.ts @@ -1,3 +1,4 @@ +import { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component'; import { Component, Input } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { AnnotationService } from '../../../services/annotationService'; @@ -13,7 +14,8 @@ import { CompletionService } from '../../../services/completionService'; import { StudentSummaryDisplay } from '../../../directives/student-summary-display/student-summary-display.component'; @Component({ - imports: [StudentSummaryDisplay], + imports: [ + ComponentHeaderComponent,StudentSummaryDisplay], styles: ['.prompt { font-weight: 500; padding-bottom: 8px; }'], templateUrl: 'summary-student.component.html' }) diff --git a/src/assets/wise5/directives/component-header/component-header.component.html b/src/assets/wise5/directives/component-header/component-header.component.html index f161eccb0c9..a5cf91d8be1 100644 --- a/src/assets/wise5/directives/component-header/component-header.component.html +++ b/src/assets/wise5/directives/component-header/component-header.component.html @@ -1,6 +1,9 @@ -
+@if (title) { +
{{ title }}
+} +
= new EventEmitter(); - protected prompt: SafeHtml; - constructor(protected sanitizer: DomSanitizer) {} + constructor() {} + + protected get title(): string { + return this.component.content.title || ''; + } + + protected get prompt(): string { + return this.component.content.prompt || ''; + } ngOnInit(): void { - this.prompt = this.sanitizer.bypassSecurityTrustHtml(this.component.content.prompt); this.dynamicPrompt = new DynamicPrompt(this.component.content.dynamicPrompt); } diff --git a/src/assets/wise5/services/createComponentService.ts b/src/assets/wise5/services/createComponentService.ts index bd53503ba41..7db0294a8df 100644 --- a/src/assets/wise5/services/createComponentService.ts +++ b/src/assets/wise5/services/createComponentService.ts @@ -2,11 +2,13 @@ import { Injectable } from '@angular/core'; import { TeacherProjectService } from './teacherProjectService'; import { ComponentServiceLookupService } from './componentServiceLookupService'; import { Node } from '../common/Node'; +import { ComponentInfoService } from './componentInfoService'; @Injectable() export class CreateComponentService { constructor( private componentServiceLookupService: ComponentServiceLookupService, + private componentInfoService: ComponentInfoService, private projectService: TeacherProjectService ) {} @@ -22,6 +24,7 @@ export class CreateComponentService { const node = this.projectService.getNode(nodeId); const service = this.componentServiceLookupService.getService(componentType); const component = service.createComponent(); + component.title = this.componentInfoService.getInfo(componentType).getLabel(); if (service.componentHasWork(component)) { if (node.showSaveButton == false) { if (this.projectService.doesAnyComponentInNodeShowSubmitButton(node.id)) { diff --git a/src/assets/wise5/services/projectService.ts b/src/assets/wise5/services/projectService.ts index 0fdf55ce8a9..cc2ba827e27 100644 --- a/src/assets/wise5/services/projectService.ts +++ b/src/assets/wise5/services/projectService.ts @@ -804,7 +804,7 @@ export class ProjectService { */ getThemeSettings(): any { let themeSettings = {}; - if (this.project.themeSettings) { + if (this.project?.themeSettings) { if (this.project.theme) { // TODO: check if this is a valid theme (using ConfigService) rather than just truthy themeSettings = this.project.themeSettings[this.project.theme]; @@ -1873,7 +1873,7 @@ export class ProjectService { } getSpeechToTextSettings(): any { - return this.project.speechToText; + return this.project?.speechToText; } getPreviousNodeId(nodeId: string): string { diff --git a/src/messages.xlf b/src/messages.xlf index 2ec1ae93178..777a1d3a1c2 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -11173,14 +11173,14 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.Edit: . src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts - 29,30 + 31,32 Advanced src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts - 32,35 + 34,37 src/assets/wise5/authoringTool/components/edit-node-advanced-button/edit-node-advanced-button.component.ts @@ -11191,7 +11191,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. Close src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts - 49,54 + 52,57 src/assets/wise5/authoringTool/node/advanced/node-advanced-authoring/node-advanced-authoring.component.html @@ -11202,6 +11202,13 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.114,119 + + Activity Title + + src/assets/wise5/authoringTool/components/edit-component-title/edit-component-title.component.ts + 13,14 + + Authoring Tool Menu @@ -22071,7 +22078,7 @@ If this problem continues, let your teacher know and move on to the next activit Credit: src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.html - 7,9 + 8,10 @@ -22508,28 +22515,28 @@ If this problem continues, let your teacher know and move on to the next activit You must submit work on "" to view the summary. src/assets/wise5/components/summary/summary-student/summary-student.component.ts - 134 + 136 You must complete "" to view the summary. src/assets/wise5/components/summary/summary-student/summary-student.component.ts - 136 + 138 You must submit work on "" to view the class summary. src/assets/wise5/components/summary/summary-student/summary-student.component.ts - 142 + 144 You must complete "" to view the class summary. src/assets/wise5/components/summary/summary-student/summary-student.component.ts - 144 + 146