diff --git a/src/Frontend/package-lock.json b/src/Frontend/package-lock.json index 0d48e88dc..b2ae249a4 100644 --- a/src/Frontend/package-lock.json +++ b/src/Frontend/package-lock.json @@ -19,6 +19,7 @@ "bootstrap": "^5.3.5", "bootstrap-icons": "^1.11.3", "codemirror": "^6.0.1", + "diff": "^7.0.0", "hex-to-css-filter": "^6.0.0", "lodash.debounce": "^4.0.8", "lossless-json": "^4.0.2", @@ -43,6 +44,7 @@ "@testing-library/vue": "^8.1.0", "@tsconfig/node18": "^18.2.4", "@types/bootstrap": "^5.2.10", + "@types/diff": "^7.0.2", "@types/lodash": "^4.17.16", "@types/node": "^22.15.3", "@vitejs/plugin-vue": "^5.2.3", @@ -1967,6 +1969,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/diff": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.2.tgz", + "integrity": "sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==", + "dev": true + }, "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", @@ -3635,6 +3643,14 @@ "node": ">=6" } }, + "node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dom-accessibility-api": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", diff --git a/src/Frontend/package.json b/src/Frontend/package.json index 938670c35..647ccaa19 100644 --- a/src/Frontend/package.json +++ b/src/Frontend/package.json @@ -28,6 +28,7 @@ "bootstrap": "^5.3.5", "bootstrap-icons": "^1.11.3", "codemirror": "^6.0.1", + "diff": "^7.0.0", "hex-to-css-filter": "^6.0.0", "lodash.debounce": "^4.0.8", "lossless-json": "^4.0.2", @@ -52,6 +53,7 @@ "@testing-library/vue": "^8.1.0", "@tsconfig/node18": "^18.2.4", "@types/bootstrap": "^5.2.10", + "@types/diff": "^7.0.2", "@types/lodash": "^4.17.16", "@types/node": "^22.15.3", "@vitejs/plugin-vue": "^5.2.3", diff --git a/src/Frontend/src/assets/diff-close.svg b/src/Frontend/src/assets/diff-close.svg new file mode 100644 index 000000000..b93e269dd --- /dev/null +++ b/src/Frontend/src/assets/diff-close.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/Frontend/src/assets/diff-maximize.svg b/src/Frontend/src/assets/diff-maximize.svg new file mode 100644 index 000000000..72b9dbc89 --- /dev/null +++ b/src/Frontend/src/assets/diff-maximize.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/Frontend/src/components/CodeEditor.vue b/src/Frontend/src/components/CodeEditor.vue index 2d1c0020d..15d825466 100644 --- a/src/Frontend/src/components/CodeEditor.vue +++ b/src/Frontend/src/components/CodeEditor.vue @@ -19,6 +19,7 @@ const props = withDefaults( showGutter?: boolean; showCopyToClipboard?: boolean; ariaLabel?: string; + css?: string; }>(), { readOnly: true, showGutter: true, showCopyToClipboard: true } ); @@ -49,7 +50,7 @@ const extensions = computed(() => {