UNPKG

@cisstech/nge

Version:

NG Essentials is a collection of libraries for Angular developers.

67 lines 8.92 kB
import { 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"; export class NgeMonacoDiffEditorComponent { constructor(loader, config) { this.loader = loader; this.config = config; this.ready = new EventEmitter(); this.autoLayout = true; this.width = 0; this.height = 0; } onResizeWindow() { this.editor?.layout(); } 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(); } createEditor() { this.editor = monaco.editor.createDiffEditor(this.container.nativeElement, { ...(this.config.options || {}), ...(this.options || {}), }); this.ready.emit(this.editor); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMonacoDiffEditorComponent, 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: NgeMonacoDiffEditorComponent, selector: "nge-monaco-diff-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: "<div class=\"nge-monaco-diff-editor-container\" #container></div>\n", styles: [":host{display:block;height:var(--editor-height, 100%);border:1px solid #F5F5F5;box-sizing:border-box}.nge-monaco-diff-editor-container{width:100%;height:100%}\n"] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMonacoDiffEditorComponent, decorators: [{ type: Component, args: [{ selector: 'nge-monaco-diff-editor', template: "<div class=\"nge-monaco-diff-editor-container\" #container></div>\n", styles: [":host{display:block;height:var(--editor-height, 100%);border:1px solid #F5F5F5;box-sizing:border-box}.nge-monaco-diff-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uYWNvLWRpZmYtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nZS9tb25hY28vc3JjL2NvbXBvbmVudHMvbW9uYWNvLWRpZmYtZWRpdG9yL21vbmFjby1kaWZmLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvbW9uYWNvL3NyYy9jb21wb25lbnRzL21vbmFjby1kaWZmLWVkaXRvci9tb25hY28tZGlmZi1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7QUFReEUsTUFBTSxPQUFPLDRCQUE0QjtJQWlCdkMsWUFDbUIsTUFBOEIsRUFHOUIsTUFBdUI7UUFIdkIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFHOUIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFoQjFDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQTtRQUdqRCxlQUFVLEdBQUcsSUFBSSxDQUFBO1FBTVQsVUFBSyxHQUFHLENBQUMsQ0FBQTtRQUNULFdBQU0sR0FBRyxDQUFDLENBQUE7SUFPZixDQUFDO0lBR0osY0FBYztRQUNaLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3JCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQTtRQUNsRSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUE7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUE7WUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQTtRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUN6RSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUN4QixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDOUIsQ0FBQzs4R0F6RFUsNEJBQTRCLHdEQW9CN0IsaUJBQWlCO2tHQXBCaEIsNEJBQTRCLHlVQ3RCekMscUVBQ0E7OzJGRHFCYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0Usd0JBQXdCOzswQkF1Qi9CLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsaUJBQWlCO3lDQWxCM0IsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXhDLEtBQUs7c0JBREosTUFBTTtnQkFJUCxVQUFVO3NCQURULEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQWVOLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ2VNb25hY29Db25maWcsIE5HRV9NT05BQ09fQ09ORklHIH0gZnJvbSAnLi4vLi4vbW9uYWNvLWNvbmZpZydcbmltcG9ydCB7IE5nZU1vbmFjb0xvYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb25hY28tbG9hZGVyLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZS1tb25hY28tZGlmZi1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9uYWNvLWRpZmYtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9uYWNvLWRpZmYtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5nZU1vbmFjb0RpZmZFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuXG4gIEBPdXRwdXQoKVxuICByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8bW9uYWNvLmVkaXRvci5JRWRpdG9yPigpXG5cbiAgQElucHV0KClcbiAgYXV0b0xheW91dCA9IHRydWVcblxuICBASW5wdXQoKVxuICBvcHRpb25zPzogbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZURpZmZFZGl0b3JDb25zdHJ1Y3Rpb25PcHRpb25zXG5cbiAgcHJpdmF0ZSBlZGl0b3I/OiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lRGlmZkVkaXRvclxuICBwcml2YXRlIHdpZHRoID0gMFxuICBwcml2YXRlIGhlaWdodCA9IDBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlcjogTmdlTW9uYWNvTG9hZGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoTkdFX01PTkFDT19DT05GSUcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IE5nZU1vbmFjb0NvbmZpZ1xuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIG9uUmVzaXplV2luZG93KCkge1xuICAgIHRoaXMuZWRpdG9yPy5sYXlvdXQoKVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubG9hZGVyLmxvYWRBc3luYygpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVFZGl0b3IoKVxuICAgIH0pXG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLmF1dG9MYXlvdXQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB7IG9mZnNldFdpZHRoLCBvZmZzZXRIZWlnaHQgfSA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICBpZiAob2Zmc2V0V2lkdGggIT09IHRoaXMud2lkdGggfHwgb2Zmc2V0SGVpZ2h0ICE9PSB0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy53aWR0aCA9IG9mZnNldFdpZHRoXG4gICAgICB0aGlzLmhlaWdodCA9IG9mZnNldEhlaWdodFxuICAgICAgdGhpcy5lZGl0b3I/LmxheW91dCgpXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5lZGl0b3I/LmRpc3Bvc2UoKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFZGl0b3IoKSB7XG4gICAgdGhpcy5lZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZURpZmZFZGl0b3IodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCwge1xuICAgICAgLi4uKHRoaXMuY29uZmlnLm9wdGlvbnMgfHwge30pLFxuICAgICAgLi4uKHRoaXMub3B0aW9ucyB8fCB7fSksXG4gICAgfSlcbiAgICB0aGlzLnJlYWR5LmVtaXQodGhpcy5lZGl0b3IpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuZ2UtbW9uYWNvLWRpZmYtZWRpdG9yLWNvbnRhaW5lclwiICNjb250YWluZXI+PC9kaXY+XG4iXX0=