ngx-showdown-angular-latest
Version:
An Angular 17 integration for Showdown
136 lines • 11.3 kB
JavaScript
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==