UNPKG

ngx-showdown-angular-latest

Version:
136 lines 11.3 kB
import { Directive, EventEmitter, Input, Output } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./showdown.component"; import * as i2 from "@angular/common/http"; /** * A angular directive to `ShowdownComponent` for make http request of markdown content. * * ### Example * * Setup as standalone * ```typescript * import { NgModule } from '@angular/core'; * import { HttpClientModule } from '@angular/common/http'; * import { ShowdownComponent, SourceDirective } from 'ngx-showdown'; * * @NgModule({ * declarations: [ ShowdownComponent, SourceDirective ], * imports: [ HttpClientModule ] * }) * export class AppModule {} * ``` * * Bind url `src` directive * ```typescript * import { Component } from '@angular/core'; * * @Component({ * selector: 'some', * template: '<showdown [src]="url" smartIndentationFix>**Loading...**</showdown> * }) * class SomeComponent { * url: string = 'https://unpkg.com/ngx-showdown/README.md'; * // ... * } * ``` * * Set static url * ```html * <showdown src="README.md" [options]="{noHeaderId: true}"></showdown> * ``` * * Set template reference variable * ```html * <showdown #source="source" src="README.md"></showdown> * ``` * * Listening to `error` events. * ```html * <showdown #sd src="http://url.error" (error)="sd.render('# '+$event.message)"></showdown> * ``` */ export class SourceDirective { _showdownComponent; _http; /** * The source url of the markdown content. * * __Example :__ * * Set static url to `src` directive. * ```html * <showdown src="https://unpkg.com/ngx-showdown/README.md"></showdown> * ``` * * Bind url to `src` directive. * ```html * <input type="text" #url placeholder="url" /> * <button (click)="src = url.value">Load</button> * <showdown [src]="src">**Loading...**</showdown> * ``` */ src; /** * On error occur. * * __Example :__ * * ```html * <input type="text" placeholder="url" [(ngModel)]="url"/> * <showdown [src]="url" (error)="sd.render('# Error\n> '+$event.message)">**Loading...**</showdown> * ``` */ error = new EventEmitter(); constructor(_showdownComponent, _http) { this._showdownComponent = _showdownComponent; this._http = _http; } /** * A angular lifecycle method, Use to call to `load` method on src init/changes * @internal */ ngOnChanges() { this.load(); } /** * Load the markdown content of {@link SourceDirective#src} url to {@link ShowdownComponent#value}. * * __Example :__ * * ```html * <input type="text" #url value="source.src" placeholder="Url" /> * <button (click)="source.load(url.value)">Load</button> * <showdown #source="source" src="https://unpkg.com/ngx-showdown/README.md"></showdown> * ``` * @param url - A url of markdown content to load (it will override the current url of `SourceDirective#src`) */ load(url) { if (url) { this.src = url; } if (this.src) { this ._http .get(this.src, { responseType: 'text' }) .subscribe((response) => { this._showdownComponent.render(response); }, (error) => { this.error.emit(error); }); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SourceDirective, deps: [{ token: i1.ShowdownComponent }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: SourceDirective, selector: "showdown[src],[showdown][src]", inputs: { src: "src" }, outputs: { error: "error" }, exportAs: ["source"], usesOnChanges: true, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SourceDirective, decorators: [{ type: Directive, args: [{ selector: 'showdown[src],[showdown][src]', exportAs: 'source' }] }], ctorParameters: () => [{ type: i1.ShowdownComponent }, { type: i2.HttpClient }], propDecorators: { src: [{ type: Input }], error: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFHbEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFLSCxNQUFNLE9BQU8sZUFBZTtJQWlDTjtJQUErQztJQS9CbkU7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDTSxHQUFHLENBQVM7SUFFckI7Ozs7Ozs7OztPQVNHO0lBQ08sS0FBSyxHQUFvQyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXRFLFlBQW9CLGtCQUFxQyxFQUFVLEtBQWlCO1FBQWhFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFZO0lBQ3BGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksSUFBSSxDQUFDLEdBQVk7UUFDdEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUk7aUJBQ0QsS0FBSztpQkFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUMsQ0FBQztpQkFDckMsU0FBUyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO2dCQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLENBQUMsRUFBRSxDQUFDLEtBQXdCLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQzt1R0F2RVUsZUFBZTsyRkFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRSxRQUFRO2lCQUNuQjsrR0FvQlUsR0FBRztzQkFBWCxLQUFLO2dCQVlJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNob3dkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93ZG93bi5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgYW5ndWxhciBkaXJlY3RpdmUgdG8gYFNob3dkb3duQ29tcG9uZW50YCBmb3IgbWFrZSBodHRwIHJlcXVlc3Qgb2YgbWFya2Rvd24gY29udGVudC5cclxuICpcclxuICogIyMjIEV4YW1wbGVcclxuICpcclxuICogU2V0dXAgYXMgc3RhbmRhbG9uZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiAqIGltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbiAqIGltcG9ydCB7IFNob3dkb3duQ29tcG9uZW50LCBTb3VyY2VEaXJlY3RpdmUgfSBmcm9tICduZ3gtc2hvd2Rvd24nO1xyXG4gKlxyXG4gKiBATmdNb2R1bGUoe1xyXG4gKiAgICBkZWNsYXJhdGlvbnM6IFsgU2hvd2Rvd25Db21wb25lbnQsIFNvdXJjZURpcmVjdGl2ZSBdLFxyXG4gKiAgICBpbXBvcnRzOiBbIEh0dHBDbGllbnRNb2R1bGUgXVxyXG4gKiB9KVxyXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBCaW5kIHVybCBgc3JjYCBkaXJlY3RpdmVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuICpcclxuICogQENvbXBvbmVudCh7XHJcbiAqICAgICBzZWxlY3RvcjogJ3NvbWUnLFxyXG4gKiAgICAgdGVtcGxhdGU6ICc8c2hvd2Rvd24gW3NyY109XCJ1cmxcIiBzbWFydEluZGVudGF0aW9uRml4PioqTG9hZGluZy4uLioqPC9zaG93ZG93bj5cclxuICogfSlcclxuICogY2xhc3MgU29tZUNvbXBvbmVudCB7XHJcbiAqICAgICB1cmw6IHN0cmluZyA9ICdodHRwczovL3VucGtnLmNvbS9uZ3gtc2hvd2Rvd24vUkVBRE1FLm1kJztcclxuICogICAgIC8vIC4uLlxyXG4gKiB9XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBTZXQgc3RhdGljIHVybFxyXG4gKiBgYGBodG1sXHJcbiAqIDxzaG93ZG93biBzcmM9XCJSRUFETUUubWRcIiBbb3B0aW9uc109XCJ7bm9IZWFkZXJJZDogdHJ1ZX1cIj48L3Nob3dkb3duPlxyXG4gKiBgYGBcclxuICpcclxuICogU2V0IHRlbXBsYXRlIHJlZmVyZW5jZSB2YXJpYWJsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzaG93ZG93biAjc291cmNlPVwic291cmNlXCIgc3JjPVwiUkVBRE1FLm1kXCI+PC9zaG93ZG93bj5cclxuICogYGBgXHJcbiAqXHJcbiAqIExpc3RlbmluZyB0byBgZXJyb3JgIGV2ZW50cy5cclxuICogYGBgaHRtbFxyXG4gKiA8c2hvd2Rvd24gI3NkIHNyYz1cImh0dHA6Ly91cmwuZXJyb3JcIiAoZXJyb3IpPVwic2QucmVuZGVyKCcjICcrJGV2ZW50Lm1lc3NhZ2UpXCI+PC9zaG93ZG93bj5cclxuICogYGBgXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ3Nob3dkb3duW3NyY10sW3Nob3dkb3duXVtzcmNdJyxcclxuICBleHBvcnRBczogJ3NvdXJjZSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNvdXJjZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzb3VyY2UgdXJsIG9mIHRoZSBtYXJrZG93biBjb250ZW50LlxyXG4gICAqXHJcbiAgICogX19FeGFtcGxlIDpfX1xyXG4gICAqXHJcbiAgICogU2V0IHN0YXRpYyB1cmwgdG8gYHNyY2AgZGlyZWN0aXZlLlxyXG4gICAqIGBgYGh0bWxcclxuICAgKiA8c2hvd2Rvd24gc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vbmd4LXNob3dkb3duL1JFQURNRS5tZFwiPjwvc2hvd2Rvd24+XHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKiBCaW5kIHVybCB0byBgc3JjYCBkaXJlY3RpdmUuXHJcbiAgICogYGBgaHRtbFxyXG4gICAqIDxpbnB1dCB0eXBlPVwidGV4dFwiICN1cmwgcGxhY2Vob2xkZXI9XCJ1cmxcIiAvPlxyXG4gICAqIDxidXR0b24gKGNsaWNrKT1cInNyYyA9IHVybC52YWx1ZVwiPkxvYWQ8L2J1dHRvbj5cclxuICAgKiA8c2hvd2Rvd24gW3NyY109XCJzcmNcIj4qKkxvYWRpbmcuLi4qKjwvc2hvd2Rvd24+XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgQElucHV0KCkgc3JjOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIGVycm9yIG9jY3VyLlxyXG4gICAqXHJcbiAgICogX19FeGFtcGxlIDpfX1xyXG4gICAqXHJcbiAgICogYGBgaHRtbFxyXG4gICAqIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwidXJsXCIgWyhuZ01vZGVsKV09XCJ1cmxcIi8+XHJcbiAgICogPHNob3dkb3duIFtzcmNdPVwidXJsXCIgKGVycm9yKT1cInNkLnJlbmRlcignIyBFcnJvclxcbj4gJyskZXZlbnQubWVzc2FnZSlcIj4qKkxvYWRpbmcuLi4qKjwvc2hvd2Rvd24+XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGVycm9yOiBFdmVudEVtaXR0ZXI8SHR0cEVycm9yUmVzcG9uc2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zaG93ZG93bkNvbXBvbmVudDogU2hvd2Rvd25Db21wb25lbnQsIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgYW5ndWxhciBsaWZlY3ljbGUgbWV0aG9kLCBVc2UgdG8gY2FsbCB0byBgbG9hZGAgbWV0aG9kIG9uIHNyYyBpbml0L2NoYW5nZXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCB0aGUgbWFya2Rvd24gY29udGVudCBvZiB7QGxpbmsgU291cmNlRGlyZWN0aXZlI3NyY30gdXJsIHRvIHtAbGluayBTaG93ZG93bkNvbXBvbmVudCN2YWx1ZX0uXHJcbiAgICpcclxuICAgKiBfX0V4YW1wbGUgOl9fXHJcbiAgICpcclxuICAgKiBgYGBodG1sXHJcbiAgICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgI3VybCB2YWx1ZT1cInNvdXJjZS5zcmNcIiBwbGFjZWhvbGRlcj1cIlVybFwiIC8+XHJcbiAgICogPGJ1dHRvbiAoY2xpY2spPVwic291cmNlLmxvYWQodXJsLnZhbHVlKVwiPkxvYWQ8L2J1dHRvbj5cclxuICAgKiA8c2hvd2Rvd24gI3NvdXJjZT1cInNvdXJjZVwiIHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL25neC1zaG93ZG93bi9SRUFETUUubWRcIj48L3Nob3dkb3duPlxyXG4gICAqIGBgYFxyXG4gICAqIEBwYXJhbSB1cmwgLSBBIHVybCBvZiBtYXJrZG93biBjb250ZW50IHRvIGxvYWQgKGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGN1cnJlbnQgdXJsIG9mIGBTb3VyY2VEaXJlY3RpdmUjc3JjYClcclxuICAgKi9cclxuICBwdWJsaWMgbG9hZCh1cmw/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh1cmwpIHtcclxuICAgICAgdGhpcy5zcmMgPSB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3JjKSB7XHJcbiAgICAgIHRoaXNcclxuICAgICAgICAuX2h0dHBcclxuICAgICAgICAuZ2V0KHRoaXMuc3JjLCB7cmVzcG9uc2VUeXBlOiAndGV4dCd9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3Nob3dkb3duQ29tcG9uZW50LnJlbmRlcihyZXNwb25zZSk7XHJcbiAgICAgICAgfSwgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==