UNPKG

ng-katex-2

Version:

Angular module to write beautiful math expressions with TeX syntax boosted by KaTeX library

47 lines 6.44 kB
import { Component, computed, inject, input } from '@angular/core'; import { extractMath } from 'extract-math'; import { DomSanitizer } from '@angular/platform-browser'; import { KatexService } from './ng-katex.service'; import { throwNoProviderError } from './utils'; import * as i0 from "@angular/core"; export class KatexHtmlComponent { constructor() { this.domSanitizer = inject(DomSanitizer); this.katexService = inject(KatexService); this.html = input(''); this.allHtml = computed(() => { const html = this.html(); let allHtmlValue = ''; let _segments = []; if (!html) { allHtmlValue = ''; _segments = []; return allHtmlValue; } _segments = extractMath(html); const allHtml = _segments.map((seg) => { if (seg.math) { return this.katexService.renderToString(seg.raw, { displayMode: seg.type === 'display' }); } else { return seg.value; } }).reduce((total, current) => { return total += current; }); return this.domSanitizer.bypassSecurityTrustHtml(allHtml); }); throwNoProviderError(); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KatexHtmlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: KatexHtmlComponent, isStandalone: true, selector: "ng-katex-html", inputs: { html: { classPropertyName: "html", publicName: "html", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<span [innerHTML]="allHtml()"></span>`, isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KatexHtmlComponent, decorators: [{ type: Component, args: [{ selector: 'ng-katex-html', template: `<span [innerHTML]="allHtml()"></span>`, standalone: true, }] }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcta2F0ZXgtaHRtbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1rYXRleC0yL3NyYy9saWIvbmcta2F0ZXgtaHRtbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGtCQUFrQjtJQThCN0I7UUE3QlEsaUJBQVksR0FBaUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xELGlCQUFZLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxRCxTQUFJLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QyxZQUFPLEdBQWlDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEQsTUFBTSxJQUFJLEdBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLElBQUksWUFBWSxHQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLFNBQVMsR0FBYyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLFNBQVMsR0FBRyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxZQUFZLENBQUM7WUFDdEIsQ0FBQztZQUVELFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFOUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVksRUFBRSxFQUFFO2dCQUM3QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RixDQUFDO3FCQUNJLENBQUM7b0JBQ0osT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixPQUFPLEtBQUssSUFBSSxPQUFPLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFHRCxvQkFBb0IsRUFBRSxDQUFDO0lBQ3pCLENBQUM7a0lBaENVLGtCQUFrQjtzSEFBbEIsa0JBQWtCLDBNQUhuQix1Q0FBdUM7OzRGQUd0QyxrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSx1Q0FBdUM7b0JBQ2pELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZXh0cmFjdE1hdGgsIFNlZ21lbnQgfSBmcm9tICdleHRyYWN0LW1hdGgnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEthdGV4U2VydmljZSB9IGZyb20gJy4vbmcta2F0ZXguc2VydmljZSc7XHJcbmltcG9ydCB7IHRocm93Tm9Qcm92aWRlckVycm9yIH0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLWthdGV4LWh0bWwnLFxyXG4gIHRlbXBsYXRlOiBgPHNwYW4gW2lubmVySFRNTF09XCJhbGxIdG1sKClcIj48L3NwYW4+YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2F0ZXhIdG1sQ29tcG9uZW50IHtcclxuICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7IFxyXG4gIHByaXZhdGUga2F0ZXhTZXJ2aWNlOiBLYXRleFNlcnZpY2UgPSBpbmplY3QoS2F0ZXhTZXJ2aWNlKTtcclxuXHJcbiAgaHRtbDogSW5wdXRTaWduYWw8c3RyaW5nPiA9IGlucHV0KCcnKTtcclxuICBhbGxIdG1sOiBTaWduYWw8U2FmZUh0bWwgfCB1bmRlZmluZWQ+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgaHRtbCAgPSB0aGlzLmh0bWwoKTtcclxuICAgIGxldCBhbGxIdG1sVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gICAgbGV0IF9zZWdtZW50czogU2VnbWVudFtdID0gW107XHJcbiAgICBpZiAoIWh0bWwpIHtcclxuICAgICAgYWxsSHRtbFZhbHVlID0gJyc7XHJcbiAgICAgIF9zZWdtZW50cyA9IFtdO1xyXG4gICAgICByZXR1cm4gYWxsSHRtbFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIF9zZWdtZW50cyA9IGV4dHJhY3RNYXRoKGh0bWwpO1xyXG5cclxuICAgIGNvbnN0IGFsbEh0bWwgPSBfc2VnbWVudHMubWFwKChzZWc6IFNlZ21lbnQpID0+IHtcclxuICAgICAgaWYgKHNlZy5tYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMua2F0ZXhTZXJ2aWNlLnJlbmRlclRvU3RyaW5nKHNlZy5yYXcsIHsgZGlzcGxheU1vZGU6IHNlZy50eXBlID09PSAnZGlzcGxheScgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHNlZy52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSkucmVkdWNlKCh0b3RhbCwgY3VycmVudCkgPT4ge1xyXG4gICAgICByZXR1cm4gdG90YWwgKz0gY3VycmVudDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGFsbEh0bWwpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRocm93Tm9Qcm92aWRlckVycm9yKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==