UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

67 lines 9.12 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; export class SchemaFormEditorDataComponent { constructor() { this.formDataJsonSyncMode = 'FormDataToJson'; this.dataChange = new EventEmitter(); } ngOnInit() { this.startSyncFormDataToJson(); } ngOnDestroy() { clearInterval(this.timer); } onDataTextBoxFocused() { this.sync(); this.formDataJsonSyncMode = 'JsonToFormData'; } onDataTextBoxBlurred() { this.sync(); this.formDataJsonSyncMode = 'FormDataToJson'; } startSyncFormDataToJson() { this.timer = setInterval(() => { this.sync(); }, 1500); } sync() { if (this.formDataJsonSyncMode === 'FormDataToJson') { this.dataText = JSON.stringify(this.data, null, 4); } else { try { const parsedData = JSON.parse(this.dataText); // Only copy the properties from the JSON text parsed object to the actual data object. // Then all the existing functions in the actual data object won't be erased. for (const key in parsedData) { if (parsedData.hasOwnProperty(key)) { this.data[key] = parsedData[key]; } } this.dataChange.emit(this.data); } catch (e) { // eslint-disable-next-line no-console console.warn('JSON parse error.'); } } } } /** @nocollapse */ SchemaFormEditorDataComponent.ɵfac = function SchemaFormEditorDataComponent_Factory(t) { return new (t || SchemaFormEditorDataComponent)(); }; /** @nocollapse */ SchemaFormEditorDataComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: SchemaFormEditorDataComponent, selectors: [["sme-schema-form-editor-data"]], inputs: { data: "data" }, outputs: { dataChange: "dataChange" }, decls: 1, vars: 1, consts: [[1, "sme-layout-absolute-phone-up", "sme-position-inset-none", 2, "max-width", "none", 3, "ngModel", "ngModelChange", "focus", "blur"]], template: function SchemaFormEditorDataComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "textarea", 0); i0.ɵɵlistener("ngModelChange", function SchemaFormEditorDataComponent_Template_textarea_ngModelChange_0_listener($event) { return ctx.dataText = $event; })("focus", function SchemaFormEditorDataComponent_Template_textarea_focus_0_listener() { return ctx.onDataTextBoxFocused(); })("blur", function SchemaFormEditorDataComponent_Template_textarea_blur_0_listener() { return ctx.onDataTextBoxBlurred(); }); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵproperty("ngModel", ctx.dataText); } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchemaFormEditorDataComponent, [{ type: Component, args: [{ selector: 'sme-schema-form-editor-data', template: "<textarea class=\"sme-layout-absolute-phone-up sme-position-inset-none\" style=\"max-width:none\" [(ngModel)]=\"dataText\" (focus)=\"onDataTextBoxFocused()\"\r\n (blur)=\"onDataTextBoxBlurred()\"></textarea>\r\n" }] }], null, { data: [{ type: Input }], dataChange: [{ type: Output }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWZvcm0tZWRpdG9yLWRhdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2NoZW1hLWZvcm0vc2NoZW1hLWZvcm0tZWRpdG9yLWRhdGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2NoZW1hLWZvcm0vc2NoZW1hLWZvcm0tZWRpdG9yLWRhdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0xRixNQUFNLE9BQU8sNkJBQTZCO0lBSjFDO1FBTVkseUJBQW9CLEdBQUcsZ0JBQWdCLENBQUM7UUFRekMsZUFBVSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO0tBZ0Q1RTtJQTlDVSxRQUFRO1FBQ1gsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLFdBQVc7UUFDZCxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQ3BCLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDLEVBQ0QsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRU8sSUFBSTtRQUNSLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLGdCQUFnQixFQUFFO1lBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0gsSUFBSTtnQkFDQSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0MsdUZBQXVGO2dCQUN2Riw2RUFBNkU7Z0JBQzdFLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO29CQUMxQixJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNwQztpQkFDSjtnQkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUNyQztTQUNKO0lBQ0wsQ0FBQzs7NkhBekRRLDZCQUE2QjsrR0FBN0IsNkJBQTZCO1FDTjFDLG1DQUNvQztRQUQwRCwySkFBc0IsK0ZBQVUsMEJBQXNCLElBQWhDLDZGQUN4RywwQkFBc0IsSUFEa0Y7UUFDaEYsaUJBQVc7O1FBRCtDLHNDQUFzQjs7dUZETXZHLDZCQUE2QjtjQUp6QyxTQUFTOzJCQUNJLDZCQUE2QjtnQkFVaEMsSUFBSTtrQkFEVixLQUFLO1lBSUMsVUFBVTtrQkFEaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1zY2hlbWEtZm9ybS1lZGl0b3ItZGF0YScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2NoZW1hLWZvcm0tZWRpdG9yLWRhdGEuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY2hlbWFGb3JtRWRpdG9yRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgdGltZXI7XHJcbiAgICBwcml2YXRlIGZvcm1EYXRhSnNvblN5bmNNb2RlID0gJ0Zvcm1EYXRhVG9Kc29uJztcclxuXHJcbiAgICBwdWJsaWMgZGF0YVRleHQ6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRhdGE6IEZvcm1EYXRhO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGRhdGFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGb3JtRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1EYXRhPigpO1xyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0YXJ0U3luY0Zvcm1EYXRhVG9Kc29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRGF0YVRleHRCb3hGb2N1c2VkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3luYygpO1xyXG4gICAgICAgIHRoaXMuZm9ybURhdGFKc29uU3luY01vZGUgPSAnSnNvblRvRm9ybURhdGEnO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkRhdGFUZXh0Qm94Qmx1cnJlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN5bmMoKTtcclxuICAgICAgICB0aGlzLmZvcm1EYXRhSnNvblN5bmNNb2RlID0gJ0Zvcm1EYXRhVG9Kc29uJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXJ0U3luY0Zvcm1EYXRhVG9Kc29uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbChcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIDE1MDApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3luYygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtRGF0YUpzb25TeW5jTW9kZSA9PT0gJ0Zvcm1EYXRhVG9Kc29uJykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFUZXh0ID0gSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLCBudWxsLCA0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UodGhpcy5kYXRhVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGNvcHkgdGhlIHByb3BlcnRpZXMgZnJvbSB0aGUgSlNPTiB0ZXh0IHBhcnNlZCBvYmplY3QgdG8gdGhlIGFjdHVhbCBkYXRhIG9iamVjdC5cclxuICAgICAgICAgICAgICAgIC8vIFRoZW4gYWxsIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgaW4gdGhlIGFjdHVhbCBkYXRhIG9iamVjdCB3b24ndCBiZSBlcmFzZWQuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJzZWREYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZERhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHBhcnNlZERhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdKU09OIHBhcnNlIGVycm9yLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjx0ZXh0YXJlYSBjbGFzcz1cInNtZS1sYXlvdXQtYWJzb2x1dGUtcGhvbmUtdXAgc21lLXBvc2l0aW9uLWluc2V0LW5vbmVcIiBzdHlsZT1cIm1heC13aWR0aDpub25lXCIgWyhuZ01vZGVsKV09XCJkYXRhVGV4dFwiIChmb2N1cyk9XCJvbkRhdGFUZXh0Qm94Rm9jdXNlZCgpXCJcclxuICAgIChibHVyKT1cIm9uRGF0YVRleHRCb3hCbHVycmVkKClcIj48L3RleHRhcmVhPlxyXG4iXX0=