@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
67 lines • 9.12 kB
JavaScript
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=