@eternalheart/ngx-file-preview
Version:
A powerful Angular file preview component library supporting multiple file formats including images, videos, PDFs, Office documents, text files and more.
38 lines • 4.63 kB
JavaScript
import { Pipe } from '@angular/core';
import MarkdownIt from 'markdown-it';
import hljs from "highlight.js";
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
export class MarkdownPipe {
constructor(sanitizer) {
this.sanitizer = sanitizer;
this.md = new MarkdownIt({
html: true,
linkify: true,
typographer: true,
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return hljs.highlight(str, { language: lang }).value;
}
catch (__) {
}
}
return ''; // use external default escaping
}
}); // 初始化 markdown-it 实例
}
transform(value) {
if (!value)
return '';
const html = this.md.render(value); // 解析 Markdown 为 HTML
return this.sanitizer.bypassSecurityTrustHtml(html); // 信任 HTML 内容
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPipe, isStandalone: true, name: "markdown" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPipe, decorators: [{
type: Pipe,
args: [{ name: 'markdown', standalone: true }]
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LWZpbGUtcHJldmlldy9zcmMvbGliL3ByZXZpZXctdHlwZXMvbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLElBQUksTUFBTSxjQUFjLENBQUE7OztBQUsvQixNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3pDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUUsSUFBSTtZQUNiLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFNBQVMsRUFBRSxVQUFVLEdBQUcsRUFBRSxJQUFJO2dCQUM1QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQzt3QkFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNyRCxDQUFDO29CQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ2QsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsZ0NBQWdDO1lBQzdDLENBQUM7U0FDRixDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDM0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7UUFDekQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUNwRSxDQUFDOytHQXhCVSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBRHhCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IE1hcmtkb3duSXQgZnJvbSAnbWFya2Rvd24taXQnO1xuaW1wb3J0IGhsanMgZnJvbSBcImhpZ2hsaWdodC5qc1wiXG5cbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQFBpcGUoe25hbWU6ICdtYXJrZG93bicsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIE1hcmtkb3duUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIG1kOiBNYXJrZG93bkl0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB0aGlzLm1kID0gbmV3IE1hcmtkb3duSXQoe1xuICAgICAgaHRtbDogdHJ1ZSxcbiAgICAgIGxpbmtpZnk6IHRydWUsXG4gICAgICB0eXBvZ3JhcGhlcjogdHJ1ZSxcbiAgICAgIGhpZ2hsaWdodDogZnVuY3Rpb24gKHN0ciwgbGFuZykge1xuICAgICAgICBpZiAobGFuZyAmJiBobGpzLmdldExhbmd1YWdlKGxhbmcpKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBobGpzLmhpZ2hsaWdodChzdHIsIHtsYW5ndWFnZTogbGFuZ30pLnZhbHVlO1xuICAgICAgICAgIH0gY2F0Y2ggKF9fKSB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJzsgLy8gdXNlIGV4dGVybmFsIGRlZmF1bHQgZXNjYXBpbmdcbiAgICAgIH1cbiAgICB9KTsgLy8g5Yid5aeL5YyWIG1hcmtkb3duLWl0IOWunuS+i1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcbiAgICBjb25zdCBodG1sID0gdGhpcy5tZC5yZW5kZXIodmFsdWUpOyAvLyDop6PmnpAgTWFya2Rvd24g5Li6IEhUTUxcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCk7IC8vIOS/oeS7uyBIVE1MIOWGheWuuVxuICB9XG59XG4iXX0=