@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
64 lines • 9.82 kB
JavaScript
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild, inject, } from '@angular/core';
import { NgeMonacoColorizerService } from '../../services/monaco-colorizer.service';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "../monaco-placeholder/monaco-placeholder.component";
export class NgeMonacoViewerComponent {
constructor() {
this.colorizer = inject(NgeMonacoColorizerService);
this.changeDetectorRef = inject(ChangeDetectorRef);
this.subscriptions = [];
this.loading = true;
}
ngOnChanges() {
const code = this.transclusion.nativeElement.textContent?.trim() || this.code || '';
this.colorize(code);
}
ngOnDestroy() {
this.editor?.dispose();
this.observer?.disconnect();
this.subscriptions.forEach((s) => s.unsubscribe());
}
async colorize(code) {
try {
await this.colorizer.colorizeElement({
code: code || '',
theme: this.theme,
lines: this.lines,
language: this.language,
highlights: this.highlights,
filename: this.filename,
element: this.container.nativeElement,
});
}
finally {
this.loading = false;
this.changeDetectorRef.markForCheck();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMonacoViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.1", type: NgeMonacoViewerComponent, selector: "nge-monaco-viewer", inputs: { code: "code", lines: "lines", theme: "theme", language: "language", highlights: "highlights", filename: "filename" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "transclusion", first: true, predicate: ["transclusion"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<nge-monaco-placeholder *ngIf=\"loading\" />\n\n<pre class=\"monaco-editor monaco-editor-background\">\n <code #container></code>\n</pre>\n\n<div #transclusion style=\"display: none;\">\n <ng-content></ng-content>\n</div>\n\n", styles: ["pre{margin:.5em 0;overflow:auto;border:1px solid #f2f2f2}nge-monaco-placeholder{max-height:200px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NgeMonacoPlaceholderComponent, selector: "nge-monaco-placeholder" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMonacoViewerComponent, decorators: [{
type: Component,
args: [{ selector: 'nge-monaco-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nge-monaco-placeholder *ngIf=\"loading\" />\n\n<pre class=\"monaco-editor monaco-editor-background\">\n <code #container></code>\n</pre>\n\n<div #transclusion style=\"display: none;\">\n <ng-content></ng-content>\n</div>\n\n", styles: ["pre{margin:.5em 0;overflow:auto;border:1px solid #f2f2f2}nge-monaco-placeholder{max-height:200px}\n"] }]
}], propDecorators: { container: [{
type: ViewChild,
args: ['container', { static: true }]
}], transclusion: [{
type: ViewChild,
args: ['transclusion', { static: true }]
}], code: [{
type: Input
}], lines: [{
type: Input
}], theme: [{
type: Input
}], language: [{
type: Input
}], highlights: [{
type: Input
}], filename: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uYWNvLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvbW9uYWNvL3NyYy9jb21wb25lbnRzL21vbmFjby12aWV3ZXIvbW9uYWNvLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvbW9uYWNvL3NyYy9jb21wb25lbnRzL21vbmFjby12aWV3ZXIvbW9uYWNvLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsRUFDVCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUE7Ozs7QUFTbkYsTUFBTSxPQUFPLHdCQUF3QjtJQU5yQztRQU9tQixjQUFTLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFDN0Msc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFJdEQsa0JBQWEsR0FBbUIsRUFBRSxDQUFBO1FBRWhDLFlBQU8sR0FBRyxJQUFJLENBQUE7S0FvRHpCO0lBM0JDLFdBQVc7UUFDVCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7UUFDbkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQTtRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO2FBQ3RDLENBQUMsQ0FBQTtRQUNKLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN2QyxDQUFDO0lBQ0gsQ0FBQzs4R0EzRFUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsaWJDcEJyQyxxT0FVQTs7MkZEVWEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzhCQVlMLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFeEMsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWxDLElBQUk7c0JBQVosS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ2VNb25hY29Db2xvcml6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9uYWNvLWNvbG9yaXplci5zZXJ2aWNlJ1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdlLW1vbmFjby12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJ21vbmFjby12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbW9uYWNvLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdlTW9uYWNvVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbG9yaXplciA9IGluamVjdChOZ2VNb25hY29Db2xvcml6ZXJTZXJ2aWNlKVxuICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxuXG4gIHByaXZhdGUgZWRpdG9yPzogbW9uYWNvLmVkaXRvci5JRWRpdG9yXG4gIHByaXZhdGUgb2JzZXJ2ZXI/OiBNdXRhdGlvbk9ic2VydmVyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXVxuXG4gIHByb3RlY3RlZCBsb2FkaW5nID0gdHJ1ZVxuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gIEBWaWV3Q2hpbGQoJ3RyYW5zY2x1c2lvbicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHRyYW5zY2x1c2lvbiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG5cbiAgLyoqIGNvZGUgdG8gaGlnaGxpZ2h0ICovXG4gIEBJbnB1dCgpIGNvZGU/OiBzdHJpbmdcblxuICAvKiogc2hvdyBsaW5lIG51bWJlcnM/ICovXG4gIEBJbnB1dCgpIGxpbmVzPzogc3RyaW5nIHwgbnVtYmVyXG5cbiAgLyoqIHRoZW1lIHRvIHVzZSBmb3IgdGhlIHN5bnRheCBoaWdobGlnaHRpbmcgICovXG4gIEBJbnB1dCgpIHRoZW1lPzogc3RyaW5nXG5cbiAgLyoqIHRhcmdldCBsYW5ndWFnZSAqL1xuICBASW5wdXQoKSBsYW5ndWFnZT86IHN0cmluZ1xuXG4gIC8qKiBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBsaW5lIG51bWJlcnMgdG8gaGlnaGxpZ2h0ICovXG4gIEBJbnB1dCgpIGhpZ2hsaWdodHM/OiBzdHJpbmcgfCBudW1iZXJcblxuICAvKiogZmlsZW5hbWUgdG8gZGlzcGxheSBpbiB0aGUgaGVhZGVyIHRhYiAqL1xuICBASW5wdXQoKSBmaWxlbmFtZT86IHN0cmluZ1xuXG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMudHJhbnNjbHVzaW9uLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ/LnRyaW0oKSB8fCB0aGlzLmNvZGUgfHwgJydcbiAgICB0aGlzLmNvbG9yaXplKGNvZGUpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRvcj8uZGlzcG9zZSgpXG4gICAgdGhpcy5vYnNlcnZlcj8uZGlzY29ubmVjdCgpXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29sb3JpemUoY29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29sb3JpemVyLmNvbG9yaXplRWxlbWVudCh7XG4gICAgICAgIGNvZGU6IGNvZGUgfHwgJycsXG4gICAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxuICAgICAgICBsaW5lczogdGhpcy5saW5lcyxcbiAgICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2UsXG4gICAgICAgIGhpZ2hsaWdodHM6IHRoaXMuaGlnaGxpZ2h0cyxcbiAgICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZW5hbWUsXG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxufVxuIiwiPG5nZS1tb25hY28tcGxhY2Vob2xkZXIgKm5nSWY9XCJsb2FkaW5nXCIgLz5cblxuPHByZSBjbGFzcz1cIm1vbmFjby1lZGl0b3IgbW9uYWNvLWVkaXRvci1iYWNrZ3JvdW5kXCI+XG4gIDxjb2RlICNjb250YWluZXI+PC9jb2RlPlxuPC9wcmU+XG5cbjxkaXYgI3RyYW5zY2x1c2lvbiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG4iXX0=