diff --git a/jest.config.js b/jest.config.js index 79f41a3a4..7a9d65cbf 100644 --- a/jest.config.js +++ b/jest.config.js @@ -24,7 +24,9 @@ module.exports = { }, ], }, - transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$|@ngxs|@angular|@ngrx|parse5|entities|chart.js)'], + transformIgnorePatterns: [ + 'node_modules/(?!.*\\.mjs$|@ngxs|@angular|@ngrx|parse5|entities|chart.js|@mdit|@citation-js|@traptitech|@sentry|@primeng|@newrelic)', + ], testEnvironment: 'jsdom', moduleFileExtensions: ['ts', 'js', 'html', 'json', 'mjs'], coverageDirectory: 'coverage', diff --git a/package-lock.json b/package-lock.json index 9699293ab..451780058 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "osf", - "version": "25.2.0", + "version": "25.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "osf", - "version": "25.2.0", + "version": "25.3.0", "dependencies": { "@angular/animations": "^19.2.0", "@angular/cdk": "^19.2.1", @@ -20,6 +20,7 @@ "@citation-js/core": "^0.7.18", "@citation-js/plugin-csl": "^0.7.18", "@fortawesome/fontawesome-free": "^6.7.2", + "@mdit/plugin-img-size": "0.22.3", "@newrelic/browser-agent": "^1.301.0", "@ngx-translate/core": "^16.0.4", "@ngx-translate/http-loader": "^16.0.1", @@ -5958,6 +5959,26 @@ "win32" ] }, + "node_modules/@mdit/plugin-img-size": { + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/@mdit/plugin-img-size/-/plugin-img-size-0.22.3.tgz", + "integrity": "sha512-dd2coSTYi5rDg+dIQYgIcHlLvE4C6Q7w8GQj5mdvHF0aek46V6PICZC9tQnPe+GcKKyAg5B1MGBo1+suJVXA5A==", + "license": "MIT", + "dependencies": { + "@types/markdown-it": "^14.1.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "markdown-it": "^14.1.0" + }, + "peerDependenciesMeta": { + "markdown-it": { + "optional": true + } + } + }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", @@ -8190,14 +8211,12 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "dev": true, "license": "MIT" }, "node_modules/@types/markdown-it": { "version": "14.1.2", "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "dev": true, "license": "MIT", "dependencies": { "@types/linkify-it": "^5", @@ -8208,7 +8227,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "dev": true, "license": "MIT" }, "node_modules/@types/mime": { diff --git a/package.json b/package.json index 30c9c6215..528289352 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "@citation-js/core": "^0.7.18", "@citation-js/plugin-csl": "^0.7.18", "@fortawesome/fontawesome-free": "^6.7.2", + "@mdit/plugin-img-size": "0.22.3", "@newrelic/browser-agent": "^1.301.0", "@ngx-translate/core": "^16.0.4", "@ngx-translate/http-loader": "^16.0.1", diff --git a/src/app/shared/components/markdown/markdown.component.ts b/src/app/shared/components/markdown/markdown.component.ts index b8944388e..648f6e53b 100644 --- a/src/app/shared/components/markdown/markdown.component.ts +++ b/src/app/shared/components/markdown/markdown.component.ts @@ -1,6 +1,7 @@ import { ChangeDetectionStrategy, Component, computed, inject, input, Signal } from '@angular/core'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; +import { legacyImgSize } from '@mdit/plugin-img-size'; import markdownItKatex from '@traptitech/markdown-it-katex'; import MarkdownIt from 'markdown-it'; import markdownItVideo from 'markdown-it-video'; @@ -37,6 +38,7 @@ export class MarkdownComponent { .use(markdownItKatex, { output: 'mathml', throwOnError: false, - }); + }) + .use(legacyImgSize); } } diff --git a/src/styles/components/md-editor.scss b/src/styles/components/md-editor.scss index 21e6e9978..3fa75b6b7 100644 --- a/src/styles/components/md-editor.scss +++ b/src/styles/components/md-editor.scss @@ -97,7 +97,13 @@ list-style-type: decimal; } } + + img { + max-width: 100%; + height: auto; + } } + .md-footer { display: none; }