UNPKG

ng-katex-2

Version:

Angular module to write beautiful math expressions in TeX syntax boosted by [KaTeX](https://github.com/Khan/KaTeX) library. You can see a demo [here](https://garciparedes.github.io/ng-katex).

1 lines 15.1 kB
{"version":3,"file":"ng-katex-2.mjs","sources":["../../../projects/ng-katex-2/src/lib/ng-katex.service.ts","../../../projects/ng-katex-2/src/lib/utils.ts","../../../projects/ng-katex-2/src/lib/ng-katex.directive.ts","../../../projects/ng-katex-2/src/lib/ng-katex.component.ts","../../../projects/ng-katex-2/src/lib/ng-katex-html.component.ts","../../../projects/ng-katex-2/src/lib/ng-katex-paragraph.component.ts","../../../projects/ng-katex-2/src/lib/ng-katex.module.ts","../../../projects/ng-katex-2/src/public-api.ts","../../../projects/ng-katex-2/src/ng-katex-2.ts"],"sourcesContent":["import { ElementRef, Injectable } from '@angular/core';\r\nimport { render, renderToString, KatexOptions } from 'katex';\r\n\r\n@Injectable()\r\nexport class KatexService {\r\n\r\n render(equation: string, element: ElementRef, options?: KatexOptions) {\r\n return render(equation, element.nativeElement, options);\r\n }\r\n\r\n renderToString(equation: string, options?: KatexOptions): string {\r\n return renderToString(equation, options);\r\n }\r\n}\r\n","import { inject } from \"@angular/core\";\r\nimport { KatexService } from \"./ng-katex.service\";\r\n\r\nexport const throwNoProviderError = () => {\r\n \r\n const katexService = inject(KatexService, {\r\n optional: true,\r\n });\r\n if(!katexService) {\r\n throw new Error(`\r\n KatexService is not provided. Please provide it in your module\r\n \r\n If using modules:\r\n\r\n import { KatexModule } from 'ng-katex';\r\n import { BrowserModule } from '@angular/platform-browser';\r\n ...\r\n @NgModule({\r\n imports: [\r\n BrowserModule,\r\n KatexModule,\r\n ...\r\n ],\r\n declarations: [AppComponent],\r\n bootstrap: [AppComponent]\r\n })\r\n\r\n class AppModule {}\r\n \r\n If using standalone bootstrapping:\r\n\r\n import { bootstrapApplication } from '@angular/platform-browser';\r\n import { importProvidersFrom } from '@angular/core';\r\n import { KatexModule } from 'ng-katex';\r\n\r\n bootstrapApplication(AppComponent, {\r\n providers: [\r\n importProvidersFrom(KatexModule)\r\n ]\r\n }).catch(err => console.error(err));\r\n\r\n Docs: https://www.npmjs.com/package/ng-katex-2\r\n `);\r\n }\r\n}","import {\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n} from '@angular/core';\r\nimport { KatexService } from './ng-katex.service';\r\nimport { KatexOptions } from 'katex';\r\nimport { throwNoProviderError } from './utils';\r\n\r\n@Directive({\r\n selector: '[katex]',\r\n standalone: true,\r\n})\r\nexport class KatexDirective {\r\n private el: ElementRef = inject(ElementRef);\r\n private katexService: KatexService = inject(KatexService);\r\n equation: InputSignal<string> = input.required({\r\n alias: 'katex',\r\n });\r\n options: InputSignal<KatexOptions> = input<KatexOptions>({}, {\r\n alias: 'katex-options'\r\n });\r\n onError: OutputEmitterRef<any> = output<any>();\r\n\r\n constructor() {\r\n throwNoProviderError();\r\n effect(() => {\r\n try {\r\n this.katexService.render(this.equation(), this.el, this.options());\r\n } catch (e) {\r\n this.onError.emit(e);\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n} from '@angular/core';\r\nimport { KatexOptions } from 'katex';\r\nimport { KatexDirective } from './ng-katex.directive';\r\nimport { throwNoProviderError } from './utils';\r\n\r\n@Component({\r\n selector: 'ng-katex',\r\n template: `\r\n <span [katex]=\"equation()\"\r\n [katex-options]=\"options()\"\r\n (someEvent)=\"hasError($event)\">\r\n </span>\r\n `,\r\n standalone: true,\r\n imports: [KatexDirective],\r\n})\r\nexport class KatexComponent {\r\n equation: InputSignal<string> = input.required();\r\n options: InputSignal<KatexOptions> = input<KatexOptions>({});\r\n onError: OutputEmitterRef<any> = output<any>();\r\n\r\n hasError(error: any) {\r\n this.onError.emit(error);\r\n }\r\n \r\n constructor() {\r\n throwNoProviderError();\r\n }\r\n}\r\n","import { Component, computed, inject, input, InputSignal, Signal } from '@angular/core';\r\nimport { extractMath, Segment } from 'extract-math';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { KatexService } from './ng-katex.service';\r\nimport { throwNoProviderError } from './utils';\r\n\r\n@Component({\r\n selector: 'ng-katex-html',\r\n template: `<span [innerHTML]=\"allHtml()\"></span>`,\r\n standalone: true,\r\n})\r\nexport class KatexHtmlComponent {\r\n private domSanitizer: DomSanitizer = inject(DomSanitizer); \r\n private katexService: KatexService = inject(KatexService);\r\n\r\n html: InputSignal<string> = input('');\r\n allHtml: Signal<SafeHtml | undefined> = computed(() => {\r\n const html = this.html();\r\n let allHtmlValue: string = '';\r\n let _segments: Segment[] = [];\r\n if (!html) {\r\n allHtmlValue = '';\r\n _segments = [];\r\n return allHtmlValue;\r\n }\r\n\r\n _segments = extractMath(html);\r\n\r\n const allHtml = _segments.map((seg: Segment) => {\r\n if (seg.math) {\r\n return this.katexService.renderToString(seg.raw, { displayMode: seg.type === 'display' });\r\n }\r\n else {\r\n return seg.value;\r\n }\r\n }).reduce((total, current) => {\r\n return total += current;\r\n });\r\n return this.domSanitizer.bypassSecurityTrustHtml(allHtml);\r\n });\r\n\r\n constructor() {\r\n throwNoProviderError();\r\n }\r\n}\r\n","\r\nimport { ChangeDetectionStrategy, Component, computed, input, InputSignal, Signal } from '@angular/core';\r\nimport { extractMath, Segment } from 'extract-math';\r\nimport { KatexComponent } from './ng-katex.component';\r\nimport { throwNoProviderError } from './utils';\r\n\r\n@Component({\r\n selector: 'ng-katex-paragraph',\r\n template: `\r\n <p>\r\n @for (segment of segments(); track segment) {\r\n @if (segment.math) {\r\n <ng-katex\r\n [equation]=\"segment.raw\"\r\n [options]=\"{ displayMode: segment.type === 'display' }\">\r\n </ng-katex>\r\n } @else {\r\n {{ segment.value }}\r\n }\r\n }\r\n </p>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [KatexComponent],\r\n standalone: true,\r\n})\r\nexport class KatexParagraphComponent {\r\n paragraph: InputSignal<string> = input.required();\r\n segments: Signal<Segment[]> = computed(() => {\r\n let segments = [];\r\n const paragraph = this.paragraph();\r\n segments = extractMath(paragraph);\r\n return segments;\r\n });\r\n \r\n constructor() {\r\n throwNoProviderError();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { KatexService } from './ng-katex.service';\r\nimport { KatexDirective } from './ng-katex.directive';\r\nimport { KatexComponent } from './ng-katex.component';\r\nimport { KatexParagraphComponent } from './ng-katex-paragraph.component';\r\nimport { KatexHtmlComponent } from './ng-katex-html.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n KatexDirective,\r\n KatexComponent,\r\n KatexParagraphComponent,\r\n KatexHtmlComponent,\r\n ],\r\n providers: [\r\n KatexService,\r\n ],\r\n declarations: [\r\n ],\r\n exports: [\r\n KatexDirective,\r\n KatexComponent,\r\n KatexParagraphComponent,\r\n KatexHtmlComponent,\r\n ],\r\n})\r\nexport class KatexModule { }\r\n","/*\r\n * Public API Surface of ng-katex\r\n */\r\nexport * from './lib/ng-katex.component';\r\nexport * from './lib/ng-katex-html.component';\r\nexport * from './lib/ng-katex-paragraph.component';\r\nexport * from './lib/ng-katex.directive';\r\nexport * from './lib/ng-katex.service';\r\nexport * from './lib/ng-katex.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}