UNPKG

@cisstech/nge

Version:

NG Essentials is a collection of libraries for Angular developers.

71 lines 9.8 kB
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, } from '@angular/core'; import { NGE_MONACO_CONFIG } from '../../monaco-config'; import * as i0 from "@angular/core"; import * as i1 from "../../services/monaco-loader.service"; import * as i2 from "@angular/common"; import * as i3 from "../monaco-placeholder/monaco-placeholder.component"; export class NgeMonacoEditorComponent { constructor(loader, config) { this.loader = loader; this.config = config; this.loading = true; this.ready = new EventEmitter(); this.autoLayout = true; this.width = 0; this.height = 0; } ngAfterViewInit() { this.loader.loadAsync().then(() => { this.createEditor(); }); } ngAfterViewChecked() { if (!this.autoLayout) { return; } const { offsetWidth, offsetHeight } = this.container.nativeElement; if (offsetWidth !== this.width || offsetHeight !== this.height) { this.width = offsetWidth; this.height = offsetHeight; this.editor?.layout(); } } ngOnDestroy() { this.editor?.dispose(); } onResizeWindow() { this.editor?.layout(); } createEditor() { this.editor = monaco.editor.create(this.container.nativeElement, { ...(this.config.options || {}), ...(this.options || {}), }); this.loading = false; this.ready.emit(this.editor); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMonacoEditorComponent, deps: [{ token: i1.NgeMonacoLoaderService }, { token: NGE_MONACO_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.1", type: NgeMonacoEditorComponent, selector: "nge-monaco-editor", inputs: { autoLayout: "autoLayout", options: "options" }, outputs: { ready: "ready" }, host: { listeners: { "window:resize": "onResizeWindow()" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: "<nge-monaco-placeholder *ngIf=\"loading\" />\n<div class=\"nge-monaco-editor-container\" #container></div>\n", styles: [":host{display:block;height:var(--editor-height, 100%);border:1px solid #f5f5f5;box-sizing:border-box}.nge-monaco-editor-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.NgeMonacoPlaceholderComponent, selector: "nge-monaco-placeholder" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMonacoEditorComponent, decorators: [{ type: Component, args: [{ selector: 'nge-monaco-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nge-monaco-placeholder *ngIf=\"loading\" />\n<div class=\"nge-monaco-editor-container\" #container></div>\n", styles: [":host{display:block;height:var(--editor-height, 100%);border:1px solid #f5f5f5;box-sizing:border-box}.nge-monaco-editor-container{width:100%;height:100%}\n"] }] }], ctorParameters: () => [{ type: i1.NgeMonacoLoaderService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NGE_MONACO_CONFIG] }] }], propDecorators: { container: [{ type: ViewChild, args: ['container', { static: true }] }], ready: [{ type: Output }], autoLayout: [{ type: Input }], options: [{ type: Input }], onResizeWindow: [{ type: HostListener, args: ['window:resize'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uYWNvLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvbW9uYWNvL3NyYy9jb21wb25lbnRzL21vbmFjby1lZGl0b3IvbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvbW9uYWNvL3NyYy9jb21wb25lbnRzL21vbmFjby1lZGl0b3IvbW9uYWNvLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLHFCQUFxQixDQUFBOzs7OztBQVN4RSxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQ21CLE1BQThCLEVBRzlCLE1BQXVCO1FBSHZCLFdBQU0sR0FBTixNQUFNLENBQXdCO1FBRzlCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBaEJoQyxZQUFPLEdBQUcsSUFBSSxDQUFBO1FBSWQsVUFBSyxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFBO1FBQ2xELGVBQVUsR0FBRyxJQUFJLENBQUE7UUFJbEIsVUFBSyxHQUFHLENBQUMsQ0FBQTtRQUNULFdBQU0sR0FBRyxDQUFDLENBQUE7SUFPZixDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDckIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTTtRQUNSLENBQUM7UUFDRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFBO1FBQ2xFLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksWUFBWSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQTtZQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFBO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUdTLGNBQWM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQy9ELEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDOUIsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ3hCLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5QixDQUFDOzhHQXREVSx3QkFBd0Isd0RBZ0J6QixpQkFBaUI7a0dBaEJoQix3QkFBd0Isb1VDeEJyQyw4R0FFQTs7MkZEc0JhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTs7MEJBaUI1QyxRQUFROzswQkFDUixNQUFNOzJCQUFDLGlCQUFpQjt5Q0FiakIsU0FBUztzQkFEbEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUc5QixLQUFLO3NCQUFkLE1BQU07Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBb0NJLGNBQWM7c0JBRHZCLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5HRV9NT05BQ09fQ09ORklHLCBOZ2VNb25hY29Db25maWcgfSBmcm9tICcuLi8uLi9tb25hY28tY29uZmlnJ1xuaW1wb3J0IHsgTmdlTW9uYWNvTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vbmFjby1sb2FkZXIuc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdlLW1vbmFjby1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9uYWNvLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vbmFjby1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5nZU1vbmFjb0VkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBsb2FkaW5nID0gdHJ1ZVxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgY29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cblxuICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPG1vbmFjby5lZGl0b3IuSUVkaXRvcj4oKVxuICBASW5wdXQoKSBhdXRvTGF5b3V0ID0gdHJ1ZVxuICBASW5wdXQoKSBvcHRpb25zPzogbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnNcblxuICBwcml2YXRlIGVkaXRvcj86IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVDb2RlRWRpdG9yXG4gIHByaXZhdGUgd2lkdGggPSAwXG4gIHByaXZhdGUgaGVpZ2h0ID0gMFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVyOiBOZ2VNb25hY29Mb2FkZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChOR0VfTU9OQUNPX0NPTkZJRylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogTmdlTW9uYWNvQ29uZmlnXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkZXIubG9hZEFzeW5jKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZUVkaXRvcigpXG4gICAgfSlcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b0xheW91dCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHsgb2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCB9ID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudFxuICAgIGlmIChvZmZzZXRXaWR0aCAhPT0gdGhpcy53aWR0aCB8fCBvZmZzZXRIZWlnaHQgIT09IHRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLndpZHRoID0gb2Zmc2V0V2lkdGhcbiAgICAgIHRoaXMuaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0XG4gICAgICB0aGlzLmVkaXRvcj8ubGF5b3V0KClcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRvcj8uZGlzcG9zZSgpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHJvdGVjdGVkIG9uUmVzaXplV2luZG93KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yPy5sYXlvdXQoKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFZGl0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAuLi4odGhpcy5jb25maWcub3B0aW9ucyB8fCB7fSksXG4gICAgICAuLi4odGhpcy5vcHRpb25zIHx8IHt9KSxcbiAgICB9KVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgdGhpcy5yZWFkeS5lbWl0KHRoaXMuZWRpdG9yKVxuICB9XG59XG4iLCI8bmdlLW1vbmFjby1wbGFjZWhvbGRlciAqbmdJZj1cImxvYWRpbmdcIiAvPlxuPGRpdiBjbGFzcz1cIm5nZS1tb25hY28tZWRpdG9yLWNvbnRhaW5lclwiICNjb250YWluZXI+PC9kaXY+XG4iXX0=