UNPKG

@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
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=