@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
1 lines • 11.8 kB
Source Map (JSON)
{"version":3,"file":"c8y-ngx-components-editor.mjs","sources":["../../editor/editor.component.ts","../../editor/editor.component.html","../../editor/monaco-editor-marker.directive.ts","../../editor/c8y-ngx-components-editor.ts"],"sourcesContent":["import {\n Component,\n AfterViewInit,\n OnDestroy,\n NgZone,\n ViewChild,\n ElementRef,\n forwardRef,\n Input,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type * as Monaco from 'monaco-editor';\nimport { LoadingComponent, ThemeOptions, ThemeSwitcherService } from '@c8y/ngx-components';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable } from 'rxjs';\nimport { NgIf } from '@angular/common';\n\nexport async function loadMonacoEditor() {\n const monaco = await import('monaco-editor');\n return monaco.default || monaco;\n}\n\n@Component({\n selector: 'c8y-editor',\n templateUrl: './editor.component.html',\n standalone: true,\n imports: [LoadingComponent, NgIf],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent),\n multi: true\n }\n ]\n})\nexport class EditorComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() editorOptions: Monaco.editor.IStandaloneEditorConstructionOptions = {};\n @Output() editorInit = new EventEmitter<Monaco.editor.IStandaloneCodeEditor>();\n monaco: typeof Monaco;\n editor: Monaco.editor.IStandaloneCodeEditor;\n\n private _readOnly = false;\n private _currentValue = '';\n private _onChanges: (value: string) => void;\n private _onTouched: () => void;\n @ViewChild('editorContainer', { static: true }) _editorContainer: ElementRef;\n private themeChanges$: Observable<ThemeOptions>;\n\n constructor(\n private zone: NgZone,\n private theme: ThemeSwitcherService\n ) {\n this.themeChanges$ = this.theme.currentlyAppliedTheme$.pipe(takeUntilDestroyed());\n }\n\n writeValue(obj: string | object): void {\n if (typeof obj === 'string') {\n this._currentValue = obj;\n } else {\n this._currentValue = JSON.stringify(obj, null, 2);\n }\n\n if (this.editor) {\n this.editor.setValue(this._currentValue);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this._onChanges = fn;\n this.register();\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n this.register();\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._readOnly = isDisabled;\n }\n\n async ngAfterViewInit(): Promise<void> {\n this.monaco = await loadMonacoEditor();\n this.editor = this.monaco.editor.create(\n this._editorContainer.nativeElement,\n Object.assign(\n {\n value: this._currentValue || '',\n language: 'json',\n automaticLayout: true,\n readOnly: this._readOnly\n },\n this.editorOptions\n )\n );\n (<any>window).monacoEditor = this.editor;\n this.editorInit.emit(this.editor);\n this.register();\n this.themeChanges$.subscribe(theme => {\n const themeToSet = theme === 'dark' ? `vs-dark` : 'vs';\n this.monaco.editor.setTheme(themeToSet);\n });\n }\n\n register() {\n if (!this.editor) {\n return;\n }\n if (this._onChanges) {\n const onChanges = this._onChanges;\n this.editor.onDidChangeModelContent(() => {\n this.zone.run(() => {\n const value = this.editor.getValue();\n this._currentValue = value;\n onChanges(value);\n });\n });\n this._onChanges = undefined;\n }\n\n if (this._onTouched) {\n const onTouched = this._onTouched;\n this.editor.onDidChangeModelContent(() => {\n this.zone.run(() => {\n onTouched();\n });\n });\n this._onTouched = undefined;\n }\n }\n\n ngOnDestroy() {\n this.editor.getModel().dispose();\n this.editor.dispose();\n }\n}\n","<c8y-loading *ngIf=\"!monaco\"></c8y-loading>\n<div class=\"editor-container\" style=\"height: 100%\" #editorContainer></div>\n","import { Directive, NgZone, OnDestroy, forwardRef } from '@angular/core';\nimport { EditorComponent } from './editor.component';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: 'c8y-editor [monacoEditorMarkerValidator]',\n standalone: true,\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MonacoEditorMarkerValidatorDirective),\n multi: true\n }\n ]\n})\nexport class MonacoEditorMarkerValidatorDirective implements Validator, OnDestroy {\n private editorInitSubscription: Subscription;\n\n constructor(\n private editorComponent: EditorComponent,\n private zone: NgZone\n ) {}\n\n ngOnDestroy(): void {\n this.editorInitSubscription?.unsubscribe();\n }\n\n validate(_control: AbstractControl<any, any>): ValidationErrors {\n if (!this.editorComponent.monaco || !this.editorComponent.editor) {\n return null;\n }\n const uri = this.editorComponent.editor.getModel().uri;\n const markers = this.editorComponent.monaco.editor.getModelMarkers({ resource: uri });\n if (markers.length) {\n return markers;\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.editorInitSubscription = this.editorComponent.editorInit.subscribe(editor => {\n editor.onDidChangeModelDecorations(() => {\n this.zone.run(() => {\n fn();\n });\n });\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EditorComponent"],"mappings":"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"}