UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

1,022 lines (1,021 loc) 108 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, ViewChild } from '@angular/core'; import { AbstractDataEditorView } from './AbstractDataEditorView'; import { FormViewModel } from '../model/FormViewModel'; import { TabPane } from '../../component/TabPane.component'; import { TabModel } from '../model/TabModel'; import { DialogService } from '../../service/DialogService.service'; import { ArrayUtils } from '../../share/utils/ArrayUtils'; import { ParrotsEditorSettingFactory } from '../../service/ParrotsEditorSettingFactory.service'; import { Option } from '../../decorator/Option.decorator'; import { I18N } from '../../decorator/I18N.decorator'; import { DataUtils } from '../../share/utils/DataUtils'; const /** @type {?} */ TYPE_NAME = "phx-form-view"; export class FormView extends AbstractDataEditorView { /** * @param {?} dialogService * @param {?} editorSettingFactory * @param {?} elementRef */ constructor(dialogService, editorSettingFactory, elementRef) { super(editorSettingFactory, elementRef); this.tabsData = []; this.originalTabsData = []; this.dialogService = dialogService; this.showMoreMenu = true; } /** * @return {?} */ ngOnInit() { super.ngOnInit(); if (this.editor !== null && (typeof this.editor !== 'undefined')) { this.editor.addViewComponent(this); let /** @type {?} */ objIdField = this.editor.getObjectIdField(); if (this.showEvent !== null && (typeof this.showEvent !== 'undefined')) { this.showEvent.subscribe((event) => { this.reloadAllTab(); }); } let /** @type {?} */ createdEvent = this.editor.getDataCreateEvent(); if (createdEvent !== null && (typeof createdEvent !== 'undefined')) { createdEvent.subscribe((event) => { let /** @type {?} */ original = null; let /** @type {?} */ data = null; if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { if (event.detail.data.data !== null && typeof event.detail.data.data !== 'undefined') { data = event.detail.data.data; } if (event.detail.data.original !== null && typeof event.detail.data.original !== 'undefined') { original = event.detail.data.original; } } } // got id ? update in tab with dataID if (data !== null) { // get all tabIndex let /** @type {?} */ indexMap = {}; if (original !== null) { for (let /** @type {?} */ i = 0; i < original.length; i++) { let /** @type {?} */ oriItem = original[i]; let /** @type {?} */ item = null; if (i < data.length) { item = data[i]; } if (item === null || typeof item === 'undefined') { continue; } let /** @type {?} */ indexArray = this.getTabDataIndexesMatched(oriItem, false); for (let /** @type {?} */ index of indexArray) { if (index <= -1) { continue; } let /** @type {?} */ keyString = index + ""; if (indexMap[keyString] !== null && typeof indexMap[keyString] !== 'undefined') { indexMap[keyString].push(item); } else { indexMap[keyString] = [item]; } } } } for (let /** @type {?} */ key in indexMap) { let /** @type {?} */ curTab = parseInt(key); let /** @type {?} */ objArray = indexMap[key]; if (curTab > -1) { // update model title let /** @type {?} */ tModels = this.tabPane.getTabModels(); let /** @type {?} */ firstData = null; if (objArray.length > 0) { firstData = objArray[0]; } if (curTab < tModels.length) { tModels[curTab].label = this.generateTabLabel(objArray); } // update data in tab this.tabPane.setTabData(curTab, objArray); this.tabPane.saveTabData(curTab); let /** @type {?} */ tabDataObjs = null; if (curTab < this.tabsData.length) { this.tabsData[curTab].objects = []; tabDataObjs = this.tabsData[curTab].objects; } let /** @type {?} */ originalObjs = null; if (curTab < this.originalTabsData.length) { this.originalTabsData[curTab] = []; originalObjs = this.originalTabsData[curTab]; } for (let /** @type {?} */ d of objArray) { // add to tabBody if (tabDataObjs !== null) { let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(d)); tabDataObjs.push(cloneData); } // add to original if (originalObjs !== null) { originalObjs.push(d); } } // refresh this.reloadTabIndex(curTab); } } } }); } let /** @type {?} */ updateEvent = this.editor.getDataUpdateEvent(); if (updateEvent !== null && (typeof updateEvent !== 'undefined')) { updateEvent.subscribe((event) => { let /** @type {?} */ data = null; if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { data = event.detail.data.data; } } if (data !== null) { let /** @type {?} */ updateTabIndexes = this.getTabDataIndexesMatched(data, false); for (let /** @type {?} */ updateTabIndex of updateTabIndexes) { if (updateTabIndex > -1) { // reload data & render by tab this.reloadTabIndex(updateTabIndex); } } } }); } // delete by id if exist close tab and more let /** @type {?} */ deleteEvent = this.editor.getDataDeleteEvent(); if (deleteEvent !== null && (typeof deleteEvent !== 'undefined')) { deleteEvent.subscribe((event) => { let /** @type {?} */ data = null; if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { data = event.detail.data.data; } } if (data !== null) { for (let /** @type {?} */ d of data) { let /** @type {?} */ dIndex = this.getIndexFromOriginalData(d); if (dIndex > -1) { // close tab this.closeTabAtIndex(dIndex); // remove from original this.removeFromOriginalData(d); if (dIndex < this.originalTabsData.length && this.originalTabsData[dIndex].length <= 0) { // remove this.originalTabsData.splice(dIndex, 1); } } } } }); } // revert let /** @type {?} */ revertEvent = this.editor.getDataRevertEvent(); if (revertEvent !== null && (typeof revertEvent !== 'undefined')) { revertEvent.subscribe((event) => { let /** @type {?} */ data = null; if (event.detail !== null && typeof event.detail !== 'undefined') { if (event.detail.data !== null && typeof event.detail.data !== 'undefined') { data = event.detail.data.data; } } if (data !== null) { let /** @type {?} */ updateTabIndexes = this.getTabDataIndexesMatched(data, false); for (let /** @type {?} */ updateTabIndex of updateTabIndexes) { if (updateTabIndex > -1) { // reload data & render by tab this.reloadTabIndex(updateTabIndex); } } } }); } let /** @type {?} */ dataReloadEvent = this.editor.getDataReloadEvent(); if (dataReloadEvent !== null && (typeof dataReloadEvent !== 'undefined')) { dataReloadEvent.subscribe((event) => { //! do reload sthing }); } } if (this.model !== null && this.model instanceof FormViewModel) { this.tabComponentType = this.model.tabComponentType; this.tabComponentModel = this.model.tabComponentModel; } } /** * @return {?} */ ngOnDestroy() { if (this.editor !== null && (typeof this.editor !== 'undefined')) { this.editor.removeViewComponent(this); } } /** * @param {?} objects * @return {?} */ generateTabLabel(objects) { if (this.tabLabelGenerator !== null && typeof this.tabLabelGenerator === 'function') { try { let /** @type {?} */ value = this.tabLabelGenerator(this, objects); return value; } catch (/** @type {?} */ error) { } } if (objects !== null && typeof objects !== 'undefined') { if (objects.length == 1) { let /** @type {?} */ objIdField = (this.editor === null ? "" : this.editor.getObjectIdField()); return DataUtils.getDataValue(objIdField, objects[0]); } else { return "MULTIPLE DATA"; } } return "New tab"; } /** * @param {?} data * @return {?} */ removeFromOriginalData(data) { if (data !== null && typeof data !== 'undefined') { let /** @type {?} */ tempDatas = []; for (let /** @type {?} */ dataContainer of this.originalTabsData) { let /** @type {?} */ tempContainer = []; for (let /** @type {?} */ d of dataContainer) { if (!this.editor.getDataComparator().equals(d, data)) { tempContainer.push(d); } } tempDatas.push(tempContainer); } this.originalTabsData = tempDatas; } } /** * @param {?} data * @return {?} */ getIndexFromOriginalData(data) { if (data === null || typeof data === 'undefined') { return -1; } let /** @type {?} */ index = 0; for (let /** @type {?} */ dataContainer of this.originalTabsData) { if (dataContainer !== null && typeof dataContainer !== 'undefined') { for (let /** @type {?} */ d of dataContainer) { if (Array.isArray(data)) { for (let /** @type {?} */ inner of data) { if (this.editor.getDataComparator().equals(d, inner)) { return index; } } } else { if (this.editor.getDataComparator().equals(d, data)) { return index; } } } } index += 1; } return -1; } /** * @param {?} index * @return {?} */ isTabDirty(index) { if (index === null || typeof index === 'undefined' || index < 0) { return false; } return this.tabPane.isTabDirty(index); } /** * @return {?} */ getAllDirtyData() { let /** @type {?} */ result = []; for (let /** @type {?} */ i = 0; i < this.tabsData.length; i++) { if (this.isTabDirty(i)) { let /** @type {?} */ tabDataArray = this.getTabData(i); for (let /** @type {?} */ d of tabDataArray) { result.push(d); } } } return result; } /** * @param {?} dataObject * @return {?} */ getWrapDataObject(dataObject) { let /** @type {?} */ data = { editor: this.editor, objects: dataObject }; return data; } /** * @param {?} sourceArray * @param {?} value * @return {?} */ isMatchValue(sourceArray, value) { if (sourceArray === null || typeof sourceArray === 'undefined') { return false; } for (let /** @type {?} */ a of sourceArray) { try { return this.editor.getDataComparator().equals(a, value); } catch (/** @type {?} */ err) { } } return false; } /** * @param {?} sourceArray * @param {?} toMatchArray * @return {?} */ isMatchLessOneValue(sourceArray, toMatchArray) { if (sourceArray === null || typeof sourceArray === 'undefined') { return false; } if (toMatchArray === null || typeof toMatchArray === 'undefined') { return false; } for (let /** @type {?} */ a of toMatchArray) { if (this.isMatchValue(sourceArray, a)) { return true; } } return false; } /** * @param {?} sourceArray * @param {?} toMatchArray * @return {?} */ isMatchAllValue(sourceArray, toMatchArray) { if (sourceArray === null || typeof sourceArray === 'undefined') { return false; } if (toMatchArray === null || typeof toMatchArray === 'undefined') { return false; } if (sourceArray.length !== toMatchArray.length) { return false; } for (let /** @type {?} */ a of toMatchArray) { if (!this.isMatchValue(sourceArray, a)) { return false; } } return true; } /** * @param {?} index * @return {?} */ removeTabDataAtIndex(index) { if (index < this.tabsData.length) { this.tabsData.splice(index, 1); } if (index < this.originalTabsData.length) { this.originalTabsData.splice(index, 1); } } /** * @param {?} data * @return {?} */ getTabDataIndexes(data) { return this.getTabDataIndexesMatched(data, true); } /** * @param {?} objects * @return {?} */ getDefaultDataArray(objects) { let /** @type {?} */ result = []; if (objects !== null && typeof objects !== 'undefined') { let /** @type {?} */ langField = null; let /** @type {?} */ langFieldName = null; if (this.editor !== null && typeof this.editor !== 'undefined') { langFieldName = this.editor.getLanguageField(); } for (let /** @type {?} */ obj of objects) { if (obj[langFieldName] === null || typeof obj[langFieldName] === 'undefined') { result.push(obj); } } } return result; } /** * @param {?} data * @param {?} isMatchAll * @return {?} */ getTabDataIndexesMatched(data, isMatchAll) { let /** @type {?} */ result = []; if (data !== null && typeof data !== 'undefined') { let /** @type {?} */ index = 0; for (let /** @type {?} */ wrapperData of this.tabsData) { let /** @type {?} */ defObjArray = this.getDefaultDataArray(wrapperData.objects); if (Array.isArray(data)) { if (isMatchAll) { if (this.isMatchAllValue(defObjArray, data)) { result.push(index); } } else { if (this.isMatchLessOneValue(defObjArray, data)) { result.push(index); } } } else { if (isMatchAll) { if (this.isMatchAllValue(defObjArray, [data])) { result.push(index); } } else { if (this.isMatchLessOneValue(defObjArray, [data])) { result.push(index); } } } index += 1; } } return result; } /** * @return {?} */ reloadAllData() { // reload from editor let /** @type {?} */ tabSize = this.tabsData.length; for (let /** @type {?} */ i = 0; i < tabSize; i++) { this.reloadDataAtIndex(i); } } /** * @param {?} index * @return {?} */ reloadDataAtIndex(index) { let /** @type {?} */ dataArray = this.getTabData(index); let /** @type {?} */ oriDataArray = this.getOriginalTabData(index); let /** @type {?} */ editorData = []; if (this.editor != null && this.editor.getData() != null && typeof this.editor.getData() !== 'undefined') { editorData = this.editor.getData(); } if (editorData.length <= 0) { return; } let /** @type {?} */ comparator = this.editor.getDataComparator(); let /** @type {?} */ tempData = []; let /** @type {?} */ cloneTempData = []; for (let /** @type {?} */ d of oriDataArray) { let /** @type {?} */ isAdding = false; for (let /** @type {?} */ editorDT of editorData) { if (comparator !== null) { if (comparator.equals(d, editorDT)) { tempData.push(editorDT); let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(editorDT)); cloneTempData.push(cloneData); isAdding = true; break; } } } if (!isAdding) { tempData.push(d); let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(d)); cloneTempData.push(cloneData); } } if (index < this.originalTabsData.length) { this.originalTabsData[index] = tempData; } if (index < this.tabsData.length) { this.tabsData[index].objects = cloneTempData; } } /** * @param {?} index * @return {?} */ reloadTabIndex(index) { if (index === null || typeof index === 'undefined' || index <= -1) { return; } this.reloadDataAtIndex(index); if (index < this.tabsData.length) { let /** @type {?} */ tabData = this.tabsData[index]; // update data in tab this.tabPane.setTabData(index, tabData); } } /** * @return {?} */ reloadAllTab() { this.reloadAllData(); for (let /** @type {?} */ i = 0; i < this.tabsData.length; i++) { this.tabPane.setTabData(i, this.tabsData[i]); } } /** * @param {?} index * @return {?} */ getOriginalTabData(index) { if (index == null) { return []; } if (index < this.originalTabsData.length) { return this.originalTabsData[index]; } return []; } /** * @return {?} */ onViewSettingLoaded() { this.reloadAllTab(); } /** * @param {?} $event * @return {?} */ onNewTabBtnClick($event) { // do sth } /** * @param {?} $event * @return {?} */ onTabChange($event) { // tab change } /** * @return {?} */ isShowMoreMenu() { return this.showMoreMenu; } /** * @param {?} $event * @return {?} */ onTabMoved($event) { let /** @type {?} */ evData = null; if ($event.detail !== null && typeof $event.detail !== 'undefined') { evData = $event.detail.data; } if (evData !== null && typeof evData !== 'undefined') { let /** @type {?} */ fromIndex = evData.fromIndex; let /** @type {?} */ toIndex = evData.toIndex; ArrayUtils.move(this.tabsData, fromIndex, toIndex); ArrayUtils.move(this.originalTabsData, fromIndex, toIndex); } } /** * @param {?} $event * @return {?} */ onTabAdded($event) { let /** @type {?} */ evData = null; if ($event.detail !== null && typeof $event.detail !== 'undefined') { evData = $event.detail.data; } if (evData !== null && typeof evData !== 'undefined') { let /** @type {?} */ tBody = evData.tabBody; let /** @type {?} */ tHeader = evData.tabHeader; if (tBody !== null && typeof tBody !== 'undefined') { let /** @type {?} */ hasData = false; if (typeof tBody.getData === 'function') { hasData = (tBody.getData() !== null && typeof tBody.getData() !== 'undefined') ? true : false; } // if no data set new data if (!hasData && typeof tBody.setData === 'function') { // init {} // let newObj: any = {}; let /** @type {?} */ newObj = this.editor.newDataObject(); let /** @type {?} */ tBodyData = this.getWrapDataObject([newObj]); // new value this.tabsData.push(tBodyData); this.originalTabsData.push([newObj]); // add new value tBody.setData(tBodyData); if (tHeader !== null && typeof tHeader !== 'undefined') { if (typeof tHeader.setData === 'function') { tHeader.setData(tBodyData); } } } } } } /** * @param {?} data * @return {?} */ createTab(data) { let /** @type {?} */ newObj = this.editor.newDataObject(); let /** @type {?} */ tBodyData = this.getWrapDataObject([newObj]); if (data !== null && typeof data !== 'undefined') { if (Array.isArray(data)) { let /** @type {?} */ cloneArray = []; for (let /** @type {?} */ item of data) { let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(item)); cloneArray.push(cloneData); } tBodyData = this.getWrapDataObject(cloneArray); this.originalTabsData.push(data); } else { let /** @type {?} */ cloneData = JSON.parse(JSON.stringify(data)); tBodyData = this.getWrapDataObject([cloneData]); this.originalTabsData.push([data]); } } else { this.originalTabsData.push([newObj]); } let /** @type {?} */ tabName = this.generateTabLabel(tBodyData.objects); let /** @type {?} */ labelField = null; this.tabsData.push(tBodyData); let /** @type {?} */ tModel = new TabModel(tabName, null, this.tabComponentType, this.tabComponentModel, tBodyData, labelField, null, null); this.tabPane.addTab(tModel); } /** * @param {?} data * @return {?} */ closeTab(data) { // find index from data let /** @type {?} */ index = this.getTabDataIndex(data); this.closeTabAtIndex(index); } /** * @param {?} index * @return {?} */ closeTabAtIndex(index) { // remove dirty let /** @type {?} */ tModels = this.tabPane.getTabModels(); if (index > -1 && index < tModels.length) { // is dirty let /** @type {?} */ isDirty = this.isTabDirty(index); if (isDirty) { // dialog this.dialogService.showConfirmDialog('Confirm close Tab', 'Data unsaved confirm close ?', true).then((result) => { let /** @type {?} */ tempIndex = index; if (result == 1) { // ok close let /** @type {?} */ tempModel = tModels[tempIndex]; this.tabPane.closeTabAtIndex(tempIndex); this.removeTabDataAtIndex(tempIndex); } else if (result == -1) { // cancel not to change view return; } else { // no option set tap to index this.tabPane.showTabAtIndex(tempIndex); } }); return; } } // close tab this.tabPane.closeTabAtIndex(index); this.removeTabDataAtIndex(index); } /** * @return {?} */ getTabsCount() { return this.tabPane.getTabsCount(); } /** * @param {?} model * @return {?} */ getTabModelIndex(model) { return this.tabPane.getTabModelIndex(model); } /** * @param {?} index * @return {?} */ getTabModelByIndex(index) { if (index === null || typeof index === 'undefined' || index <= -1) { return null; } let /** @type {?} */ tModels = this.tabPane.getTabModels(); if (tModels !== null && typeof tModels !== 'undefined') { if (index < tModels.length) { return tModels[index]; } } return null; } /** * @param {?} data * @return {?} */ getTabDataIndex(data) { let /** @type {?} */ indexArray = this.getTabDataIndexes(data); if (indexArray.length > 0) { return indexArray[0]; } return -1; } /** * @param {?} index * @return {?} */ getTabData(index) { if (index == null || index <= -1) { return []; } if (index < this.tabsData.length) { return this.tabsData[index].objects; } return []; } /** * @param {?} index * @return {?} */ showTabAtIndex(index) { if (index == null || index <= -1) { return null; } this.tabPane.showTabAtIndex(index); } /** * @param {?} data * @return {?} */ showTabByData(data) { let /** @type {?} */ indexes = this.getTabDataIndexes(data); let /** @type {?} */ inTab = -1; if (indexes.length > 0) { if (indexes.length > 1) { // close other and open new one for (let /** @type {?} */ idx of indexes) { this.closeTabAtIndex(idx); } } else { inTab = indexes[0]; } } else { inTab = this.getTabDataIndex(data); } // close other and open new one if (inTab === -1 && Array.isArray(data) && data.length > 1) { for (let /** @type {?} */ d of data) { let /** @type {?} */ idx = this.getTabDataIndex(d); this.closeTabAtIndex(idx); } } if (inTab > -1) { this.showTabAtIndex(inTab); } else { this.createTab(data); let /** @type {?} */ allTabsCount = this.getTabsCount(); if (allTabsCount > 0) { this.showTabAtIndex(allTabsCount - 1); } } } /** * @return {?} */ getCurrentTabIndex() { return this.tabPane.getCurrentTabIndex(); } /** * @return {?} */ getEditorDirtyData() { return new Promise((resolve, reject) => { let /** @type {?} */ dirtyArray = this.getAllDirtyData(); resolve(dirtyArray); }); } /** * @return {?} */ getSelectedData() { return new Promise((resolve, reject) => { let /** @type {?} */ selectedArray = []; let /** @type {?} */ curTab = this.getCurrentTabIndex(); let /** @type {?} */ tabDataArary = this.getTabData(curTab); if (tabDataArary !== null) { selectedArray = tabDataArary; } resolve(selectedArray); }); } /** * @return {?} */ selfSaveData() { } /** * @return {?} */ selfResetData() { } /** * @return {?} */ doPreload() { return new Promise((resolve, reject) => { resolve(null); }); } /** * @return {?} */ doLoaded() { } /** * @return {?} */ isSelfDataDirty() { return false; } /** * @return {?} */ getTabLabelGenerator() { return this.tabLabelGenerator; } /** * @param {?} generator * @return {?} */ setTabLabelGenerator(generator) { this.tabLabelGenerator = generator; } /** * @return {?} */ getTabComponentType() { return this.tabComponentType; } /** * @return {?} */ getTabComponentModel() { return this.tabComponentModel; } /** * @return {?} */ getCurrentHistoryState() { return this.tabsData; } /** * @param {?} history * @param {?} state * @return {?} */ loadHistoryState(history, state) { if (history === null || typeof history === 'undefined') { return Promise.reject(new Error('The "history" cannot be "null" or "undefined".')); } return new Promise((resolve, reject) => { try { resolve(); } catch (/** @type {?} */ e) { reject(e); } }); } /** * @return {?} */ reloadView() { this.reloadAllTab(); } } FormView.TYPE_NAME = TYPE_NAME; FormView.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="phx-form-view" [class.hide]="!isActive()"> <phx-tab-pane #tabPane [tabComponentType]="getTabComponentType()" [tabComponentModel]="getTabComponentModel()" [menuFactory]="getEditor().getMenuModelFactory()" (newTabClickedEventHandler)="onNewTabBtnClick($event)" [showMoreMenu]="isShowMoreMenu()" (tabChangedEventHandler)="onTabChange($event)" (tabAddedEventHandler)="onTabAdded($event)" (tabMovedEventHandler)="onTabMoved($event)"></phx-tab-pane> </div> ` },] }, ]; /** @nocollapse */ FormView.ctorParameters = () => [ { type: DialogService, }, { type: ParrotsEditorSettingFactory, }, { type: ElementRef, }, ]; FormView.propDecorators = { "model": [{ type: Input },], "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "tabPane": [{ type: ViewChild, args: ['tabPane',] },], }; tslib_1.__decorate([ Option('tabPane'), I18N('tabPane'), tslib_1.__metadata("design:type", TabPane) ], FormView.prototype, "tabPane", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], FormView.prototype, "tabLabelGenerator", void 0); function FormView_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ FormView.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ FormView.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ FormView.propDecorators; /** @type {?} */ FormView.TYPE_NAME; /** @type {?} */ FormView.prototype.model; /** @type {?} */ FormView.prototype.dataParent; /** @type {?} */ FormView.prototype.ignoreParentData; /** @type {?} */ FormView.prototype.data; /** @type {?} */ FormView.prototype.ignoreParentDisabled; /** @type {?} */ FormView.prototype.delegateHistory; /** @type {?} */ FormView.prototype.onDisabled; /** @type {?} */ FormView.prototype.onEnabled; /** @type {?} */ FormView.prototype.loadingEnabled; /** @type {?} */ FormView.prototype.i18nKey; /** @type {?} */ FormView.prototype.bypass; /** @type {?} */ FormView.prototype.options; /** @type {?} */ FormView.prototype.tabPane; /** @type {?} */ FormView.prototype.tabLabelGenerator; /** @type {?} */ FormView.prototype.dialogService; /** @type {?} */ FormView.prototype.tabComponentType; /** @type {?} */ FormView.prototype.tabComponentModel; /** @type {?} */ FormView.prototype.tabsData; /** @type {?} */ FormView.prototype.originalTabsData; /** @type {?} */ FormView.prototype.showMoreMenu; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybVZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2VkaXRvci9Gb3JtVmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQVEsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDaEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFNeEQsdUJBQU0sU0FBUyxHQUFXLGVBQWUsQ0FBQztBQWMxQyxNQUFNLGVBQWdCLFNBQVEsc0JBQXNCOzs7Ozs7SUF5Q2xELFlBQVksYUFBNEIsRUFBRSxvQkFBaUQsRUFBRSxVQUFzQjtRQUNqSCxLQUFLLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJ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