{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_view.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.accessibility.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_headers.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_state_mixin.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_controller.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.data_source_adapter.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.data_controller.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.context_menu.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_chooser.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_fixing.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.adaptivity.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","exports","ColumnsView","_renderer","_interopRequireDefault","_dom_adapter","_window","_events_engine","_element_data","_pointer","_click","_double_click","_browser","_common","_style","_element","_type","_position","iteratorUtils","__esModule","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","hasOwnProperty","call","desc","set","default","_interopRequireWildcard","_extend","_uiGrid_core","_uiGrid_core2","_uiGrid_core3","_deferred","WeakMap","appendElementTemplate","render","options","container","append","content","getWidthStyle","width","isNumeric","setCellWidth","cell","column","style","maxWidth","View","inherit","_createScrollableOptions","scrollingOptions","this","option","useNativeScrolling","extend","pushBackValue","direction","bounceEnabled","useKeyboard","useNative","useSimulatedScrollbar","_updateCell","$cell","parameters","rowType","_cellPrepared","_createCell","alignment","getDefaultAlignment","createElement","textAlign","headerId","type","component","setAria","cssClass","addClass","command","addWidgetPrefix","colspan","attr","isBand","visibleWidth","minWidth","_createRow","rowObject","$element","_isAltRow","row","dataIndex","_createTable","columns","isAppend","that","$table","_createColGroup","safari","appendTo","mozilla","on","e","ctrlKey","preventDefault","createAction","args","event","target","currentTarget","$row","parent","isDataRow","hasClass","isHeaderRow","isGroupRow","isMasterDetailRow","isFilterRow","visibleColumns","_columnsController","getVisibleColumns","rowOptions","data","columnIndex","index","cellOptions","cells","msieCorrection","msie","cellTemplate","headerCellTemplate","groupIndex","groupCellTemplate","removeAttr","scrollWidth","clientWidth","isDefined","text","getOptions","$fieldItemContent","closest","is","delegateTarget","resultOptions","cellElement","getPublicElement","eventType","length","formItemOptions","getVisibleIndex","executeAction","name","touchTarget","touchCurrentTarget","timeoutId","clearTouchTargets","timeout","setTimeout","clearTimeout","down","join","_isNativeClick","rowIndex","getRowIndex","rowElement","getColumns","_rowPointerDown","_rowClick","_rowDblClick","subscribeToRowEvents","noop","colgroupElement","i","j","_createCol","col","setWidth","renderDelayedTemplates","delayedTemplates","_delayedTemplates","syncTemplates","filter","template","async","asyncTemplates","_renderDelayedTemplatesCore","_renderDelayedTemplatesCoreAsync","templates","getWindow","isAsync","date","Date","templateParameters","shift","doc","getDocument","_processTemplate","renderingTemplate","isRenderer","allowRenderToDetachedContainer","model","deferred","resolve","isFunction","renderedTemplate","nodeType","templateID","isString","_templatesCache","getTemplate","renderTemplate","templateDeferred","Deferred","templateOptions","onRendered","renderAsync","showEditorAlways","push","reject","promise","_getBodies","tableElement","children","not","_wrapRowIfNeed","$tBodies","_tableElement","$tbody","_appendRow","appendTemplate","_resizeCore","scrollLeft","_scrollLeft","scrollTo","left","_renderCore","$root","element","_renderTable","changeType","change","_renderRows","rows","_getRows","columnIndices","changeTypes","_renderRow","$wrappedRow","_renderCells","_addWatchMethod","_rowPrepared","_needRenderCell","indexOf","_renderCell","value","values","oldValue","oldValues","_updateCells","$rowElement","$newRowElement","$cells","$newCells","highlightChanges","cellUpdatedClass","forEach","eq","$newCell","replaceWith","newElement","oldAttributes","attributes","newAttributes","nodeName","hasAttribute","removeAttribute","setAttribute","nodeValue","copyAttributes","_setCellAriaAttributes","columnIndexOffset","getColumnIndexOffset","ariaColIndex","_getCellOptions","_renderCellContent","appendChild","_this","_getCellTemplate","when","done","isAltRow","source","watchers","watch","getter","updateFunc","watcher","newValue","JSON","stringify","splice","update","isExpanded","bind","_columnOptionChanged","optionNames","checkChanges","widths","map","setColumnWidths","_requireReady","getCellIndex","cellIndex","getTableElements","getTableElement","setTableElement","optionChanged","callBase","_invalidate","handled","init","getController","_dataController","excludeValidators","category","afterExecute","_afterRowPrepared","columnsChanged","add","changed","_handleDataChanged","callbackNames","pos","$scrollContainer","_wrapTableInScrollContainer","_this2","scrollChanged","fire","_updateContent","$newTableElement","_findContentElement","_getWidths","$cellElements","result","legacyRendering","each","item","offsetWidth","getBoundingClientRect","clientRect","getBoundingRect","Math","ceil","getColumnWidths","$tableElement","$rows","isRowVisible","display","getVisibleColumnIndex","_ref","$cols","fixed","columnAutoWidth","visibleIndex","toFixed","getCellElements","_getCellElementsCore","_getRowElements","_getCellElement","columnIdentifier","columnVisibleIndex","_getVisibleColumnIndex","_getRowElement","$tableElements","_","getCellElement","getRowElement","elements","columnOption","getColumnElements","getCell","cellPosition","getRowsCount","_getRowElementsCore","tBodies","find","getName","setScrollerSpacing","rtlEnabled","css","paddingLeft","paddingRight","isScrollbarVisible","isHorizontal","outerWidth","outerHeight","height","registerKeyboardAction","accessibility","viewName","instance","selector","action","keyboardController","isKeyboardEnabled","_message","_iterator","_default","defaultOptions","showColumnHeaders","cellHintEnabled","views","columnHeadersView","createCellContent","$cellContent","addCssClassesToCellContent","showColumnLines","contentAlignment","getHeaderContentAlignment","$indicatorElements","_getIndicatorElements","$visibleIndicatorElements","indicatorCount","columnAlignment","_getColumnAlignment","sortIndicatorClassName","concat","_getIndicatorClassName","sortIndexIndicatorClassName","$sortIndicator","$sortIndexIndicator","toggleClass","apply","arguments","shiftKey","_isLegacyKeyboardNavigation","_getDefaultTemplate","$container","$content","caption","html","_getHeaderTemplate","_isGroupingChanged","format","_handleActionKeyDown","$target","_lastActionElement","headerFilterController","$column","getColumnIndexByElement","showHeaderFilterMenu","_processHeaderAction","isLoaded","_hasRowElements","empty","getRowCount","_getRowVisibleColumns","$cellElement","rowspan","rowCount","grouping","visible","resizeCompleted","_isElementVisible","elementOptions","_alignCaptionByCenter","$indicatorsContainer","_getIndicatorContainer","remove","clone","insertBefore","_updateIndicator","indicatorName","$indicatorElement","returnAll","_isSortableElement","getHeadersRowHeight","$headerRows","toArray","reduce","sum","headerRow","getHeaderElement","columnElements","bandColumnIndex","columnsController","getChildrenByBandColumn","$columnElements","allowDragging","sourceLocation","draggingPanels","draggableColumnCount","canHideColumn","allowHiding","allowDrag","allowReordering","allowGrouping","isColumnOptionUsed","draggingPanel","top","offset","getColumnCount","isVisible","getHeight","getElementHeight","getContextMenuItems","sortingOptions","mode","allowSorting","onItemClick","params","changeSortOrder","itemData","ascendingText","disabled","sortOrder","icon","descendingText","clearText","setRowsOpacity","columnID","setColumnOpacity","ownerBand","opacity","module","_applyColumnState","_that$component","isGroupPanelItem","rootElement","_createIndicatorContainer","$span","indicatorAlignment","indicator","_renderIndicator","ignoreIndicatorAlignment","$indicatorContainer","$indicator","_updateIndicators","_callbacks","_variable_wrapper","_data","_array","_config","_object","_ui","_inflector","_date_serialization","_number","_date","_abstract_store","_data_source","_utils","_filtering","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","enumerable","_defineProperty","configurable","writable","USER_STATE_FIELD_NAMES_15_1","USER_STATE_FIELD_NAMES","IGNORE_COLUMN_OPTION_NAMES","bestFitWidth","bufferedFilterValue","MAX_SAFE_INTEGER","Number","regExp","globalColumnId","commonColumnSettings","allowFiltering","allowEditing","encodeHtml","trueText","falseText","allowColumnReordering","allowColumnResizing","columnResizingMode","columnMinWidth","columnWidth","adaptColumnWidthByRatio","regenerateColumnsByVisibleItems","customizeColumns","dateSerializationFormat","controllers","Controller","DEFAULT_COLUMN_OPTIONS","showInColumnChooser","DATATYPE_OPERATIONS","number","string","datetime","COLUMN_INDEX_OPTIONS","grouped","sortIndex","setFilterOperationsAsDefaultValues","filterOperations","defaultFilterOperations","createColumn","columnOptions","userStateColumnOptions","bandColumn","commonColumnOptions","dataField","setName","deepExtendArraySafe","getCommonSettings","calculatedColumnOptions","_createCalculatedColumnOptions","createColumnsFromOptions","columnsOptions","_columnsUserState","checkUserStateColumn","hasColumns","getParentBandColumns","columnParentByIndex","unshift","_getChildrenByBandColumn","columnChildrenByIndex","recursive","showWhenGrouped","getColumnFullPath","bandColumnsCache","getBandColumnsCache","callbackFilter","isPlain","_columns","calculateColspan","getValueDataType","dataType","getSerializationFormat","getDateSerializationFormat","updateSerializers","deserializeValue","isDateType","deserializeDate","serializeValue","serializeDate","serializationFormat","parsedValue","parseFloat","isNaN","toString","customizeTextForBooleanDataType","valueText","getCustomizeTextByDataType","updateColumnIndexes","isObject","_commandColumns","updateColumnGroupIndexes","currentColumn","normalizeIndexes","getColumnIndexByVisibleIndex","location","getGroupColumns","getChooserColumns","userStateColumn","applyUserState","userStateColumnIndex","columnsUserState","ignoreColumnOptionNames","_ignoreColumnOptionNames","columnCountById","resultColumns","allColumnsHaveState","userStateColumnIndexes","applyFieldsState","fieldName","inArray","defaultSelectedFilterOperation","findUserStateColumn","id","count","_hasUserState","initialIndex","hasAddedBands","columnUserState","added","assignColumns","updateIndexes","isSortOrderValid","updateColumnSortIndexes","resetBandColumnsCache","bandColumns","parentBandColumns","updateColumnVisibleIndexes","resetColumnsCache","updateColumnDataTypes","updateColumnChanges","optionName","columnChanges","_columnChanges","split","fireColumnsChanged","onColumnsChanging","reinitOptionNames","isInitialized","_updateLockCount","some","reinit","updateSortOrderWhenGrouping","prevGroupIndex","lastSortOrder","sortMode","fireOptionChanged","prevValue","fullOptionName","fullOptionPath","_skipProcessingColumnsChange","_notifyOptionChanged","columnOptionCore","notFireEvent","initialColumn","optionGetter","compileGetter","functionsAsIs","optionSetter","compileSetter","_checkColumns","getColumnByPath","defaultSetCellValue","path","dotCount","isCustomCommandColumn","commandColumn","getFixedPosition","fixedPosition","processExpandColumns","expandColumns","customColumnIndex","expandColumnsByType","expandColumn","numberToString","digitsCount","str","mergeColumns","commandColumns","needToExtend","commandColumnIndex","slice","isColumnFixing","_isColumnFixing","defaultCommandColumns","getCommandColumnIndex","columnType","allowFixing","isColumnFixed","_bandColumnsCache","findColumn","identifier","identifierOptionName","substr","_getExpandColumnOptions","allowResizing","_getFirstItems","dataSource","groupsCount","items","normalizeSortingInfo","group","getFirstItemsCore","childItems","collapsedItems","_endUpdateCore","_isColumnsFromOptions","addCommandColumn","addExpandColumn","_dataSourceApplied","applyDataSource","_dataSource","columnIndexes","replace","parseInt","getColumnByIndexes","needUpdateRequireResize","previousValue","Array","isArray","fullName","_updateRequireResize","_args$fullName","_args$fullName2","_args$fullName3","_args$fullName4","_args$fullName5","isEditingPopup","isEditingForm","isEditRowKey","isEditColumnName","isChanges","columnOptionValue","columnOptionName","_requireResize","publicMethods","forceApplying","isDataSourceLoaded","_dataSourceColumnsCount","columnsFromDataSource","firstItems","processedFields","isWrapped","createColumnsFromDataSource","updateColumns","isAllDataTypesDefined","reset","_visibleColumns","_fixedColumns","_rowCount","getUserState","isDataSourceApplied","groupingOptions","groupPanelOptions","autoExpandGroup","autoExpandAll","allowCollapsing","allowColumnDragging","contextMenuEnabled","checkSerializers","calculateCellValue","defaultCalculateCellValue","isBandColumnsUsed","_getVisibleColumnsCore","getFixedColumns","_getFixedColumnsCore","getFilteringColumns","allowHeaderFiltering","field","notFixedColumnCount","transparentColumnIndex","lastFixedPosition","transparentColumn","transparentColspan","prevColumn","newColumn","getOwnPropertyDescriptors","defineProperties","_objectSpread","_getExpandColumnsCore","getExpandColumns","firstGroupColumn","isFixedFirstGroupColumn","parentIndex","_isColumnVisible","isParentColumnVisible","isFixedToEnd","rowspanGroupColumns","rowspanExpandColumns","positiveIndexedColumns","negativeIndexedColumns","notGroupedColumnsCount","columnDigitsCount","processBandColumns","indexedColumns","orderEach","firstPositiveIndexColumn","columnsByFixing","columnsByVisibleIndex","getDataColumns","bandColumnID","getInvisibleColumns","hiddenColumnsByBand","getAllColumns","grep","allowMoveColumn","fromVisibleIndex","toVisibleIndex","targetLocation","sourceColumn","moveColumn","targetGroupIndex","fromIndex","toIndex","groupColumns","max","moveColumnToGroup","targetColumn","sortingMode","needResetSorting","nextSortOrder","getSortDataSourceParameters","useLocalSelector","sortColumns","sort","sortItem","calculateSortValue","displayField","calculateDisplayValue","sortingMethod","compare","getGroupDataSourceParameters","calculateGroupValue","groupItem","refresh","updateNewLookupsOnly","deferreds","lookup","valueMap","_updateColumnOptions","calculateCallbackName","calculateCallback","originalCallback","displayValueMap","isRTL","getAlignmentByDataType","getFormatByDataType","customizeText","defaultFilterOperation","isColumnDataTypesUpdated","lookupDataType","valueDataType","getDisplayValue","_customizeColumns","updateSortingGrouping","sortParameters","groupParameters","filterParameters","lastLoadOptions","always","_updateChanges","sorting","filtering","equalSortParameters","dataController","equalFilterParameters","getCombinedFilter","fromDataSource","isColumnsChanged","updateSortGroupParameterIndexes","indexParameterName","columnsGroupParameters","columnsSortParameters","updateFilter","remoteFiltering","filterValue","forceIsoDateParsing","columnCount","clearSorting","beginUpdate","endUpdate","clearGrouping","getVisibleIndexByColumn","visibleColumn","addColumn","deleteColumn","childIndexes","handleStateField","setUserState","state","isFilterPanelHidden","usedNames","hasEditableColumnWithoutName","duplicatedNames","_column$columns","isEditable","setCellValue","log","captionize","skipDeserialization","parseValue","parse","calculateFilterExpression","defaultCalculateFilterExpression","createFilterExpression","userDataType","selectedFilterOperation","valueExpr","updateValueMap","calculateValue","displayExpr","displayValue","isPlainObject","dataSourceOptions","normalizeDataSourceOptions","paginate","DataSource","load","resizedCallbacks","resized","defaultOptionName","charAt","toUpperCase","parents","invisibleParents","alwaysGetRowIndex","onlyVisibleDirectChildren","column1","column2","isParentBandColumn","getColumnId","_uiData_grid","_array_store","_array_utils","cloneItems","groupCount","calculateOperationTypes","loadOptions","isFullReload","operationTypes","reload","fullReload","groupExpanding","groupExpand","pageIndex","skip","take","paging","getPageDataFromCache","cachedPagesData","pages","remoteOperations","_remoteOperations","_isLastPage","isLastPage","_hasLastPage","_currentTotalCount","_cachedPagesData","_lastOperationTypes","_eventsStrategy","_skipCorrection","_isLoadingAll","loadingChanged","loadError","customizeStoreLoadOptions","changing","_dataChangedHandler","_dataLoadingHandler","_handleDataLoading","_dataLoadedHandler","_handleDataLoaded","_loadingChangedHandler","_handleLoadingChanged","_loadErrorHandler","_handleLoadError","_pushHandler","_handlePush","_changingHandler","_handleChanging","store","memberName","member","dispose","isSharedDataSource","off","resetCurrentTotalCount","resetCache","_cachedStoreData","_cachedPagingData","resetPagesCache","_needClearStoreDataCache","_lastLoadOptions","every","operationName","changes","fromStore","applyBatch","keyInfo","_applyBatch","getDataIndexGetter","_dataIndexGetter","indexByKey","storeData","isCacheUpdated","getKeyHash","keyOf","_getKeyInfo","totalCount","isVirtualMode","getItemCount","itemsCount","_items","oldItemCount","useInsertIndex","_needCleanCacheByOperation","operationType","operationTypesByOrder","operationTypeIndex","_customizeRemoteOperations","cachedStoreData","cachedPagingData","storeLoadOptions","isCustomLoading","delay","originalStoreLoadOptions","_isRefreshing","isRefreshing","_loadingOperationTypes","_isRefreshed","_lastOperationId","operationId","fail","cancel","_handleDataLoadingCore","cachedExtra","extra","localLoadOptionNames","summary","requireTotalCount","optionValue","_this3","localPaging","needCache","needPageCache","needPagingCache","needStoreCache","mergeStoreLoadData","error","_handleDataLoadedCore","setPageDataToCache","isLoading","currentTotalCount","pageSize","pageCount","_operationTypes","_optionCache","_scheduleCustomLoadCallbacks","_isCustomLoading","loadingOperationTypes","totalItemsCount","hasKnownLastPage","loadFromStore","d","_this4","dataSourceLoadOptions","loadResult","_customLoadOptions","isLoadingAll","_scheduleLoadCallbacks","executeAsync","fireEvent","full","getCachedStoreData","_custom_store","_data_helper","_array_compare","changePaging","members","loadingTimeout","cacheEnabled","repaintChangesOnly","onDataErrorOccurred","enabled","include","_skipProcessingPagingChange","pageChanged","_currentOperationTypes","_columnsChangedHandler","_handleColumnsChanged","_customizeStoreLoadOptionsHandler","_handleCustomizeStoreLoadOptions","_isLoading","_repaintChangesOnly","_changes","dataErrorOccurred","_refreshDataSource","callbackFlags","stopOnFalse","_setPagingOptions","_useSortingGroupingFromColumns","isReady","getDataSource","returnDataField","combinedFilter","additionalFilter","_calculateAdditionalFilter","combineFilters","waitReady","_readyDeferred","updateItems","_columnsUpdating","filterValues","filterApplied","_applyFilter","_needApplyFilter","updateItemsHandler","isAsyncDataSourceApplying","_isDataSourceApplying","isDelayed","needApplyFilter","_isAllDataTypesDefined","NAME","_fireLoadingChanged","fireError","Error","pagingEnabled","scrollingMode","appendMode","isChanged","_getSpecificDataSourceOption","_initDataSource","oldDataSource","setDataSource","_loadDataSource","_beforeProcessItems","getRowIndexDelta","_processItems","rowIndexDelta","visibleItems","lastVisibleItem","_processItem","_generateDataItem","_processDataItem","dataItem","generateDataValues","isModified","_applyChange","_applyChangeUpdate","_applyChangesOnly","_applyChangeFull","_getRowIndices","rowIndices","a","b","correctedRowIndex","allowInvisibleRowIndices","prevIndex","rowIndexCorrection","equalItems","item1","item2","strict","equalByValue","isEditing","oldItem","oldNextItem","newItem","newNextItem","isFullUpdate","_partialUpdateRow","_isCellChanged","oldRow","newRow","visibleRowIndex","isLiveUpdate","isCellModified","modifiedValues","_getChangedColumnIndices","changedColumnIndices","_isItemEquals","_item1$data","_item2$data","_item1$data2","_item2$data2","expandedMatch","summaryCellsMatch","summaryCells","continuationMatch","isContinuation","isContinuationOnNextPage","newIndexByKey","getRowKey","oldItems","findChanges","_correctRowIndices","newRowIndex","_updateItemsCore","getVisibleRows","isDataChanged","needUpdateDimensions","_fireChanged","deferRender","_loadingText","filterExpr","clearFilter","filterName","clearColumnOption","searchByText","_fireDataSourceChanged","changedHandler","dataSourceChanged","_getDataSourceAdapter","_createDataSourceAdapterCore","dataSourceAdapter","create","isLocalStore","isCustomStore","_createDataSourceAdapter","enabledRemoteOperations","groupPaging","cancelAll","_isSharedDataSource","isEmpty","loadAll","getKeyByRowIndex","byLoaded","getRowIndexByKey","getIndexByKey","byKey","getRowIndexOffset","getDataByKeys","rowKeys","keyData","beginCustomLoading","messageText","endCustomLoading","changesOnly","selection","customizeLoadResult","_disposeDataSource","repaintRows","rowIndexes","skipProcessingPagingChange","searchText","proxyMethod","_context_menu","rowsView","footerView","headerPanel","VIEW_NAMES","onContextMenuPreparing","contextMenu","ViewController","dxEvent","$targetRowElement","$targetCellElement","menuItems","$targetElement","view","getView","targetElement","_contextMenuPrepared","contextMenuView","_createComponent","onPositioning","actionArgs","contextMenuInstance","stopPropagation","getWidgetContainerClass","_themes","_button","_tree_view","_devices","_popup","processItems","chooserColumns","isSelectMode","expanded","disableCheckBox","parentId","selected","columnChooser","allowSearch","searchTimeout","title","emptyPanelText","renderShowColumnChooserButton","$columnChooserButton","columnChooserButtonClass","columnChooserEnabled","$showColumnChooserButton","show","onClick","showColumnChooser","hint","integrationOptions","hide","getPosition","my","at","of","collision","boundaryOffset","columnChooserView","_isWinDevice","real","win","_updateList","$popupContent","_popupContainer","columnChooserList","_columnChooserList","selectItem","unselectItem","_wrapper","_renderTreeView","_initializePopupContainer","columnChooserOptions","themeName","current","isGenericTheme","isGeneric","isMaterial","dxPopupOptions","shading","showCloseButton","dragEnabled","resizeEnabled","toolbarItems","toolbar","position","onHidden","removeClass","shortcut","renderCompleted","treeViewConfig","dataStructure","activeStateEnabled","focusStateEnabled","hoverStateEnabled","itemTemplate","showCheckBoxesMode","rootValue","searchEnabled","onItemRendered","$checkBox","$treeViewNode","itemElement","checkBoxInstance","scrollableInstance","scrollTop","onContentReady","deferUpdate","scrollable","y","_prepareSelectModeConfig","_prepareDragModeConfig","searchValue","noDataText","selectNodesRecursive","onItemSelectionChanged","needPartialRender","needFullRender","all","$node","$nodes","columnVisible","isColumnChooserVisible","_container","right","bottom","hideColumnChooser","popupContainer","extenders","_getToolbarItems","_appendColumnChooserItem","hintText","toolbarItem","widget","onInitialized","_getToolbarButtonClass","showText","locateInMenu","_index","_drag","_fx","_swatch_container","MODULE_NAMESPACE","TrackerView","_unsubscribeFromCallback","_positionChanged","_tablePositionController","positionChanged","_subscribeToCallback","setHeight","SeparatorView","_renderSeparator","_isShown","ColumnsSeparatorView","_init","_isTransparent","force","columnsSeparatorTransparent","moveByX","outerX","_parentElement","changeCursor","cursorName","BlockSeparatorView","$parent","prepend","startAnimate","toOptions","stop","animate","from","to","duration","easing","DraggingHeaderView","_isDragging","isDragging","_getDraggingPanelByPos","_dragOptions","boundingRect","x","_resetTargetColumnOptions","_dropOptions","targetColumnIndex","targetColumnElement","isLast","posX","posY","_getVisibleIndexObject","_controller","_columnsResizerViewController","dragHeader","columnElement","isCommandColumn","sourceIndex","sourceColumnIndex","sourceColumnElement","document","_onSelectStart","onselectstart","drag","clientHeight","whiteSpace","getSwatchContainer","moveHeader","eventData","isResizing","dragOptions","moveDeltaX","abs","deltaX","moveDeltaY","deltaY","newLeft","newTop","dockHeader","targetDraggingPanel","controller","isVerticalOrientation","axisName","pointsByTarget","pointsByColumns","_generatePointsByColumns","startColumnIndex","centerPosition","last","dock","dropHeader","drop","isNextColumnResizingMode","ColumnsResizerViewController","_isHeadersRowArea","_columnHeadersView","offsetTop","headersRowHeight","_isRtlParentStyle","_this$_$parentContain","_$parentContainer","_pointCreated","point","cellsLength","isNextColumnMode","isRtlParentStyle","firstPointColumnIndex","nextColumn","_getTargetPoint","currentX","_moveSeparator","columnsSeparatorWidth","_columnsSeparatorView","parentOffset","parentOffsetLeft","_isResizing","_resizingInfo","_updateColumnsWidthIfNeeded","currentColumnIndex","_targetPoint","_previousParentOffset","_isReadyResizing","_endResizing","_trackerView","_getNextColumnIndex","_setupResizingInfo","nextColumnIndex","currentHeader","nextHeader","startPosX","currentColumnWidth","nextColumnWidth","_startResizing","isTouchEvent","getScrollable","_scrollRight","loseFocus","getPointsByColumns","_pointsByColumns","_unsubscribeFromEvents","_moveSeparatorHandler","addNamespace","move","_startResizingHandler","_endResizingHandler","up","_subscribeToEvents","nextCellWidth","cellWidth","needUpdate","resizingInfo","contentWidth","_rowsView","isPercentWidth","setColumnWidth","oldColumnWidth","floor","totalPercent","correctContentWidth","columnWidths","totalWidth","lastColumnIndex","getLastResizableColumnIndex","updateDimensions","callback","handler","_subscribesToCallbacks","_unsubscribeFromCallbacks","subscribe","_unsubscribes","generatePointsByColumnsHandler","generatePointsByColumnsScrollHandler","previousScrollbarVisibility","getScrollbarWidth","previousTableHeight","scrollbarVisibility","updateFreeSpaceRowHeight","TablePositionViewController","diffOffsetTop","columnsHeadersHeight","scrollBarWidth","rowsHeight","columnsResizerController","draggingHeaderView","_pagerView","targetPoint","ctor","columnsSeparatorView","blockSeparatorView","trackerView","draggingHeader","nameDraggingPanel","subscribeToEvents","$columnElement","start","end","_getSeparator","_blockSeparatorView","hideSeparators","blockSeparator","columnsSeparator","_animationColumnIndex","_draggingHeaderView","_headerPanelView","_columnChooserView","allowDrop","headersView","separator","hasTargetVisibleIndex","tablePosition","columnsResizer","_needUpdateRowHeight","itemCount","wordWrapEnabled","editorFactory","renderFocusOverlay","_wheel","_translator","normalizeColumnIndicesByPoints","getTransparentColumnIndex","fixedColumns","normalizeColumnWidths","fixedWidths","fixedColumnIndex","baseFixedColumns","_isFixedTableRendering","_isFixedColumns","_correctColumnIndicesForFixedColumns","$fixedTable","_fixedTableElement","fixedCorrection","fixedCells","prevFixedColumn","columnCommand","setEmptyText","isRowAltStyle","isEmptyCell","isFixedTableRendering","isGroupCell","alignByFixedColumnCellCount","_getAlignByColumnCellCount","isFixed","cellElements","fixedCellElements","visibility","fixedColumn","getFixedColumnsOffset","$transparentColumn","positionTransparentColumn","getTransparentColumnElement","first","getFixedTableElement","isFixedColumns","synchronizeRows","isWidthsSynchronized","isColumnWidthChanged","useVisibleColumns","hasAutoWidth","_getClientHeight","boundingClientRectElement","$rowElements","$fixedRowElements","$contentElement","rowHeights","fixedRowHeights","heightTable","heightFixedTable","rowHeight","fixedRowHeight","columnFixing","texts","fix","unfix","leftPosition","rightPosition","columnFixingOptions","beginGroup","getFixedColumnElements","$transparentColumnElement","colSpan","$fixedColumnElements","_detachHoverEvents","_attachHoverEvents","attachHoverEvent","isHover","contentClass","scrollDelay","_fixedScrollTimeout","$nearestScrollable","delta","scrollHeight","_updateScrollable","scrollOffset","_updateFixedTablePosition","_renderContent","contentElement","_getGroupCellOptions","_renderGroupedCells","_renderGroupSummaryCells","_hasAlignByColumnSummaryItems","_renderGroupSummaryCellsCore","$groupCell","groupCellColSpan","alignByColumnCellCount","_getSummaryCellIndex","_setRowsOpacityCore","needFocus","$focusedElement","focus","vWidth","hWidth","styles","marginBottom","$fixedContent","_scrollable","_getElasticScrollTop","elasticScrollTop","scrollbarWidth","reachedBottom","scrollableContent","scrollableContainer","_applyElasticScrolling","_handleScroll","_updateContentPosition","isRender","_scrollTop","_scrollToElement","correctIndex","pointsByFixedColumns","_pointsByFixedColumns","isWidgetResizingMode","_guid","_form","COLUMN_VIEWS","getDataCellElements","adaptiveCellTemplate","$adaptiveColumnButton","adaptiveColumnsController","toggleExpandAdaptiveDetailRow","columnHidingEnabled","onAdaptiveDetailRowPreparing","adaptiveColumns","_isRowEditMode","_getEditMode","_isItemModified","_renderFormViewTemplate","focusAction","trigger","formatValue","isCellOrBatchEditMode","_editingController","isDomElement","textContent","innerHTML","_getTemplate","editingController","renderFormTemplate","isItemEdited","_isItemEdited","renderFormEditTemplate","contents","_isVisibleColumnsValid","getCommandColumnsCount","_calculatePercentWidths","percentWidths","_getItemPercentWidth","_isPercentWidth","_isColumnHidden","_hiddenColumns","hiddenColumn","_getAverageColumnsWidth","containerWidth","columnsCanFit","fixedColumnsWidth","columnsWithoutFixedWidthCount","_calculatePercentWidth","columnsCount","_calculateColumnWidth","contentColumns","colWidth","columnId","widthOption","columnFitted","partialWidth","resultWidth","_getNotTruncatedColumnWidth","_getCommandColumnsWidth","isFormEditMode","adaptiveExpandedKey","isEditCell","editRowKey","_getFormItemsByHiddenColumns","hiddenColumns","_getAdaptiveColumnVisibleIndex","_hideAdaptiveColumn","resultWidths","_hideVisibleColumn","_showHiddenCellsInView","cssClassNameToRemove","_showHiddenColumns","$hiddenCommandCells","$hiddenCells","_isCellValid","_ref2","_hideVisibleColumnInView","_ref3","editFormRowIndex","getEditFormRowIndex","rowsCount","currentVisibleIndex","_findCellElementInRow","_hideVisibleCellInView","visibleColumnIndex","$rowCells","cellIsInsideGroup","groupCellLength","_ref4","cssClassNameToAdd","getEditMode","editMode","hideRedundantColumns","hiddenQueue","hasHiddenColumns","needHideColumn","$rootElement","rootElementWidth","getVisibleContentColumns","visibleContentColumns","contentColumnsCount","columnBestFitWidth","pop","getItemContentByColumnIndex","$itemContent","_$itemContents","alwaysExpanded","createFormByHiddenColumns","userFormOptions","formID","defaultFormOptions","colCount","formOptions","customizeItem","label","updateForm","hasAdaptiveDetailRowExpanded","_contentReadyAction","repaint","updateHidingQueue","columnsHasHidingPriority","hideableColumns","_hidingColumnsQueue","hidingPriority","reverse","getHiddenColumns","getHidingColumnsQueue","adaptiveHidden","isAdaptiveVisible","isAdaptiveDetailRowExpanded","expandAdaptiveDetailRow","collapseAdaptiveDetailRow","updateCommandAdaptiveAriaLabel","setCommandAdaptiveAriaLabel","labelName","_adaptiveColumnsController","hidingColumnsQueueLength","hiddenColumnsLength","_getColumnIndexByElementCore","formItem","next","isClickableElement","_updateColumnWidth","hasHiddenColumnsOnly","hasAdaptiveHiddenWidth","editing","_getFormEditItemTemplate","getColumnTemplate","_closeEditItem","$itemContents","_beforeUpdateItems","_adaptiveController","oldExpandRowIndex","_isForceRowAdaptiveExpand","_afterInsertRow","isRowEditMode","_collapseAdaptiveDetailRow","_cancelEditAdaptiveDetailRow","_afterSaveEditData","validate","isValid","_beforeCancelEditData","_getRowIndicesForCascadeUpdating","_beforeCloseEditCellInBatchMode","expandedKey","_adaptiveExpandedKey","editRow","deleteRow","rowKey","resizing","_needBestFit","_updateScrollableForIE","version","_updateScrollableTimeoutID","_correctColumnWidths","adaptiveController","oldHiddenColumns","hidingColumnsQueue","_toggleBestFitMode","isBestFit","_needStretch","expandRowIndex","node","isNewRow","_getRowIndicesForExpand","lastRowIndex","oldExpandLoadedRowIndex","newExpandLoadedRowIndex","oldKey","_getFocusCellSelector","_getTooltipsSelector","keyboardNavigation","_processNextCellInMasterDetail","$nextCell","isCellOrBatchMode","_isInsideEditForm","focusHandler","_handleTabKeyOnMasterDetailCell","eventTarget","$currentCell","_getFocusedCell","$dataCells","$targetCell","isCellElementsEquals"],"mappings":"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","file":"vendors~6ef07c07.60bfab06f91e8356a669.bundle.js","sourcesContent":["/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_view.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.ColumnsView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _element = require(\"../../core/element\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar iteratorUtils = _interopRequireWildcard(require(\"../../core/utils/iterator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core3 = _interopRequireDefault(require(\"./ui.grid_core.column_state_mixin\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLL_CONTAINER_CLASS = \"scroll-container\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar TABLE_CLASS = \"table\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar CELL_UPDATED_ANIMATION_CLASS = \"cell-updated-animation\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"0.0001px\";\r\nvar CELL_HINT_VISIBLE = \"dxCellHintVisible\";\r\nvar FORM_FIELD_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar appendElementTemplate = {\r\n render: function(options) {\r\n options.container.append(options.content)\r\n }\r\n};\r\nvar subscribeToRowEvents = function(that, $table) {\r\n var touchTarget;\r\n var touchCurrentTarget;\r\n var timeoutId;\r\n\r\n function clearTouchTargets(timeout) {\r\n return setTimeout(function() {\r\n touchTarget = touchCurrentTarget = null\r\n }, timeout)\r\n }\r\n _events_engine.default.on($table, \"touchstart touchend\", \".dx-row\", function(e) {\r\n clearTimeout(timeoutId);\r\n if (\"touchstart\" === e.type) {\r\n touchTarget = e.target;\r\n touchCurrentTarget = e.currentTarget;\r\n timeoutId = clearTouchTargets(1e3)\r\n } else {\r\n timeoutId = clearTouchTargets()\r\n }\r\n });\r\n _events_engine.default.on($table, [_click.name, _double_click.name, _pointer.default.down].join(\" \"), \".dx-row\", {\r\n useNative: that._isNativeClick()\r\n }, that.createAction(function(e) {\r\n var event = e.event;\r\n if (touchTarget) {\r\n event.target = touchTarget;\r\n event.currentTarget = touchCurrentTarget\r\n }\r\n if (!(0, _renderer.default)(event.target).closest(\"a\").length) {\r\n e.rowIndex = that.getRowIndex(event.currentTarget);\r\n if (e.rowIndex >= 0) {\r\n e.rowElement = (0, _element.getPublicElement)((0, _renderer.default)(event.currentTarget));\r\n e.columns = that.getColumns();\r\n if (event.type === _pointer.default.down) {\r\n that._rowPointerDown(e)\r\n } else {\r\n if (event.type === _click.name) {\r\n that._rowClick(e)\r\n } else {\r\n that._rowDblClick(e)\r\n }\r\n }\r\n }\r\n }\r\n }))\r\n};\r\nvar getWidthStyle = function(width) {\r\n if (\"auto\" === width) {\r\n return \"\"\r\n }\r\n return (0, _type.isNumeric)(width) ? width + \"px\" : width\r\n};\r\nvar setCellWidth = function(cell, column, width) {\r\n cell.style.width = cell.style.maxWidth = \"auto\" === column.width ? \"\" : width\r\n};\r\nvar copyAttributes = function(element, newElement) {\r\n if (!element || !newElement) {\r\n return\r\n }\r\n var oldAttributes = element.attributes;\r\n var newAttributes = newElement.attributes;\r\n var i;\r\n for (i = 0; i < oldAttributes.length; i++) {\r\n var name = oldAttributes[i].nodeName;\r\n if (!newElement.hasAttribute(name)) {\r\n element.removeAttribute(name)\r\n }\r\n }\r\n for (i = 0; i < newAttributes.length; i++) {\r\n element.setAttribute(newAttributes[i].nodeName, newAttributes[i].nodeValue)\r\n }\r\n};\r\nvar ColumnsView = _uiGrid_core.default.View.inherit(_uiGrid_core3.default).inherit({\r\n _createScrollableOptions: function() {\r\n var that = this;\r\n var scrollingOptions = that.option(\"scrolling\");\r\n var useNativeScrolling = that.option(\"scrolling.useNative\");\r\n var options = (0, _extend.extend)({\r\n pushBackValue: 0\r\n }, scrollingOptions, {\r\n direction: \"both\",\r\n bounceEnabled: false,\r\n useKeyboard: false\r\n });\r\n if (void 0 === useNativeScrolling) {\r\n useNativeScrolling = true\r\n }\r\n if (\"auto\" === useNativeScrolling) {\r\n delete options.useNative;\r\n delete options.useSimulatedScrollbar\r\n } else {\r\n options.useNative = !!useNativeScrolling;\r\n options.useSimulatedScrollbar = !useNativeScrolling\r\n }\r\n return options\r\n },\r\n _updateCell: function($cell, parameters) {\r\n if (parameters.rowType) {\r\n this._cellPrepared($cell, parameters)\r\n }\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var alignment = column.alignment || (0, _position.getDefaultAlignment)(this.option(\"rtlEnabled\"));\r\n var cell = _dom_adapter.default.createElement(\"td\");\r\n cell.style.textAlign = alignment;\r\n var $cell = (0, _renderer.default)(cell);\r\n if (\"data\" === options.rowType && column.headerId && !column.type) {\r\n if (this.component.option(\"showColumnHeaders\")) {\r\n this.setAria(\"describedby\", column.headerId, $cell)\r\n }\r\n }\r\n if (column.cssClass) {\r\n $cell.addClass(column.cssClass)\r\n }\r\n if (\"expand\" === column.command) {\r\n $cell.addClass(column.cssClass);\r\n $cell.addClass(this.addWidgetPrefix(GROUP_SPACE_CLASS))\r\n }\r\n if (column.colspan > 1) {\r\n $cell.attr(\"colSpan\", column.colspan)\r\n } else {\r\n if (!column.isBand && \"auto\" !== column.visibleWidth && !this.option(\"legacyRendering\") && this.option(\"columnAutoWidth\")) {\r\n if (column.width || column.minWidth) {\r\n cell.style.minWidth = getWidthStyle(column.minWidth || column.width)\r\n }\r\n if (column.width) {\r\n setCellWidth(cell, column, getWidthStyle(column.width))\r\n }\r\n }\r\n }\r\n return $cell\r\n },\r\n _createRow: function(rowObject) {\r\n var $element = (0, _renderer.default)(\"\").addClass(ROW_CLASS);\r\n this.setAria(\"role\", \"row\", $element);\r\n return $element\r\n },\r\n _isAltRow: function(row) {\r\n return row && row.dataIndex % 2 === 1\r\n },\r\n _createTable: function(columns, isAppend) {\r\n var that = this;\r\n var $table = (0, _renderer.default)(\"\").addClass(that.addWidgetPrefix(TABLE_CLASS)).addClass(that.addWidgetPrefix(TABLE_FIXED_CLASS));\r\n if (columns && !isAppend) {\r\n $table.append(that._createColGroup(columns));\r\n if (_browser.default.safari) {\r\n $table.append((0, _renderer.default)(\"\").append(\"\"))\r\n }\r\n that.setAria(\"role\", \"presentation\", $table)\r\n } else {\r\n that.setAria(\"hidden\", true, $table)\r\n }\r\n this.setAria(\"role\", \"presentation\", (0, _renderer.default)(\"\").appendTo($table));\r\n if (isAppend) {\r\n return $table\r\n }\r\n if (_browser.default.mozilla) {\r\n _events_engine.default.on($table, \"mousedown\", \"td\", function(e) {\r\n if (e.ctrlKey) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n if (that.option(\"cellHintEnabled\")) {\r\n _events_engine.default.on($table, \"mousemove\", \".dx-row > td\", this.createAction(function(args) {\r\n var e = args.event;\r\n var $element = (0, _renderer.default)(e.target);\r\n var $cell = (0, _renderer.default)(e.currentTarget);\r\n var $row = $cell.parent();\r\n var isDataRow = $row.hasClass(\"dx-data-row\");\r\n var isHeaderRow = $row.hasClass(\"dx-header-row\");\r\n var isGroupRow = $row.hasClass(GROUP_ROW_CLASS);\r\n var isMasterDetailRow = $row.hasClass(DETAIL_ROW_CLASS);\r\n var isFilterRow = $row.hasClass(that.addWidgetPrefix(FILTER_ROW_CLASS));\r\n var visibleColumns = that._columnsController.getVisibleColumns();\r\n var rowOptions = $row.data(\"options\");\r\n var columnIndex = $cell.index();\r\n var cellOptions = rowOptions && rowOptions.cells && rowOptions.cells[columnIndex];\r\n var column = cellOptions ? cellOptions.column : visibleColumns[columnIndex];\r\n var msieCorrection = _browser.default.msie ? 1 : 0;\r\n if (!isMasterDetailRow && !isFilterRow && (!isDataRow || isDataRow && column && !column.cellTemplate) && (!isHeaderRow || isHeaderRow && column && !column.headerCellTemplate) && (!isGroupRow || isGroupRow && column && (void 0 === column.groupIndex || !column.groupCellTemplate))) {\r\n if ($element.data(CELL_HINT_VISIBLE)) {\r\n $element.removeAttr(\"title\");\r\n $element.data(CELL_HINT_VISIBLE, false)\r\n }\r\n var difference = $element[0].scrollWidth - $element[0].clientWidth - msieCorrection;\r\n if (difference > 0 && !(0, _type.isDefined)($element.attr(\"title\"))) {\r\n $element.attr(\"title\", $element.text());\r\n $element.data(CELL_HINT_VISIBLE, true)\r\n }\r\n }\r\n }))\r\n }\r\n var getOptions = function(event) {\r\n var $cell = (0, _renderer.default)(event.currentTarget);\r\n var $fieldItemContent = (0, _renderer.default)(event.target).closest(\".\" + FORM_FIELD_ITEM_CONTENT_CLASS);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n var options = rowOptions && rowOptions.cells && rowOptions.cells[$cell.index()];\r\n if (!$cell.closest(\"table\").is(event.delegateTarget)) {\r\n return\r\n }\r\n var resultOptions = (0, _extend.extend)({}, options, {\r\n cellElement: (0, _element.getPublicElement)($cell),\r\n event: event,\r\n eventType: event.type\r\n });\r\n if ($fieldItemContent.length) {\r\n var formItemOptions = $fieldItemContent.data(\"dx-form-item\");\r\n if (formItemOptions.column) {\r\n resultOptions.column = formItemOptions.column;\r\n resultOptions.columnIndex = that._columnsController.getVisibleIndex(resultOptions.column.index)\r\n }\r\n }\r\n return resultOptions\r\n };\r\n _events_engine.default.on($table, \"mouseover\", \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n });\r\n _events_engine.default.on($table, \"mouseout\", \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n });\r\n _events_engine.default.on($table, _click.name, \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellClick\", options)\r\n });\r\n _events_engine.default.on($table, _double_click.name, \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellDblClick\", options)\r\n });\r\n subscribeToRowEvents(that, $table);\r\n return $table\r\n },\r\n _isNativeClick: _common.noop,\r\n _rowPointerDown: _common.noop,\r\n _rowClick: _common.noop,\r\n _rowDblClick: _common.noop,\r\n _createColGroup: function(columns) {\r\n var colgroupElement = (0, _renderer.default)(\"\");\r\n for (var i = 0; i < columns.length; i++) {\r\n var colspan = columns[i].colspan || 1;\r\n for (var j = 0; j < colspan; j++) {\r\n colgroupElement.append(this._createCol(columns[i]))\r\n }\r\n }\r\n return colgroupElement\r\n },\r\n _createCol: function(column) {\r\n var width = column.visibleWidth || column.width;\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n var col = (0, _renderer.default)(\"\");\r\n (0, _style.setWidth)(col, width);\r\n return col\r\n },\r\n renderDelayedTemplates: function() {\r\n var delayedTemplates = this._delayedTemplates;\r\n var syncTemplates = delayedTemplates.filter(function(template) {\r\n return !template.async\r\n });\r\n var asyncTemplates = delayedTemplates.filter(function(template) {\r\n return template.async\r\n });\r\n this._delayedTemplates = [];\r\n this._renderDelayedTemplatesCore(syncTemplates);\r\n this._renderDelayedTemplatesCoreAsync(asyncTemplates)\r\n },\r\n _renderDelayedTemplatesCoreAsync: function(templates) {\r\n var that = this;\r\n if (templates.length) {\r\n (0, _window.getWindow)().setTimeout(function() {\r\n that._renderDelayedTemplatesCore(templates, true)\r\n })\r\n }\r\n },\r\n _renderDelayedTemplatesCore: function(templates, isAsync) {\r\n var date = new Date;\r\n while (templates.length) {\r\n var templateParameters = templates.shift();\r\n var options = templateParameters.options;\r\n var doc = _dom_adapter.default.getDocument();\r\n if (!isAsync || (0, _renderer.default)(options.container).closest(doc).length) {\r\n templateParameters.template.render(options)\r\n }\r\n if (isAsync && new Date - date > 30) {\r\n this._renderDelayedTemplatesCoreAsync(templates);\r\n break\r\n }\r\n }\r\n if (!templates.length && this._delayedTemplates.length) {\r\n this.renderDelayedTemplates()\r\n }\r\n },\r\n _processTemplate: function(template) {\r\n var that = this;\r\n var renderingTemplate;\r\n if (template && template.render && !(0, _type.isRenderer)(template)) {\r\n renderingTemplate = {\r\n allowRenderToDetachedContainer: template.allowRenderToDetachedContainer,\r\n render: function(options) {\r\n template.render(options.container, options.model);\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else {\r\n if ((0, _type.isFunction)(template)) {\r\n renderingTemplate = {\r\n render: function(options) {\r\n var renderedTemplate = template((0, _element.getPublicElement)(options.container), options.model);\r\n if (renderedTemplate && (renderedTemplate.nodeType || (0, _type.isRenderer)(renderedTemplate))) {\r\n options.container.append(renderedTemplate)\r\n }\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else {\r\n var templateID = (0, _type.isString)(template) ? template : (0, _renderer.default)(template).attr(\"id\");\r\n if (!templateID) {\r\n renderingTemplate = that.getTemplate(template)\r\n } else {\r\n if (!that._templatesCache[templateID]) {\r\n that._templatesCache[templateID] = that.getTemplate(template)\r\n }\r\n renderingTemplate = that._templatesCache[templateID]\r\n }\r\n }\r\n }\r\n return renderingTemplate\r\n },\r\n renderTemplate: function(container, template, options, allowRenderToDetachedContainer) {\r\n var that = this;\r\n var renderingTemplate = that._processTemplate(template, options);\r\n var column = options.column;\r\n var isDataRow = \"data\" === options.rowType;\r\n var templateDeferred = new _deferred.Deferred;\r\n var templateOptions = {\r\n container: container,\r\n model: options,\r\n deferred: templateDeferred,\r\n onRendered: function() {\r\n templateDeferred.resolve()\r\n }\r\n };\r\n if (renderingTemplate) {\r\n options.component = that.component;\r\n var async = column && (column.renderAsync && isDataRow || that.option(\"renderAsync\") && (false !== column.renderAsync && (column.command || column.showEditorAlways) && isDataRow || \"filter\" === options.rowType));\r\n if ((renderingTemplate.allowRenderToDetachedContainer || allowRenderToDetachedContainer) && !async) {\r\n renderingTemplate.render(templateOptions)\r\n } else {\r\n that._delayedTemplates.push({\r\n template: renderingTemplate,\r\n options: templateOptions,\r\n async: async\r\n })\r\n }\r\n } else {\r\n templateDeferred.reject()\r\n }\r\n return templateDeferred.promise()\r\n },\r\n _getBodies: function(tableElement) {\r\n return (0, _renderer.default)(tableElement).children(\"tbody\").not(\".dx-header\").not(\".dx-footer\")\r\n },\r\n _wrapRowIfNeed: function($table, $row) {\r\n var $tBodies = this.option(\"rowTemplate\") && this._getBodies(this._tableElement || $table);\r\n if ($tBodies && $tBodies.filter(\".\" + ROW_CLASS).length) {\r\n var $tbody = (0, _renderer.default)(\"\").addClass($row.attr(\"class\"));\r\n this.setAria(\"role\", \"presentation\", $tbody);\r\n return $tbody.append($row)\r\n }\r\n return $row\r\n },\r\n _appendRow: function($table, $row, appendTemplate) {\r\n appendTemplate = appendTemplate || appendElementTemplate;\r\n appendTemplate.render({\r\n content: $row,\r\n container: $table\r\n })\r\n },\r\n _resizeCore: function() {\r\n var scrollLeft = this._scrollLeft;\r\n if (scrollLeft >= 0) {\r\n this._scrollLeft = 0;\r\n this.scrollTo({\r\n left: scrollLeft\r\n })\r\n }\r\n },\r\n _renderCore: function(e) {\r\n var $root = this.element().parent();\r\n if (!$root || $root.parent().length) {\r\n this.renderDelayedTemplates(e)\r\n }\r\n },\r\n _renderTable: function(options) {\r\n options = options || {};\r\n options.columns = this._columnsController.getVisibleColumns();\r\n var changeType = options.change && options.change.changeType;\r\n var $table = this._createTable(options.columns, \"append\" === changeType || \"prepend\" === changeType || \"update\" === changeType);\r\n this._renderRows($table, options);\r\n return $table\r\n },\r\n _renderRows: function($table, options) {\r\n var that = this;\r\n var rows = that._getRows(options.change);\r\n var columnIndices = options.change && options.change.columnIndices || [];\r\n var changeTypes = options.change && options.change.changeTypes || [];\r\n for (var i = 0; i < rows.length; i++) {\r\n that._renderRow($table, (0, _extend.extend)({\r\n row: rows[i],\r\n columnIndices: columnIndices[i],\r\n changeType: changeTypes[i]\r\n }, options))\r\n }\r\n },\r\n _renderRow: function($table, options) {\r\n if (!options.columnIndices) {\r\n options.row.cells = []\r\n }\r\n var $row = this._createRow(options.row);\r\n var $wrappedRow = this._wrapRowIfNeed($table, $row);\r\n if (\"remove\" !== options.changeType) {\r\n this._renderCells($row, options)\r\n }\r\n this._appendRow($table, $wrappedRow);\r\n var rowOptions = (0, _extend.extend)({\r\n columns: options.columns\r\n }, options.row);\r\n this._addWatchMethod(rowOptions, options.row);\r\n this._rowPrepared($wrappedRow, rowOptions, options.row)\r\n },\r\n _needRenderCell: function(columnIndex, columnIndices) {\r\n return !columnIndices || columnIndices.indexOf(columnIndex) >= 0\r\n },\r\n _renderCells: function($row, options) {\r\n var that = this;\r\n var columnIndex = 0;\r\n var row = options.row;\r\n var columns = options.columns;\r\n for (var i = 0; i < columns.length; i++) {\r\n if (this._needRenderCell(i, options.columnIndices)) {\r\n that._renderCell($row, (0, _extend.extend)({\r\n column: columns[i],\r\n columnIndex: columnIndex,\r\n value: row.values && row.values[columnIndex],\r\n oldValue: row.oldValues && row.oldValues[columnIndex]\r\n }, options))\r\n }\r\n if (columns[i].colspan > 1) {\r\n columnIndex += columns[i].colspan\r\n } else {\r\n columnIndex++\r\n }\r\n }\r\n },\r\n _updateCells: function($rowElement, $newRowElement, columnIndices) {\r\n var $cells = $rowElement.children();\r\n var $newCells = $newRowElement.children();\r\n var highlightChanges = this.option(\"highlightChanges\");\r\n var cellUpdatedClass = this.addWidgetPrefix(CELL_UPDATED_ANIMATION_CLASS);\r\n columnIndices.forEach(function(columnIndex, index) {\r\n var $cell = $cells.eq(columnIndex);\r\n var $newCell = $newCells.eq(index);\r\n $cell.replaceWith($newCell);\r\n if (highlightChanges && !$newCell.hasClass(\"dx-command-expand\")) {\r\n $newCell.addClass(cellUpdatedClass)\r\n }\r\n });\r\n copyAttributes($rowElement.get(0), $newRowElement.get(0))\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n if (\"freeSpace\" !== cellOptions.rowType) {\r\n this.setAria(\"selected\", false, $cell);\r\n this.setAria(\"role\", \"gridcell\", $cell);\r\n var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n var ariaColIndex = cellOptions.columnIndex + columnIndexOffset + 1;\r\n this.setAria(\"colindex\", ariaColIndex, $cell)\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var cellOptions = this._getCellOptions(options);\r\n if (options.columnIndices) {\r\n if (options.row.cells) {\r\n options.row.cells[cellOptions.columnIndex] = cellOptions\r\n }\r\n } else {\r\n options.row.cells.push(cellOptions)\r\n }\r\n var $cell = this._createCell(cellOptions);\r\n this._setCellAriaAttributes($cell, cellOptions);\r\n this._renderCellContent($cell, cellOptions);\r\n $row.get(0).appendChild($cell.get(0));\r\n return $cell\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var _this = this;\r\n var template = this._getCellTemplate(options);\r\n (0, _deferred.when)(!template || this.renderTemplate($cell, template, options)).done(function() {\r\n _this._updateCell($cell, options)\r\n })\r\n },\r\n _getCellTemplate: function() {},\r\n _getRows: function() {\r\n return []\r\n },\r\n _getCellOptions: function(options) {\r\n var cellOptions = {\r\n column: options.column,\r\n columnIndex: options.columnIndex,\r\n rowType: options.row.rowType,\r\n isAltRow: this._isAltRow(options.row)\r\n };\r\n this._addWatchMethod(cellOptions);\r\n return cellOptions\r\n },\r\n _addWatchMethod: function(options, source) {\r\n if (!this.option(\"repaintChangesOnly\")) {\r\n return\r\n }\r\n var watchers = [];\r\n source = source || options;\r\n source.watch = source.watch || function(getter, updateFunc) {\r\n var oldValue = getter(source.data);\r\n var watcher = function(row) {\r\n var newValue = getter(source.data);\r\n if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\r\n if (row) {\r\n updateFunc(newValue, oldValue)\r\n }\r\n oldValue = newValue\r\n }\r\n };\r\n watchers.push(watcher);\r\n var stopWatch = function() {\r\n var index = watchers.indexOf(watcher);\r\n if (index >= 0) {\r\n watchers.splice(index, 1)\r\n }\r\n };\r\n return stopWatch\r\n };\r\n source.update = source.update || function(row) {\r\n if (row) {\r\n this.data = options.data = row.data;\r\n this.rowIndex = options.rowIndex = row.rowIndex;\r\n this.dataIndex = options.dataIndex = row.dataIndex;\r\n this.isExpanded = options.isExpanded = row.isExpanded;\r\n if (options.row) {\r\n options.row = row\r\n }\r\n }\r\n watchers.forEach(function(watcher) {\r\n watcher(row)\r\n })\r\n };\r\n if (source !== options) {\r\n options.watch = source.watch.bind(source)\r\n }\r\n return options\r\n },\r\n _cellPrepared: function(cell, options) {\r\n options.cellElement = (0, _element.getPublicElement)((0, _renderer.default)(cell));\r\n this.executeAction(\"onCellPrepared\", options)\r\n },\r\n _rowPrepared: function($row, options) {\r\n (0, _element_data.data)($row.get(0), \"options\", options);\r\n options.rowElement = (0, _element.getPublicElement)($row);\r\n this.executeAction(\"onRowPrepared\", options)\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\"])) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = iteratorUtils.map(visibleColumns, function(column) {\r\n var width = column.visibleWidth || column.width;\r\n return (0, _type.isDefined)(width) ? width : \"auto\"\r\n });\r\n this.setColumnWidths({\r\n widths: widths,\r\n optionNames: optionNames\r\n });\r\n return\r\n }\r\n if (!this._requireReady) {\r\n this.render()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var cellIndex = $cell.length ? $cell[0].cellIndex : -1;\r\n return cellIndex\r\n },\r\n getTableElements: function() {\r\n return this._tableElement || (0, _renderer.default)()\r\n },\r\n getTableElement: function() {\r\n return this._tableElement\r\n },\r\n setTableElement: function(tableElement) {\r\n this._tableElement = tableElement\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n switch (args.name) {\r\n case \"cellHintEnabled\":\r\n case \"onCellPrepared\":\r\n case \"onRowPrepared\":\r\n case \"onCellHoverChanged\":\r\n this._invalidate(true, true);\r\n args.handled = true\r\n }\r\n },\r\n init: function() {\r\n var that = this;\r\n that._scrollLeft = -1;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._delayedTemplates = [];\r\n that._templatesCache = {};\r\n that.createAction(\"onCellClick\");\r\n that.createAction(\"onRowClick\");\r\n that.createAction(\"onCellDblClick\");\r\n that.createAction(\"onRowDblClick\");\r\n that.createAction(\"onCellHoverChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onCellPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n that.createAction(\"onRowPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\",\r\n afterExecute: function(e) {\r\n that._afterRowPrepared(e)\r\n }\r\n });\r\n that._columnsController.columnsChanged.add(that._columnOptionChanged.bind(that));\r\n that._dataController && that._dataController.changed.add(that._handleDataChanged.bind(that))\r\n },\r\n _afterRowPrepared: _common.noop,\r\n _handleDataChanged: function() {},\r\n callbackNames: function() {\r\n return [\"scrollChanged\"]\r\n },\r\n scrollTo: function(pos) {\r\n var $element = this.element();\r\n var $scrollContainer = $element && $element.children(\".\" + this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).not(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if ((0, _type.isDefined)(pos) && (0, _type.isDefined)(pos.left) && this._scrollLeft !== pos.left) {\r\n this._scrollLeft = pos.left;\r\n $scrollContainer && $scrollContainer.scrollLeft(pos.left)\r\n }\r\n },\r\n _wrapTableInScrollContainer: function($table) {\r\n var _this2 = this;\r\n var $scrollContainer = (0, _renderer.default)(\"
\");\r\n _events_engine.default.on($scrollContainer, \"scroll\", function() {\r\n var scrollLeft = $scrollContainer.scrollLeft();\r\n if (scrollLeft !== _this2._scrollLeft) {\r\n _this2.scrollChanged.fire({\r\n left: scrollLeft\r\n }, _this2.name)\r\n }\r\n });\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_CLASS)).addClass(this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).append($table).appendTo(this.element());\r\n this.setAria(\"role\", \"presentation\", $scrollContainer);\r\n return $scrollContainer\r\n },\r\n _updateContent: function($newTableElement) {\r\n this.setTableElement($newTableElement);\r\n this._wrapTableInScrollContainer($newTableElement)\r\n },\r\n _findContentElement: _common.noop,\r\n _getWidths: function($cellElements) {\r\n var result = [];\r\n var legacyRendering = this.option(\"legacyRendering\");\r\n var width;\r\n if ($cellElements) {\r\n iteratorUtils.each($cellElements, function(index, item) {\r\n width = item.offsetWidth;\r\n if (item.getBoundingClientRect) {\r\n var clientRect = (0, _position.getBoundingRect)(item);\r\n if (clientRect.width > width - 1) {\r\n width = legacyRendering ? Math.ceil(clientRect.width) : clientRect.width\r\n }\r\n }\r\n result.push(width)\r\n })\r\n }\r\n return result\r\n },\r\n getColumnWidths: function($tableElement) {\r\n var that = this;\r\n var result = [];\r\n var $rows;\r\n var $cells;\r\n (this.option(\"forceApplyBindings\") || _common.noop)();\r\n $tableElement = $tableElement || that.getTableElement();\r\n if ($tableElement) {\r\n $rows = $tableElement.children(\"tbody:not(.dx-header)\").children();\r\n for (var i = 0; i < $rows.length; i++) {\r\n var $row = $rows.eq(i);\r\n var isRowVisible = \"none\" !== $row.get(0).style.display && !$row.hasClass(\"dx-state-invisible\");\r\n if (!$row.is(\".\" + GROUP_ROW_CLASS) && !$row.is(\".\" + DETAIL_ROW_CLASS) && isRowVisible) {\r\n $cells = $row.children(\"td\");\r\n break\r\n }\r\n }\r\n result = that._getWidths($cells)\r\n }\r\n return result\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n return columnIndex\r\n },\r\n setColumnWidths: function(_ref) {\r\n var widths = _ref.widths,\r\n $tableElement = _ref.$tableElement,\r\n columns = _ref.columns,\r\n fixed = _ref.fixed;\r\n var $cols;\r\n var width;\r\n var minWidth;\r\n var columnIndex;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var legacyRendering = this.option(\"legacyRendering\");\r\n $tableElement = $tableElement || this.getTableElement();\r\n if ($tableElement && $tableElement.length && widths) {\r\n columnIndex = 0;\r\n $cols = $tableElement.children(\"colgroup\").children(\"col\");\r\n (0, _style.setWidth)($cols, \"auto\");\r\n columns = columns || this.getColumns(null, $tableElement);\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!legacyRendering && columnAutoWidth && !fixed) {\r\n width = columns[i].width;\r\n if (width && !columns[i].command) {\r\n width = columns[i].visibleWidth || width;\r\n width = getWidthStyle(width);\r\n minWidth = getWidthStyle(columns[i].minWidth || width);\r\n var $rows = $rows || $tableElement.children().children(\".dx-row\").not(\".\" + GROUP_ROW_CLASS).not(\".\" + DETAIL_ROW_CLASS);\r\n for (var rowIndex = 0; rowIndex < $rows.length; rowIndex++) {\r\n var visibleIndex = this.getVisibleColumnIndex(i, rowIndex);\r\n var cell = $rows[rowIndex].cells[visibleIndex];\r\n if (cell) {\r\n setCellWidth(cell, columns[i], width);\r\n cell.style.minWidth = minWidth\r\n }\r\n }\r\n }\r\n }\r\n if (columns[i].colspan) {\r\n columnIndex += columns[i].colspan;\r\n continue\r\n }\r\n width = widths[columnIndex];\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n if (\"number\" === typeof width) {\r\n width = width.toFixed(3) + \"px\"\r\n }(0, _style.setWidth)($cols.eq(columnIndex), (0, _type.isDefined)(width) ? width : \"auto\");\r\n columnIndex++\r\n }\r\n }\r\n },\r\n getCellElements: function(rowIndex) {\r\n return this._getCellElementsCore(rowIndex)\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var $row = this._getRowElements().eq(rowIndex);\r\n return $row.children()\r\n },\r\n _getCellElement: function(rowIndex, columnIdentifier) {\r\n var that = this;\r\n var $cell;\r\n var $cells = that.getCellElements(rowIndex);\r\n var columnVisibleIndex = that._getVisibleColumnIndex($cells, rowIndex, columnIdentifier);\r\n if ($cells.length && columnVisibleIndex >= 0) {\r\n $cell = $cells.eq(columnVisibleIndex)\r\n }\r\n if ($cell && $cell.length) {\r\n return $cell\r\n }\r\n },\r\n _getRowElement: function(rowIndex) {\r\n var that = this;\r\n var $rowElement = (0, _renderer.default)();\r\n var $tableElements = that.getTableElements();\r\n iteratorUtils.each($tableElements, function(_, tableElement) {\r\n $rowElement = $rowElement.add(that._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex))\r\n });\r\n if ($rowElement.length) {\r\n return $rowElement\r\n }\r\n },\r\n getCellElement: function(rowIndex, columnIdentifier) {\r\n return (0, _element.getPublicElement)(this._getCellElement(rowIndex, columnIdentifier))\r\n },\r\n getRowElement: function(rowIndex) {\r\n var $rows = this._getRowElement(rowIndex);\r\n var elements = [];\r\n if ($rows && !(0, _element.getPublicElement)($rows).get) {\r\n for (var i = 0; i < $rows.length; i++) {\r\n elements.push($rows[i])\r\n }\r\n } else {\r\n elements = $rows\r\n }\r\n return elements\r\n },\r\n _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n if ((0, _type.isString)(columnIdentifier)) {\r\n var columnIndex = this._columnsController.columnOption(columnIdentifier, \"index\");\r\n return this._columnsController.getVisibleIndex(columnIndex)\r\n }\r\n return columnIdentifier\r\n },\r\n getColumnElements: function() {},\r\n getColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n getCell: function(cellPosition, rows) {\r\n var $rows = rows || this._getRowElements();\r\n var $cells;\r\n if ($rows.length > 0 && cellPosition.rowIndex >= 0) {\r\n if (\"virtual\" !== this.option(\"scrolling.mode\")) {\r\n cellPosition.rowIndex = cellPosition.rowIndex < $rows.length ? cellPosition.rowIndex : $rows.length - 1\r\n }\r\n $cells = this.getCellElements(cellPosition.rowIndex);\r\n if ($cells && $cells.length > 0) {\r\n return $cells.eq($cells.length > cellPosition.columnIndex ? cellPosition.columnIndex : $cells.length - 1)\r\n }\r\n }\r\n },\r\n getRowsCount: function() {\r\n var tableElement = this.getTableElement();\r\n if (tableElement && 1 === tableElement.length) {\r\n return tableElement[0].rows.length\r\n }\r\n return 0\r\n },\r\n _getRowElementsCore: function(tableElement) {\r\n tableElement = tableElement || this.getTableElement();\r\n if (tableElement) {\r\n var tBodies = this.option(\"rowTemplate\") && tableElement.find(\"> tbody.\" + ROW_CLASS);\r\n return tBodies && tBodies.length ? tBodies : tableElement.find(\"> tbody > .\" + ROW_CLASS + \", > .\" + ROW_CLASS)\r\n }\r\n return (0, _renderer.default)()\r\n },\r\n _getRowElements: function(tableElement) {\r\n return this._getRowElementsCore(tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n return this._getRowElements().index($row)\r\n },\r\n getBoundingRect: function() {},\r\n getName: function() {},\r\n setScrollerSpacing: function(width) {\r\n var that = this;\r\n var $element = that.element();\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n $element && $element.css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n },\r\n isScrollbarVisible: function(isHorizontal) {\r\n var $element = this.element();\r\n var $tableElement = this._tableElement;\r\n if ($element && $tableElement) {\r\n return isHorizontal ? $tableElement.outerWidth() - $element.width() > 0 : $tableElement.outerHeight() - $element.height() > 0\r\n }\r\n return false\r\n }\r\n});\r\nexports.ColumnsView = ColumnsView;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.accessibility.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.registerKeyboardAction = void 0;\r\nvar accessibility = _interopRequireWildcard(require(\"../../ui/shared/accessibility\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\nvar registerKeyboardAction = function(viewName, instance, $element, selector, action) {\r\n var keyboardController = instance.getController(\"keyboardNavigation\");\r\n if (instance.option(\"useLegacyKeyboardNavigation\") || keyboardController && !keyboardController.isKeyboardEnabled()) {\r\n return\r\n }\r\n var executeKeyDown = function(args) {\r\n instance.executeAction(\"onKeyDown\", args)\r\n };\r\n instance.createAction(\"onKeyDown\");\r\n accessibility.registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown)\r\n};\r\nexports.registerKeyboardAction = registerKeyboardAction;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_headers.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_CLASS = \"headers\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar ROW_CLASS_SELECTOR = \".dx-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar CONTEXT_MENU_SORT_ASC_ICON = \"context-menu-sort-asc\";\r\nvar CONTEXT_MENU_SORT_DESC_ICON = \"context-menu-sort-desc\";\r\nvar CONTEXT_MENU_SORT_NONE_ICON = \"context-menu-sort-none\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar VISIBILITY_HIDDEN_CLASS = \"dx-visibility-hidden\";\r\nvar TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX = \"dx-text-content-alignment-\";\r\nvar SORT_INDICATOR_CLASS = \"dx-sort-indicator\";\r\nvar SORT_INDEX_INDICATOR_CLASS = \"dx-sort-index-indicator\";\r\nvar HEADER_FILTER_CLASS_SELECTOR = \".dx-header-filter\";\r\nvar HEADER_FILTER_INDICATOR_CLASS = \"dx-header-filter-indicator\";\r\nvar MULTI_ROW_HEADER_CLASS = \"dx-header-multi-row\";\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n showColumnHeaders: true,\r\n cellHintEnabled: true\r\n }\r\n },\r\n views: {\r\n columnHeadersView: _uiGrid_core.ColumnsView.inherit(function() {\r\n var createCellContent = function(that, $cell, options) {\r\n var $cellContent = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n that.setAria(\"role\", \"presentation\", $cellContent);\r\n addCssClassesToCellContent(that, $cell, options.column, $cellContent);\r\n var showColumnLines = that.option(\"showColumnLines\");\r\n var contentAlignment = that.getController(\"columns\").getHeaderContentAlignment(options.column.alignment);\r\n return $cellContent[showColumnLines || \"right\" === contentAlignment ? \"appendTo\" : \"prependTo\"]($cell)\r\n };\r\n\r\n function addCssClassesToCellContent(that, $cell, column, $cellContent) {\r\n var $indicatorElements = that._getIndicatorElements($cell, true);\r\n var $visibleIndicatorElements = that._getIndicatorElements($cell);\r\n var indicatorCount = $indicatorElements && $indicatorElements.length;\r\n var columnAlignment = that._getColumnAlignment(column.alignment);\r\n var sortIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sort\"));\r\n var sortIndexIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sortIndex\"));\r\n var $sortIndicator = $visibleIndicatorElements.filter(sortIndicatorClassName);\r\n var $sortIndexIndicator = $visibleIndicatorElements.children().filter(sortIndexIndicatorClassName);\r\n $cellContent = $cellContent || $cell.children(\".\" + that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n $cellContent.toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + columnAlignment, indicatorCount > 0).toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + (\"left\" === columnAlignment ? \"right\" : \"left\"), indicatorCount > 0 && \"center\" === column.alignment).toggleClass(SORT_INDICATOR_CLASS, !!$sortIndicator.length).toggleClass(SORT_INDEX_INDICATOR_CLASS, !!$sortIndexIndicator.length).toggleClass(HEADER_FILTER_INDICATOR_CLASS, !!$visibleIndicatorElements.filter(\".\" + that._getIndicatorClassName(\"headerFilter\")).length)\r\n }\r\n return {\r\n _createTable: function() {\r\n var $table = this.callBase.apply(this, arguments);\r\n _events_engine.default.on($table, \"mousedown selectstart\", this.createAction(function(e) {\r\n var event = e.event;\r\n if (event.shiftKey) {\r\n event.preventDefault()\r\n }\r\n }));\r\n return $table\r\n },\r\n _isLegacyKeyboardNavigation: function() {\r\n return this.option(\"useLegacyKeyboardNavigation\")\r\n },\r\n _getDefaultTemplate: function(column) {\r\n var that = this;\r\n return function($container, options) {\r\n var $content = column.command ? $container : createCellContent(that, $container, options);\r\n var caption = \"expand\" !== column.command && column.caption;\r\n if (caption) {\r\n $content.text(caption)\r\n } else {\r\n if (column.command) {\r\n $container.html(\" \")\r\n }\r\n }\r\n }\r\n },\r\n _getHeaderTemplate: function(column) {\r\n return column.headerCellTemplate || {\r\n allowRenderToDetachedContainer: true,\r\n render: this._getDefaultTemplate(column)\r\n }\r\n },\r\n _processTemplate: function(template, options) {\r\n var that = this;\r\n var resultTemplate;\r\n var column = options.column;\r\n var renderingTemplate = that.callBase(template);\r\n if (\"header\" === options.rowType && renderingTemplate && column.headerCellTemplate && !column.command) {\r\n resultTemplate = {\r\n render: function(options) {\r\n var $content = createCellContent(that, options.container, options.model);\r\n renderingTemplate.render((0, _extend.extend)({}, options, {\r\n container: $content\r\n }))\r\n }\r\n }\r\n } else {\r\n resultTemplate = renderingTemplate\r\n }\r\n return resultTemplate\r\n },\r\n _handleDataChanged: function(e) {\r\n if (\"refresh\" !== e.changeType) {\r\n return\r\n }\r\n if (this._isGroupingChanged || this._requireReady) {\r\n this._isGroupingChanged = false;\r\n this.render()\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var $cell = this.callBase($row, options);\r\n if (\"header\" === options.row.rowType) {\r\n $cell.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n if (options.column && !options.column.type) {\r\n $cell.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n }\r\n }\r\n }\r\n return $cell\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n this.callBase($cell, cellOptions);\r\n if (\"header\" === cellOptions.rowType) {\r\n this.setAria(\"role\", \"columnheader\", $cell);\r\n if (cellOptions.column && !cellOptions.column.command && !cellOptions.column.isBand) {\r\n $cell.attr(\"id\", cellOptions.column.headerId);\r\n this.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaColumn\") + \" \" + cellOptions.column.caption, $cell)\r\n }\r\n }\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row).toggleClass(COLUMN_LINES_CLASS, this.option(\"showColumnLines\"));\r\n if (\"header\" === row.rowType) {\r\n $row.addClass(HEADER_ROW_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n (0, _uiGrid_core2.registerKeyboardAction)(\"columnHeaders\", this, $row, \"td\", this._handleActionKeyDown.bind(this))\r\n }\r\n }\r\n return $row\r\n },\r\n _handleActionKeyDown: function(args) {\r\n var event = args.event;\r\n var $target = (0, _renderer.default)(event.target);\r\n this._lastActionElement = event.target;\r\n if ($target.is(HEADER_FILTER_CLASS_SELECTOR)) {\r\n var headerFilterController = this.getController(\"headerFilter\");\r\n var $column = $target.closest(\"td\");\r\n var columnIndex = this.getColumnIndexByElement($column);\r\n if (columnIndex >= 0) {\r\n headerFilterController.showHeaderFilterMenu(columnIndex, false)\r\n }\r\n } else {\r\n var $row = $target.closest(ROW_CLASS_SELECTOR);\r\n this._processHeaderAction(event, $row)\r\n }\r\n event.preventDefault()\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $container = that.element();\r\n if (that._tableElement && !that._dataController.isLoaded() && !that._hasRowElements) {\r\n return\r\n }\r\n $container.addClass(that.addWidgetPrefix(HEADERS_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\")).empty();\r\n that.setAria(\"role\", \"presentation\", $container);\r\n that._updateContent(that._renderTable());\r\n if (that.getRowCount() > 1) {\r\n $container.addClass(MULTI_ROW_HEADER_CLASS)\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n _renderRows: function() {\r\n var that = this;\r\n if (that._dataController.isLoaded() || that._hasRowElements) {\r\n that.callBase.apply(that, arguments);\r\n that._hasRowElements = true\r\n }\r\n },\r\n _getRowVisibleColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n _renderRow: function($table, options) {\r\n options.columns = this._getRowVisibleColumns(options.row.rowIndex);\r\n this.callBase($table, options)\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var $cellElement = this.callBase.apply(this, arguments);\r\n column.rowspan > 1 && \"header\" === options.rowType && $cellElement.attr(\"rowSpan\", column.rowspan);\r\n return $cellElement\r\n },\r\n _getRows: function() {\r\n var result = [];\r\n var rowCount = this.getRowCount();\r\n if (this.option(\"showColumnHeaders\")) {\r\n for (var i = 0; i < rowCount; i++) {\r\n result.push({\r\n rowType: \"header\",\r\n rowIndex: i\r\n })\r\n }\r\n }\r\n return result\r\n },\r\n _getCellTemplate: function(options) {\r\n if (\"header\" === options.rowType) {\r\n return this._getHeaderTemplate(options.column)\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n if (changeTypes.grouping) {\r\n this._isGroupingChanged = true;\r\n return\r\n }\r\n this.callBase(e);\r\n if (optionNames.width || optionNames.visible) {\r\n this.resizeCompleted.fire()\r\n }\r\n },\r\n _isElementVisible: function(elementOptions) {\r\n return elementOptions && elementOptions.visible\r\n },\r\n _alignCaptionByCenter: function($cell) {\r\n var $indicatorsContainer = this._getIndicatorContainer($cell, true);\r\n if ($indicatorsContainer && $indicatorsContainer.length) {\r\n $indicatorsContainer.filter(\".\" + VISIBILITY_HIDDEN_CLASS).remove();\r\n $indicatorsContainer = this._getIndicatorContainer($cell);\r\n $indicatorsContainer.clone().addClass(VISIBILITY_HIDDEN_CLASS).css(\"float\", \"\").insertBefore($cell.children(\".\" + this.addWidgetPrefix(CELL_CONTENT_CLASS)))\r\n }\r\n },\r\n _updateCell: function($cell, options) {\r\n if (\"header\" === options.rowType && \"center\" === options.column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n var $indicatorElement = this.callBase.apply(this, arguments);\r\n if (\"center\" === column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n addCssClassesToCellContent(this, $cell, column);\r\n return $indicatorElement\r\n },\r\n _getIndicatorContainer: function($cell, returnAll) {\r\n var $indicatorsContainer = this.callBase($cell);\r\n return returnAll ? $indicatorsContainer : $indicatorsContainer.filter(\":not(.\" + VISIBILITY_HIDDEN_CLASS + \")\")\r\n },\r\n _isSortableElement: function() {\r\n return true\r\n },\r\n getHeadersRowHeight: function() {\r\n var $tableElement = this.getTableElement();\r\n var $headerRows = $tableElement && $tableElement.find(\".\" + HEADER_ROW_CLASS);\r\n return $headerRows && $headerRows.toArray().reduce(function(sum, headerRow) {\r\n return sum + (0, _renderer.default)(headerRow).height()\r\n }, 0) || 0\r\n },\r\n getHeaderElement: function(index) {\r\n var columnElements = this.getColumnElements();\r\n return columnElements && columnElements.eq(index)\r\n },\r\n getColumnElements: function(index, bandColumnIndex) {\r\n var that = this;\r\n var $cellElement;\r\n var columnsController = that._columnsController;\r\n var rowCount = that.getRowCount();\r\n if (that.option(\"showColumnHeaders\")) {\r\n if (rowCount > 1 && (!(0, _type.isDefined)(index) || (0, _type.isDefined)(bandColumnIndex))) {\r\n var result = [];\r\n var visibleColumns = (0, _type.isDefined)(bandColumnIndex) ? columnsController.getChildrenByBandColumn(bandColumnIndex, true) : columnsController.getVisibleColumns();\r\n (0, _iterator.each)(visibleColumns, function(_, column) {\r\n var rowIndex = (0, _type.isDefined)(index) ? index : columnsController.getRowIndex(column.index);\r\n $cellElement = that._getCellElement(rowIndex, columnsController.getVisibleIndex(column.index, rowIndex));\r\n $cellElement && result.push($cellElement.get(0))\r\n });\r\n return (0, _renderer.default)(result)\r\n } else {\r\n if (!index || index < rowCount) {\r\n return that.getCellElements(index || 0)\r\n }\r\n }\r\n }\r\n },\r\n getColumnIndexByElement: function($cell) {\r\n var cellIndex = this.getCellIndex($cell);\r\n var $row = $cell.closest(\".dx-row\");\r\n var rowIndex = $row[0].rowIndex;\r\n var column = this.getColumns(rowIndex)[cellIndex];\r\n return column ? column.index : -1\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n var column = this.getColumns()[columnIndex];\r\n return column ? this._columnsController.getVisibleIndex(column.index, rowIndex) : -1\r\n },\r\n getColumnWidths: function() {\r\n var $columnElements = this.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n return this._getWidths($columnElements)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n allowDragging: function(column, sourceLocation, draggingPanels) {\r\n var i;\r\n var draggableColumnCount = 0;\r\n var rowIndex = column && this._columnsController.getRowIndex(column.index);\r\n var columns = this.getColumns(0 === rowIndex ? 0 : null);\r\n var canHideColumn = (null === column || void 0 === column ? void 0 : column.allowHiding) && columns.length > 1;\r\n var allowDrag = function(column) {\r\n return column.allowReordering || column.allowGrouping || column.allowHiding\r\n };\r\n for (i = 0; i < columns.length; i++) {\r\n if (allowDrag(columns[i])) {\r\n draggableColumnCount++\r\n }\r\n }\r\n if (draggableColumnCount <= 1 && !canHideColumn) {\r\n return false\r\n } else {\r\n if (!draggingPanels) {\r\n return (this.option(\"allowColumnReordering\") || this._columnsController.isColumnOptionUsed(\"allowReordering\")) && column && column.allowReordering\r\n }\r\n }\r\n for (i = 0; i < draggingPanels.length; i++) {\r\n var draggingPanel = draggingPanels[i];\r\n if (draggingPanel && draggingPanel.allowDragging(column, sourceLocation)) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n getBoundingRect: function() {\r\n var that = this;\r\n var $columnElements = that.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n var offset = that.getTableElement().offset();\r\n return {\r\n top: offset.top\r\n }\r\n }\r\n return null\r\n },\r\n getName: function() {\r\n return \"headers\"\r\n },\r\n getColumnCount: function() {\r\n var $columnElements = this.getColumnElements();\r\n return $columnElements ? $columnElements.length : 0\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\")\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"showColumnHeaders\":\r\n case \"wordWrapEnabled\":\r\n case \"showColumnLines\":\r\n that._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.row && (\"header\" === options.row.rowType || \"detailAdaptive\" === options.row.rowType)) {\r\n var sortingOptions = that.option(\"sorting\");\r\n if (sortingOptions && \"none\" !== sortingOptions.mode && column && column.allowSorting) {\r\n var onItemClick = function(params) {\r\n setTimeout(function() {\r\n that._columnsController.changeSortOrder(column.index, params.itemData.value)\r\n })\r\n };\r\n return [{\r\n text: sortingOptions.ascendingText,\r\n value: \"asc\",\r\n disabled: \"asc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_ASC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.descendingText,\r\n value: \"desc\",\r\n disabled: \"desc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_DESC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.clearText,\r\n value: \"none\",\r\n disabled: !column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_NONE_ICON,\r\n onItemClick: onItemClick\r\n }]\r\n }\r\n }\r\n },\r\n getRowCount: function() {\r\n return this._columnsController && this._columnsController.getRowCount()\r\n },\r\n setRowsOpacity: function(columnIndex, value, rowIndex) {\r\n var that = this;\r\n var i;\r\n var columnElements;\r\n var rowCount = that.getRowCount();\r\n var columns = that._columnsController.getColumns();\r\n var column = columns && columns[columnIndex];\r\n var columnID = column && column.isBand && column.index;\r\n var setColumnOpacity = function(index, column) {\r\n if (column.ownerBand === columnID) {\r\n columnElements.eq(index).css({\r\n opacity: value\r\n });\r\n if (column.isBand) {\r\n that.setRowsOpacity(column.index, value, i + 1)\r\n }\r\n }\r\n };\r\n if ((0, _type.isDefined)(columnID)) {\r\n rowIndex = rowIndex || 0;\r\n for (i = rowIndex; i < rowCount; i++) {\r\n columnElements = that.getCellElements(i);\r\n (0, _iterator.each)(that.getColumns(i), setColumnOpacity)\r\n }\r\n }\r\n }\r\n }\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_state_mixin.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_INDICATORS_CLASS = \"dx-column-indicators\";\r\nvar GROUP_PANEL_ITEM_CLASS = \"dx-group-panel-item\";\r\nvar _default = {\r\n _applyColumnState: function(options) {\r\n var _that$component;\r\n var that = this;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var columnAlignment = that._getColumnAlignment(options.column.alignment, rtlEnabled);\r\n var parameters = (0, _extend.extend)(true, {\r\n columnAlignment: columnAlignment\r\n }, options);\r\n var isGroupPanelItem = parameters.rootElement.hasClass(GROUP_PANEL_ITEM_CLASS);\r\n var $indicatorsContainer = that._createIndicatorContainer(parameters, isGroupPanelItem);\r\n var $span = (0, _renderer.default)(\"\").addClass(that._getIndicatorClassName(options.name));\r\n var columnsController = null === (_that$component = that.component) || void 0 === _that$component ? void 0 : _that$component.getController(\"columns\");\r\n var indicatorAlignment = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getHeaderContentAlignment(columnAlignment)) || columnAlignment;\r\n parameters.container = $indicatorsContainer;\r\n parameters.indicator = $span;\r\n that._renderIndicator(parameters);\r\n $indicatorsContainer[(isGroupPanelItem || !options.showColumnLines) && \"left\" === indicatorAlignment ? \"appendTo\" : \"prependTo\"](options.rootElement);\r\n return $span\r\n },\r\n _getIndicatorClassName: _common.noop,\r\n _getColumnAlignment: function(alignment, rtlEnabled) {\r\n rtlEnabled = rtlEnabled || this.option(\"rtlEnabled\");\r\n return alignment && \"center\" !== alignment ? alignment : (0, _position.getDefaultAlignment)(rtlEnabled)\r\n },\r\n _createIndicatorContainer: function(options, ignoreIndicatorAlignment) {\r\n var $indicatorsContainer = this._getIndicatorContainer(options.rootElement);\r\n var indicatorAlignment = \"left\" === options.columnAlignment ? \"right\" : \"left\";\r\n if (!$indicatorsContainer.length) {\r\n $indicatorsContainer = (0, _renderer.default)(\"
\").addClass(COLUMN_INDICATORS_CLASS)\r\n }\r\n this.setAria(\"role\", \"presentation\", $indicatorsContainer);\r\n return $indicatorsContainer.css(\"float\", options.showColumnLines && !ignoreIndicatorAlignment ? indicatorAlignment : null)\r\n },\r\n _getIndicatorContainer: function($cell) {\r\n return $cell && $cell.find(\".\" + COLUMN_INDICATORS_CLASS)\r\n },\r\n _getIndicatorElements: function($cell) {\r\n var $indicatorContainer = this._getIndicatorContainer($cell);\r\n return $indicatorContainer && $indicatorContainer.children()\r\n },\r\n _renderIndicator: function(options) {\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n $container && $indicator && $container.append($indicator)\r\n },\r\n _updateIndicators: function(indicatorName) {\r\n var that = this;\r\n var columns = that.getColumns();\r\n var $cells = that.getColumnElements();\r\n var $cell;\r\n if (!$cells || columns.length !== $cells.length) {\r\n return\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n $cell = $cells.eq(i);\r\n that._updateIndicator($cell, columns[i], indicatorName);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n if (rowOptions && rowOptions.cells) {\r\n rowOptions.cells[$cell.index()].column = columns[i]\r\n }\r\n }\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n if (!column.command) {\r\n return this._applyColumnState({\r\n name: indicatorName,\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: this.option(\"showColumnLines\")\r\n })\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_controller.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _abstract_store = _interopRequireDefault(require(\"../../data/abstract_store\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar USER_STATE_FIELD_NAMES_15_1 = [\"filterValues\", \"filterType\", \"fixed\", \"fixedPosition\"];\r\nvar USER_STATE_FIELD_NAMES = [\"visibleIndex\", \"dataField\", \"name\", \"dataType\", \"width\", \"visible\", \"sortOrder\", \"lastSortOrder\", \"sortIndex\", \"groupIndex\", \"filterValue\", \"selectedFilterOperation\", \"added\"].concat(USER_STATE_FIELD_NAMES_15_1);\r\nvar IGNORE_COLUMN_OPTION_NAMES = {\r\n visibleWidth: true,\r\n bestFitWidth: true,\r\n bufferedFilterValue: true\r\n};\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\nvar GROUP_COMMAND_COLUMN_NAME = \"groupExpand\";\r\nvar regExp = /columns\\[(\\d+)\\]\\.?/gi;\r\nvar globalColumnId = 1;\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n commonColumnSettings: {\r\n allowFiltering: true,\r\n allowHiding: true,\r\n allowSorting: true,\r\n allowEditing: true,\r\n encodeHtml: true,\r\n trueText: _message.default.format(\"dxDataGrid-trueText\"),\r\n falseText: _message.default.format(\"dxDataGrid-falseText\")\r\n },\r\n allowColumnReordering: false,\r\n allowColumnResizing: false,\r\n columnResizingMode: \"nextColumn\",\r\n columnMinWidth: void 0,\r\n columnWidth: void 0,\r\n adaptColumnWidthByRatio: true,\r\n columns: void 0,\r\n regenerateColumnsByVisibleItems: false,\r\n customizeColumns: null,\r\n dateSerializationFormat: void 0\r\n }\r\n },\r\n controllers: {\r\n columns: _uiGrid_core.default.Controller.inherit(function() {\r\n var DEFAULT_COLUMN_OPTIONS = {\r\n visible: true,\r\n showInColumnChooser: true\r\n };\r\n var DATATYPE_OPERATIONS = {\r\n number: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n string: [\"contains\", \"notcontains\", \"startswith\", \"endswith\", \"=\", \"<>\"],\r\n date: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n datetime: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"]\r\n };\r\n var COLUMN_INDEX_OPTIONS = {\r\n visibleIndex: true,\r\n groupIndex: true,\r\n grouped: true,\r\n sortIndex: true,\r\n sortOrder: true\r\n };\r\n var GROUP_LOCATION = \"group\";\r\n var COLUMN_CHOOSER_LOCATION = \"columnChooser\";\r\n var setFilterOperationsAsDefaultValues = function(column) {\r\n column.filterOperations = column.defaultFilterOperations\r\n };\r\n var createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) {\r\n var commonColumnOptions = {};\r\n if (columnOptions) {\r\n if ((0, _type.isString)(columnOptions)) {\r\n columnOptions = {\r\n dataField: columnOptions\r\n }\r\n }\r\n that.setName(columnOptions);\r\n var result = {};\r\n if (columnOptions.command) {\r\n result = (0, _object.deepExtendArraySafe)(commonColumnOptions, columnOptions)\r\n } else {\r\n commonColumnOptions = that.getCommonSettings(columnOptions);\r\n if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) {\r\n columnOptions = (0, _extend.extend)({}, columnOptions, {\r\n dataField: userStateColumnOptions.dataField\r\n })\r\n }\r\n var calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn);\r\n if (!columnOptions.type) {\r\n result = {\r\n headerId: \"dx-col-\".concat(globalColumnId++)\r\n }\r\n }\r\n result = (0, _object.deepExtendArraySafe)(result, DEFAULT_COLUMN_OPTIONS);\r\n (0, _object.deepExtendArraySafe)(result, commonColumnOptions);\r\n (0, _object.deepExtendArraySafe)(result, calculatedColumnOptions);\r\n (0, _object.deepExtendArraySafe)(result, columnOptions);\r\n (0, _object.deepExtendArraySafe)(result, {\r\n selector: null\r\n })\r\n }\r\n if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) {\r\n setFilterOperationsAsDefaultValues(result)\r\n }\r\n return result\r\n }\r\n };\r\n var createColumnsFromOptions = function createColumnsFromOptions(that, columnsOptions, bandColumn) {\r\n var result = [];\r\n if (columnsOptions) {\r\n (0, _iterator.each)(columnsOptions, function(index, columnOptions) {\r\n var userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[index]) && that._columnsUserState[index];\r\n var column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn);\r\n if (column) {\r\n if (bandColumn) {\r\n column.ownerBand = bandColumn\r\n }\r\n result.push(column);\r\n if (column.columns) {\r\n result = result.concat(createColumnsFromOptions(that, column.columns, column));\r\n delete column.columns;\r\n column.hasColumns = true\r\n }\r\n }\r\n })\r\n }\r\n return result\r\n };\r\n var getParentBandColumns = function(columnIndex, columnParentByIndex) {\r\n var result = [];\r\n var parent = columnParentByIndex[columnIndex];\r\n while (parent) {\r\n result.unshift(parent);\r\n columnIndex = parent.index;\r\n parent = columnParentByIndex[columnIndex]\r\n }\r\n return result\r\n };\r\n var _getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) {\r\n var result = [];\r\n var children = columnChildrenByIndex[columnIndex];\r\n if (children) {\r\n for (var i = 0; i < children.length; i++) {\r\n var column = children[i];\r\n if (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) {\r\n result.push(column);\r\n if (recursive && column.isBand) {\r\n result = result.concat(_getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive))\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n var getColumnByIndexes = function(that, columnIndexes) {\r\n var result;\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(column) {\r\n var ownerBand = result ? result.index : void 0;\r\n return column.ownerBand === ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n result = that._columns[columnIndexes[0]]\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n for (var i = 0; i < columnIndexes.length; i++) {\r\n result = columns[columnIndexes[i]];\r\n if (result) {\r\n columns = that._columns.filter(callbackFilter)\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n var getColumnFullPath = function(that, column) {\r\n var result = [];\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(item) {\r\n return item.ownerBand === column.ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n var columnIndex = that._columns.indexOf(column);\r\n if (columnIndex >= 0) {\r\n result = [\"columns[\".concat(columnIndex, \"]\")]\r\n }\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n while (columns.length && columns.indexOf(column) !== -1) {\r\n result.unshift(\"columns[\".concat(columns.indexOf(column), \"]\"));\r\n column = bandColumnsCache.columnParentByIndex[column.index];\r\n columns = column ? that._columns.filter(callbackFilter) : []\r\n }\r\n }\r\n return result.join(\".\")\r\n };\r\n var calculateColspan = function calculateColspan(that, columnID) {\r\n var colspan = 0;\r\n var columns = that.getChildrenByBandColumn(columnID, true);\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index);\r\n colspan += column.colspan || 1\r\n } else {\r\n colspan += 1\r\n }\r\n });\r\n return colspan\r\n };\r\n var processBandColumns = function(that, columns, bandColumnsCache) {\r\n var rowspan;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n if (column.visible || column.command) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index)\r\n }\r\n if (!column.isBand || !column.colspan) {\r\n rowspan = that.getRowCount();\r\n if (!column.command && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length\r\n }\r\n if (rowspan > 1) {\r\n column.rowspan = rowspan\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var getValueDataType = function(value) {\r\n var dataType = (0, _type.type)(value);\r\n if (\"string\" !== dataType && \"boolean\" !== dataType && \"number\" !== dataType && \"date\" !== dataType && \"object\" !== dataType) {\r\n dataType = void 0\r\n }\r\n return dataType\r\n };\r\n var getSerializationFormat = function(dataType, value) {\r\n switch (dataType) {\r\n case \"date\":\r\n case \"datetime\":\r\n return _date_serialization.default.getDateSerializationFormat(value);\r\n case \"number\":\r\n if ((0, _type.isString)(value)) {\r\n return \"string\"\r\n }\r\n if ((0, _type.isNumeric)(value)) {\r\n return null\r\n }\r\n }\r\n };\r\n var updateSerializers = function(options, dataType) {\r\n if (!options.deserializeValue) {\r\n if (_uiGrid_core2.default.isDateType(dataType)) {\r\n options.deserializeValue = function(value) {\r\n return _date_serialization.default.deserializeDate(value)\r\n };\r\n options.serializeValue = function(value) {\r\n return (0, _type.isString)(value) ? value : _date_serialization.default.serializeDate(value, this.serializationFormat)\r\n }\r\n }\r\n if (\"number\" === dataType) {\r\n options.deserializeValue = function(value) {\r\n var parsedValue = parseFloat(value);\r\n return isNaN(parsedValue) ? value : parsedValue\r\n };\r\n options.serializeValue = function(value, target) {\r\n if (\"filter\" === target) {\r\n return value\r\n }\r\n return (0, _type.isDefined)(value) && \"string\" === this.serializationFormat ? value.toString() : value\r\n }\r\n }\r\n }\r\n };\r\n var getAlignmentByDataType = function(dataType, isRTL) {\r\n switch (dataType) {\r\n case \"number\":\r\n return \"right\";\r\n case \"boolean\":\r\n return \"center\";\r\n default:\r\n return (0, _position.getDefaultAlignment)(isRTL)\r\n }\r\n };\r\n var customizeTextForBooleanDataType = function(e) {\r\n if (true === e.value) {\r\n return this.trueText || \"true\"\r\n } else {\r\n if (false === e.value) {\r\n return this.falseText || \"false\"\r\n } else {\r\n return e.valueText || \"\"\r\n }\r\n }\r\n };\r\n var getCustomizeTextByDataType = function(dataType) {\r\n if (\"boolean\" === dataType) {\r\n return customizeTextForBooleanDataType\r\n }\r\n };\r\n var createColumnsFromDataSource = function(that, dataSource) {\r\n var firstItems = that._getFirstItems(dataSource);\r\n var fieldName;\r\n var processedFields = {};\r\n var result = [];\r\n for (var i = 0; i < firstItems.length; i++) {\r\n if (firstItems[i]) {\r\n for (fieldName in firstItems[i]) {\r\n if (!(0, _type.isFunction)(firstItems[i][fieldName]) || _variable_wrapper.default.isWrapped(firstItems[i][fieldName])) {\r\n processedFields[fieldName] = true\r\n }\r\n }\r\n }\r\n }\r\n for (fieldName in processedFields) {\r\n if (0 !== fieldName.indexOf(\"__\")) {\r\n var column = createColumn(that, fieldName);\r\n result.push(column)\r\n }\r\n }\r\n return result\r\n };\r\n var updateColumnIndexes = function(that) {\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n column.index = index\r\n });\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n if ((0, _type.isObject)(column.ownerBand)) {\r\n column.ownerBand = column.ownerBand.index\r\n }\r\n });\r\n (0, _iterator.each)(that._commandColumns, function(index, column) {\r\n column.index = -(index + 1)\r\n })\r\n };\r\n var updateColumnGroupIndexes = function(that, currentColumn) {\r\n (0, _array.normalizeIndexes)(that._columns, \"groupIndex\", currentColumn, function(column) {\r\n var grouped = column.grouped;\r\n delete column.grouped;\r\n return grouped\r\n })\r\n };\r\n var updateColumnSortIndexes = function(that, currentColumn) {\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n if ((0, _type.isDefined)(column.sortIndex) && !isSortOrderValid(column.sortOrder)) {\r\n delete column.sortIndex\r\n }\r\n });\r\n (0, _array.normalizeIndexes)(that._columns, \"sortIndex\", currentColumn, function(column) {\r\n return !(0, _type.isDefined)(column.groupIndex) && isSortOrderValid(column.sortOrder)\r\n })\r\n };\r\n var updateColumnVisibleIndexes = function(that, currentColumn) {\r\n var key;\r\n var column;\r\n var bandColumns = {};\r\n var result = [];\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columns = that._columns.filter(function(column) {\r\n return !column.command\r\n });\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n var parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns.length) {\r\n var bandColumnIndex = parentBandColumns[parentBandColumns.length - 1].index;\r\n bandColumns[bandColumnIndex] = bandColumns[bandColumnIndex] || [];\r\n bandColumns[bandColumnIndex].push(column)\r\n } else {\r\n result.push(column)\r\n }\r\n }\r\n for (key in bandColumns) {\r\n (0, _array.normalizeIndexes)(bandColumns[key], \"visibleIndex\", currentColumn)\r\n }(0, _array.normalizeIndexes)(result, \"visibleIndex\", currentColumn)\r\n };\r\n var getColumnIndexByVisibleIndex = function(that, visibleIndex, location) {\r\n var rowIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.rowIndex : null;\r\n var columns = location === GROUP_LOCATION ? that.getGroupColumns() : location === COLUMN_CHOOSER_LOCATION ? that.getChooserColumns() : that.getVisibleColumns(rowIndex);\r\n var column;\r\n visibleIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.columnIndex : visibleIndex;\r\n column = columns[visibleIndex];\r\n if (column && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n column = that._columns.filter(function(col) {\r\n return column.type === col.type\r\n })[0] || column\r\n }\r\n return column && (0, _type.isDefined)(column.index) ? column.index : -1\r\n };\r\n var moveColumnToGroup = function(that, column, groupIndex) {\r\n var groupColumns = that.getGroupColumns();\r\n var i;\r\n if (groupIndex >= 0) {\r\n for (i = 0; i < groupColumns.length; i++) {\r\n if (groupColumns[i].groupIndex >= groupIndex) {\r\n groupColumns[i].groupIndex++\r\n }\r\n }\r\n } else {\r\n groupIndex = 0;\r\n for (i = 0; i < groupColumns.length; i++) {\r\n groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1)\r\n }\r\n }\r\n return groupIndex\r\n };\r\n\r\n function checkUserStateColumn(column, userStateColumn) {\r\n return column && userStateColumn && (userStateColumn.name === column.name || !column.name) && (userStateColumn.dataField === column.dataField || column.name)\r\n }\r\n var applyUserState = function(that) {\r\n var columnsUserState = that._columnsUserState;\r\n var ignoreColumnOptionNames = that._ignoreColumnOptionNames || [];\r\n var columns = that._columns;\r\n var columnCountById = {};\r\n var resultColumns = [];\r\n var allColumnsHaveState = true;\r\n var userStateColumnIndexes = [];\r\n var column;\r\n var userStateColumnIndex;\r\n var i;\r\n\r\n function applyFieldsState(column, userStateColumn) {\r\n if (!userStateColumn) {\r\n return\r\n }\r\n for (var index = 0; index < USER_STATE_FIELD_NAMES.length; index++) {\r\n var fieldName = USER_STATE_FIELD_NAMES[index];\r\n if ((0, _array.inArray)(fieldName, ignoreColumnOptionNames) >= 0) {\r\n continue\r\n }\r\n if (\"dataType\" === fieldName) {\r\n column[fieldName] = column[fieldName] || userStateColumn[fieldName]\r\n } else {\r\n if ((0, _array.inArray)(fieldName, USER_STATE_FIELD_NAMES_15_1) >= 0) {\r\n if (fieldName in userStateColumn) {\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n } else {\r\n if (\"selectedFilterOperation\" === fieldName && userStateColumn[fieldName]) {\r\n column.defaultSelectedFilterOperation = column[fieldName] || null\r\n }\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findUserStateColumn(columnsUserState, column) {\r\n var id = column.name || column.dataField;\r\n var count = columnCountById[id] || 0;\r\n for (var j = 0; j < columnsUserState.length; j++) {\r\n if (checkUserStateColumn(column, columnsUserState[j])) {\r\n if (count) {\r\n count--\r\n } else {\r\n columnCountById[id] = columnCountById[id] || 0;\r\n columnCountById[id]++;\r\n return j\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n if (columnsUserState) {\r\n for (i = 0; i < columns.length; i++) {\r\n userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]);\r\n allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0;\r\n userStateColumnIndexes.push(userStateColumnIndex)\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n userStateColumnIndex = userStateColumnIndexes[i];\r\n if (that._hasUserState || allColumnsHaveState) {\r\n applyFieldsState(column, columnsUserState[userStateColumnIndex])\r\n }\r\n if (userStateColumnIndex >= 0 && (0, _type.isDefined)(columnsUserState[userStateColumnIndex].initialIndex)) {\r\n resultColumns[userStateColumnIndex] = column\r\n } else {\r\n resultColumns.push(column)\r\n }\r\n }\r\n var hasAddedBands = false;\r\n for (i = 0; i < columnsUserState.length; i++) {\r\n var columnUserState = columnsUserState[i];\r\n if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) {\r\n column = createColumn(that, columnUserState.added);\r\n applyFieldsState(column, columnUserState);\r\n resultColumns.push(column);\r\n if (columnUserState.added.columns) {\r\n hasAddedBands = true\r\n }\r\n }\r\n }\r\n if (hasAddedBands) {\r\n updateColumnIndexes(that);\r\n resultColumns = createColumnsFromOptions(that, resultColumns)\r\n }\r\n assignColumns(that, resultColumns)\r\n }\r\n };\r\n var updateIndexes = function(that, column) {\r\n updateColumnIndexes(that);\r\n updateColumnGroupIndexes(that, column);\r\n updateColumnSortIndexes(that, column);\r\n resetBandColumnsCache(that);\r\n updateColumnVisibleIndexes(that, column)\r\n };\r\n var resetColumnsCache = function(that) {\r\n that.resetColumnsCache()\r\n };\r\n\r\n function assignColumns(that, columns) {\r\n that._columns = columns;\r\n resetColumnsCache(that);\r\n that.updateColumnDataTypes()\r\n }\r\n var updateColumnChanges = function(that, changeType, optionName, columnIndex) {\r\n var columnChanges = that._columnChanges || {\r\n optionNames: {\r\n length: 0\r\n },\r\n changeTypes: {\r\n length: 0\r\n },\r\n columnIndex: columnIndex\r\n };\r\n optionName = optionName || \"all\";\r\n optionName = optionName.split(\".\")[0];\r\n var changeTypes = columnChanges.changeTypes;\r\n if (changeType && !changeTypes[changeType]) {\r\n changeTypes[changeType] = true;\r\n changeTypes.length++\r\n }\r\n var optionNames = columnChanges.optionNames;\r\n if (optionName && !optionNames[optionName]) {\r\n optionNames[optionName] = true;\r\n optionNames.length++\r\n }\r\n if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) {\r\n delete columnChanges.columnIndex\r\n }\r\n that._columnChanges = columnChanges;\r\n resetColumnsCache(that)\r\n };\r\n var fireColumnsChanged = function(that) {\r\n var onColumnsChanging = that.option(\"onColumnsChanging\");\r\n var columnChanges = that._columnChanges;\r\n var reinitOptionNames = [\"dataField\", \"lookup\", \"dataType\", \"columns\"];\r\n var needReinit = function(options) {\r\n return options && reinitOptionNames.some(function(name) {\r\n return options[name]\r\n })\r\n };\r\n if (that.isInitialized() && !that._updateLockCount && columnChanges) {\r\n if (onColumnsChanging) {\r\n that._updateLockCount++;\r\n onColumnsChanging((0, _extend.extend)({\r\n component: that.component\r\n }, columnChanges));\r\n that._updateLockCount--\r\n }\r\n that._columnChanges = void 0;\r\n if (needReinit(columnChanges.optionNames)) {\r\n that.reinit()\r\n } else {\r\n that.columnsChanged.fire(columnChanges)\r\n }\r\n }\r\n };\r\n var updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) {\r\n var columnWasGrouped = prevGroupIndex >= 0;\r\n if (groupIndex >= 0) {\r\n if (!columnWasGrouped) {\r\n column.lastSortOrder = column.sortOrder\r\n }\r\n } else {\r\n var sortMode = that.option(\"sorting.mode\");\r\n var sortOrder = column.lastSortOrder;\r\n if (\"single\" === sortMode) {\r\n var sortedByAnotherColumn = that._columns.some(function(col) {\r\n return col !== column && (0, _type.isDefined)(col.sortIndex)\r\n });\r\n if (sortedByAnotherColumn) {\r\n sortOrder = void 0\r\n }\r\n }\r\n column.sortOrder = sortOrder\r\n }\r\n };\r\n var fireOptionChanged = function(that, options) {\r\n var value = options.value;\r\n var optionName = options.optionName;\r\n var prevValue = options.prevValue;\r\n var fullOptionName = options.fullOptionName;\r\n var fullOptionPath = \"\".concat(fullOptionName, \".\").concat(optionName);\r\n if (!IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) {\r\n that._skipProcessingColumnsChange = fullOptionPath;\r\n that.component._notifyOptionChanged(fullOptionPath, value, prevValue);\r\n that._skipProcessingColumnsChange = false\r\n }\r\n };\r\n var columnOptionCore = function(that, column, optionName, value, notFireEvent) {\r\n var optionGetter = (0, _data.compileGetter)(optionName);\r\n var columnIndex = column.index;\r\n var columns;\r\n var changeType;\r\n var initialColumn;\r\n if (3 === arguments.length) {\r\n return optionGetter(column, {\r\n functionsAsIs: true\r\n })\r\n }\r\n var prevValue = optionGetter(column, {\r\n functionsAsIs: true\r\n });\r\n if (prevValue !== value) {\r\n if (\"groupIndex\" === optionName || \"calculateGroupValue\" === optionName) {\r\n changeType = \"grouping\";\r\n updateSortOrderWhenGrouping(that, column, value, prevValue)\r\n } else {\r\n if (\"sortIndex\" === optionName || \"sortOrder\" === optionName || \"calculateSortValue\" === optionName) {\r\n changeType = \"sorting\"\r\n } else {\r\n changeType = \"columns\"\r\n }\r\n }\r\n var optionSetter = (0, _data.compileSetter)(optionName);\r\n optionSetter(column, value, {\r\n functionsAsIs: true\r\n });\r\n var fullOptionName = getColumnFullPath(that, column);\r\n if (COLUMN_INDEX_OPTIONS[optionName]) {\r\n updateIndexes(that, column);\r\n value = optionGetter(column)\r\n }\r\n if (\"name\" === optionName || \"allowEditing\" === optionName) {\r\n that._checkColumns()\r\n }\r\n fullOptionName && fireOptionChanged(that, {\r\n fullOptionName: fullOptionName,\r\n optionName: optionName,\r\n value: value,\r\n prevValue: prevValue\r\n });\r\n if (!(0, _type.isDefined)(prevValue) && !(0, _type.isDefined)(value) && 0 !== optionName.indexOf(\"buffer\")) {\r\n notFireEvent = true\r\n }\r\n if (!notFireEvent) {\r\n if ((0, _array.inArray)(optionName, USER_STATE_FIELD_NAMES) < 0 && \"visibleWidth\" !== optionName) {\r\n columns = that.option(\"columns\");\r\n initialColumn = that.getColumnByPath(fullOptionName, columns);\r\n if ((0, _type.isString)(initialColumn)) {\r\n initialColumn = columns[columnIndex] = {\r\n dataField: initialColumn\r\n }\r\n }\r\n if (initialColumn && checkUserStateColumn(initialColumn, column)) {\r\n optionSetter(initialColumn, value, {\r\n functionsAsIs: true\r\n })\r\n }\r\n }\r\n updateColumnChanges(that, changeType, optionName, columnIndex)\r\n } else {\r\n resetColumnsCache(that)\r\n }\r\n }\r\n };\r\n\r\n function isSortOrderValid(sortOrder) {\r\n return \"asc\" === sortOrder || \"desc\" === sortOrder\r\n }\r\n var addExpandColumn = function(that) {\r\n var options = that._getExpandColumnOptions();\r\n that.addCommandColumn(options)\r\n };\r\n var defaultSetCellValue = function(data, value) {\r\n var path = this.dataField.split(\".\");\r\n var dotCount = path.length - 1;\r\n if (this.serializeValue) {\r\n value = this.serializeValue(value)\r\n }\r\n for (var i = 0; i < dotCount; i++) {\r\n var name = path[i];\r\n data = data[name] = data[name] || {}\r\n }\r\n data[path[dotCount]] = value\r\n };\r\n var getDataColumns = function getDataColumns(columns, rowIndex, bandColumnID) {\r\n var result = [];\r\n rowIndex = rowIndex || 0;\r\n columns[rowIndex] && (0, _iterator.each)(columns[rowIndex], function(_, column) {\r\n if (column.ownerBand === bandColumnID || column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (!column.isBand || !column.colspan) {\r\n if (!column.command || rowIndex < 1) {\r\n result.push(column)\r\n }\r\n } else {\r\n result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index))\r\n }\r\n }\r\n });\r\n return result\r\n };\r\n var _getRowCount = function(that) {\r\n var rowCount = 1;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columnParentByIndex = bandColumnsCache.columnParentByIndex;\r\n that._columns.forEach(function(column) {\r\n var parents = getParentBandColumns(column.index, columnParentByIndex);\r\n var invisibleParents = parents.filter(function(column) {\r\n return !column.visible\r\n });\r\n if (column.visible && !invisibleParents.length) {\r\n rowCount = Math.max(rowCount, parents.length + 1)\r\n }\r\n });\r\n return rowCount\r\n };\r\n var isCustomCommandColumn = function(that, commandColumn) {\r\n return !!that._columns.filter(function(column) {\r\n return column.type === commandColumn.type\r\n }).length\r\n };\r\n var getFixedPosition = function(that, column) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n if (column.command && !isCustomCommandColumn(that, column) || !column.fixedPosition) {\r\n return rtlEnabled ? \"right\" : \"left\"\r\n }\r\n return column.fixedPosition\r\n };\r\n var processExpandColumns = function(columns, expandColumns, type, columnIndex) {\r\n var customColumnIndex;\r\n var rowCount = this.getRowCount();\r\n var rowspan = columns[columnIndex] && columns[columnIndex].rowspan;\r\n var expandColumnsByType = expandColumns.filter(function(column) {\r\n return column.type === type\r\n });\r\n columns.forEach(function(column, index) {\r\n if (column.type === type) {\r\n customColumnIndex = index;\r\n rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount\r\n }\r\n });\r\n if (rowspan > 1) {\r\n expandColumnsByType = (0, _iterator.map)(expandColumnsByType, function(expandColumn) {\r\n return (0, _extend.extend)({}, expandColumn, {\r\n rowspan: rowspan\r\n })\r\n })\r\n }\r\n expandColumnsByType.unshift.apply(expandColumnsByType, (0, _type.isDefined)(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]);\r\n columns.splice.apply(columns, expandColumnsByType);\r\n return rowspan || 1\r\n };\r\n var digitsCount = function(number) {\r\n var i;\r\n for (i = 0; number > 1; i++) {\r\n number /= 10\r\n }\r\n return i\r\n };\r\n var numberToString = function(number, digitsCount) {\r\n var str = number ? number.toString() : \"0\";\r\n while (str.length < digitsCount) {\r\n str = \"0\" + str\r\n }\r\n return str\r\n };\r\n var mergeColumns = function(that, columns, commandColumns, needToExtend) {\r\n var column;\r\n var commandColumnIndex;\r\n var result = columns.slice().map(function(column) {\r\n return (0, _extend.extend)({}, column)\r\n });\r\n var isColumnFixing = that._isColumnFixing();\r\n var defaultCommandColumns = commandColumns.slice().map(function(column) {\r\n return (0, _extend.extend)({\r\n fixed: isColumnFixing\r\n }, column)\r\n });\r\n var getCommandColumnIndex = function(column) {\r\n return commandColumns.reduce(function(result, commandColumn, index) {\r\n var columnType = needToExtend && column.type === GROUP_COMMAND_COLUMN_NAME ? \"expand\" : column.type;\r\n return commandColumn.type === columnType || commandColumn.command === column.command ? index : result\r\n }, -1)\r\n };\r\n var callbackFilter = function(commandColumn) {\r\n return commandColumn.command !== commandColumns[commandColumnIndex].command\r\n };\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1;\r\n if (commandColumnIndex >= 0) {\r\n if (needToExtend) {\r\n result[i] = (0, _extend.extend)({\r\n fixed: isColumnFixing\r\n }, commandColumns[commandColumnIndex], column);\r\n if (column.type !== GROUP_COMMAND_COLUMN_NAME) {\r\n defaultCommandColumns = defaultCommandColumns.filter(callbackFilter)\r\n }\r\n } else {\r\n var columnOptions = {\r\n visibleIndex: column.visibleIndex,\r\n index: column.index,\r\n headerId: column.headerId,\r\n allowFixing: 0 === column.groupIndex,\r\n allowReordering: 0 === column.groupIndex,\r\n groupIndex: column.groupIndex\r\n };\r\n result[i] = (0, _extend.extend)({}, column, commandColumns[commandColumnIndex], column.type === GROUP_COMMAND_COLUMN_NAME && columnOptions)\r\n }\r\n }\r\n }\r\n if (columns.length && needToExtend && defaultCommandColumns.length) {\r\n result = result.concat(defaultCommandColumns)\r\n }\r\n return result\r\n };\r\n var isColumnFixed = function(that, column) {\r\n return (0, _type.isDefined)(column.fixed) || !column.type ? column.fixed : that._isColumnFixing()\r\n };\r\n var convertOwnerBandToColumnReference = function(columns) {\r\n columns.forEach(function(column) {\r\n if ((0, _type.isDefined)(column.ownerBand)) {\r\n column.ownerBand = columns[column.ownerBand]\r\n }\r\n })\r\n };\r\n var resetBandColumnsCache = function(that) {\r\n that._bandColumnsCache = void 0\r\n };\r\n var findColumn = function(columns, identifier) {\r\n var identifierOptionName = (0, _type.isString)(identifier) && identifier.substr(0, identifier.indexOf(\":\"));\r\n var column;\r\n if (void 0 === identifier) {\r\n return\r\n }\r\n if (identifierOptionName) {\r\n identifier = identifier.substr(identifierOptionName.length + 1)\r\n }\r\n if (identifierOptionName) {\r\n column = columns.filter(function(column) {\r\n return \"\" + column[identifierOptionName] === identifier\r\n })[0]\r\n } else {\r\n [\"index\", \"name\", \"dataField\", \"caption\"].some(function(optionName) {\r\n column = columns.filter(function(column) {\r\n return column[optionName] === identifier\r\n })[0];\r\n return !!column\r\n })\r\n }\r\n return column\r\n };\r\n return {\r\n _getExpandColumnOptions: function() {\r\n return {\r\n type: \"expand\",\r\n command: \"expand\",\r\n width: \"auto\",\r\n cssClass: COMMAND_EXPAND_CLASS,\r\n allowEditing: false,\r\n allowGrouping: false,\r\n allowSorting: false,\r\n allowResizing: false,\r\n allowReordering: false,\r\n allowHiding: false\r\n }\r\n },\r\n _getFirstItems: function(dataSource) {\r\n var groupsCount;\r\n var items = [];\r\n var getFirstItemsCore = function getFirstItemsCore(items, groupsCount) {\r\n if (!items || !groupsCount) {\r\n return items\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1);\r\n if (childItems && childItems.length) {\r\n return childItems\r\n }\r\n }\r\n };\r\n if (dataSource && dataSource.items().length > 0) {\r\n groupsCount = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group()).length;\r\n items = getFirstItemsCore(dataSource.items(), groupsCount) || []\r\n }\r\n return items\r\n },\r\n _endUpdateCore: function() {\r\n !this._skipProcessingColumnsChange && fireColumnsChanged(this)\r\n },\r\n init: function() {\r\n var that = this;\r\n var columns = that.option(\"columns\");\r\n that._commandColumns = that._commandColumns || [];\r\n that._columns = that._columns || [];\r\n that._isColumnsFromOptions = !!columns;\r\n if (that._isColumnsFromOptions) {\r\n assignColumns(that, columns ? createColumnsFromOptions(that, columns) : []);\r\n applyUserState(that)\r\n } else {\r\n assignColumns(that, that._columnsUserState ? createColumnsFromOptions(that, that._columnsUserState) : that._columns)\r\n }\r\n addExpandColumn(that);\r\n if (that._dataSourceApplied) {\r\n that.applyDataSource(that._dataSource, true)\r\n } else {\r\n updateIndexes(that)\r\n }\r\n that._checkColumns()\r\n },\r\n callbackNames: function() {\r\n return [\"columnsChanged\"]\r\n },\r\n getColumnByPath: function(path, columns) {\r\n var that = this;\r\n var column;\r\n var columnIndexes = [];\r\n path.replace(regExp, function(_, columnIndex) {\r\n columnIndexes.push(parseInt(columnIndex));\r\n return \"\"\r\n });\r\n if (columnIndexes.length) {\r\n if (columns) {\r\n column = columnIndexes.reduce(function(column, index) {\r\n return column && column.columns && column.columns[index]\r\n }, {\r\n columns: columns\r\n })\r\n } else {\r\n column = getColumnByIndexes(that, columnIndexes)\r\n }\r\n }\r\n return column\r\n },\r\n optionChanged: function(args) {\r\n var needUpdateRequireResize;\r\n switch (args.name) {\r\n case \"adaptColumnWidthByRatio\":\r\n args.handled = true;\r\n break;\r\n case \"dataSource\":\r\n if (args.value !== args.previousValue && !this.option(\"columns\") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) {\r\n this._columns = []\r\n }\r\n break;\r\n case \"columns\":\r\n needUpdateRequireResize = this._skipProcessingColumnsChange;\r\n args.handled = true;\r\n if (!this._skipProcessingColumnsChange) {\r\n if (args.name === args.fullName) {\r\n this._columnsUserState = null;\r\n this._ignoreColumnOptionNames = null;\r\n this.init()\r\n } else {\r\n this._columnOptionChanged(args);\r\n needUpdateRequireResize = true\r\n }\r\n }\r\n if (needUpdateRequireResize) {\r\n this._updateRequireResize(args)\r\n }\r\n break;\r\n case \"commonColumnSettings\":\r\n case \"columnAutoWidth\":\r\n case \"allowColumnResizing\":\r\n case \"allowColumnReordering\":\r\n case \"columnFixing\":\r\n case \"grouping\":\r\n case \"groupPanel\":\r\n case \"regenerateColumnsByVisibleItems\":\r\n case \"customizeColumns\":\r\n case \"editing\":\r\n case \"columnHidingEnabled\":\r\n case \"dateSerializationFormat\":\r\n case \"columnResizingMode\":\r\n case \"columnMinWidth\":\r\n case \"columnWidth\":\r\n var _args$fullName, _args$fullName2, _args$fullName3, _args$fullName4, _args$fullName5;\r\n args.handled = true;\r\n var ignoreColumnOptionNames = \"columnWidth\" === args.fullName && [\"width\"];\r\n var isEditingPopup = 0 === (null === (_args$fullName = args.fullName) || void 0 === _args$fullName ? void 0 : _args$fullName.indexOf(\"editing.popup\"));\r\n var isEditingForm = 0 === (null === (_args$fullName2 = args.fullName) || void 0 === _args$fullName2 ? void 0 : _args$fullName2.indexOf(\"editing.form\"));\r\n var isEditRowKey = 0 === (null === (_args$fullName3 = args.fullName) || void 0 === _args$fullName3 ? void 0 : _args$fullName3.indexOf(\"editing.editRowKey\"));\r\n var isEditColumnName = 0 === (null === (_args$fullName4 = args.fullName) || void 0 === _args$fullName4 ? void 0 : _args$fullName4.indexOf(\"editing.editColumnName\"));\r\n var isChanges = 0 === (null === (_args$fullName5 = args.fullName) || void 0 === _args$fullName5 ? void 0 : _args$fullName5.indexOf(\"editing.changes\"));\r\n var needReinit = !isEditingPopup && !isEditingForm && !isEditRowKey && !isChanges && !isEditColumnName;\r\n if (needReinit) {\r\n this.reinit(ignoreColumnOptionNames)\r\n }\r\n break;\r\n case \"rtlEnabled\":\r\n this.reinit();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _columnOptionChanged: function(args) {\r\n var columnOptionValue = {};\r\n var column = this.getColumnByPath(args.fullName);\r\n var columnOptionName = args.fullName.replace(regExp, \"\");\r\n if (column) {\r\n if (columnOptionName) {\r\n columnOptionValue[columnOptionName] = args.value\r\n } else {\r\n columnOptionValue = args.value\r\n }\r\n this._skipProcessingColumnsChange = args.fullName;\r\n this.columnOption(column.index, columnOptionValue);\r\n this._skipProcessingColumnsChange = false\r\n }\r\n },\r\n _updateRequireResize: function(args) {\r\n var component = this.component;\r\n if (\"width\" === args.fullName.replace(regExp, \"\") && component._updateLockCount) {\r\n component._requireResize = true\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"addColumn\", \"deleteColumn\", \"columnOption\", \"columnCount\", \"clearSorting\", \"clearGrouping\", \"getVisibleColumns\", \"getVisibleColumnIndex\"]\r\n },\r\n applyDataSource: function(dataSource, forceApplying) {\r\n var that = this;\r\n var isDataSourceLoaded = dataSource && dataSource.isLoaded();\r\n that._dataSource = dataSource;\r\n if (!that._dataSourceApplied || 0 === that._dataSourceColumnsCount || forceApplying || that.option(\"regenerateColumnsByVisibleItems\")) {\r\n if (isDataSourceLoaded) {\r\n if (!that._isColumnsFromOptions) {\r\n var columnsFromDataSource = createColumnsFromDataSource(that, dataSource);\r\n if (columnsFromDataSource.length) {\r\n assignColumns(that, columnsFromDataSource);\r\n that._dataSourceColumnsCount = that._columns.length;\r\n applyUserState(that)\r\n }\r\n }\r\n return that.updateColumns(dataSource, forceApplying)\r\n } else {\r\n that._dataSourceApplied = false\r\n }\r\n } else {\r\n if (isDataSourceLoaded && !that.isAllDataTypesDefined(true) && that.updateColumnDataTypes(dataSource)) {\r\n updateColumnChanges(that, \"columns\");\r\n fireColumnsChanged(that);\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n }\r\n },\r\n reset: function() {\r\n this._dataSourceApplied = false;\r\n this._dataSourceColumnsCount = void 0;\r\n this.reinit()\r\n },\r\n resetColumnsCache: function() {\r\n var that = this;\r\n that._visibleColumns = void 0;\r\n that._fixedColumns = void 0;\r\n that._rowCount = void 0;\r\n resetBandColumnsCache(that)\r\n },\r\n reinit: function(ignoreColumnOptionNames) {\r\n this._columnsUserState = this.getUserState();\r\n this._ignoreColumnOptionNames = ignoreColumnOptionNames || null;\r\n this.init();\r\n if (ignoreColumnOptionNames) {\r\n this._ignoreColumnOptionNames = null\r\n }\r\n },\r\n isInitialized: function() {\r\n return !!this._columns.length || !!this.option(\"columns\")\r\n },\r\n isDataSourceApplied: function() {\r\n return this._dataSourceApplied\r\n },\r\n getCommonSettings: function(column) {\r\n var commonColumnSettings = (!column || !column.type) && this.option(\"commonColumnSettings\") || {};\r\n var groupingOptions = this.option(\"grouping\") || {};\r\n var groupPanelOptions = this.option(\"groupPanel\") || {};\r\n return (0, _extend.extend)({\r\n allowFixing: this.option(\"columnFixing.enabled\"),\r\n allowResizing: this.option(\"allowColumnResizing\") || void 0,\r\n allowReordering: this.option(\"allowColumnReordering\"),\r\n minWidth: this.option(\"columnMinWidth\"),\r\n width: this.option(\"columnWidth\"),\r\n autoExpandGroup: groupingOptions.autoExpandAll,\r\n allowCollapsing: groupingOptions.allowCollapsing,\r\n allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled\r\n }, commonColumnSettings)\r\n },\r\n isColumnOptionUsed: function(optionName) {\r\n for (var i = 0; i < this._columns.length; i++) {\r\n if (this._columns[i][optionName]) {\r\n return true\r\n }\r\n }\r\n },\r\n isAllDataTypesDefined: function(checkSerializers) {\r\n var columns = this._columns;\r\n if (!columns.length) {\r\n return false\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) {\r\n continue\r\n }\r\n if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n getColumns: function() {\r\n return this._columns\r\n },\r\n isBandColumnsUsed: function() {\r\n return this.getColumns().some(function(column) {\r\n return column.isBand\r\n })\r\n },\r\n getGroupColumns: function() {\r\n var result = [];\r\n (0, _iterator.each)(this._columns, function() {\r\n var column = this;\r\n if ((0, _type.isDefined)(column.groupIndex)) {\r\n result[column.groupIndex] = column\r\n }\r\n });\r\n return result\r\n },\r\n getVisibleColumns: function(rowIndex) {\r\n this._visibleColumns = this._visibleColumns || this._getVisibleColumnsCore();\r\n rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._visibleColumns.length - 1;\r\n return this._visibleColumns[rowIndex] || []\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore();\r\n rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._fixedColumns.length - 1;\r\n return this._fixedColumns[rowIndex] || []\r\n },\r\n getFilteringColumns: function() {\r\n return this.getColumns().filter(function(item) {\r\n return (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering)\r\n }).map(function(item) {\r\n var field = (0, _extend.extend)(true, {}, item);\r\n if (!(0, _type.isDefined)(field.dataField)) {\r\n field.dataField = field.name\r\n }\r\n field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null;\r\n return field\r\n })\r\n },\r\n getColumnIndexOffset: function() {\r\n return 0\r\n },\r\n _getFixedColumnsCore: function() {\r\n var that = this;\r\n var result = [];\r\n var rowCount = that.getRowCount();\r\n var isColumnFixing = that._isColumnFixing();\r\n var transparentColumn = {\r\n command: \"transparent\"\r\n };\r\n var transparentColspan = 0;\r\n var notFixedColumnCount;\r\n var transparentColumnIndex;\r\n var lastFixedPosition;\r\n if (isColumnFixing) {\r\n for (var i = 0; i <= rowCount; i++) {\r\n notFixedColumnCount = 0;\r\n lastFixedPosition = null;\r\n transparentColumnIndex = null;\r\n var visibleColumns = that.getVisibleColumns(i, true);\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var prevColumn = visibleColumns[j - 1];\r\n var column = visibleColumns[j];\r\n if (!column.fixed) {\r\n if (0 === i) {\r\n if (column.isBand && column.colspan) {\r\n transparentColspan += column.colspan\r\n } else {\r\n transparentColspan++\r\n }\r\n }\r\n notFixedColumnCount++;\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else {\r\n if (prevColumn && prevColumn.fixed && getFixedPosition(that, prevColumn) !== getFixedPosition(that, column)) {\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else {\r\n lastFixedPosition = column.fixedPosition\r\n }\r\n }\r\n }\r\n if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) {\r\n return []\r\n }\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = \"right\" === lastFixedPosition ? 0 : visibleColumns.length\r\n }\r\n result[i] = visibleColumns.slice(0);\r\n if (!transparentColumn.colspan) {\r\n transparentColumn.colspan = transparentColspan\r\n }\r\n result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn)\r\n }\r\n }\r\n return result.map(function(columns) {\r\n return columns.map(function(column) {\r\n var newColumn = _objectSpread({}, column);\r\n if (newColumn.headerId) {\r\n newColumn.headerId += \"-fixed\"\r\n }\r\n return newColumn\r\n })\r\n })\r\n },\r\n _isColumnFixing: function() {\r\n var isColumnFixing = this.option(\"columnFixing.enabled\");\r\n !isColumnFixing && (0, _iterator.each)(this._columns, function(_, column) {\r\n if (column.fixed) {\r\n isColumnFixing = true;\r\n return false\r\n }\r\n });\r\n return isColumnFixing\r\n },\r\n _getExpandColumnsCore: function() {\r\n return this.getGroupColumns()\r\n },\r\n getExpandColumns: function() {\r\n var expandColumns = this._getExpandColumnsCore();\r\n var expandColumn;\r\n var firstGroupColumn = expandColumns.filter(function(column) {\r\n return 0 === column.groupIndex\r\n })[0];\r\n var isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed;\r\n var isColumnFixing = this._isColumnFixing();\r\n if (expandColumns.length) {\r\n expandColumn = this.columnOption(\"command:expand\")\r\n }\r\n expandColumns = (0, _iterator.map)(expandColumns, function(column) {\r\n return (0, _extend.extend)({}, column, {\r\n visibleWidth: null,\r\n minWidth: null,\r\n cellTemplate: !(0, _type.isDefined)(column.groupIndex) ? column.cellTemplate : null,\r\n headerCellTemplate: null,\r\n fixed: !(0, _type.isDefined)(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true\r\n }, expandColumn, {\r\n index: column.index,\r\n type: column.type || GROUP_COMMAND_COLUMN_NAME\r\n })\r\n });\r\n return expandColumns\r\n },\r\n getBandColumnsCache: function() {\r\n if (!this._bandColumnsCache) {\r\n var columns = this._columns;\r\n var columnChildrenByIndex = {};\r\n var columnParentByIndex = {};\r\n var isPlain = true;\r\n columns.forEach(function(column) {\r\n var parentIndex = column.ownerBand;\r\n var parent = columns[parentIndex];\r\n if (column.hasColumns) {\r\n isPlain = false\r\n }\r\n if (column.colspan) {\r\n column.colspan = void 0\r\n }\r\n if (column.rowspan) {\r\n column.rowspan = void 0\r\n }\r\n if (parent) {\r\n columnParentByIndex[column.index] = parent\r\n } else {\r\n parentIndex = -1\r\n }\r\n columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || [];\r\n columnChildrenByIndex[parentIndex].push(column)\r\n });\r\n this._bandColumnsCache = {\r\n isPlain: isPlain,\r\n columnChildrenByIndex: columnChildrenByIndex,\r\n columnParentByIndex: columnParentByIndex\r\n }\r\n }\r\n return this._bandColumnsCache\r\n },\r\n _isColumnVisible: function(column) {\r\n return column.visible && this.isParentColumnVisible(column.index)\r\n },\r\n _getVisibleColumnsCore: function() {\r\n var that = this;\r\n var i;\r\n var result = [];\r\n var rowspanGroupColumns = 0;\r\n var rowspanExpandColumns = 0;\r\n var rowCount = that.getRowCount();\r\n var positiveIndexedColumns = [];\r\n var negativeIndexedColumns = [];\r\n var notGroupedColumnsCount = 0;\r\n var isFixedToEnd;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var expandColumns = mergeColumns(that, that.getExpandColumns(), that._columns);\r\n var columns = mergeColumns(that, that._columns, that._commandColumns, true);\r\n var columnDigitsCount = digitsCount(columns.length);\r\n processBandColumns(that, columns, bandColumnsCache);\r\n for (i = 0; i < rowCount; i++) {\r\n result[i] = [];\r\n negativeIndexedColumns[i] = [{}];\r\n positiveIndexedColumns[i] = [{}, {}, {}]\r\n }(0, _iterator.each)(columns, function() {\r\n var column = this;\r\n var visibleIndex = column.visibleIndex;\r\n var indexedColumns;\r\n var parentBandColumns = getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex);\r\n var visible = that._isColumnVisible(column);\r\n if (visible && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n var rowIndex = parentBandColumns.length;\r\n if (visibleIndex < 0) {\r\n visibleIndex = -visibleIndex;\r\n indexedColumns = negativeIndexedColumns[rowIndex]\r\n } else {\r\n column.fixed = parentBandColumns.length ? parentBandColumns[0].fixed : column.fixed;\r\n column.fixedPosition = parentBandColumns.length ? parentBandColumns[0].fixedPosition : column.fixedPosition;\r\n if (column.fixed) {\r\n isFixedToEnd = \"right\" === column.fixedPosition;\r\n if (rtlEnabled && (!column.command || isCustomCommandColumn(that, column))) {\r\n isFixedToEnd = !isFixedToEnd\r\n }\r\n if (isFixedToEnd) {\r\n indexedColumns = positiveIndexedColumns[rowIndex][2]\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][0]\r\n }\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][1]\r\n }\r\n }\r\n if (parentBandColumns.length) {\r\n visibleIndex = numberToString(visibleIndex, columnDigitsCount);\r\n for (i = parentBandColumns.length - 1; i >= 0; i--) {\r\n visibleIndex = numberToString(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex\r\n }\r\n }\r\n indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || [];\r\n indexedColumns[visibleIndex].push(column);\r\n notGroupedColumnsCount++\r\n }\r\n });\r\n (0, _iterator.each)(result, function(rowIndex) {\r\n (0, _object.orderEach)(negativeIndexedColumns[rowIndex], function(_, columns) {\r\n result[rowIndex].unshift.apply(result[rowIndex], columns)\r\n });\r\n var firstPositiveIndexColumn = result[rowIndex].length;\r\n (0, _iterator.each)(positiveIndexedColumns[rowIndex], function(index, columnsByFixing) {\r\n (0, _object.orderEach)(columnsByFixing, function(_, columnsByVisibleIndex) {\r\n result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex)\r\n })\r\n });\r\n if (rowspanExpandColumns < rowIndex + 1) {\r\n rowspanExpandColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, \"detailExpand\", firstPositiveIndexColumn)\r\n }\r\n if (rowspanGroupColumns < rowIndex + 1) {\r\n rowspanGroupColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)\r\n }\r\n });\r\n result.push(getDataColumns(result));\r\n if (!notGroupedColumnsCount && that._columns.length) {\r\n result[rowCount].push({\r\n command: \"empty\"\r\n })\r\n }\r\n return result\r\n },\r\n getInvisibleColumns: function(columns, bandColumnIndex) {\r\n var that = this;\r\n var result = [];\r\n var hiddenColumnsByBand;\r\n columns = columns || that._columns;\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (column.ownerBand !== bandColumnIndex) {\r\n return\r\n }\r\n if (column.isBand) {\r\n if (!column.visible) {\r\n hiddenColumnsByBand = that.getChildrenByBandColumn(column.index)\r\n } else {\r\n hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index)\r\n }\r\n if (hiddenColumnsByBand.length) {\r\n result.push(column);\r\n result = result.concat(hiddenColumnsByBand)\r\n }\r\n return\r\n }\r\n if (!column.visible) {\r\n result.push(column)\r\n }\r\n });\r\n return result\r\n },\r\n getChooserColumns: function(getAllColumns) {\r\n var columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns();\r\n return (0, _common.grep)(columns, function(column) {\r\n return column.showInColumnChooser\r\n })\r\n },\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var that = this;\r\n var columnIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n var sourceColumn = that._columns[columnIndex];\r\n if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) {\r\n if (sourceLocation === targetLocation) {\r\n if (sourceLocation === COLUMN_CHOOSER_LOCATION) {\r\n return false\r\n }\r\n fromVisibleIndex = (0, _type.isObject)(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex;\r\n toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex\r\n } else {\r\n if (sourceLocation === GROUP_LOCATION && targetLocation !== COLUMN_CHOOSER_LOCATION || targetLocation === GROUP_LOCATION) {\r\n return sourceColumn && sourceColumn.allowGrouping\r\n } else {\r\n if (sourceLocation === COLUMN_CHOOSER_LOCATION || targetLocation === COLUMN_CHOOSER_LOCATION) {\r\n return sourceColumn && sourceColumn.allowHiding\r\n }\r\n }\r\n }\r\n return true\r\n }\r\n return false\r\n },\r\n moveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var that = this;\r\n var options = {};\r\n var prevGroupIndex;\r\n var fromIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n var toIndex = getColumnIndexByVisibleIndex(that, toVisibleIndex, targetLocation);\r\n var targetGroupIndex;\r\n if (fromIndex >= 0) {\r\n var column = that._columns[fromIndex];\r\n toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n targetGroupIndex = toIndex >= 0 ? that._columns[toIndex].groupIndex : -1;\r\n if ((0, _type.isDefined)(column.groupIndex) && sourceLocation === GROUP_LOCATION) {\r\n if (targetGroupIndex > column.groupIndex) {\r\n targetGroupIndex--\r\n }\r\n if (targetLocation !== GROUP_LOCATION) {\r\n options.groupIndex = void 0\r\n } else {\r\n prevGroupIndex = column.groupIndex;\r\n delete column.groupIndex;\r\n updateColumnGroupIndexes(that)\r\n }\r\n }\r\n if (targetLocation === GROUP_LOCATION) {\r\n options.groupIndex = moveColumnToGroup(that, column, targetGroupIndex);\r\n column.groupIndex = prevGroupIndex\r\n } else {\r\n if (toVisibleIndex >= 0) {\r\n var targetColumn = that._columns[toIndex];\r\n if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else {\r\n if (isColumnFixed(that, column) ^ isColumnFixed(that, targetColumn)) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else {\r\n options.visibleIndex = targetColumn.visibleIndex\r\n }\r\n }\r\n }\r\n }\r\n var isVisible = targetLocation !== COLUMN_CHOOSER_LOCATION;\r\n if (column.visible !== isVisible) {\r\n options.visible = isVisible\r\n }\r\n that.columnOption(column.index, options)\r\n }\r\n },\r\n changeSortOrder: function(columnIndex, sortOrder) {\r\n var that = this;\r\n var options = {};\r\n var sortingOptions = that.option(\"sorting\");\r\n var sortingMode = sortingOptions && sortingOptions.mode;\r\n var needResetSorting = \"single\" === sortingMode || !sortOrder;\r\n var allowSorting = \"single\" === sortingMode || \"multiple\" === sortingMode;\r\n var column = that._columns[columnIndex];\r\n var nextSortOrder = function(column) {\r\n if (\"ctrl\" === sortOrder) {\r\n if (!(\"sortOrder\" in column && \"sortIndex\" in column)) {\r\n return false\r\n }\r\n options.sortOrder = void 0;\r\n options.sortIndex = void 0\r\n } else {\r\n if ((0, _type.isDefined)(column.groupIndex) || (0, _type.isDefined)(column.sortIndex)) {\r\n options.sortOrder = \"desc\" === column.sortOrder ? \"asc\" : \"desc\"\r\n } else {\r\n options.sortOrder = \"asc\"\r\n }\r\n }\r\n return true\r\n };\r\n if (allowSorting && column && column.allowSorting) {\r\n if (needResetSorting && !(0, _type.isDefined)(column.groupIndex)) {\r\n (0, _iterator.each)(that._columns, function(index) {\r\n if (index !== columnIndex && this.sortOrder) {\r\n if (!(0, _type.isDefined)(this.groupIndex)) {\r\n delete this.sortOrder\r\n }\r\n delete this.sortIndex\r\n }\r\n })\r\n }\r\n if (isSortOrderValid(sortOrder)) {\r\n if (column.sortOrder !== sortOrder) {\r\n options.sortOrder = sortOrder\r\n }\r\n } else {\r\n if (\"none\" === sortOrder) {\r\n if (column.sortOrder) {\r\n options.sortIndex = void 0;\r\n options.sortOrder = void 0\r\n }\r\n } else {\r\n nextSortOrder(column)\r\n }\r\n }\r\n }\r\n that.columnOption(column.index, options)\r\n },\r\n getSortDataSourceParameters: function(useLocalSelector) {\r\n var that = this;\r\n var sortColumns = [];\r\n var sort = [];\r\n (0, _iterator.each)(that._columns, function() {\r\n if ((this.dataField || this.selector || this.calculateCellValue) && (0, _type.isDefined)(this.sortIndex) && !(0, _type.isDefined)(this.groupIndex)) {\r\n sortColumns[this.sortIndex] = this\r\n }\r\n });\r\n (0, _iterator.each)(sortColumns, function() {\r\n var sortOrder = this && this.sortOrder;\r\n if (isSortOrderValid(sortOrder)) {\r\n var sortItem = {\r\n selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue,\r\n desc: \"desc\" === this.sortOrder\r\n };\r\n if (this.sortingMethod) {\r\n sortItem.compare = this.sortingMethod.bind(this)\r\n }\r\n sort.push(sortItem)\r\n }\r\n });\r\n return sort.length > 0 ? sort : null\r\n },\r\n getGroupDataSourceParameters: function(useLocalSelector) {\r\n var group = [];\r\n (0, _iterator.each)(this.getGroupColumns(), function() {\r\n var selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue;\r\n if (selector) {\r\n var groupItem = {\r\n selector: selector,\r\n desc: \"desc\" === this.sortOrder,\r\n isExpanded: !!this.autoExpandGroup\r\n };\r\n if (this.sortingMethod) {\r\n groupItem.compare = this.sortingMethod.bind(this)\r\n }\r\n group.push(groupItem)\r\n }\r\n });\r\n return group.length > 0 ? group : null\r\n },\r\n refresh: function(updateNewLookupsOnly) {\r\n var deferreds = [];\r\n (0, _iterator.each)(this._columns, function() {\r\n var lookup = this.lookup;\r\n if (lookup && !this.calculateDisplayValue) {\r\n if (updateNewLookupsOnly && lookup.valueMap) {\r\n return\r\n }\r\n if (lookup.update) {\r\n deferreds.push(lookup.update())\r\n }\r\n }\r\n });\r\n return _deferred.when.apply(_renderer.default, deferreds).done(resetColumnsCache.bind(null, this))\r\n },\r\n _updateColumnOptions: function(column, columnIndex) {\r\n column.selector = column.selector || function(data) {\r\n return column.calculateCellValue(data)\r\n };\r\n (0, _iterator.each)([\"calculateSortValue\", \"calculateGroupValue\", \"calculateDisplayValue\"], function(_, calculateCallbackName) {\r\n var calculateCallback = column[calculateCallbackName];\r\n if ((0, _type.isFunction)(calculateCallback) && !calculateCallback.originalCallback) {\r\n column[calculateCallbackName] = function(data) {\r\n return calculateCallback.call(column, data)\r\n };\r\n column[calculateCallbackName].originalCallback = calculateCallback;\r\n column[calculateCallbackName].columnIndex = columnIndex\r\n }\r\n });\r\n if ((0, _type.isString)(column.calculateDisplayValue)) {\r\n column.displayField = column.calculateDisplayValue;\r\n column.calculateDisplayValue = (0, _data.compileGetter)(column.displayField)\r\n }\r\n if (column.calculateDisplayValue) {\r\n column.displayValueMap = column.displayValueMap || {}\r\n }\r\n updateSerializers(column, column.dataType);\r\n var lookup = column.lookup;\r\n if (lookup) {\r\n updateSerializers(lookup, lookup.dataType)\r\n }\r\n var dataType = lookup ? lookup.dataType : column.dataType;\r\n if (dataType) {\r\n column.alignment = column.alignment || getAlignmentByDataType(dataType, this.option(\"rtlEnabled\"));\r\n column.format = column.format || _uiGrid_core2.default.getFormatByDataType(dataType);\r\n column.customizeText = column.customizeText || getCustomizeTextByDataType(dataType);\r\n column.defaultFilterOperations = column.defaultFilterOperations || !lookup && DATATYPE_OPERATIONS[dataType] || [];\r\n if (!(0, _type.isDefined)(column.filterOperations)) {\r\n setFilterOperationsAsDefaultValues(column)\r\n }\r\n column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || \"=\";\r\n column.showEditorAlways = (0, _type.isDefined)(column.showEditorAlways) ? column.showEditorAlways : \"boolean\" === dataType && !column.cellTemplate\r\n }\r\n },\r\n updateColumnDataTypes: function(dataSource) {\r\n var that = this;\r\n var dateSerializationFormat = that.option(\"dateSerializationFormat\");\r\n var firstItems = that._getFirstItems(dataSource);\r\n var isColumnDataTypesUpdated = false;\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n var i;\r\n var value;\r\n var dataType;\r\n var lookupDataType;\r\n var valueDataType;\r\n var lookup = column.lookup;\r\n if (_uiGrid_core2.default.isDateType(column.dataType) && void 0 === column.serializationFormat) {\r\n column.serializationFormat = dateSerializationFormat\r\n }\r\n if (lookup && _uiGrid_core2.default.isDateType(lookup.dataType) && void 0 === column.serializationFormat) {\r\n lookup.serializationFormat = dateSerializationFormat\r\n }\r\n if (column.calculateCellValue && firstItems.length) {\r\n if (!column.dataType || lookup && !lookup.dataType) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i]);\r\n if (!column.dataType) {\r\n valueDataType = getValueDataType(value);\r\n dataType = dataType || valueDataType;\r\n if (dataType && valueDataType && dataType !== valueDataType) {\r\n dataType = \"string\"\r\n }\r\n }\r\n if (lookup && !lookup.dataType) {\r\n valueDataType = getValueDataType(_uiGrid_core2.default.getDisplayValue(column, value, firstItems[i]));\r\n lookupDataType = lookupDataType || valueDataType;\r\n if (lookupDataType && valueDataType && lookupDataType !== valueDataType) {\r\n lookupDataType = \"string\"\r\n }\r\n }\r\n }\r\n if (dataType || lookupDataType) {\r\n if (dataType) {\r\n column.dataType = dataType\r\n }\r\n if (lookup && lookupDataType) {\r\n lookup.dataType = lookupDataType\r\n }\r\n isColumnDataTypesUpdated = true\r\n }\r\n }\r\n if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i], true);\r\n if (void 0 === column.serializationFormat) {\r\n column.serializationFormat = getSerializationFormat(column.dataType, value)\r\n }\r\n if (lookup && void 0 === lookup.serializationFormat) {\r\n lookup.serializationFormat = getSerializationFormat(lookup.dataType, lookup.calculateCellValue(value, true))\r\n }\r\n }\r\n }\r\n }\r\n that._updateColumnOptions(column, index)\r\n });\r\n return isColumnDataTypesUpdated\r\n },\r\n _customizeColumns: function(columns) {\r\n var that = this;\r\n var customizeColumns = that.option(\"customizeColumns\");\r\n if (customizeColumns) {\r\n var hasOwnerBand = columns.some(function(column) {\r\n return (0, _type.isObject)(column.ownerBand)\r\n });\r\n if (hasOwnerBand) {\r\n updateIndexes(that)\r\n }\r\n customizeColumns(columns);\r\n assignColumns(that, createColumnsFromOptions(that, columns))\r\n }\r\n },\r\n updateColumns: function(dataSource, forceApplying) {\r\n var _this = this;\r\n if (!forceApplying) {\r\n this.updateSortingGrouping(dataSource)\r\n }\r\n if (!dataSource || dataSource.isLoaded()) {\r\n var sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters();\r\n var groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters();\r\n var filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter;\r\n this._customizeColumns(this._columns);\r\n updateIndexes(this);\r\n var columns = this._columns;\r\n return (0, _deferred.when)(this.refresh(true)).always(function() {\r\n if (_this._columns !== columns) {\r\n return\r\n }\r\n _this._updateChanges(dataSource, {\r\n sorting: sortParameters,\r\n grouping: groupParameters,\r\n filtering: filterParameters\r\n });\r\n fireColumnsChanged(_this)\r\n })\r\n }\r\n },\r\n _updateChanges: function(dataSource, parameters) {\r\n if (dataSource) {\r\n this.updateColumnDataTypes(dataSource);\r\n this._dataSourceApplied = true\r\n }\r\n if (!_uiGrid_core2.default.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) {\r\n updateColumnChanges(this, \"sorting\")\r\n }\r\n if (!_uiGrid_core2.default.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) {\r\n updateColumnChanges(this, \"grouping\")\r\n }\r\n var dataController = this.getController(\"data\");\r\n if (dataController && !_uiGrid_core2.default.equalFilterParameters(parameters.filtering, dataController.getCombinedFilter())) {\r\n updateColumnChanges(this, \"filtering\")\r\n }\r\n updateColumnChanges(this, \"columns\")\r\n },\r\n updateSortingGrouping: function(dataSource, fromDataSource) {\r\n var that = this;\r\n var sortParameters;\r\n var isColumnsChanged;\r\n var updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) {\r\n (0, _iterator.each)(columns, function(index, column) {\r\n delete column[indexParameterName];\r\n if (sortParameters) {\r\n for (var i = 0; i < sortParameters.length; i++) {\r\n var selector = sortParameters[i].selector;\r\n var isExpanded = sortParameters[i].isExpanded;\r\n if (selector === column.dataField || selector === column.name || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) {\r\n column.sortOrder = column.sortOrder || (sortParameters[i].desc ? \"desc\" : \"asc\");\r\n if (void 0 !== isExpanded) {\r\n column.autoExpandGroup = isExpanded\r\n }\r\n column[indexParameterName] = i;\r\n break\r\n }\r\n }\r\n }\r\n })\r\n };\r\n if (dataSource) {\r\n sortParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.sort());\r\n var groupParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group());\r\n var columnsGroupParameters = that.getGroupDataSourceParameters();\r\n var columnsSortParameters = that.getSortDataSourceParameters();\r\n if (!that._columns.length) {\r\n (0, _iterator.each)(groupParameters, function(index, group) {\r\n that._columns.push(group.selector)\r\n });\r\n (0, _iterator.each)(sortParameters, function(index, sort) {\r\n that._columns.push(sort.selector)\r\n });\r\n assignColumns(that, createColumnsFromOptions(that, that._columns))\r\n }\r\n if ((fromDataSource || !columnsGroupParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(groupParameters, columnsGroupParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, groupParameters, \"groupIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"grouping\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if ((fromDataSource || !columnsSortParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(sortParameters, columnsSortParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, sortParameters, \"sortIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"sorting\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if (isColumnsChanged) {\r\n fireColumnsChanged(that)\r\n }\r\n }\r\n },\r\n updateFilter: function(filter, remoteFiltering, columnIndex, filterValue) {\r\n var that = this;\r\n if (!Array.isArray(filter)) {\r\n return filter\r\n }\r\n filter = (0, _extend.extend)([], filter);\r\n columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex;\r\n filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue;\r\n if ((0, _type.isString)(filter[0]) && \"!\" !== filter[0]) {\r\n var column = that.columnOption(filter[0]);\r\n if (remoteFiltering) {\r\n if ((0, _config.default)().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) {\r\n filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], \"filter\")\r\n }\r\n } else {\r\n if (column && column.selector) {\r\n filter[0] = column.selector;\r\n filter[0].columnIndex = column.index\r\n }\r\n }\r\n } else {\r\n if ((0, _type.isFunction)(filter[0])) {\r\n filter[0].columnIndex = columnIndex;\r\n filter[0].filterValue = filterValue\r\n }\r\n }\r\n for (var i = 0; i < filter.length; i++) {\r\n filter[i] = that.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue)\r\n }\r\n return filter\r\n },\r\n columnCount: function() {\r\n return this._columns ? this._columns.length : 0\r\n },\r\n columnOption: function(identifier, option, value, notFireEvent) {\r\n var that = this;\r\n var columns = that._columns.concat(that._commandColumns);\r\n var column = findColumn(columns, identifier);\r\n if (column) {\r\n if (1 === arguments.length) {\r\n return (0, _extend.extend)({}, column)\r\n }\r\n if ((0, _type.isString)(option)) {\r\n if (2 === arguments.length) {\r\n return columnOptionCore(that, column, option)\r\n } else {\r\n columnOptionCore(that, column, option, value, notFireEvent)\r\n }\r\n } else {\r\n if ((0, _type.isObject)(option)) {\r\n (0, _iterator.each)(option, function(optionName, value) {\r\n columnOptionCore(that, column, optionName, value, notFireEvent)\r\n })\r\n }\r\n }\r\n fireColumnsChanged(that)\r\n }\r\n },\r\n clearSorting: function() {\r\n var that = this;\r\n var columnCount = this.columnCount();\r\n that.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n that.columnOption(i, \"sortOrder\", void 0)\r\n }\r\n that.endUpdate()\r\n },\r\n clearGrouping: function() {\r\n var that = this;\r\n var columnCount = this.columnCount();\r\n that.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n that.columnOption(i, \"groupIndex\", void 0)\r\n }\r\n that.endUpdate()\r\n },\r\n getVisibleIndex: function(index, rowIndex) {\r\n var columns = this.getVisibleColumns(rowIndex);\r\n for (var i = columns.length - 1; i >= 0; i--) {\r\n if (columns[i].index === index) {\r\n return i\r\n }\r\n }\r\n return -1\r\n },\r\n getVisibleIndexByColumn: function(column, rowIndex) {\r\n var visibleColumns = this.getVisibleColumns(rowIndex);\r\n var visibleColumn = visibleColumns.filter(function(col) {\r\n return col.index === column.index && col.command === column.command\r\n })[0];\r\n return visibleColumns.indexOf(visibleColumn)\r\n },\r\n getVisibleColumnIndex: function(id, rowIndex) {\r\n var index = this.columnOption(id, \"index\");\r\n return this.getVisibleIndex(index, rowIndex)\r\n },\r\n addColumn: function(options) {\r\n var that = this;\r\n var column = createColumn(that, options);\r\n var index = that._columns.length;\r\n that._columns.push(column);\r\n if (column.isBand) {\r\n that._columns = createColumnsFromOptions(that, that._columns);\r\n column = that._columns[index]\r\n }\r\n column.added = options;\r\n updateIndexes(that, column);\r\n that.updateColumns(that._dataSource);\r\n that._checkColumns()\r\n },\r\n deleteColumn: function(id) {\r\n var that = this;\r\n var column = that.columnOption(id);\r\n if (column && column.index >= 0) {\r\n convertOwnerBandToColumnReference(that._columns);\r\n that._columns.splice(column.index, 1);\r\n if (column.isBand) {\r\n var childIndexes = that.getChildrenByBandColumn(column.index).map(function(column) {\r\n return column.index\r\n });\r\n that._columns = that._columns.filter(function(column) {\r\n return childIndexes.indexOf(column.index) < 0\r\n })\r\n }\r\n updateIndexes(that);\r\n that.updateColumns(that._dataSource)\r\n }\r\n },\r\n addCommandColumn: function(options) {\r\n var commandColumn = this._commandColumns.filter(function(column) {\r\n return column.command === options.command\r\n })[0];\r\n if (!commandColumn) {\r\n commandColumn = options;\r\n this._commandColumns.push(commandColumn)\r\n }\r\n },\r\n getUserState: function() {\r\n var columns = this._columns;\r\n var result = [];\r\n var i;\r\n\r\n function handleStateField(index, value) {\r\n if (void 0 !== columns[i][value]) {\r\n result[i][value] = columns[i][value]\r\n }\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n result[i] = {};\r\n (0, _iterator.each)(USER_STATE_FIELD_NAMES, handleStateField)\r\n }\r\n return result\r\n },\r\n setName: function(column) {\r\n var dataField = column.dataField;\r\n if (!(0, _type.isDefined)(column.name) && (0, _type.isDefined)(dataField)) {\r\n column.name = dataField\r\n }\r\n },\r\n setUserState: function(state) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var ignoreColumnOptionNames = that.option(\"stateStoring.ignoreColumnOptionNames\");\r\n null === state || void 0 === state ? void 0 : state.forEach(this.setName);\r\n if (!ignoreColumnOptionNames) {\r\n ignoreColumnOptionNames = [];\r\n var commonColumnSettings = that.getCommonSettings();\r\n if (!that.option(\"columnChooser.enabled\")) {\r\n ignoreColumnOptionNames.push(\"visible\")\r\n }\r\n if (\"none\" === that.option(\"sorting.mode\")) {\r\n ignoreColumnOptionNames.push(\"sortIndex\", \"sortOrder\")\r\n }\r\n if (!commonColumnSettings.allowGrouping) {\r\n ignoreColumnOptionNames.push(\"groupIndex\")\r\n }\r\n if (!commonColumnSettings.allowFixing) {\r\n ignoreColumnOptionNames.push(\"fixed\", \"fixedPosition\")\r\n }\r\n if (!commonColumnSettings.allowResizing) {\r\n ignoreColumnOptionNames.push(\"width\", \"visibleWidth\")\r\n }\r\n var isFilterPanelHidden = !that.option(\"filterPanel.visible\");\r\n if (!that.option(\"filterRow.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValue\", \"selectedFilterOperation\")\r\n }\r\n if (!that.option(\"headerFilter.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValues\", \"filterType\")\r\n }\r\n }\r\n that._columnsUserState = state;\r\n that._ignoreColumnOptionNames = ignoreColumnOptionNames;\r\n that._hasUserState = !!state;\r\n updateColumnChanges(that, \"filtering\");\r\n that.init();\r\n if (dataSource) {\r\n dataSource.sort(that.getSortDataSourceParameters());\r\n dataSource.group(that.getGroupDataSourceParameters())\r\n }\r\n },\r\n _checkColumns: function() {\r\n var usedNames = {};\r\n var hasEditableColumnWithoutName = false;\r\n var duplicatedNames = [];\r\n this._columns.forEach(function(column) {\r\n var _column$columns;\r\n var name = column.name;\r\n var isBand = null === (_column$columns = column.columns) || void 0 === _column$columns ? void 0 : _column$columns.length;\r\n var isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand;\r\n if (name) {\r\n if (usedNames[name]) {\r\n duplicatedNames.push('\"'.concat(name, '\"'))\r\n }\r\n usedNames[name] = true\r\n } else {\r\n if (isEditable) {\r\n hasEditableColumnWithoutName = true\r\n }\r\n }\r\n });\r\n if (duplicatedNames.length) {\r\n _ui.default.log(\"E1059\", duplicatedNames.join(\", \"))\r\n }\r\n if (hasEditableColumnWithoutName) {\r\n _ui.default.log(\"E1060\")\r\n }\r\n },\r\n _createCalculatedColumnOptions: function(columnOptions, bandColumn) {\r\n var calculatedColumnOptions = {};\r\n var dataField = columnOptions.dataField;\r\n if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) {\r\n calculatedColumnOptions.isBand = true;\r\n dataField = null\r\n }\r\n if (dataField) {\r\n if ((0, _type.isString)(dataField)) {\r\n var getter = (0, _data.compileGetter)(dataField);\r\n calculatedColumnOptions = {\r\n caption: (0, _inflector.captionize)(dataField),\r\n calculateCellValue: function(data, skipDeserialization) {\r\n var value = getter(data);\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n setCellValue: defaultSetCellValue,\r\n parseValue: function(text) {\r\n var column = this;\r\n var result;\r\n var parsedValue;\r\n if (\"number\" === column.dataType) {\r\n if ((0, _type.isString)(text) && column.format) {\r\n parsedValue = _number.default.parse(text);\r\n if ((0, _type.isNumeric)(parsedValue)) {\r\n result = parsedValue\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(text) && (0, _type.isNumeric)(text)) {\r\n result = Number(text)\r\n }\r\n }\r\n } else {\r\n if (\"boolean\" === column.dataType) {\r\n if (text === column.trueText) {\r\n result = true\r\n } else {\r\n if (text === column.falseText) {\r\n result = false\r\n }\r\n }\r\n } else {\r\n if (_uiGrid_core2.default.isDateType(column.dataType)) {\r\n parsedValue = _date.default.parse(text, column.format);\r\n if (parsedValue) {\r\n result = parsedValue\r\n }\r\n } else {\r\n result = text\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.allowFiltering = true\r\n } else {\r\n calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression\r\n }\r\n calculatedColumnOptions.calculateFilterExpression = function() {\r\n return _filtering.default.defaultCalculateFilterExpression.apply(this, arguments)\r\n };\r\n calculatedColumnOptions.createFilterExpression = function(filterValue) {\r\n var result;\r\n if (this.calculateFilterExpression) {\r\n result = this.calculateFilterExpression.apply(this, arguments)\r\n }\r\n if ((0, _type.isFunction)(result)) {\r\n result = [result, \"=\", true]\r\n }\r\n if (result) {\r\n result.columnIndex = this.index;\r\n result.filterValue = filterValue\r\n }\r\n return result\r\n };\r\n if (!dataField || !(0, _type.isString)(dataField)) {\r\n (0, _extend.extend)(true, calculatedColumnOptions, {\r\n allowSorting: false,\r\n allowGrouping: false,\r\n calculateCellValue: function() {\r\n return null\r\n }\r\n })\r\n }\r\n if (bandColumn) {\r\n calculatedColumnOptions.allowFixing = false\r\n }\r\n if (columnOptions.dataType) {\r\n calculatedColumnOptions.userDataType = columnOptions.dataType\r\n }\r\n if (columnOptions.selectedFilterOperation && !(\"defaultSelectedFilterOperation\" in calculatedColumnOptions)) {\r\n calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation\r\n }\r\n if (columnOptions.lookup) {\r\n calculatedColumnOptions.lookup = {\r\n calculateCellValue: function(value, skipDeserialization) {\r\n if (this.valueExpr) {\r\n value = this.valueMap && this.valueMap[value]\r\n }\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n updateValueMap: function() {\r\n this.valueMap = {};\r\n if (this.items) {\r\n var calculateValue = (0, _data.compileGetter)(this.valueExpr);\r\n var calculateDisplayValue = (0, _data.compileGetter)(this.displayExpr);\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n var displayValue = calculateDisplayValue(item);\r\n this.valueMap[calculateValue(item)] = displayValue;\r\n this.dataType = this.dataType || getValueDataType(displayValue);\r\n }\r\n }\r\n },\r\n update: function() {\r\n var that = this;\r\n var dataSource = that.dataSource;\r\n if (dataSource) {\r\n if ((0, _type.isFunction)(dataSource) && !_variable_wrapper.default.isWrapped(dataSource)) {\r\n dataSource = dataSource({})\r\n }\r\n if ((0, _type.isPlainObject)(dataSource) || dataSource instanceof _abstract_store.default || Array.isArray(dataSource)) {\r\n if (that.valueExpr) {\r\n var dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSource);\r\n dataSourceOptions.paginate = false;\r\n dataSource = new _data_source.DataSource(dataSourceOptions);\r\n return dataSource.load().done(function(data) {\r\n that.items = data;\r\n that.updateValueMap && that.updateValueMap()\r\n })\r\n }\r\n } else {\r\n _ui.default.log(\"E1016\")\r\n }\r\n } else {\r\n that.updateValueMap && that.updateValueMap()\r\n }\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.resizedCallbacks = (0, _callbacks.default)();\r\n if (columnOptions.resized) {\r\n calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions))\r\n }(0, _iterator.each)(calculatedColumnOptions, function(optionName) {\r\n if ((0, _type.isFunction)(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf(\"default\")) {\r\n var defaultOptionName = \"default\" + optionName.charAt(0).toUpperCase() + optionName.substr(1);\r\n calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName]\r\n }\r\n });\r\n return calculatedColumnOptions\r\n },\r\n getRowCount: function() {\r\n this._rowCount = this._rowCount || _getRowCount(this);\r\n return this._rowCount\r\n },\r\n getRowIndex: function(columnIndex, alwaysGetRowIndex) {\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n return column && (alwaysGetRowIndex || column.visible && !(column.command || (0, _type.isDefined)(column.groupIndex))) ? getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex).length : 0\r\n },\r\n getChildrenByBandColumn: function(bandColumnIndex, onlyVisibleDirectChildren) {\r\n var that = this;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var result = _getChildrenByBandColumn(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren);\r\n if (onlyVisibleDirectChildren) {\r\n return result.filter(function(column) {\r\n return column.visible && !column.command\r\n }).sort(function(column1, column2) {\r\n return column1.visibleIndex - column2.visibleIndex\r\n })\r\n }\r\n return result\r\n },\r\n isParentBandColumn: function(columnIndex, bandColumnIndex) {\r\n var result = false;\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var parentBandColumns = column && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns) {\r\n (0, _iterator.each)(parentBandColumns, function(_, bandColumn) {\r\n if (bandColumn.index === bandColumnIndex) {\r\n result = true;\r\n return false\r\n }\r\n })\r\n }\r\n return result\r\n },\r\n isParentColumnVisible: function(columnIndex) {\r\n var result = true;\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var bandColumns = columnIndex >= 0 && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n bandColumns && (0, _iterator.each)(bandColumns, function(_, bandColumn) {\r\n result = result && bandColumn.visible;\r\n return result\r\n });\r\n return result\r\n },\r\n getColumnId: function(column) {\r\n if (column.command && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (isCustomCommandColumn(this, column)) {\r\n return \"type:\" + column.type\r\n }\r\n return \"command:\" + column.command\r\n }\r\n return column.index\r\n },\r\n getCustomizeTextByDataType: getCustomizeTextByDataType,\r\n getHeaderContentAlignment: function(columnAlignment) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled) {\r\n return \"left\" === columnAlignment ? \"right\" : \"left\"\r\n }\r\n return columnAlignment\r\n }\r\n }\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.data_source_adapter.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"../data_grid/ui.data_grid.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiData_grid.default.Controller.inherit(function() {\r\n function cloneItems(items, groupCount) {\r\n if (items) {\r\n items = items.slice(0);\r\n if (groupCount) {\r\n for (var i = 0; i < items.length; i++) {\r\n items[i] = (0, _extend.extend)({\r\n key: items[i].key\r\n }, items[i]);\r\n items[i].items = cloneItems(items[i].items, groupCount - 1)\r\n }\r\n }\r\n }\r\n return items\r\n }\r\n\r\n function calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload) {\r\n var operationTypes = {\r\n reload: true,\r\n fullReload: true\r\n };\r\n if (lastLoadOptions) {\r\n operationTypes = {\r\n sorting: !_uiData_grid.default.equalSortParameters(loadOptions.sort, lastLoadOptions.sort),\r\n grouping: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group, true),\r\n groupExpanding: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group) || lastLoadOptions.groupExpand,\r\n filtering: !_uiData_grid.default.equalFilterParameters(loadOptions.filter, lastLoadOptions.filter),\r\n pageIndex: loadOptions.pageIndex !== lastLoadOptions.pageIndex,\r\n skip: loadOptions.skip !== lastLoadOptions.skip,\r\n take: loadOptions.take !== lastLoadOptions.take,\r\n fullReload: isFullReload\r\n };\r\n operationTypes.reload = isFullReload || operationTypes.sorting || operationTypes.grouping || operationTypes.filtering;\r\n operationTypes.paging = operationTypes.pageIndex || operationTypes.take\r\n }\r\n return operationTypes\r\n }\r\n\r\n function executeTask(action, timeout) {\r\n if ((0, _type.isDefined)(timeout)) {\r\n (0, _common.executeAsync)(action, timeout)\r\n } else {\r\n action()\r\n }\r\n }\r\n\r\n function createEmptyPagesData() {\r\n return {\r\n pages: {}\r\n }\r\n }\r\n\r\n function getPageDataFromCache(options) {\r\n return options.cachedPagesData.pages[options.pageIndex]\r\n }\r\n\r\n function setPageDataToCache(options, data) {\r\n var pageIndex = options.pageIndex;\r\n if (void 0 !== pageIndex) {\r\n options.cachedPagesData.pages[pageIndex] = data\r\n }\r\n }\r\n return {\r\n init: function(dataSource, remoteOperations) {\r\n var that = this;\r\n that._dataSource = dataSource;\r\n that._remoteOperations = remoteOperations || {};\r\n that._isLastPage = !dataSource.isLastPage();\r\n that._hasLastPage = false;\r\n that._currentTotalCount = 0;\r\n that._cachedPagesData = createEmptyPagesData();\r\n that._lastOperationTypes = {};\r\n that._eventsStrategy = dataSource._eventsStrategy;\r\n that._skipCorrection = 0;\r\n that._isLoadingAll = false;\r\n that.changed = (0, _callbacks.default)();\r\n that.loadingChanged = (0, _callbacks.default)();\r\n that.loadError = (0, _callbacks.default)();\r\n that.customizeStoreLoadOptions = (0, _callbacks.default)();\r\n that.changing = (0, _callbacks.default)();\r\n that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n that._dataLoadingHandler = that._handleDataLoading.bind(that);\r\n that._dataLoadedHandler = that._handleDataLoaded.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._pushHandler = that._handlePush.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n dataSource.on(\"changed\", that._dataChangedHandler);\r\n dataSource.on(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n dataSource.on(\"customizeLoadResult\", that._dataLoadedHandler);\r\n dataSource.on(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.on(\"loadError\", that._loadErrorHandler);\r\n dataSource.on(\"changing\", that._changingHandler);\r\n dataSource.store().on(\"push\", that._pushHandler);\r\n (0, _iterator.each)(dataSource, function(memberName, member) {\r\n if (!that[memberName] && (0, _type.isFunction)(member)) {\r\n that[memberName] = function() {\r\n return this._dataSource[memberName].apply(this._dataSource, arguments)\r\n }\r\n }\r\n })\r\n },\r\n remoteOperations: function() {\r\n return this._remoteOperations\r\n },\r\n dispose: function(isSharedDataSource) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var store = dataSource.store();\r\n dataSource.off(\"changed\", that._dataChangedHandler);\r\n dataSource.off(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n dataSource.off(\"customizeLoadResult\", that._dataLoadedHandler);\r\n dataSource.off(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.off(\"loadError\", that._loadErrorHandler);\r\n dataSource.off(\"changing\", that._changingHandler);\r\n store && store.off(\"push\", that._pushHandler);\r\n if (!isSharedDataSource) {\r\n dataSource.dispose()\r\n }\r\n },\r\n refresh: function(options, operationTypes) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n if (operationTypes.reload) {\r\n that.resetCurrentTotalCount();\r\n that._isLastPage = !dataSource.paginate();\r\n that._hasLastPage = that._isLastPage\r\n }\r\n },\r\n resetCurrentTotalCount: function() {\r\n this._currentTotalCount = 0;\r\n this._skipCorrection = 0\r\n },\r\n resetCache: function() {\r\n this._cachedStoreData = void 0;\r\n this._cachedPagingData = void 0\r\n },\r\n resetPagesCache: function() {\r\n this._cachedPagesData = createEmptyPagesData()\r\n },\r\n _needClearStoreDataCache: function() {\r\n var remoteOperations = this.remoteOperations();\r\n var operationTypes = calculateOperationTypes(this._lastLoadOptions || {}, {});\r\n var isLocalOperations = Object.keys(remoteOperations).every(function(operationName) {\r\n return !operationTypes[operationName] || !remoteOperations[operationName]\r\n });\r\n return !isLocalOperations\r\n },\r\n push: function(changes, fromStore) {\r\n var store = this.store();\r\n if (this._needClearStoreDataCache()) {\r\n this._cachedStoreData = void 0\r\n }\r\n this._cachedPagingData = void 0;\r\n this.resetPagesCache(true);\r\n if (this._cachedStoreData) {\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: store,\r\n data: this._cachedStoreData,\r\n changes: changes\r\n })\r\n }\r\n if (!fromStore) {\r\n this._applyBatch(changes)\r\n }\r\n },\r\n getDataIndexGetter: function() {\r\n var _this = this;\r\n if (!this._dataIndexGetter) {\r\n var indexByKey;\r\n var storeData;\r\n var store = this.store();\r\n this._dataIndexGetter = function(data) {\r\n var isCacheUpdated = storeData && storeData !== _this._cachedStoreData;\r\n if (!indexByKey || isCacheUpdated) {\r\n storeData = _this._cachedStoreData || [];\r\n indexByKey = {};\r\n for (var i = 0; i < storeData.length; i++) {\r\n indexByKey[(0, _common.getKeyHash)(store.keyOf(storeData[i]))] = i\r\n }\r\n }\r\n return indexByKey[(0, _common.getKeyHash)(store.keyOf(data))]\r\n }\r\n }\r\n return this._dataIndexGetter\r\n },\r\n _getKeyInfo: function() {\r\n return this.store()\r\n },\r\n _applyBatch: function(changes) {\r\n var _this2 = this;\r\n var keyInfo = this._getKeyInfo();\r\n var dataSource = this._dataSource;\r\n var groupCount = _uiData_grid.default.normalizeSortingInfo(this.group()).length;\r\n var totalCount = this.totalCount();\r\n var isVirtualMode = \"virtual\" === this.option(\"scrolling.mode\");\r\n changes = changes.filter(function(change) {\r\n return !dataSource.paginate() || \"insert\" !== change.type || void 0 !== change.index\r\n });\r\n var getItemCount = function() {\r\n return groupCount ? _this2.itemsCount() : _this2._items.length\r\n };\r\n var oldItemCount = getItemCount();\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: keyInfo,\r\n data: this._items,\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: keyInfo,\r\n data: dataSource.items(),\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n if (this._currentTotalCount > 0 || isVirtualMode && totalCount === oldItemCount) {\r\n this._skipCorrection += getItemCount() - oldItemCount\r\n }\r\n changes.splice(0, changes.length)\r\n },\r\n _handlePush: function(changes) {\r\n this.push(changes, true)\r\n },\r\n _handleChanging: function(e) {\r\n this.changing.fire(e);\r\n this._applyBatch(e.changes)\r\n },\r\n _needCleanCacheByOperation: function(operationType, remoteOperations) {\r\n var operationTypesByOrder = [\"filtering\", \"sorting\", \"paging\"];\r\n var operationTypeIndex = operationTypesByOrder.indexOf(operationType);\r\n var currentOperationTypes = operationTypeIndex >= 0 ? operationTypesByOrder.slice(operationTypeIndex) : [operationType];\r\n return currentOperationTypes.some(function(operationType) {\r\n return remoteOperations[operationType]\r\n })\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n var that = this;\r\n var cachedStoreData = that._cachedStoreData;\r\n var cachedPagingData = that._cachedPagingData;\r\n var cachedPagesData = that._cachedPagesData;\r\n if (options.storeLoadOptions.filter && !options.remoteOperations.filtering || options.storeLoadOptions.sort && !options.remoteOperations.sorting) {\r\n options.remoteOperations = {\r\n filtering: options.remoteOperations.filtering\r\n }\r\n }\r\n if (operationTypes.fullReload) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0;\r\n cachedPagesData = createEmptyPagesData()\r\n } else {\r\n if (operationTypes.reload) {\r\n cachedPagingData = void 0;\r\n cachedPagesData = createEmptyPagesData()\r\n } else {\r\n if (operationTypes.take || operationTypes.groupExpanding) {\r\n cachedPagesData = createEmptyPagesData()\r\n }\r\n }(0, _iterator.each)(operationTypes, function(operationType, value) {\r\n if (value && that._needCleanCacheByOperation(operationType, options.remoteOperations)) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0\r\n }\r\n })\r\n }\r\n if (cachedPagingData) {\r\n options.remoteOperations.paging = false\r\n }\r\n options.cachedStoreData = cachedStoreData;\r\n options.cachedPagingData = cachedPagingData;\r\n options.cachedPagesData = cachedPagesData;\r\n if (!options.isCustomLoading) {\r\n that._cachedStoreData = cachedStoreData;\r\n that._cachedPagingData = cachedPagingData;\r\n that._cachedPagesData = cachedPagesData\r\n }\r\n },\r\n _handleDataLoading: function(options) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var lastLoadOptions = that._lastLoadOptions;\r\n that.customizeStoreLoadOptions.fire(options);\r\n options.delay = this.option(\"loadingTimeout\");\r\n options.originalStoreLoadOptions = options.storeLoadOptions;\r\n options.remoteOperations = (0, _extend.extend)({}, this.remoteOperations());\r\n var isFullReload = !that.isLoaded() && !that._isRefreshing;\r\n if (that.option(\"integrationOptions.renderedOnServer\") && !that.isLoaded()) {\r\n options.delay = void 0\r\n }\r\n var loadOptions = (0, _extend.extend)({\r\n pageIndex: that.pageIndex()\r\n }, options.storeLoadOptions);\r\n var operationTypes = calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload);\r\n that._customizeRemoteOperations(options, operationTypes);\r\n if (!options.isCustomLoading) {\r\n var isRefreshing = that._isRefreshing;\r\n options.pageIndex = dataSource.pageIndex();\r\n options.lastLoadOptions = loadOptions;\r\n options.operationTypes = operationTypes;\r\n that._loadingOperationTypes = operationTypes;\r\n that._isRefreshing = true;\r\n (0, _deferred.when)(isRefreshing || that._isRefreshed || that.refresh(options, operationTypes)).done(function() {\r\n if (that._lastOperationId === options.operationId) {\r\n that._isRefreshed = true;\r\n that.load().always(function() {\r\n that._isRefreshed = false\r\n })\r\n }\r\n }).fail(function() {\r\n dataSource.cancel(options.operationId)\r\n }).always(function() {\r\n that._isRefreshing = false\r\n });\r\n dataSource.cancel(that._lastOperationId);\r\n that._lastOperationId = options.operationId;\r\n if (that._isRefreshing) {\r\n dataSource.cancel(that._lastOperationId)\r\n }\r\n }\r\n this._handleDataLoadingCore(options)\r\n },\r\n _handleDataLoadingCore: function(options) {\r\n var remoteOperations = options.remoteOperations;\r\n options.loadOptions = {};\r\n var cachedExtra = options.cachedPagesData.extra;\r\n var localLoadOptionNames = {\r\n filter: !remoteOperations.filtering,\r\n sort: !remoteOperations.sorting,\r\n group: !remoteOperations.grouping,\r\n summary: !remoteOperations.summary,\r\n skip: !remoteOperations.paging,\r\n take: !remoteOperations.paging,\r\n requireTotalCount: cachedExtra && \"totalCount\" in cachedExtra || !remoteOperations.paging\r\n };\r\n (0, _iterator.each)(options.storeLoadOptions, function(optionName, optionValue) {\r\n if (localLoadOptionNames[optionName]) {\r\n options.loadOptions[optionName] = optionValue;\r\n delete options.storeLoadOptions[optionName]\r\n }\r\n });\r\n if (cachedExtra) {\r\n options.extra = cachedExtra\r\n }\r\n options.data = getPageDataFromCache(options) || options.cachedStoreData\r\n },\r\n _handleDataLoaded: function(options) {\r\n var _this3 = this;\r\n var loadOptions = options.loadOptions;\r\n var localPaging = options.remoteOperations && !options.remoteOperations.paging;\r\n var cachedPagesData = options.cachedPagesData;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var needCache = false !== this.option(\"cacheEnabled\") && storeLoadOptions;\r\n var needPageCache = needCache && !options.isCustomLoading && cachedPagesData && (!localPaging || storeLoadOptions.group) && !this.option(\"legacyRendering\");\r\n var needPagingCache = needCache && localPaging;\r\n var needStoreCache = needPagingCache && !options.isCustomLoading;\r\n if (!loadOptions) {\r\n this._dataSource.cancel(options.operationId);\r\n return\r\n }\r\n if (options.lastLoadOptions) {\r\n this._lastLoadOptions = options.lastLoadOptions;\r\n Object.keys(options.operationTypes).forEach(function(operationType) {\r\n _this3._lastOperationTypes[operationType] = _this3._lastOperationTypes[operationType] || options.operationTypes[operationType]\r\n })\r\n }\r\n if (localPaging) {\r\n options.skip = loadOptions.skip;\r\n options.take = loadOptions.take;\r\n delete loadOptions.skip;\r\n delete loadOptions.take\r\n }\r\n if (loadOptions.group) {\r\n loadOptions.group = options.group || loadOptions.group\r\n }\r\n var groupCount = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group || loadOptions.group).length;\r\n if (!needPageCache || !getPageDataFromCache(options)) {\r\n if (needPagingCache && options.cachedPagingData) {\r\n options.data = cloneItems(options.cachedPagingData, groupCount)\r\n } else {\r\n if (needStoreCache) {\r\n if (!this._cachedStoreData) {\r\n this._cachedStoreData = cloneItems(options.data, _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group).length)\r\n } else {\r\n if (options.mergeStoreLoadData) {\r\n options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data)\r\n }\r\n }\r\n }\r\n new _array_store.default(options.data).load(loadOptions).done(function(data) {\r\n options.data = data;\r\n if (needStoreCache) {\r\n _this3._cachedPagingData = cloneItems(options.data, groupCount)\r\n }\r\n }).fail(function(error) {\r\n options.data = (new _deferred.Deferred).reject(error)\r\n })\r\n }\r\n if (loadOptions.requireTotalCount && localPaging) {\r\n options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};\r\n options.extra.totalCount = options.data.length\r\n }\r\n if (options.extra && options.extra.totalCount >= 0 && (false === storeLoadOptions.requireTotalCount || false === loadOptions.requireTotalCount)) {\r\n options.extra.totalCount = -1\r\n }\r\n this._handleDataLoadedCore(options);\r\n if (needPageCache) {\r\n cachedPagesData.extra = cachedPagesData.extra || (0, _extend.extend)({}, options.extra);\r\n (0, _deferred.when)(options.data).done(function(data) {\r\n setPageDataToCache(options, cloneItems(data, groupCount))\r\n })\r\n }\r\n }\r\n options.storeLoadOptions = options.originalStoreLoadOptions\r\n },\r\n _handleDataLoadedCore: function(options) {\r\n if (options.remoteOperations && !options.remoteOperations.paging && Array.isArray(options.data)) {\r\n if (void 0 !== options.skip) {\r\n options.data = options.data.slice(options.skip)\r\n }\r\n if (void 0 !== options.take) {\r\n options.data = options.data.slice(0, options.take)\r\n }\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this.loadingChanged.fire(isLoading)\r\n },\r\n _handleLoadError: function(error) {\r\n this.loadError.fire(error);\r\n this.changed.fire({\r\n changeType: \"loadError\",\r\n error: error\r\n })\r\n },\r\n _handleDataChanged: function(args) {\r\n var that = this;\r\n var currentTotalCount;\r\n var dataSource = that._dataSource;\r\n var isLoading = false;\r\n var itemsCount = that.itemsCount();\r\n that._isLastPage = !itemsCount || !that.pageSize() || itemsCount < that.pageSize();\r\n if (that._isLastPage) {\r\n that._hasLastPage = true\r\n }\r\n if (dataSource.totalCount() >= 0) {\r\n if (dataSource.pageIndex() >= that.pageCount()) {\r\n dataSource.pageIndex(that.pageCount() - 1);\r\n that.pageIndex(dataSource.pageIndex());\r\n that.resetPagesCache();\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n } else {\r\n if (!args || (0, _type.isDefined)(args.changeType)) {\r\n currentTotalCount = dataSource.pageIndex() * that.pageSize() + itemsCount;\r\n that._currentTotalCount = Math.max(that._currentTotalCount, currentTotalCount);\r\n if (0 === itemsCount && dataSource.pageIndex() >= that.pageCount()) {\r\n dataSource.pageIndex(that.pageCount() - 1);\r\n if (\"infinite\" !== that.option(\"scrolling.mode\")) {\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n }\r\n }\r\n }\r\n if (!isLoading) {\r\n that._operationTypes = that._lastOperationTypes;\r\n that._lastOperationTypes = {};\r\n that.component._optionCache = {};\r\n that.changed.fire(args);\r\n that.component._optionCache = void 0\r\n }\r\n },\r\n _scheduleCustomLoadCallbacks: function(deferred) {\r\n var that = this;\r\n that._isCustomLoading = true;\r\n deferred.always(function() {\r\n that._isCustomLoading = false\r\n })\r\n },\r\n loadingOperationTypes: function() {\r\n return this._loadingOperationTypes\r\n },\r\n operationTypes: function() {\r\n return this._operationTypes\r\n },\r\n lastLoadOptions: function() {\r\n return this._lastLoadOptions || {}\r\n },\r\n isLastPage: function() {\r\n return this._isLastPage\r\n },\r\n totalCount: function() {\r\n return parseInt((this._currentTotalCount || this._dataSource.totalCount()) + this._skipCorrection)\r\n },\r\n itemsCount: function() {\r\n return this._dataSource.items().length\r\n },\r\n totalItemsCount: function() {\r\n return this.totalCount()\r\n },\r\n pageSize: function() {\r\n var dataSource = this._dataSource;\r\n if (!arguments.length && !dataSource.paginate()) {\r\n return 0\r\n }\r\n return dataSource.pageSize.apply(dataSource, arguments)\r\n },\r\n pageCount: function() {\r\n var that = this;\r\n var count = that.totalItemsCount() - that._skipCorrection;\r\n var pageSize = that.pageSize();\r\n if (pageSize && count > 0) {\r\n return Math.max(1, Math.ceil(count / pageSize))\r\n }\r\n return 1\r\n },\r\n hasKnownLastPage: function() {\r\n return this._hasLastPage || this._dataSource.totalCount() >= 0\r\n },\r\n loadFromStore: function(loadOptions, store) {\r\n var dataSource = this._dataSource;\r\n var d = new _deferred.Deferred;\r\n if (!dataSource) {\r\n return\r\n }\r\n store = store || dataSource.store();\r\n store.load(loadOptions).done(function(data, extra) {\r\n if (data && !Array.isArray(data) && Array.isArray(data.data)) {\r\n extra = data;\r\n data = data.data\r\n }\r\n d.resolve(data, extra)\r\n }).fail(d.reject);\r\n return d\r\n },\r\n isCustomLoading: function() {\r\n return !!this._isCustomLoading\r\n },\r\n load: function(options) {\r\n var _this4 = this;\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new _deferred.Deferred;\r\n if (options) {\r\n var store = dataSource.store();\r\n var dataSourceLoadOptions = dataSource.loadOptions();\r\n var loadResult = {\r\n storeLoadOptions: options,\r\n isCustomLoading: true\r\n };\r\n (0, _iterator.each)(store._customLoadOptions() || [], function(_, optionName) {\r\n if (!(optionName in loadResult.storeLoadOptions)) {\r\n loadResult.storeLoadOptions[optionName] = dataSourceLoadOptions[optionName]\r\n }\r\n });\r\n this._isLoadingAll = options.isLoadingAll;\r\n that._scheduleCustomLoadCallbacks(d);\r\n dataSource._scheduleLoadCallbacks(d);\r\n that._handleDataLoading(loadResult);\r\n executeTask(function() {\r\n if (!dataSource.store()) {\r\n return d.reject(\"canceled\")\r\n }(0, _deferred.when)(loadResult.data || that.loadFromStore(loadResult.storeLoadOptions)).done(function(data, extra) {\r\n loadResult.data = data;\r\n loadResult.extra = extra || {};\r\n that._handleDataLoaded(loadResult);\r\n if (options.requireTotalCount && void 0 === loadResult.extra.totalCount) {\r\n loadResult.extra.totalCount = store.totalCount(loadResult.storeLoadOptions)\r\n }(0, _deferred.when)(loadResult.data, loadResult.extra.totalCount).done(function(data, totalCount) {\r\n loadResult.extra.totalCount = totalCount;\r\n d.resolve(data, loadResult.extra)\r\n }).fail(d.reject)\r\n }).fail(d.reject)\r\n }, that.option(\"loadingTimeout\"));\r\n return d.fail(function() {\r\n that._eventsStrategy.fireEvent(\"loadError\", arguments)\r\n }).always(function() {\r\n _this4._isLoadingAll = false\r\n }).promise()\r\n } else {\r\n return dataSource.load()\r\n }\r\n },\r\n reload: function(full) {\r\n return full ? this._dataSource.reload() : this._dataSource.load()\r\n },\r\n getCachedStoreData: function() {\r\n return this._cachedStoreData\r\n }\r\n }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.data_controller.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _custom_store = _interopRequireDefault(require(\"../../data/custom_store\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _array_compare = require(\"../../core/utils/array_compare\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n loadingTimeout: 0,\r\n dataSource: null,\r\n cacheEnabled: true,\r\n repaintChangesOnly: false,\r\n highlightChanges: false,\r\n onDataErrorOccurred: null,\r\n remoteOperations: \"auto\",\r\n paging: {\r\n enabled: true,\r\n pageSize: void 0,\r\n pageIndex: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n data: _uiGrid_core.default.Controller.inherit({}).include(_data_helper.default).inherit(function() {\r\n var changePaging = function(that, optionName, value) {\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (void 0 !== value) {\r\n if (dataSource[optionName]() !== value) {\r\n if (\"pageSize\" === optionName) {\r\n dataSource.pageIndex(0)\r\n }\r\n dataSource[optionName](value);\r\n that._skipProcessingPagingChange = true;\r\n that.option(\"paging.\" + optionName, value);\r\n that._skipProcessingPagingChange = false;\r\n return dataSource[\"pageIndex\" === optionName ? \"load\" : \"reload\"]().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n return (0, _deferred.Deferred)().resolve().promise()\r\n }\r\n return dataSource[optionName]()\r\n }\r\n return 0\r\n };\r\n var members = {\r\n init: function() {\r\n var _this = this;\r\n var that = this;\r\n that._items = [];\r\n that._columnsController = that.getController(\"columns\");\r\n that._currentOperationTypes = null;\r\n that._dataChangedHandler = function(e) {\r\n that._currentOperationTypes = _this._dataSource.operationTypes();\r\n that._handleDataChanged(e);\r\n that._currentOperationTypes = null\r\n };\r\n that._columnsChangedHandler = that._handleColumnsChanged.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n that._columnsController.columnsChanged.add(that._columnsChangedHandler);\r\n that._isLoading = false;\r\n that._isCustomLoading = false;\r\n that._repaintChangesOnly = void 0;\r\n that._changes = [];\r\n that.createAction(\"onDataErrorOccurred\");\r\n that.dataErrorOccurred.add(function(error) {\r\n return that.executeAction(\"onDataErrorOccurred\", {\r\n error: error\r\n })\r\n });\r\n that._refreshDataSource()\r\n },\r\n callbackNames: function() {\r\n return [\"changed\", \"loadingChanged\", \"dataErrorOccurred\", \"pageChanged\", \"dataSourceChanged\"]\r\n },\r\n callbackFlags: function(name) {\r\n if (\"dataErrorOccurred\" === name) {\r\n return {\r\n stopOnFalse: true\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"beginCustomLoading\", \"endCustomLoading\", \"refresh\", \"filter\", \"clearFilter\", \"getCombinedFilter\", \"keyOf\", \"byKey\", \"getDataByKeys\", \"pageIndex\", \"pageSize\", \"pageCount\", \"totalCount\", \"_disposeDataSource\", \"getKeyByRowIndex\", \"getRowIndexByKey\", \"getDataSource\", \"getVisibleRows\", \"repaintRows\"]\r\n },\r\n reset: function() {\r\n this._columnsController.reset();\r\n this._items = [];\r\n this._refreshDataSource()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n var dataSource;\r\n\r\n function handled() {\r\n args.handled = true\r\n }\r\n if (\"dataSource\" === args.name && args.name === args.fullName && (args.value === args.previousValue || that.option(\"columns\") && Array.isArray(args.value) && Array.isArray(args.previousValue))) {\r\n if (args.value !== args.previousValue) {\r\n var store = that.store();\r\n if (store) {\r\n store._array = args.value\r\n }\r\n }\r\n handled();\r\n that.refresh(that.option(\"repaintChangesOnly\"));\r\n return\r\n }\r\n switch (args.name) {\r\n case \"cacheEnabled\":\r\n case \"repaintChangesOnly\":\r\n case \"highlightChanges\":\r\n case \"loadingTimeout\":\r\n handled();\r\n break;\r\n case \"remoteOperations\":\r\n case \"keyExpr\":\r\n case \"dataSource\":\r\n case \"scrolling\":\r\n handled();\r\n that.reset();\r\n break;\r\n case \"paging\":\r\n dataSource = that.dataSource();\r\n if (dataSource && that._setPagingOptions(dataSource)) {\r\n dataSource.load().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n handled();\r\n break;\r\n case \"rtlEnabled\":\r\n that.reset();\r\n break;\r\n case \"columns\":\r\n dataSource = that.dataSource();\r\n if (dataSource && dataSource.isLoading() && args.name === args.fullName) {\r\n this._useSortingGroupingFromColumns = true;\r\n dataSource.load()\r\n }\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n isReady: function() {\r\n return !this._isLoading\r\n },\r\n getDataSource: function() {\r\n return this._dataSource && this._dataSource._dataSource\r\n },\r\n getCombinedFilter: function(returnDataField) {\r\n return this.combinedFilter(void 0, returnDataField)\r\n },\r\n combinedFilter: function(filter, returnDataField) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var columnsController = that._columnsController;\r\n if (dataSource) {\r\n if (void 0 === filter) {\r\n filter = dataSource.filter()\r\n }\r\n var additionalFilter = that._calculateAdditionalFilter();\r\n if (additionalFilter) {\r\n if (columnsController.isDataSourceApplied() || columnsController.isAllDataTypesDefined()) {\r\n filter = _uiGrid_core2.default.combineFilters([additionalFilter, filter])\r\n }\r\n }\r\n filter = columnsController.updateFilter(filter, returnDataField || dataSource.remoteOperations().filtering)\r\n }\r\n return filter\r\n },\r\n waitReady: function() {\r\n if (this._updateLockCount) {\r\n this._readyDeferred = new _deferred.Deferred;\r\n return this._readyDeferred\r\n }\r\n return (0, _deferred.when)()\r\n },\r\n _endUpdateCore: function() {\r\n var changes = this._changes;\r\n if (changes.length) {\r\n this._changes = [];\r\n var repaintChangesOnly = changes.every(function(change) {\r\n return change.repaintChangesOnly\r\n });\r\n this.updateItems(1 === changes.length ? changes[0] : {\r\n repaintChangesOnly: repaintChangesOnly\r\n })\r\n }\r\n if (this._readyDeferred) {\r\n this._readyDeferred.resolve();\r\n this._readyDeferred = null\r\n }\r\n },\r\n _handleCustomizeStoreLoadOptions: function(e) {\r\n var columnsController = this._columnsController;\r\n var dataSource = this._dataSource;\r\n var storeLoadOptions = e.storeLoadOptions;\r\n if (e.isCustomLoading && !storeLoadOptions.isLoadingAll) {\r\n return\r\n }\r\n storeLoadOptions.filter = this.combinedFilter(storeLoadOptions.filter);\r\n if (!columnsController.isDataSourceApplied()) {\r\n columnsController.updateColumnDataTypes(dataSource)\r\n }\r\n this._columnsUpdating = true;\r\n columnsController.updateSortingGrouping(dataSource, !this._useSortingGroupingFromColumns);\r\n this._columnsUpdating = false;\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters();\r\n storeLoadOptions.group = columnsController.getGroupDataSourceParameters();\r\n dataSource.sort(storeLoadOptions.sort);\r\n dataSource.group(storeLoadOptions.group);\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().sorting);\r\n e.group = columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().grouping)\r\n },\r\n _handleColumnsChanged: function(e) {\r\n var that = this;\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var filterValue;\r\n var filterValues;\r\n var filterApplied;\r\n var updateItemsHandler = function updateItemsHandler() {\r\n that._columnsController.columnsChanged.remove(updateItemsHandler);\r\n that.updateItems()\r\n };\r\n if (changeTypes.sorting || changeTypes.grouping) {\r\n if (that._dataSource && !that._columnsUpdating) {\r\n that._dataSource.group(that._columnsController.getGroupDataSourceParameters());\r\n that._dataSource.sort(that._columnsController.getSortDataSourceParameters());\r\n that.reload()\r\n }\r\n } else {\r\n if (changeTypes.columns) {\r\n if (optionNames.filterValues || optionNames.filterValue || optionNames.selectedFilterOperation) {\r\n filterValue = that._columnsController.columnOption(e.columnIndex, \"filterValue\");\r\n filterValues = that._columnsController.columnOption(e.columnIndex, \"filterValues\");\r\n if (Array.isArray(filterValues) || void 0 === e.columnIndex || (0, _type.isDefined)(filterValue) || !optionNames.selectedFilterOperation || optionNames.filterValue) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n if (!that._needApplyFilter && !_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\", \"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"filterValues\", \"filterType\"])) {\r\n that._columnsController.columnsChanged.add(updateItemsHandler)\r\n }\r\n if ((0, _type.isDefined)(optionNames.visible)) {\r\n var column = that._columnsController.columnOption(e.columnIndex);\r\n if (column && ((0, _type.isDefined)(column.filterValue) || (0, _type.isDefined)(column.filterValues))) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n }\r\n }\r\n if (!filterApplied && changeTypes.filtering) {\r\n that.reload()\r\n }\r\n },\r\n _handleDataChanged: function(e) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var columnsController = that._columnsController;\r\n var isAsyncDataSourceApplying = false;\r\n this._useSortingGroupingFromColumns = false;\r\n if (dataSource && !that._isDataSourceApplying) {\r\n that._isDataSourceApplying = true;\r\n (0, _deferred.when)(that._columnsController.applyDataSource(dataSource)).done(function() {\r\n if (that._isLoading) {\r\n that._handleLoadingChanged(false)\r\n }\r\n if (isAsyncDataSourceApplying && e && e.isDelayed) {\r\n e.isDelayed = false\r\n }\r\n that._isDataSourceApplying = false;\r\n var hasAdditionalFilter = function() {\r\n var additionalFilter = that._calculateAdditionalFilter();\r\n return additionalFilter && additionalFilter.length\r\n };\r\n var needApplyFilter = that._needApplyFilter;\r\n that._needApplyFilter = false;\r\n if (needApplyFilter && !that._isAllDataTypesDefined && hasAdditionalFilter()) {\r\n _ui.default.log(\"W1005\", that.component.NAME);\r\n that._applyFilter()\r\n } else {\r\n that.updateItems(e, true)\r\n }\r\n }).fail(function() {\r\n that._isDataSourceApplying = false\r\n });\r\n if (that._isDataSourceApplying) {\r\n isAsyncDataSourceApplying = true;\r\n that._handleLoadingChanged(true)\r\n }\r\n that._needApplyFilter = !that._columnsController.isDataSourceApplied();\r\n that._isAllDataTypesDefined = columnsController.isAllDataTypesDefined()\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this._isLoading = isLoading;\r\n this._fireLoadingChanged()\r\n },\r\n _handleLoadError: function(e) {\r\n this.dataErrorOccurred.fire(e)\r\n },\r\n fireError: function() {\r\n this.dataErrorOccurred.fire(_ui.default.Error.apply(_ui.default, arguments))\r\n },\r\n _setPagingOptions: function(dataSource) {\r\n var pageIndex = this.option(\"paging.pageIndex\");\r\n var pageSize = this.option(\"paging.pageSize\");\r\n var pagingEnabled = this.option(\"paging.enabled\");\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var appendMode = \"infinite\" === scrollingMode;\r\n var virtualMode = \"virtual\" === scrollingMode;\r\n var paginate = pagingEnabled || virtualMode || appendMode;\r\n var isChanged = false;\r\n dataSource.requireTotalCount(!appendMode);\r\n if (void 0 !== pagingEnabled && dataSource.paginate() !== paginate) {\r\n dataSource.paginate(paginate);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageSize && dataSource.pageSize() !== pageSize) {\r\n dataSource.pageSize(pageSize);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageIndex && dataSource.pageIndex() !== pageIndex) {\r\n dataSource.pageIndex(pageIndex);\r\n isChanged = true\r\n }\r\n return isChanged\r\n },\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n if (Array.isArray(dataSource)) {\r\n return {\r\n store: {\r\n type: \"array\",\r\n data: dataSource,\r\n key: this.option(\"keyExpr\")\r\n }\r\n }\r\n }\r\n return dataSource\r\n },\r\n _initDataSource: function() {\r\n var that = this;\r\n var dataSource = this.option(\"dataSource\");\r\n var oldDataSource = this._dataSource;\r\n that.callBase();\r\n dataSource = that._dataSource;\r\n that._useSortingGroupingFromColumns = true;\r\n if (dataSource) {\r\n that._setPagingOptions(dataSource);\r\n that.setDataSource(dataSource)\r\n } else {\r\n if (oldDataSource) {\r\n that.updateItems()\r\n }\r\n }\r\n },\r\n _loadDataSource: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var result = new _deferred.Deferred;\r\n (0, _deferred.when)(this._columnsController.refresh(true)).always(function() {\r\n if (dataSource) {\r\n dataSource.load().done(result.resolve).fail(result.reject)\r\n } else {\r\n result.resolve()\r\n }\r\n });\r\n return result.promise()\r\n },\r\n _beforeProcessItems: function(items) {\r\n return items.slice(0)\r\n },\r\n getRowIndexDelta: function() {\r\n return 0\r\n },\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var changeType = change.changeType;\r\n var visibleColumns = that._columnsController.getVisibleColumns(null, \"loadingAll\" === changeType);\r\n var visibleItems = that._items;\r\n var lastVisibleItem = \"append\" === changeType && visibleItems.length > 0 ? visibleItems[visibleItems.length - 1] : null;\r\n var dataIndex = (0, _type.isDefined)(null === lastVisibleItem || void 0 === lastVisibleItem ? void 0 : lastVisibleItem.dataIndex) ? lastVisibleItem.dataIndex + 1 : 0;\r\n var options = {\r\n visibleColumns: visibleColumns,\r\n dataIndex: dataIndex\r\n };\r\n var result = [];\r\n (0, _iterator.each)(items, function(index, item) {\r\n if ((0, _type.isDefined)(item)) {\r\n options.rowIndex = index - rowIndexDelta;\r\n item = that._processItem(item, options);\r\n result.push(item)\r\n }\r\n });\r\n return result\r\n },\r\n _processItem: function(item, options) {\r\n item = this._generateDataItem(item, options);\r\n item = this._processDataItem(item, options);\r\n item.dataIndex = options.dataIndex++;\r\n return item\r\n },\r\n _generateDataItem: function(data) {\r\n return {\r\n rowType: \"data\",\r\n data: data,\r\n key: this.keyOf(data)\r\n }\r\n },\r\n _processDataItem: function(dataItem, options) {\r\n dataItem.values = this.generateDataValues(dataItem.data, options.visibleColumns);\r\n return dataItem\r\n },\r\n generateDataValues: function(data, columns, isModified) {\r\n var values = [];\r\n var value;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n value = isModified ? void 0 : null;\r\n if (!column.command) {\r\n if (column.calculateCellValue) {\r\n value = column.calculateCellValue(data)\r\n } else {\r\n if (column.dataField) {\r\n value = data[column.dataField]\r\n }\r\n }\r\n }\r\n values.push(value)\r\n }\r\n return values\r\n },\r\n _applyChange: function(change) {\r\n var that = this;\r\n if (\"update\" === change.changeType) {\r\n that._applyChangeUpdate(change)\r\n } else {\r\n if (that.items().length && change.repaintChangesOnly && \"refresh\" === change.changeType) {\r\n that._applyChangesOnly(change)\r\n } else {\r\n if (\"refresh\" === change.changeType) {\r\n that._applyChangeFull(change)\r\n }\r\n }\r\n }\r\n },\r\n _applyChangeFull: function(change) {\r\n this._items = change.items.slice(0)\r\n },\r\n _getRowIndices: function(change) {\r\n var rowIndices = change.rowIndices.slice(0);\r\n var rowIndexDelta = this.getRowIndexDelta();\r\n rowIndices.sort(function(a, b) {\r\n return a - b\r\n });\r\n for (var i = 0; i < rowIndices.length; i++) {\r\n var correctedRowIndex = rowIndices[i];\r\n if (change.allowInvisibleRowIndices) {\r\n correctedRowIndex += rowIndexDelta\r\n }\r\n if (correctedRowIndex < 0) {\r\n rowIndices.splice(i, 1);\r\n i--\r\n }\r\n }\r\n return rowIndices\r\n },\r\n _applyChangeUpdate: function(change) {\r\n var that = this;\r\n var items = change.items;\r\n var rowIndices = that._getRowIndices(change);\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var repaintChangesOnly = that.option(\"repaintChangesOnly\");\r\n var prevIndex = -1;\r\n var rowIndexCorrection = 0;\r\n var changeType;\r\n change.items = [];\r\n change.rowIndices = [];\r\n change.columnIndices = [];\r\n change.changeTypes = [];\r\n var equalItems = function(item1, item2, strict) {\r\n var result = item1 && item2 && (0, _common.equalByValue)(item1.key, item2.key);\r\n if (result && strict) {\r\n result = item1.rowType === item2.rowType && (\"detail\" !== item2.rowType || item1.isEditing === item2.isEditing)\r\n }\r\n return result\r\n };\r\n (0, _iterator.each)(rowIndices, function(index, rowIndex) {\r\n var columnIndices;\r\n rowIndex += rowIndexCorrection + rowIndexDelta;\r\n if (prevIndex === rowIndex) {\r\n return\r\n }\r\n prevIndex = rowIndex;\r\n var oldItem = that._items[rowIndex];\r\n var oldNextItem = that._items[rowIndex + 1];\r\n var newItem = items[rowIndex];\r\n var newNextItem = items[rowIndex + 1];\r\n var strict = equalItems(oldItem, oldNextItem) || equalItems(newItem, newNextItem);\r\n if (newItem) {\r\n newItem.rowIndex = rowIndex;\r\n change.items.push(newItem)\r\n }\r\n if (oldItem && newItem && equalItems(oldItem, newItem, strict)) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem;\r\n if (oldItem.visible !== newItem.visible) {\r\n change.items.splice(-1, 1, {\r\n visible: newItem.visible\r\n })\r\n } else {\r\n if (repaintChangesOnly && !change.isFullUpdate) {\r\n columnIndices = that._partialUpdateRow(oldItem, newItem, rowIndex - rowIndexDelta)\r\n }\r\n }\r\n } else {\r\n if (newItem && !oldItem || newNextItem && equalItems(oldItem, newNextItem, strict)) {\r\n changeType = \"insert\";\r\n that._items.splice(rowIndex, 0, newItem);\r\n rowIndexCorrection++\r\n } else {\r\n if (oldItem && !newItem || oldNextItem && equalItems(newItem, oldNextItem, strict)) {\r\n changeType = \"remove\";\r\n that._items.splice(rowIndex, 1);\r\n rowIndexCorrection--;\r\n prevIndex = -1\r\n } else {\r\n if (newItem) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem\r\n } else {\r\n return\r\n }\r\n }\r\n }\r\n }\r\n change.rowIndices.push(rowIndex - rowIndexDelta);\r\n change.changeTypes.push(changeType);\r\n change.columnIndices.push(columnIndices)\r\n })\r\n },\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n if (JSON.stringify(oldRow.values[columnIndex]) !== JSON.stringify(newRow.values[columnIndex])) {\r\n return true\r\n }\r\n\r\n function isCellModified(row, columnIndex) {\r\n return row.modifiedValues ? void 0 !== row.modifiedValues[columnIndex] : false\r\n }\r\n if (isCellModified(oldRow, columnIndex) !== isCellModified(newRow, columnIndex)) {\r\n return true\r\n }\r\n return false\r\n },\r\n _getChangedColumnIndices: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n if (oldItem.rowType === newItem.rowType && \"group\" !== newItem.rowType && \"groupFooter\" !== newItem.rowType) {\r\n var columnIndices = [];\r\n if (\"detail\" !== newItem.rowType) {\r\n for (var columnIndex = 0; columnIndex < oldItem.values.length; columnIndex++) {\r\n if (this._isCellChanged(oldItem, newItem, visibleRowIndex, columnIndex, isLiveUpdate)) {\r\n columnIndices.push(columnIndex)\r\n }\r\n }\r\n }\r\n return columnIndices\r\n }\r\n },\r\n _partialUpdateRow: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n var changedColumnIndices = this._getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate);\r\n if (changedColumnIndices) {\r\n oldItem.cells && oldItem.cells.forEach(function(cell, columnIndex) {\r\n var isCellChanged = changedColumnIndices.indexOf(columnIndex) >= 0;\r\n if (!isCellChanged && cell && cell.update) {\r\n cell.update(newItem)\r\n }\r\n });\r\n newItem.update = oldItem.update;\r\n newItem.watch = oldItem.watch;\r\n newItem.cells = oldItem.cells;\r\n if (isLiveUpdate) {\r\n newItem.oldValues = oldItem.values\r\n }\r\n oldItem.update && oldItem.update(newItem)\r\n }\r\n return changedColumnIndices\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (JSON.stringify(item1.values) !== JSON.stringify(item2.values)) {\r\n return false\r\n }\r\n var compareFields = [\"modified\", \"isNewRow\", \"removed\", \"isEditing\"];\r\n if (compareFields.some(function(field) {\r\n return item1[field] !== item2[field]\r\n })) {\r\n return false\r\n }\r\n if (\"group\" === item1.rowType || \"groupFooter\" === item1.rowType) {\r\n var _item1$data, _item2$data, _item1$data2, _item2$data2;\r\n var expandedMatch = item1.isExpanded === item2.isExpanded;\r\n var summaryCellsMatch = JSON.stringify(item1.summaryCells) === JSON.stringify(item2.summaryCells);\r\n var continuationMatch = (null === (_item1$data = item1.data) || void 0 === _item1$data ? void 0 : _item1$data.isContinuation) === (null === (_item2$data = item2.data) || void 0 === _item2$data ? void 0 : _item2$data.isContinuation) && (null === (_item1$data2 = item1.data) || void 0 === _item1$data2 ? void 0 : _item1$data2.isContinuationOnNextPage) === (null === (_item2$data2 = item2.data) || void 0 === _item2$data2 ? void 0 : _item2$data2.isContinuationOnNextPage);\r\n if (!expandedMatch || !summaryCellsMatch || !continuationMatch) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _applyChangesOnly: function(change) {\r\n var _this2 = this;\r\n var rowIndices = [];\r\n var columnIndices = [];\r\n var changeTypes = [];\r\n var items = [];\r\n var newIndexByKey = {};\r\n\r\n function getRowKey(row) {\r\n if (row) {\r\n return row.rowType + \",\" + JSON.stringify(row.key)\r\n }\r\n }\r\n var isItemEquals = function(item1, item2) {\r\n if (!_this2._isItemEquals(item1, item2)) {\r\n return false\r\n }\r\n if (item1.cells) {\r\n item1.update && item1.update(item2);\r\n item1.cells.forEach(function(cell) {\r\n if (cell && cell.update) {\r\n cell.update(item2)\r\n }\r\n })\r\n }\r\n return true\r\n };\r\n var oldItems = this._items.slice();\r\n change.items.forEach(function(item, index) {\r\n var key = getRowKey(item);\r\n newIndexByKey[key] = index;\r\n item.rowIndex = index\r\n });\r\n var result = (0, _array_compare.findChanges)(oldItems, change.items, getRowKey, isItemEquals);\r\n if (!result) {\r\n this._applyChangeFull(change);\r\n return\r\n }\r\n result.forEach(function(change) {\r\n switch (change.type) {\r\n case \"update\":\r\n var index = change.index;\r\n var newItem = change.data;\r\n var oldItem = change.oldItem;\r\n var changedColumnIndices = _this2._partialUpdateRow(oldItem, newItem, index, true);\r\n rowIndices.push(index);\r\n changeTypes.push(\"update\");\r\n items.push(newItem);\r\n _this2._items[index] = newItem;\r\n columnIndices.push(changedColumnIndices);\r\n break;\r\n case \"insert\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"insert\");\r\n items.push(change.data);\r\n columnIndices.push(void 0);\r\n _this2._items.splice(change.index, 0, change.data);\r\n break;\r\n case \"remove\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"remove\");\r\n _this2._items.splice(change.index, 1);\r\n items.push(change.oldItem);\r\n columnIndices.push(void 0)\r\n }\r\n });\r\n change.repaintChangesOnly = true;\r\n change.changeType = \"update\";\r\n change.rowIndices = rowIndices;\r\n change.columnIndices = columnIndices;\r\n change.changeTypes = changeTypes;\r\n change.items = items;\r\n if (oldItems.length) {\r\n change.isLiveUpdate = true\r\n }\r\n this._correctRowIndices(function(rowIndex) {\r\n var oldItem = oldItems[rowIndex];\r\n var key = getRowKey(oldItem);\r\n var newRowIndex = newIndexByKey[key];\r\n return newRowIndex >= 0 ? newRowIndex - rowIndex : 0\r\n })\r\n },\r\n _correctRowIndices: _common.noop,\r\n _updateItemsCore: function(change) {\r\n var that = this;\r\n var items;\r\n var dataSource = that._dataSource;\r\n var changeType = change.changeType || \"refresh\";\r\n change.changeType = changeType;\r\n if (dataSource) {\r\n items = change.items || dataSource.items();\r\n items = that._beforeProcessItems(items);\r\n items = that._processItems(items, change);\r\n change.items = items;\r\n var oldItems = that._items.length === items.length && that._items;\r\n that._applyChange(change);\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n (0, _iterator.each)(that._items, function(index, item) {\r\n item.rowIndex = index - rowIndexDelta;\r\n if (oldItems) {\r\n item.cells = oldItems[index].cells || []\r\n }\r\n })\r\n } else {\r\n that._items = []\r\n }\r\n },\r\n _handleChanging: function(e) {\r\n var that = this;\r\n var rows = that.getVisibleRows();\r\n var dataSource = that.dataSource();\r\n if (dataSource) {\r\n e.changes.forEach(function(change) {\r\n if (\"insert\" === change.type && change.index >= 0) {\r\n var dataIndex = 0;\r\n for (var i = 0; i < change.index; i++) {\r\n var row = rows[i];\r\n if (row && (\"data\" === row.rowType || \"group\" === row.rowType)) {\r\n dataIndex++\r\n }\r\n }\r\n change.index = dataIndex\r\n }\r\n })\r\n }\r\n },\r\n updateItems: function(change, isDataChanged) {\r\n change = change || {};\r\n var that = this;\r\n if (void 0 !== that._repaintChangesOnly) {\r\n change.repaintChangesOnly = that._repaintChangesOnly\r\n } else {\r\n if (change.changes) {\r\n change.repaintChangesOnly = that.option(\"repaintChangesOnly\")\r\n } else {\r\n if (isDataChanged) {\r\n var operationTypes = that.dataSource().operationTypes();\r\n change.repaintChangesOnly = operationTypes && !operationTypes.grouping && !operationTypes.filtering && that.option(\"repaintChangesOnly\");\r\n change.isDataChanged = true;\r\n if (operationTypes && (operationTypes.reload || operationTypes.paging || operationTypes.groupExpanding)) {\r\n change.needUpdateDimensions = true\r\n }\r\n }\r\n }\r\n }\r\n if (that._updateLockCount) {\r\n that._changes.push(change);\r\n return\r\n }\r\n that._updateItemsCore(change);\r\n if (change.cancel) {\r\n return\r\n }\r\n that._fireChanged(change)\r\n },\r\n loadingOperationTypes: function() {\r\n var dataSource = this.dataSource();\r\n return dataSource && dataSource.loadingOperationTypes() || {}\r\n },\r\n _fireChanged: function(change) {\r\n var _this3 = this;\r\n if (this._currentOperationTypes) {\r\n change.operationTypes = this._currentOperationTypes;\r\n this._currentOperationTypes = null\r\n }(0, _common.deferRender)(function() {\r\n _this3.changed.fire(change)\r\n })\r\n },\r\n isLoading: function() {\r\n return this._isLoading || this._isCustomLoading\r\n },\r\n _fireLoadingChanged: function() {\r\n this.loadingChanged.fire(this.isLoading(), this._loadingText)\r\n },\r\n _calculateAdditionalFilter: function() {\r\n return null\r\n },\r\n _applyFilter: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n dataSource.pageIndex(0);\r\n return that.reload().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n },\r\n filter: function filter(filterExpr) {\r\n var dataSource = this._dataSource;\r\n var filter = dataSource && dataSource.filter();\r\n if (0 === arguments.length) {\r\n return filter\r\n }\r\n filterExpr = arguments.length > 1 ? Array.prototype.slice.call(arguments, 0) : filterExpr;\r\n if (_uiGrid_core2.default.equalFilterParameters(filter, filterExpr)) {\r\n return\r\n }\r\n if (dataSource) {\r\n dataSource.filter(filterExpr)\r\n }\r\n this._applyFilter()\r\n },\r\n clearFilter: function(filterName) {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var clearColumnOption = function(optionName) {\r\n var columnCount = columnsController.columnCount();\r\n for (var index = 0; index < columnCount; index++) {\r\n columnsController.columnOption(index, optionName, void 0)\r\n }\r\n };\r\n that.component.beginUpdate();\r\n if (arguments.length > 0) {\r\n switch (filterName) {\r\n case \"dataSource\":\r\n that.filter(null);\r\n break;\r\n case \"search\":\r\n that.searchByText(\"\");\r\n break;\r\n case \"header\":\r\n clearColumnOption(\"filterValues\");\r\n break;\r\n case \"row\":\r\n clearColumnOption(\"filterValue\")\r\n }\r\n } else {\r\n that.filter(null);\r\n that.searchByText(\"\");\r\n clearColumnOption(\"filterValue\");\r\n clearColumnOption(\"bufferedFilterValue\");\r\n clearColumnOption(\"filterValues\")\r\n }\r\n that.component.endUpdate()\r\n },\r\n _fireDataSourceChanged: function() {\r\n var that = this;\r\n var changedHandler = function changedHandler() {\r\n that.changed.remove(changedHandler);\r\n that.dataSourceChanged.fire()\r\n };\r\n that.changed.add(changedHandler)\r\n },\r\n _getDataSourceAdapter: _common.noop,\r\n _createDataSourceAdapterCore: function(dataSource, remoteOperations) {\r\n var dataSourceAdapterProvider = this._getDataSourceAdapter();\r\n var dataSourceAdapter = dataSourceAdapterProvider.create(this.component);\r\n dataSourceAdapter.init(dataSource, remoteOperations);\r\n return dataSourceAdapter\r\n },\r\n isLocalStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof _array_store.default\r\n },\r\n isCustomStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof _custom_store.default\r\n },\r\n _createDataSourceAdapter: function(dataSource) {\r\n var remoteOperations = this.option(\"remoteOperations\");\r\n var store = dataSource.store();\r\n var enabledRemoteOperations = {\r\n filtering: true,\r\n sorting: true,\r\n paging: true,\r\n grouping: true,\r\n summary: true\r\n };\r\n if (remoteOperations && remoteOperations.groupPaging) {\r\n remoteOperations = (0, _extend.extend)({}, enabledRemoteOperations, remoteOperations)\r\n }\r\n if (\"auto\" === remoteOperations) {\r\n remoteOperations = this.isLocalStore(store) || this.isCustomStore(store) ? {} : {\r\n filtering: true,\r\n sorting: true,\r\n paging: true\r\n }\r\n }\r\n if (true === remoteOperations) {\r\n remoteOperations = enabledRemoteOperations\r\n }\r\n return this._createDataSourceAdapterCore(dataSource, remoteOperations)\r\n },\r\n setDataSource: function(dataSource) {\r\n var that = this;\r\n var oldDataSource = that._dataSource;\r\n if (!dataSource && oldDataSource) {\r\n oldDataSource.cancelAll();\r\n oldDataSource.changed.remove(that._dataChangedHandler);\r\n oldDataSource.loadingChanged.remove(that._loadingChangedHandler);\r\n oldDataSource.loadError.remove(that._loadErrorHandler);\r\n oldDataSource.customizeStoreLoadOptions.remove(that._customizeStoreLoadOptionsHandler);\r\n oldDataSource.changing.remove(that._changingHandler);\r\n oldDataSource.dispose(that._isSharedDataSource)\r\n }\r\n if (dataSource) {\r\n dataSource = that._createDataSourceAdapter(dataSource)\r\n }\r\n that._dataSource = dataSource;\r\n if (dataSource) {\r\n that._fireDataSourceChanged();\r\n that._isLoading = !dataSource.isLoaded();\r\n that._needApplyFilter = true;\r\n that._isAllDataTypesDefined = that._columnsController.isAllDataTypesDefined();\r\n dataSource.changed.add(that._dataChangedHandler);\r\n dataSource.loadingChanged.add(that._loadingChangedHandler);\r\n dataSource.loadError.add(that._loadErrorHandler);\r\n dataSource.customizeStoreLoadOptions.add(that._customizeStoreLoadOptionsHandler);\r\n dataSource.changing.add(that._changingHandler)\r\n }\r\n },\r\n items: function() {\r\n return this._items\r\n },\r\n isEmpty: function() {\r\n return !this.items().length\r\n },\r\n pageCount: function() {\r\n return this._dataSource ? this._dataSource.pageCount() : 1\r\n },\r\n dataSource: function() {\r\n return this._dataSource\r\n },\r\n store: function() {\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.store()\r\n },\r\n loadAll: function(data) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (data) {\r\n var options = {\r\n data: data,\r\n isCustomLoading: true,\r\n storeLoadOptions: {\r\n isLoadingAll: true\r\n },\r\n loadOptions: {\r\n filter: that.getCombinedFilter(),\r\n group: dataSource.group(),\r\n sort: dataSource.sort()\r\n }\r\n };\r\n dataSource._handleDataLoaded(options);\r\n (0, _deferred.when)(options.data).done(function(data) {\r\n data = that._beforeProcessItems(data);\r\n d.resolve(that._processItems(data, {\r\n changeType: \"loadingAll\"\r\n }), options.extra && options.extra.summary)\r\n }).fail(d.reject)\r\n } else {\r\n if (!dataSource.isLoading()) {\r\n var loadOptions = (0, _extend.extend)({}, dataSource.loadOptions(), {\r\n isLoadingAll: true,\r\n requireTotalCount: false\r\n });\r\n dataSource.load(loadOptions).done(function(items, extra) {\r\n items = that._beforeProcessItems(items);\r\n items = that._processItems(items, {\r\n changeType: \"loadingAll\"\r\n });\r\n d.resolve(items, extra && extra.summary)\r\n }).fail(d.reject)\r\n } else {\r\n d.reject()\r\n }\r\n }\r\n } else {\r\n d.resolve([])\r\n }\r\n return d\r\n },\r\n getKeyByRowIndex: function(rowIndex, byLoaded) {\r\n var item = this.items(byLoaded)[rowIndex];\r\n if (item) {\r\n return item.key\r\n }\r\n },\r\n getRowIndexByKey: function(key, byLoaded) {\r\n return _uiGrid_core2.default.getIndexByKey(key, this.items(byLoaded))\r\n },\r\n keyOf: function(data) {\r\n var store = this.store();\r\n if (store) {\r\n return store.keyOf(data)\r\n }\r\n },\r\n byKey: function(key) {\r\n var store = this.store();\r\n var rowIndex = this.getRowIndexByKey(key);\r\n var result;\r\n if (!store) {\r\n return\r\n }\r\n if (rowIndex >= 0) {\r\n result = (new _deferred.Deferred).resolve(this.items()[rowIndex].data)\r\n }\r\n return result || store.byKey(key)\r\n },\r\n key: function() {\r\n var store = this.store();\r\n if (store) {\r\n return store.key()\r\n }\r\n },\r\n getRowIndexOffset: function() {\r\n return 0\r\n },\r\n getDataByKeys: function(rowKeys) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n var deferreds = [];\r\n var data = [];\r\n (0, _iterator.each)(rowKeys, function(index, key) {\r\n deferreds.push(that.byKey(key).done(function(keyData) {\r\n data[index] = keyData\r\n }))\r\n });\r\n _deferred.when.apply(_renderer.default, deferreds).always(function() {\r\n result.resolve(data)\r\n });\r\n return result\r\n },\r\n pageIndex: function(value) {\r\n return changePaging(this, \"pageIndex\", value)\r\n },\r\n pageSize: function(value) {\r\n return changePaging(this, \"pageSize\", value)\r\n },\r\n beginCustomLoading: function(messageText) {\r\n this._isCustomLoading = true;\r\n this._loadingText = messageText || \"\";\r\n this._fireLoadingChanged()\r\n },\r\n endCustomLoading: function() {\r\n this._isCustomLoading = false;\r\n this._loadingText = void 0;\r\n this._fireLoadingChanged()\r\n },\r\n refresh: function(options) {\r\n if (true === options) {\r\n options = {\r\n reload: true,\r\n changesOnly: true\r\n }\r\n } else {\r\n if (!options) {\r\n options = {\r\n lookup: true,\r\n selection: true,\r\n reload: true\r\n }\r\n }\r\n }\r\n var that = this;\r\n var dataSource = that.getDataSource();\r\n var changesOnly = options.changesOnly;\r\n var d = new _deferred.Deferred;\r\n var customizeLoadResult = function() {\r\n that._repaintChangesOnly = !!changesOnly\r\n };\r\n (0, _deferred.when)(!options.lookup || that._columnsController.refresh()).always(function() {\r\n if (options.load || options.reload) {\r\n dataSource && dataSource.on(\"customizeLoadResult\", customizeLoadResult);\r\n (0, _deferred.when)(that.reload(options.reload, changesOnly)).always(function() {\r\n dataSource && dataSource.off(\"customizeLoadResult\", customizeLoadResult);\r\n that._repaintChangesOnly = void 0\r\n }).done(d.resolve).fail(d.reject)\r\n } else {\r\n that.updateItems({\r\n repaintChangesOnly: options.changesOnly\r\n });\r\n d.resolve()\r\n }\r\n });\r\n return d.promise()\r\n },\r\n getVisibleRows: function() {\r\n return this.items()\r\n },\r\n _disposeDataSource: function() {\r\n this.setDataSource(null)\r\n },\r\n dispose: function() {\r\n this._disposeDataSource();\r\n this.callBase.apply(this, arguments)\r\n },\r\n repaintRows: function(rowIndexes, changesOnly) {\r\n rowIndexes = Array.isArray(rowIndexes) ? rowIndexes : [rowIndexes];\r\n if (rowIndexes.length > 1 || (0, _type.isDefined)(rowIndexes[0])) {\r\n this.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndexes,\r\n isFullUpdate: !changesOnly\r\n })\r\n }\r\n },\r\n skipProcessingPagingChange: function(fullName) {\r\n return this._skipProcessingPagingChange && (\"paging.pageIndex\" === fullName || \"paging.pageSize\" === fullName)\r\n },\r\n getUserState: function() {\r\n return {\r\n searchText: this.option(\"searchPanel.text\"),\r\n pageIndex: this.pageIndex(),\r\n pageSize: this.pageSize()\r\n }\r\n },\r\n getCachedStoreData: function() {\r\n return this._dataSource && this._dataSource.getCachedStoreData()\r\n }\r\n };\r\n _uiGrid_core2.default.proxyMethod(members, \"load\");\r\n _uiGrid_core2.default.proxyMethod(members, \"reload\");\r\n _uiGrid_core2.default.proxyMethod(members, \"push\");\r\n _uiGrid_core2.default.proxyMethod(members, \"itemsCount\", 0);\r\n _uiGrid_core2.default.proxyMethod(members, \"totalItemsCount\", 0);\r\n _uiGrid_core2.default.proxyMethod(members, \"hasKnownLastPage\", true);\r\n _uiGrid_core2.default.proxyMethod(members, \"isLoaded\", true);\r\n _uiGrid_core2.default.proxyMethod(members, \"totalCount\", 0);\r\n return members\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.context_menu.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CONTEXT_MENU = \"dx-context-menu\";\r\nvar viewName = {\r\n columnHeadersView: \"header\",\r\n rowsView: \"content\",\r\n footerView: \"footer\",\r\n headerPanel: \"headerPanel\"\r\n};\r\nvar VIEW_NAMES = [\"columnHeadersView\", \"rowsView\", \"footerView\", \"headerPanel\"];\r\nvar ContextMenuController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n this.createAction(\"onContextMenuPreparing\")\r\n },\r\n getContextMenuItems: function(dxEvent) {\r\n if (!dxEvent) {\r\n return false\r\n }\r\n var that = this;\r\n var $targetElement = (0, _renderer.default)(dxEvent.target);\r\n var $element;\r\n var $targetRowElement;\r\n var $targetCellElement;\r\n var menuItems;\r\n (0, _iterator.each)(VIEW_NAMES, function() {\r\n var view = that.getView(this);\r\n $element = view && view.element();\r\n if ($element && ($element.is($targetElement) || $element.find($targetElement).length)) {\r\n $targetCellElement = $targetElement.closest(\".dx-row > td, .dx-row > tr\");\r\n $targetRowElement = $targetCellElement.parent();\r\n var rowIndex = view.getRowIndex($targetRowElement);\r\n var columnIndex = $targetCellElement[0] && $targetCellElement[0].cellIndex;\r\n var rowOptions = $targetRowElement.data(\"options\");\r\n var options = {\r\n event: dxEvent,\r\n targetElement: (0, _element.getPublicElement)($targetElement),\r\n target: viewName[this],\r\n rowIndex: rowIndex,\r\n row: view._getRows()[rowIndex],\r\n columnIndex: columnIndex,\r\n column: rowOptions && rowOptions.cells[columnIndex].column\r\n };\r\n options.items = view.getContextMenuItems && view.getContextMenuItems(options);\r\n that.executeAction(\"onContextMenuPreparing\", options);\r\n that._contextMenuPrepared(options);\r\n menuItems = options.items;\r\n if (menuItems) {\r\n return false\r\n }\r\n }\r\n });\r\n return menuItems\r\n },\r\n _contextMenuPrepared: _common.noop\r\n});\r\nvar ContextMenuView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element().addClass(CONTEXT_MENU);\r\n this.setAria(\"role\", \"presentation\", $element);\r\n this._createComponent($element, _context_menu.default, {\r\n onPositioning: function(actionArgs) {\r\n var event = actionArgs.event;\r\n var contextMenuInstance = actionArgs.component;\r\n var items = that.getController(\"contextMenu\").getContextMenuItems(event);\r\n if (items) {\r\n contextMenuInstance.option(\"items\", items);\r\n event.stopPropagation()\r\n } else {\r\n actionArgs.cancel = true\r\n }\r\n },\r\n onItemClick: function(params) {\r\n params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n },\r\n cssClass: that.getWidgetContainerClass(),\r\n target: that.component.$element()\r\n })\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n onContextMenuPreparing: null\r\n }\r\n },\r\n controllers: {\r\n contextMenu: ContextMenuController\r\n },\r\n views: {\r\n contextMenuView: ContextMenuView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_chooser.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _themes = require(\"../themes\");\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_CHOOSER_CLASS = \"column-chooser\";\r\nvar COLUMN_CHOOSER_BUTTON_CLASS = \"column-chooser-button\";\r\nvar NOTOUCH_ACTION_CLASS = \"notouch-action\";\r\nvar COLUMN_CHOOSER_LIST_CLASS = \"column-chooser-list\";\r\nvar COLUMN_CHOOSER_PLAIN_CLASS = \"column-chooser-plain\";\r\nvar COLUMN_CHOOSER_DRAG_CLASS = \"column-chooser-mode-drag\";\r\nvar COLUMN_CHOOSER_SELECT_CLASS = \"column-chooser-mode-select\";\r\nvar COLUMN_CHOOSER_ICON_NAME = \"column-chooser\";\r\nvar COLUMN_CHOOSER_ITEM_CLASS = \"dx-column-chooser-item\";\r\nvar TREEVIEW_NODE_SELECTOR = \".dx-treeview-node\";\r\nvar CHECKBOX_SELECTOR = \".dx-checkbox\";\r\nvar CLICK_TIMEOUT = 300;\r\nvar processItems = function(that, chooserColumns) {\r\n var items = [];\r\n var isSelectMode = \"select\" === that.option(\"columnChooser.mode\");\r\n if (chooserColumns.length) {\r\n (0, _iterator.each)(chooserColumns, function(index, column) {\r\n var item = {\r\n text: column.caption,\r\n cssClass: column.cssClass,\r\n allowHiding: column.allowHiding,\r\n expanded: true,\r\n id: column.index,\r\n disabled: false,\r\n disableCheckBox: false === column.allowHiding,\r\n parentId: (0, _type.isDefined)(column.ownerBand) ? column.ownerBand : null\r\n };\r\n if (isSelectMode) {\r\n item.selected = column.visible\r\n }\r\n items.push(item)\r\n })\r\n }\r\n return items\r\n};\r\nvar ColumnChooserController = _uiGrid_core.default.ViewController.inherit({\r\n renderShowColumnChooserButton: function($element) {\r\n var that = this;\r\n var columnChooserButtonClass = that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS);\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n var $showColumnChooserButton = $element.find(\".\" + columnChooserButtonClass);\r\n var $columnChooserButton;\r\n if (columnChooserEnabled) {\r\n if (!$showColumnChooserButton.length) {\r\n $columnChooserButton = (0, _renderer.default)(\"
\").addClass(columnChooserButtonClass).appendTo($element);\r\n that._createComponent($columnChooserButton, _button.default, {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: function() {\r\n that.getView(\"columnChooserView\").showColumnChooser()\r\n },\r\n hint: that.option(\"columnChooser.title\"),\r\n integrationOptions: {}\r\n })\r\n } else {\r\n $showColumnChooserButton.show()\r\n }\r\n } else {\r\n $showColumnChooserButton.hide()\r\n }\r\n },\r\n getPosition: function() {\r\n var rowsView = this.getView(\"rowsView\");\r\n return {\r\n my: \"right bottom\",\r\n at: \"right bottom\",\r\n of: rowsView && rowsView.element(),\r\n collision: \"fit\",\r\n offset: \"-2 -2\",\r\n boundaryOffset: \"2 2\"\r\n }\r\n }\r\n});\r\nvar ColumnChooserView = _uiGrid_core2.ColumnsView.inherit({\r\n _resizeCore: _common.noop,\r\n _isWinDevice: function() {\r\n return !!_devices.default.real().win\r\n },\r\n _updateList: function(change) {\r\n var items;\r\n var $popupContent = this._popupContainer.$content();\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var columnChooserList = this._columnChooserList;\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n if (isSelectMode && columnChooserList && change && \"selection\" === change.changeType) {\r\n items = processItems(this, chooserColumns);\r\n for (var i = 0; i < items.length; i++) {\r\n var selected = items[i].selected;\r\n var id = items[i].id;\r\n if (id === change.columnIndex) {\r\n if (selected) {\r\n columnChooserList.selectItem(id, selected)\r\n } else {\r\n columnChooserList.unselectItem(id, selected)\r\n }\r\n }\r\n }\r\n } else {\r\n if (!isSelectMode || !columnChooserList || \"full\" === change) {\r\n this._popupContainer._wrapper().toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_DRAG_CLASS), !isSelectMode).toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_SELECT_CLASS), isSelectMode);\r\n items = processItems(this, chooserColumns);\r\n this._renderTreeView($popupContent, items)\r\n }\r\n }\r\n },\r\n _initializePopupContainer: function() {\r\n var that = this;\r\n var $element = that.element().addClass(that.addWidgetPrefix(COLUMN_CHOOSER_CLASS));\r\n var columnChooserOptions = that.option(\"columnChooser\");\r\n var themeName = (0, _themes.current)();\r\n var isGenericTheme = (0, _themes.isGeneric)(themeName);\r\n var isMaterial = (0, _themes.isMaterial)(themeName);\r\n var dxPopupOptions = {\r\n visible: false,\r\n shading: false,\r\n showCloseButton: false,\r\n dragEnabled: true,\r\n resizeEnabled: true,\r\n toolbarItems: [{\r\n text: columnChooserOptions.title,\r\n toolbar: \"top\",\r\n location: isGenericTheme || isMaterial ? \"before\" : \"center\"\r\n }],\r\n position: that.getController(\"columnChooser\").getPosition(),\r\n width: columnChooserOptions.width,\r\n height: columnChooserOptions.height,\r\n rtlEnabled: that.option(\"rtlEnabled\"),\r\n onHidden: function() {\r\n if (that._isWinDevice()) {\r\n (0, _renderer.default)(\"body\").removeClass(that.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n container: columnChooserOptions.container\r\n };\r\n if (isGenericTheme || isMaterial) {\r\n (0, _extend.extend)(dxPopupOptions, {\r\n showCloseButton: true\r\n })\r\n } else {\r\n dxPopupOptions.toolbarItems[dxPopupOptions.toolbarItems.length] = {\r\n shortcut: \"cancel\"\r\n }\r\n }\r\n if (!(0, _type.isDefined)(this._popupContainer)) {\r\n that._popupContainer = that._createComponent($element, _popup.default, dxPopupOptions);\r\n that._popupContainer.on(\"optionChanged\", function(args) {\r\n if (\"visible\" === args.name) {\r\n that.renderCompleted.fire()\r\n }\r\n })\r\n } else {\r\n this._popupContainer.option(dxPopupOptions)\r\n }\r\n },\r\n _renderCore: function(change) {\r\n if (this._popupContainer) {\r\n this._updateList(change)\r\n }\r\n },\r\n _renderTreeView: function($container, items) {\r\n var that = this;\r\n var columnChooser = this.option(\"columnChooser\");\r\n var isSelectMode = \"select\" === columnChooser.mode;\r\n var treeViewConfig = {\r\n items: items,\r\n dataStructure: \"plain\",\r\n activeStateEnabled: true,\r\n focusStateEnabled: true,\r\n hoverStateEnabled: true,\r\n itemTemplate: \"item\",\r\n showCheckBoxesMode: \"none\",\r\n rootValue: null,\r\n searchEnabled: columnChooser.allowSearch,\r\n searchTimeout: columnChooser.searchTimeout,\r\n onItemRendered: function(e) {\r\n if (e.itemData.disableCheckBox) {\r\n var $treeViewNode = (0, _renderer.default)(e.itemElement).closest(TREEVIEW_NODE_SELECTOR);\r\n var $checkBox;\r\n if ($treeViewNode.length) {\r\n $checkBox = $treeViewNode.find(CHECKBOX_SELECTOR);\r\n if ($checkBox.length) {\r\n var checkBoxInstance = $checkBox.data(\"dxCheckBox\");\r\n checkBoxInstance && checkBoxInstance.option(\"disabled\", true)\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var scrollableInstance = $container.find(\".dx-scrollable\").data(\"dxScrollable\");\r\n var scrollTop = scrollableInstance && scrollableInstance.scrollTop();\r\n if (isSelectMode && !this._columnsController.isBandColumnsUsed()) {\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_PLAIN_CLASS))\r\n }\r\n treeViewConfig.onContentReady = function(e) {\r\n (0, _common.deferUpdate)(function() {\r\n if (scrollTop) {\r\n var scrollable = (0, _renderer.default)(e.element).find(\".dx-scrollable\").data(\"dxScrollable\");\r\n scrollable && scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }\r\n that.renderCompleted.fire()\r\n })\r\n };\r\n if (this._isWinDevice()) {\r\n treeViewConfig.useNativeScrolling = false\r\n }(0, _extend.extend)(treeViewConfig, isSelectMode ? this._prepareSelectModeConfig() : this._prepareDragModeConfig());\r\n if (this._columnChooserList) {\r\n if (!treeViewConfig.searchEnabled) {\r\n treeViewConfig.searchValue = \"\"\r\n }\r\n this._columnChooserList.option(treeViewConfig)\r\n } else {\r\n this._columnChooserList = this._createComponent($container, _tree_view.default, treeViewConfig);\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_LIST_CLASS))\r\n }\r\n },\r\n _prepareDragModeConfig: function() {\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return {\r\n noDataText: columnChooserOptions.emptyPanelText,\r\n activeStateEnabled: false,\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n itemTemplate: function(data, index, item) {\r\n (0, _renderer.default)(item).text(data.text).parent().addClass(data.cssClass).addClass(COLUMN_CHOOSER_ITEM_CLASS)\r\n }\r\n }\r\n },\r\n _prepareSelectModeConfig: function() {\r\n var that = this;\r\n var selectionChangedHandler = function(e) {\r\n var visibleColumns = that._columnsController.getVisibleColumns().filter(function(item) {\r\n return !item.command\r\n });\r\n var isLastColumnUnselected = 1 === visibleColumns.length && !e.itemData.selected;\r\n if (isLastColumnUnselected) {\r\n e.component.selectItem(e.itemElement)\r\n } else {\r\n setTimeout(function() {\r\n that._columnsController.columnOption(e.itemData.id, \"visible\", e.itemData.selected)\r\n }, CLICK_TIMEOUT)\r\n }\r\n };\r\n return {\r\n selectNodesRecursive: false,\r\n showCheckBoxesMode: \"normal\",\r\n onItemSelectionChanged: selectionChangedHandler\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n this.callBase(e);\r\n if (isSelectMode) {\r\n var needPartialRender = optionNames.visible && 1 === optionNames.length && void 0 !== e.columnIndex;\r\n var needFullRender = optionNames.showInColumnChooser || optionNames.caption || optionNames.visible || changeTypes.columns && optionNames.all;\r\n if (needPartialRender) {\r\n this.render(null, {\r\n changeType: \"selection\",\r\n columnIndex: e.columnIndex\r\n })\r\n } else {\r\n if (needFullRender) {\r\n this.render(null, \"full\")\r\n }\r\n }\r\n }\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._initializePopupContainer();\r\n this.render(null, \"full\");\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getColumnElements: function() {\r\n var result = [];\r\n var $node;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n var $content = this._popupContainer && this._popupContainer.$content();\r\n var $nodes = $content && $content.find(\".dx-treeview-node\");\r\n if ($nodes) {\r\n chooserColumns.forEach(function(column) {\r\n $node = $nodes.filter(\"[data-item-id = '\" + column.index + \"']\");\r\n var item = $node.length ? $node.children(\".\" + COLUMN_CHOOSER_ITEM_CLASS).get(0) : null;\r\n result.push(item)\r\n })\r\n }\r\n return (0, _renderer.default)(result)\r\n },\r\n getName: function() {\r\n return \"columnChooser\"\r\n },\r\n getColumns: function() {\r\n return this._columnsController.getChooserColumns()\r\n },\r\n allowDragging: function(column, sourceLocation) {\r\n var columnVisible = column && column.allowHiding && (\"columnChooser\" !== sourceLocation || !column.visible && this._columnsController.isParentColumnVisible(column.index));\r\n return this.isColumnChooserVisible() && columnVisible\r\n },\r\n getBoundingRect: function() {\r\n var that = this;\r\n var container = that._popupContainer && that._popupContainer._container();\r\n if (container && container.is(\":visible\")) {\r\n var offset = container.offset();\r\n return {\r\n left: offset.left,\r\n top: offset.top,\r\n right: offset.left + container.outerWidth(),\r\n bottom: offset.top + container.outerHeight()\r\n }\r\n }\r\n return null\r\n },\r\n showColumnChooser: function() {\r\n if (!this._popupContainer) {\r\n this._initializePopupContainer();\r\n this.render()\r\n }\r\n this._popupContainer.show();\r\n if (this._isWinDevice()) {\r\n (0, _renderer.default)(\"body\").addClass(this.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n hideColumnChooser: function() {\r\n if (this._popupContainer) {\r\n this._popupContainer.hide()\r\n }\r\n },\r\n isColumnChooserVisible: function() {\r\n var popupContainer = this._popupContainer;\r\n return popupContainer && popupContainer.option(\"visible\")\r\n },\r\n publicMethods: function() {\r\n return [\"showColumnChooser\", \"hideColumnChooser\"]\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnChooser: {\r\n enabled: false,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n mode: \"dragAndDrop\",\r\n width: 250,\r\n height: 260,\r\n title: _message.default.format(\"dxDataGrid-columnChooserTitle\"),\r\n emptyPanelText: _message.default.format(\"dxDataGrid-columnChooserEmptyText\"),\r\n container: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n columnChooser: ColumnChooserController\r\n },\r\n views: {\r\n columnChooserView: ColumnChooserView\r\n },\r\n extenders: {\r\n views: {\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._appendColumnChooserItem(items)\r\n },\r\n _appendColumnChooserItem: function(items) {\r\n var that = this;\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n if (columnChooserEnabled) {\r\n var onClickHandler = function() {\r\n that.component.getView(\"columnChooserView\").showColumnChooser()\r\n };\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS)))\r\n };\r\n var hintText = that.option(\"columnChooser.title\");\r\n var toolbarItem = {\r\n widget: \"dxButton\",\r\n options: {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: onClickHandler,\r\n hint: hintText,\r\n text: hintText,\r\n onInitialized: onInitialized\r\n },\r\n showText: \"inMenu\",\r\n location: \"after\",\r\n name: \"columnChooserButton\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 40\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isVisible: function() {\r\n var that = this;\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n return that.callBase() || columnChooserEnabled\r\n }\r\n }\r\n },\r\n controllers: {\r\n columns: {\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var columnChooserMode = this.option(\"columnChooser.mode\");\r\n var isMoveColumnDisallowed = \"select\" === columnChooserMode && \"columnChooser\" === targetLocation;\r\n return isMoveColumnDisallowed ? false : this.callBase(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_resizing_reordering.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMNS_SEPARATOR_CLASS = \"columns-separator\";\r\nvar COLUMNS_SEPARATOR_TRANSPARENT = \"columns-separator-transparent\";\r\nvar DRAGGING_HEADER_CLASS = \"drag-header\";\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_DRAG_ACTION_CLASS = \"drag-action\";\r\nvar TRACKER_CLASS = \"tracker\";\r\nvar HEADERS_DROP_HIGHLIGHT_CLASS = \"drop-highlight\";\r\nvar BLOCK_SEPARATOR_CLASS = \"dx-block-separator\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar DRAGGING_COMMAND_CELL_CLASS = \"dx-drag-command-cell\";\r\nvar MODULE_NAMESPACE = \"dxDataGridResizingReordering\";\r\nvar COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH = 10;\r\nvar DRAGGING_DELTA = 5;\r\nvar COLUMN_OPACITY = .5;\r\nvar allowResizing = function(that) {\r\n return that.option(\"allowColumnResizing\") || that.getController(\"columns\").isColumnOptionUsed(\"allowResizing\")\r\n};\r\nvar allowReordering = function(that) {\r\n return that.option(\"allowColumnReordering\") || that.getController(\"columns\").isColumnOptionUsed(\"allowReordering\")\r\n};\r\nvar TrackerView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n this.callBase();\r\n this.element().addClass(this.addWidgetPrefix(TRACKER_CLASS));\r\n this.hide()\r\n },\r\n _unsubscribeFromCallback: function() {\r\n if (this._positionChanged) {\r\n this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n }\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n that._positionChanged = function(position) {\r\n var $element = that.element();\r\n if ($element && $element.hasClass(that.addWidgetPrefix(TRACKER_CLASS))) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n this._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n this._unsubscribeFromCallback();\r\n if (args.value) {\r\n this._subscribeToCallback();\r\n this._invalidate()\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._subscribeToCallback()\r\n },\r\n isVisible: function() {\r\n return allowResizing(this)\r\n },\r\n show: function() {\r\n this.element().show()\r\n },\r\n hide: function() {\r\n this.element() && this.element().hide()\r\n },\r\n setHeight: function(value) {\r\n this.element().height(value)\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar SeparatorView = _uiGrid_core.default.View.inherit({\r\n _renderSeparator: function() {},\r\n _renderCore: function(options) {\r\n this.callBase(options);\r\n this._isShown = true;\r\n this._renderSeparator();\r\n this.hide()\r\n },\r\n show: function() {\r\n this._isShown = true\r\n },\r\n hide: function() {\r\n this._isShown = false\r\n },\r\n height: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if ((0, _type.isDefined)(value)) {\r\n $element.height(value)\r\n } else {\r\n return $element.height()\r\n }\r\n }\r\n },\r\n width: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if ((0, _type.isDefined)(value)) {\r\n $element.width(value)\r\n } else {\r\n return $element.width()\r\n }\r\n }\r\n }\r\n});\r\nvar ColumnsSeparatorView = SeparatorView.inherit({\r\n _renderSeparator: function() {\r\n this.callBase();\r\n var $element = this.element();\r\n $element.addClass(this.addWidgetPrefix(COLUMNS_SEPARATOR_CLASS))\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n var $element;\r\n that._positionChanged = function(position) {\r\n $element = that.element();\r\n if ($element) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n that._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n _unsubscribeFromCallback: function() {\r\n this._positionChanged && this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n },\r\n _init: function() {\r\n this._isTransparent = allowResizing(this);\r\n if (this.isVisible()) {\r\n this._subscribeToCallback()\r\n }\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || allowResizing(this))\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._invalidate();\r\n this.hide(true)\r\n } else {\r\n this._unsubscribeFromCallback();\r\n this._isTransparent = allowResizing(this);\r\n this.hide(true)\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._init()\r\n },\r\n show: function() {\r\n var that = this;\r\n var $element = this.element();\r\n if ($element && !that._isShown) {\r\n if (that._isTransparent) {\r\n $element.removeClass(that.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT))\r\n } else {\r\n $element.show()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n hide: function(force) {\r\n var $element = this.element();\r\n var columnsSeparatorTransparent = this.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT);\r\n if ($element && (this._isShown || force)) {\r\n if (this._isTransparent) {\r\n $element.addClass(columnsSeparatorTransparent);\r\n $element.css(\"left\", \"\");\r\n $element.show()\r\n } else {\r\n if ($element.hasClass(columnsSeparatorTransparent)) {\r\n $element.removeClass(columnsSeparatorTransparent)\r\n }\r\n $element.hide()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n moveByX: function(outerX) {\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"left\", outerX - this._parentElement().offset().left)\r\n }\r\n },\r\n changeCursor: function(cursorName) {\r\n cursorName = (0, _type.isDefined)(cursorName) ? cursorName : \"\";\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"cursor\", cursorName)\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar BlockSeparatorView = SeparatorView.inherit({\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n if (!isLoading) {\r\n that.hide()\r\n }\r\n })\r\n },\r\n _renderSeparator: function() {\r\n this.callBase();\r\n this.element().addClass(BLOCK_SEPARATOR_CLASS).html(\" \")\r\n },\r\n hide: function() {\r\n var that = this;\r\n var $parent = this._parentElement();\r\n var $element = this.element();\r\n if ($element && this._isShown) {\r\n $element.css(\"display\", \"none\")\r\n }\r\n if ($parent && !$parent.children(\".\" + BLOCK_SEPARATOR_CLASS).length) {\r\n $parent.prepend(that.element())\r\n }\r\n that.callBase()\r\n },\r\n isVisible: function() {\r\n var groupPanelOptions = this.option(\"groupPanel\");\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return groupPanelOptions && groupPanelOptions.visible || columnChooserOptions && columnChooserOptions.enabled\r\n },\r\n show: function(targetLocation) {\r\n var that = this;\r\n var $element = this.element();\r\n var startAnimate = function(toOptions) {\r\n _fx.default.stop($element, true);\r\n _fx.default.animate($element, {\r\n type: \"slide\",\r\n from: {\r\n width: 0,\r\n display: toOptions.display\r\n },\r\n to: toOptions,\r\n duration: 300,\r\n easing: \"swing\"\r\n })\r\n };\r\n if ($element && !that._isShown) {\r\n switch (targetLocation) {\r\n case \"group\":\r\n startAnimate({\r\n width: \"50px\",\r\n display: \"inline-block\"\r\n });\r\n break;\r\n case \"columnChooser\":\r\n startAnimate({\r\n width: \"100%\",\r\n display: \"block\"\r\n });\r\n break;\r\n default:\r\n $element.css(\"display\", \"\")\r\n }\r\n }\r\n that.callBase()\r\n }\r\n});\r\nvar DraggingHeaderView = _uiGrid_core.default.View.inherit({\r\n _isDragging: false,\r\n isDragging: function() {\r\n return this._isDragging\r\n },\r\n _getDraggingPanelByPos: function(pos) {\r\n var that = this;\r\n var result;\r\n (0, _iterator.each)(that._dragOptions.draggingPanels, function(index, draggingPanel) {\r\n if (draggingPanel) {\r\n var boundingRect = draggingPanel.getBoundingRect();\r\n if (boundingRect && (void 0 === boundingRect.bottom || pos.y < boundingRect.bottom) && (void 0 === boundingRect.top || pos.y > boundingRect.top) && (void 0 === boundingRect.left || pos.x > boundingRect.left) && (void 0 === boundingRect.right || pos.x < boundingRect.right)) {\r\n result = draggingPanel;\r\n return false\r\n }\r\n }\r\n });\r\n return result\r\n },\r\n _renderCore: function() {\r\n this.element().addClass(this.addWidgetPrefix(DRAGGING_HEADER_CLASS) + \" \" + this.addWidgetPrefix(CELL_CONTENT_CLASS) + \" \" + WIDGET_CLASS).hide()\r\n },\r\n _resetTargetColumnOptions: function() {\r\n var params = this._dropOptions;\r\n params.targetColumnIndex = -1;\r\n delete params.targetColumnElement;\r\n delete params.isLast;\r\n delete params.posX;\r\n delete params.posY\r\n },\r\n _getVisibleIndexObject: function(rowIndex, visibleIndex) {\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n return {\r\n columnIndex: visibleIndex,\r\n rowIndex: rowIndex\r\n }\r\n }\r\n return visibleIndex\r\n },\r\n dispose: function() {\r\n var element = this.element();\r\n this._dragOptions = null;\r\n element && element.parent().find(\".\" + this.addWidgetPrefix(DRAGGING_HEADER_CLASS)).remove()\r\n },\r\n isVisible: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var commonColumnSettings = columnsController.getCommonSettings();\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || commonColumnSettings.allowGrouping || commonColumnSettings.allowHiding)\r\n },\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this._controller = this.getController(\"draggingHeader\");\r\n this._columnsResizerViewController = this.getController(\"columnsResizer\");\r\n this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n var element = that.element();\r\n if (!isLoading && element) {\r\n element.hide()\r\n }\r\n })\r\n },\r\n dragHeader: function(options) {\r\n var that = this;\r\n var columnElement = options.columnElement;\r\n var isCommandColumn = !!options.sourceColumn.type;\r\n that._isDragging = true;\r\n that._dragOptions = options;\r\n that._dropOptions = {\r\n sourceIndex: options.index,\r\n sourceColumnIndex: that._getVisibleIndexObject(options.rowIndex, options.columnIndex),\r\n sourceColumnElement: options.columnElement,\r\n sourceLocation: options.sourceLocation\r\n };\r\n var document = _dom_adapter.default.getDocument();\r\n that._onSelectStart = document.onselectstart;\r\n document.onselectstart = function() {\r\n return false\r\n };\r\n that._controller.drag(that._dropOptions);\r\n that.element().css({\r\n textAlign: columnElement && columnElement.css(\"textAlign\"),\r\n height: columnElement && (isCommandColumn && columnElement.get(0).clientHeight || columnElement.height()),\r\n width: columnElement && (isCommandColumn && columnElement.get(0).clientWidth || columnElement.width()),\r\n whiteSpace: columnElement && columnElement.css(\"whiteSpace\")\r\n }).addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS)).toggleClass(DRAGGING_COMMAND_CELL_CLASS, isCommandColumn).text(isCommandColumn ? \"\" : options.sourceColumn.caption);\r\n that.element().appendTo(_swatch_container.default.getSwatchContainer(columnElement))\r\n },\r\n moveHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var eventData = (0, _index.eventData)(e);\r\n var isResizing = that._columnsResizerViewController ? that._columnsResizerViewController.isResizing() : false;\r\n var dragOptions = that._dragOptions;\r\n if (that._isDragging && !isResizing) {\r\n var $element = that.element();\r\n var moveDeltaX = Math.abs(eventData.x - dragOptions.columnElement.offset().left - dragOptions.deltaX);\r\n var moveDeltaY = Math.abs(eventData.y - dragOptions.columnElement.offset().top - dragOptions.deltaY);\r\n if ($element.is(\":visible\") || moveDeltaX > DRAGGING_DELTA || moveDeltaY > DRAGGING_DELTA) {\r\n $element.show();\r\n var newLeft = eventData.x - dragOptions.deltaX;\r\n var newTop = eventData.y - dragOptions.deltaY;\r\n $element.css({\r\n left: newLeft,\r\n top: newTop\r\n });\r\n that.dockHeader(eventData)\r\n }\r\n e.preventDefault()\r\n }\r\n },\r\n dockHeader: function(eventData) {\r\n var that = this;\r\n var targetDraggingPanel = that._getDraggingPanelByPos(eventData);\r\n var controller = that._controller;\r\n var params = that._dropOptions;\r\n var dragOptions = that._dragOptions;\r\n if (targetDraggingPanel) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isVerticalOrientation = \"columnChooser\" === targetDraggingPanel.getName();\r\n var axisName = isVerticalOrientation ? \"y\" : \"x\";\r\n var targetLocation = targetDraggingPanel.getName();\r\n var rowIndex = \"headers\" === targetLocation ? dragOptions.rowIndex : void 0;\r\n var sourceColumn = dragOptions.sourceColumn;\r\n var columnElements = targetDraggingPanel.getColumnElements(rowIndex, null === sourceColumn || void 0 === sourceColumn ? void 0 : sourceColumn.ownerBand) || [];\r\n var pointsByTarget = dragOptions.pointsByTarget = dragOptions.pointsByTarget || {};\r\n var pointsByColumns = \"columnChooser\" === targetLocation ? [] : pointsByTarget[targetLocation] || controller._generatePointsByColumns((0, _extend.extend)({}, dragOptions, {\r\n targetDraggingPanel: targetDraggingPanel,\r\n columns: targetDraggingPanel.getColumns(rowIndex),\r\n columnElements: columnElements,\r\n isVerticalOrientation: isVerticalOrientation,\r\n startColumnIndex: \"headers\" === targetLocation && (0, _renderer.default)(columnElements[0]).index()\r\n }));\r\n pointsByTarget[targetLocation] = pointsByColumns;\r\n params.targetLocation = targetLocation;\r\n if (pointsByColumns.length > 0) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n var centerPosition = pointsByColumns[i + 1] && (pointsByColumns[i][axisName] + pointsByColumns[i + 1][axisName]) / 2;\r\n if (void 0 === centerPosition || (rtlEnabled && \"x\" === axisName ? eventData[axisName] > centerPosition : eventData[axisName] < centerPosition)) {\r\n params.targetColumnIndex = that._getVisibleIndexObject(rowIndex, pointsByColumns[i].columnIndex);\r\n if (columnElements[i]) {\r\n params.targetColumnElement = columnElements.eq(i);\r\n params.isLast = false\r\n } else {\r\n params.targetColumnElement = columnElements.last();\r\n params.isLast = true\r\n }\r\n params.posX = pointsByColumns[i].x;\r\n params.posY = pointsByColumns[i].y;\r\n controller.dock(params);\r\n break\r\n }\r\n }\r\n } else {\r\n that._resetTargetColumnOptions();\r\n controller.dock(params)\r\n }\r\n }\r\n },\r\n dropHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var controller = that._controller;\r\n that.element().hide();\r\n if (controller && that._isDragging) {\r\n controller.drop(that._dropOptions)\r\n }\r\n that.element().appendTo(that._parentElement());\r\n that._dragOptions = null;\r\n that._dropOptions = null;\r\n that._isDragging = false;\r\n _dom_adapter.default.getDocument().onselectstart = that._onSelectStart || null\r\n }\r\n});\r\nvar isNextColumnResizingMode = function(that) {\r\n return \"widget\" !== that.option(\"columnResizingMode\")\r\n};\r\nvar ColumnsResizerViewController = _uiGrid_core.default.ViewController.inherit({\r\n _isHeadersRowArea: function(posY) {\r\n if (this._columnHeadersView) {\r\n var element = this._columnHeadersView.element();\r\n if (element) {\r\n var offsetTop = element.offset().top;\r\n var headersRowHeight = this._columnHeadersView.getHeadersRowHeight();\r\n return posY >= offsetTop && posY <= offsetTop + headersRowHeight\r\n }\r\n }\r\n return false\r\n },\r\n _isRtlParentStyle: function() {\r\n var _this$_$parentContain;\r\n return this.option(\"rtlEnabled\") && \"rtl\" === (null === (_this$_$parentContain = this._$parentContainer) || void 0 === _this$_$parentContain ? void 0 : _this$_$parentContain.parent().css(\"direction\"))\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n var firstPointColumnIndex = !isNextColumnMode && rtlEnabled && !isRtlParentStyle ? 0 : 1;\r\n if (point.index >= firstPointColumnIndex && point.index < cellsLength + (!isNextColumnMode && (!rtlEnabled || isRtlParentStyle) ? 1 : 0)) {\r\n point.columnIndex -= firstPointColumnIndex;\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumn = columns[point.columnIndex + 1] || {};\r\n return !(isNextColumnMode ? currentColumn.allowResizing && nextColumn.allowResizing : currentColumn.allowResizing)\r\n }\r\n return true\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n if (pointsByColumns) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n if (pointsByColumns[i].x === pointsByColumns[0].x && pointsByColumns[i + 1] && pointsByColumns[i].x === pointsByColumns[i + 1].x) {\r\n continue\r\n }\r\n if (pointsByColumns[i].x - deltaX <= currentX && currentX <= pointsByColumns[i].x + deltaX) {\r\n return pointsByColumns[i]\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n _moveSeparator: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var columnsSeparatorWidth = that._columnsSeparatorView.width();\r\n var isNextColumnMode = isNextColumnResizingMode(that);\r\n var deltaX = columnsSeparatorWidth / 2;\r\n var parentOffset = that._$parentContainer.offset();\r\n var parentOffsetLeft = parentOffset.left;\r\n var eventData = (0, _index.eventData)(e);\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n if (that._isResizing && that._resizingInfo) {\r\n if ((parentOffsetLeft <= eventData.x || !isNextColumnMode && isRtlParentStyle) && (!isNextColumnMode || eventData.x <= parentOffsetLeft + that._$parentContainer.width())) {\r\n if (that._updateColumnsWidthIfNeeded(eventData.x)) {\r\n var $cell = that._columnHeadersView.getColumnElements().eq(that._resizingInfo.currentColumnIndex);\r\n var cell = $cell[0];\r\n if (cell) {\r\n var outerWidth = cell.getBoundingClientRect().width;\r\n that._columnsSeparatorView.moveByX($cell.offset().left + ((isNextColumnMode || isRtlParentStyle) && rtlEnabled ? 0 : outerWidth));\r\n that._tablePositionController.update(that._targetPoint.y);\r\n e.preventDefault()\r\n }\r\n }\r\n }\r\n } else {\r\n if (that._isHeadersRowArea(eventData.y)) {\r\n if (that._previousParentOffset) {\r\n if (that._previousParentOffset.left !== parentOffset.left || that._previousParentOffset.top !== parentOffset.top) {\r\n that.pointsByColumns(null)\r\n }\r\n }\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, columnsSeparatorWidth);\r\n that._previousParentOffset = parentOffset;\r\n that._isReadyResizing = false;\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.changeCursor(\"col-resize\");\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - deltaX);\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._isReadyResizing = true;\r\n e.preventDefault()\r\n } else {\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n } else {\r\n that.pointsByColumns(null);\r\n that._isReadyResizing = false;\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n }\r\n },\r\n _endResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n if (that._isResizing) {\r\n that.pointsByColumns(null);\r\n that._resizingInfo = null;\r\n that._columnsSeparatorView.hide();\r\n that._columnsSeparatorView.changeCursor();\r\n that._trackerView.hide();\r\n that._isReadyResizing = false;\r\n that._isResizing = false\r\n }\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n return currentColumnIndex + 1\r\n },\r\n _setupResizingInfo: function(posX) {\r\n var that = this;\r\n var currentColumnIndex = that._targetPoint.columnIndex;\r\n var nextColumnIndex = that._getNextColumnIndex(currentColumnIndex);\r\n var currentHeader = that._columnHeadersView.getHeaderElement(currentColumnIndex);\r\n var nextHeader = that._columnHeadersView.getHeaderElement(nextColumnIndex);\r\n that._resizingInfo = {\r\n startPosX: posX,\r\n currentColumnIndex: currentColumnIndex,\r\n currentColumnWidth: currentHeader && currentHeader.length > 0 ? (0, _position.getBoundingRect)(currentHeader[0]).width : 0,\r\n nextColumnIndex: nextColumnIndex,\r\n nextColumnWidth: nextHeader && nextHeader.length > 0 ? (0, _position.getBoundingRect)(nextHeader[0]).width : 0\r\n }\r\n },\r\n _startResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var eventData = (0, _index.eventData)(e);\r\n if ((0, _index.isTouchEvent)(e)) {\r\n if (that._isHeadersRowArea(eventData.y)) {\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH);\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - that._columnsSeparatorView.width() / 2);\r\n that._isReadyResizing = true\r\n }\r\n } else {\r\n that._isReadyResizing = false\r\n }\r\n }\r\n if (that._isReadyResizing) {\r\n that._setupResizingInfo(eventData.x);\r\n that._isResizing = true;\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._columnsSeparatorView.show();\r\n that._trackerView.show();\r\n var scrollable = that.component.getScrollable();\r\n if (scrollable && that._isRtlParentStyle()) {\r\n that._scrollRight = scrollable.$content().width() - scrollable._container().width() - scrollable.scrollLeft()\r\n }\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n if (this.isResizing()) {\r\n this.getController(\"editorFactory\").loseFocus()\r\n }\r\n },\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columns = that._columnsController ? that._columnsController.getVisibleColumns() : [];\r\n var cells = that._columnHeadersView.getColumnElements();\r\n var pointsByColumns = [];\r\n if (cells && cells.length > 0) {\r\n pointsByColumns = _uiGrid_core2.default.getPointsByColumns(cells, function(point) {\r\n return that._pointCreated(point, cells.length, columns)\r\n })\r\n }\r\n that._pointsByColumns = pointsByColumns\r\n },\r\n _unsubscribeFromEvents: function() {\r\n this._moveSeparatorHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this._moveSeparatorHandler);\r\n this._startResizingHandler && _events_engine.default.off(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this._startResizingHandler);\r\n if (this._endResizingHandler) {\r\n _events_engine.default.off(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler)\r\n }\r\n },\r\n _subscribeToEvents: function() {\r\n this._moveSeparatorHandler = this.createAction(this._moveSeparator);\r\n this._startResizingHandler = this.createAction(this._startResizing);\r\n this._endResizingHandler = this.createAction(this._endResizing);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this, this._moveSeparatorHandler);\r\n _events_engine.default.on(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this, this._startResizingHandler);\r\n _events_engine.default.on(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler)\r\n },\r\n _updateColumnsWidthIfNeeded: function(posX) {\r\n var deltaX;\r\n var needUpdate = false;\r\n var nextCellWidth;\r\n var resizingInfo = this._resizingInfo;\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnsSeparatorWidth = this._columnsSeparatorView.width();\r\n var contentWidth = this._rowsView.contentWidth();\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var adaptColumnWidthByRatio = isNextColumnMode && this.option(\"adaptColumnWidthByRatio\") && !this.option(\"columnAutoWidth\");\r\n var minWidth;\r\n var nextColumn;\r\n var cellWidth;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n\r\n function isPercentWidth(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n }\r\n\r\n function setColumnWidth(column, columnWidth, contentWidth, adaptColumnWidthByRatio) {\r\n if (column) {\r\n var oldColumnWidth = column.width;\r\n if (oldColumnWidth) {\r\n adaptColumnWidthByRatio = isPercentWidth(oldColumnWidth)\r\n }\r\n if (adaptColumnWidthByRatio) {\r\n column && columnsController.columnOption(column.index, \"visibleWidth\", columnWidth);\r\n column && columnsController.columnOption(column.index, \"width\", (columnWidth / contentWidth * 100).toFixed(3) + \"%\")\r\n } else {\r\n column && columnsController.columnOption(column.index, \"visibleWidth\", null);\r\n column && columnsController.columnOption(column.index, \"width\", columnWidth)\r\n }\r\n }\r\n }\r\n\r\n function correctContentWidth(contentWidth, visibleColumns) {\r\n var allColumnsHaveWidth = visibleColumns.every(function(column) {\r\n return column.width\r\n });\r\n if (allColumnsHaveWidth) {\r\n var totalPercent = visibleColumns.reduce(function(sum, column) {\r\n if (isPercentWidth(column.width)) {\r\n sum += parseFloat(column.width)\r\n }\r\n return sum\r\n }, 0);\r\n if (totalPercent > 100) {\r\n contentWidth = contentWidth / totalPercent * 100\r\n }\r\n }\r\n return contentWidth\r\n }\r\n deltaX = posX - resizingInfo.startPosX;\r\n if ((isNextColumnMode || isRtlParentStyle) && rtlEnabled) {\r\n deltaX = -deltaX\r\n }\r\n cellWidth = resizingInfo.currentColumnWidth + deltaX;\r\n var column = visibleColumns[resizingInfo.currentColumnIndex];\r\n minWidth = column && column.minWidth || columnsSeparatorWidth;\r\n needUpdate = cellWidth >= minWidth;\r\n if (isNextColumnMode) {\r\n nextCellWidth = resizingInfo.nextColumnWidth - deltaX;\r\n nextColumn = visibleColumns[resizingInfo.nextColumnIndex];\r\n minWidth = nextColumn && nextColumn.minWidth || columnsSeparatorWidth;\r\n needUpdate = needUpdate && nextCellWidth >= minWidth\r\n }\r\n if (needUpdate) {\r\n columnsController.beginUpdate();\r\n cellWidth = Math.floor(cellWidth);\r\n contentWidth = correctContentWidth(contentWidth, visibleColumns);\r\n setColumnWidth(column, cellWidth, contentWidth, adaptColumnWidthByRatio);\r\n if (isNextColumnMode) {\r\n nextCellWidth = Math.floor(nextCellWidth);\r\n setColumnWidth(nextColumn, nextCellWidth, contentWidth, adaptColumnWidthByRatio)\r\n } else {\r\n var columnWidths = this._columnHeadersView.getColumnWidths();\r\n columnWidths[resizingInfo.currentColumnIndex] = cellWidth;\r\n var hasScroll = columnWidths.reduce(function(totalWidth, width) {\r\n return totalWidth + width\r\n }, 0) > this._rowsView.contentWidth();\r\n if (!hasScroll) {\r\n var lastColumnIndex = _uiGrid_core2.default.getLastResizableColumnIndex(visibleColumns);\r\n if (lastColumnIndex >= 0) {\r\n columnsController.columnOption(visibleColumns[lastColumnIndex].index, \"visibleWidth\", \"auto\")\r\n }\r\n }\r\n for (var i = 0; i < columnWidths.length; i++) {\r\n if (visibleColumns[i] && visibleColumns[i] !== column && void 0 === visibleColumns[i].width) {\r\n columnsController.columnOption(visibleColumns[i].index, \"width\", columnWidths[i])\r\n }\r\n }\r\n }\r\n columnsController.endUpdate();\r\n if (!isNextColumnMode) {\r\n this.component.updateDimensions();\r\n var scrollable = this.component.getScrollable();\r\n if (scrollable && isRtlParentStyle) {\r\n var left = scrollable.$content().width() - scrollable._container().width() - this._scrollRight;\r\n scrollable.scrollTo({\r\n left: left\r\n })\r\n }\r\n }\r\n }\r\n return needUpdate\r\n },\r\n _subscribeToCallback: function(callback, handler) {\r\n callback.add(handler);\r\n this._subscribesToCallbacks.push({\r\n callback: callback,\r\n handler: handler\r\n })\r\n },\r\n _unsubscribeFromCallbacks: function() {\r\n for (var i = 0; i < this._subscribesToCallbacks.length; i++) {\r\n var subscribe = this._subscribesToCallbacks[i];\r\n subscribe.callback.remove(subscribe.handler)\r\n }\r\n this._subscribesToCallbacks = []\r\n },\r\n _unsubscribes: function() {\r\n this._unsubscribeFromEvents();\r\n this._unsubscribeFromCallbacks()\r\n },\r\n _init: function() {\r\n var that = this;\r\n var generatePointsByColumnsHandler = function() {\r\n if (!that._isResizing) {\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n var generatePointsByColumnsScrollHandler = function(offset) {\r\n if (that._scrollLeft !== offset.left) {\r\n that._scrollLeft = offset.left;\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._trackerView = that.getView(\"trackerView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController = that.getController(\"columns\");\r\n that._tablePositionController = that.getController(\"tablePosition\");\r\n that._$parentContainer = that.component.$element();\r\n that._subscribeToCallback(that._columnHeadersView.renderCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnHeadersView.resizeCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnsSeparatorView.renderCompleted, function() {\r\n that._unsubscribeFromEvents();\r\n that._subscribeToEvents()\r\n });\r\n that._subscribeToCallback(that._rowsView.renderCompleted, function() {\r\n that._rowsView.scrollChanged.remove(generatePointsByColumnsScrollHandler);\r\n that._rowsView.scrollChanged.add(generatePointsByColumnsScrollHandler)\r\n });\r\n var previousScrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n var previousTableHeight = 0;\r\n that._subscribeToCallback(that.getController(\"tablePosition\").positionChanged, function(e) {\r\n if (that._isResizing && !that._rowsView.isResizing) {\r\n var scrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n if (previousScrollbarVisibility !== scrollbarVisibility || previousTableHeight && previousTableHeight !== e.height) {\r\n previousScrollbarVisibility = scrollbarVisibility;\r\n previousTableHeight = e.height;\r\n that.component.updateDimensions()\r\n } else {\r\n that._rowsView.updateFreeSpaceRowHeight()\r\n }\r\n }\r\n previousTableHeight = e.height\r\n })\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._subscribeToEvents()\r\n } else {\r\n this._unsubscribes()\r\n }\r\n }\r\n },\r\n isResizing: function() {\r\n return this._isResizing\r\n },\r\n init: function() {\r\n this._subscribesToCallbacks = [];\r\n if (allowResizing(this)) {\r\n this._init()\r\n }\r\n },\r\n pointsByColumns: function(value) {\r\n if (void 0 !== value) {\r\n this._pointsByColumns = value\r\n } else {\r\n if (!this._pointsByColumns) {\r\n this._generatePointsByColumns()\r\n }\r\n return this._pointsByColumns\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribes();\r\n this.callBase()\r\n }\r\n});\r\nvar TablePositionViewController = _uiGrid_core.default.ViewController.inherit({\r\n update: function(top) {\r\n var that = this;\r\n var params = {};\r\n var $element = that._columnHeadersView.element();\r\n var offset = $element && $element.offset();\r\n var offsetTop = offset && offset.top || 0;\r\n var diffOffsetTop = (0, _type.isDefined)(top) ? Math.abs(top - offsetTop) : 0;\r\n var columnsHeadersHeight = that._columnHeadersView ? that._columnHeadersView.getHeight() : 0;\r\n var scrollBarWidth = that._rowsView.getScrollbarWidth(true);\r\n var rowsHeight = that._rowsView ? that._rowsView.height() - scrollBarWidth : 0;\r\n var columnsResizerController = that.component.getController(\"columnsResizer\");\r\n var draggingHeaderView = that.component.getView(\"draggingHeaderView\");\r\n params.height = columnsHeadersHeight;\r\n var isDraggingOrResizing = false !== columnsResizerController.isResizing() || draggingHeaderView.isDragging();\r\n if (isDraggingOrResizing) {\r\n params.height += rowsHeight - diffOffsetTop\r\n }\r\n if (null !== top && $element && $element.length) {\r\n params.top = $element[0].offsetTop + diffOffsetTop\r\n }\r\n that.positionChanged.fire(params)\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnHeadersView = this.getView(\"columnHeadersView\");\r\n that._rowsView = this.getView(\"rowsView\");\r\n that._pagerView = this.getView(\"pagerView\");\r\n that._rowsView.resizeCompleted.add(function() {\r\n if (that.option(\"allowColumnResizing\")) {\r\n var targetPoint = that.getController(\"columnsResizer\")._targetPoint;\r\n that.update(targetPoint ? targetPoint.y : null)\r\n }\r\n })\r\n },\r\n ctor: function(component) {\r\n this.callBase(component);\r\n this.positionChanged = (0, _callbacks.default)()\r\n }\r\n});\r\nvar DraggingHeaderViewController = _uiGrid_core.default.ViewController.inherit({\r\n _generatePointsByColumns: function(options) {\r\n var that = this;\r\n return _uiGrid_core2.default.getPointsByColumns(options.columnElements, function(point) {\r\n return that._pointCreated(point, options.columns, options.targetDraggingPanel.getName(), options.sourceColumn)\r\n }, options.isVerticalOrientation, options.startColumnIndex)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var targetColumn = columns[point.columnIndex];\r\n var prevColumn = columns[point.columnIndex - 1];\r\n switch (location) {\r\n case \"columnChooser\":\r\n return true;\r\n case \"headers\":\r\n return sourceColumn && !sourceColumn.allowReordering || (!targetColumn || !targetColumn.allowReordering) && (!prevColumn || !prevColumn.allowReordering);\r\n default:\r\n return 0 === columns.length\r\n }\r\n },\r\n _subscribeToEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columns;\r\n var rowCount = draggingPanel.getRowCount ? draggingPanel.getRowCount() : 1;\r\n var nameDraggingPanel = draggingPanel.getName();\r\n var subscribeToEvents = function(index, columnElement) {\r\n if (!columnElement) {\r\n return\r\n }\r\n var $columnElement = (0, _renderer.default)(columnElement);\r\n var column = columns[index];\r\n if (draggingPanel.allowDragging(column, nameDraggingPanel, draggingPanels)) {\r\n $columnElement.addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE), that.createAction(function(args) {\r\n var e = args.event;\r\n var eventData = (0, _index.eventData)(e);\r\n draggingHeader.dragHeader({\r\n deltaX: eventData.x - (0, _renderer.default)(e.currentTarget).offset().left,\r\n deltaY: eventData.y - (0, _renderer.default)(e.currentTarget).offset().top,\r\n sourceColumn: column,\r\n index: column.index,\r\n columnIndex: index,\r\n columnElement: $columnElement,\r\n sourceLocation: nameDraggingPanel,\r\n draggingPanels: draggingPanels,\r\n rowIndex: that._columnsController.getRowIndex(column.index, true)\r\n })\r\n }));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.moveHeader));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.dropHeader))\r\n }\r\n };\r\n for (var i = 0; i < rowCount; i++) {\r\n var columnElements = draggingPanel.getColumnElements(i) || [];\r\n if (columnElements.length) {\r\n columns = draggingPanel.getColumns(i) || [];\r\n (0, _iterator.each)(columnElements, subscribeToEvents)\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _unsubscribeFromEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columnElements = draggingPanel.getColumnElements() || [];\r\n (0, _iterator.each)(columnElements, function(index, columnElement) {\r\n var $columnElement = (0, _renderer.default)(columnElement);\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE));\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE));\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE));\r\n $columnElement.removeClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS))\r\n })\r\n }\r\n })\r\n },\r\n _getSeparator: function(targetLocation) {\r\n return \"headers\" === targetLocation ? this._columnsSeparatorView : this._blockSeparatorView\r\n },\r\n hideSeparators: function(type) {\r\n var blockSeparator = this._blockSeparatorView;\r\n var columnsSeparator = this._columnsSeparatorView;\r\n this._animationColumnIndex = null;\r\n blockSeparator && blockSeparator.hide();\r\n \"block\" !== type && columnsSeparator && columnsSeparator.hide()\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnsController = that.getController(\"columns\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._draggingHeaderView = that.getView(\"draggingHeaderView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._blockSeparatorView = that.getView(\"blockSeparatorView\");\r\n that._headerPanelView = that.getView(\"headerPanel\");\r\n that._columnChooserView = that.getView(\"columnChooserView\");\r\n var subscribeToEvents = function() {\r\n if (that._draggingHeaderView) {\r\n var draggingPanels = [that._columnChooserView, that._columnHeadersView, that._headerPanelView];\r\n that._unsubscribeFromEvents(that._draggingHeaderView, draggingPanels);\r\n that._subscribeToEvents(that._draggingHeaderView, draggingPanels)\r\n }\r\n };\r\n that._columnHeadersView.renderCompleted.add(subscribeToEvents);\r\n that._headerPanelView && that._headerPanelView.renderCompleted.add(subscribeToEvents);\r\n that._columnChooserView && that._columnChooserView.renderCompleted.add(subscribeToEvents)\r\n },\r\n allowDrop: function(parameters) {\r\n return this._columnsController.allowMoveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n },\r\n drag: function(parameters) {\r\n var sourceIndex = parameters.sourceIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n var headersView = this._columnHeadersView;\r\n var rowsView = this._rowsView;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: COLUMN_OPACITY\r\n });\r\n if (\"headers\" === sourceLocation) {\r\n headersView && headersView.setRowsOpacity(sourceIndex, COLUMN_OPACITY);\r\n rowsView && rowsView.setRowsOpacity(sourceIndex, COLUMN_OPACITY)\r\n }\r\n }\r\n },\r\n dock: function(parameters) {\r\n var that = this;\r\n var targetColumnIndex = (0, _type.isObject)(parameters.targetColumnIndex) ? parameters.targetColumnIndex.columnIndex : parameters.targetColumnIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var targetLocation = parameters.targetLocation;\r\n var separator = that._getSeparator(targetLocation);\r\n var hasTargetVisibleIndex = targetColumnIndex >= 0;\r\n var showSeparator = function() {\r\n if (that._animationColumnIndex !== targetColumnIndex) {\r\n that.hideSeparators();\r\n separator.element()[parameters.isLast ? \"insertAfter\" : \"insertBefore\"](parameters.targetColumnElement);\r\n that._animationColumnIndex = targetColumnIndex;\r\n separator.show(targetLocation)\r\n }\r\n };\r\n that._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).toggleClass(that.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS), \"headers\" !== sourceLocation && \"headers\" === targetLocation && !hasTargetVisibleIndex);\r\n if (separator) {\r\n if (that.allowDrop(parameters) && hasTargetVisibleIndex) {\r\n if (\"group\" === targetLocation || \"columnChooser\" === targetLocation) {\r\n showSeparator()\r\n } else {\r\n that.hideSeparators(\"block\");\r\n that.getController(\"tablePosition\").update(parameters.posY);\r\n separator.moveByX(parameters.posX - separator.width());\r\n separator.show()\r\n }\r\n } else {\r\n that.hideSeparators()\r\n }\r\n }\r\n },\r\n drop: function(parameters) {\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: \"\"\r\n });\r\n this._columnHeadersView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._rowsView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).removeClass(this.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS))\r\n }\r\n if (this.allowDrop(parameters)) {\r\n var separator = this._getSeparator(parameters.targetLocation);\r\n if (separator) {\r\n separator.hide()\r\n }\r\n this._columnsController.moveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n }\r\n },\r\n dispose: function() {\r\n if (this._draggingHeaderView) {\r\n this._unsubscribeFromEvents(this._draggingHeaderView, [this._columnChooserView, this._columnHeadersView, this._headerPanelView])\r\n }\r\n }\r\n});\r\nvar _default = {\r\n views: {\r\n columnsSeparatorView: ColumnsSeparatorView,\r\n blockSeparatorView: BlockSeparatorView,\r\n draggingHeaderView: DraggingHeaderView,\r\n trackerView: TrackerView\r\n },\r\n controllers: {\r\n draggingHeader: DraggingHeaderViewController,\r\n tablePosition: TablePositionViewController,\r\n columnsResizer: ColumnsResizerViewController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _needUpdateRowHeight: function(itemCount) {\r\n var wordWrapEnabled = this.option(\"wordWrapEnabled\");\r\n var columnsResizerController = this.getController(\"columnsResizer\");\r\n var isResizing = columnsResizerController.isResizing();\r\n return this.callBase.apply(this, arguments) || itemCount > 0 && wordWrapEnabled && isResizing\r\n }\r\n }\r\n },\r\n controllers: {\r\n editorFactory: {\r\n renderFocusOverlay: function() {\r\n if (this.getController(\"columnsResizer\").isResizing()) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_fixing.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _translator = require(\"../../animation/translator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CONTENT_CLASS = \"content\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar FIRST_CELL_CLASS = \"dx-first-cell\";\r\nvar LAST_CELL_CLASS = \"dx-last-cell\";\r\nvar HOVER_STATE_CLASS = \"dx-state-hover\";\r\nvar FIXED_COL_CLASS = \"dx-col-fixed\";\r\nvar FIXED_COLUMNS_CLASS = \"dx-fixed-columns\";\r\nvar POINTER_EVENTS_NONE_CLASS = \"dx-pointer-events-none\";\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar getTransparentColumnIndex = function(fixedColumns) {\r\n var transparentColumnIndex = -1;\r\n (0, _iterator.each)(fixedColumns, function(index, column) {\r\n if (column.command === COMMAND_TRANSPARENT) {\r\n transparentColumnIndex = index;\r\n return false\r\n }\r\n });\r\n return transparentColumnIndex\r\n};\r\nvar normalizeColumnWidths = function(fixedColumns, widths, fixedWidths) {\r\n var fixedColumnIndex = 0;\r\n if (fixedColumns && widths && fixedWidths) {\r\n for (var i = 0; i < fixedColumns.length; i++) {\r\n if (fixedColumns[i].command === COMMAND_TRANSPARENT) {\r\n fixedColumnIndex += fixedColumns[i].colspan\r\n } else {\r\n if (widths[fixedColumnIndex] < fixedWidths[i]) {\r\n widths[fixedColumnIndex] = fixedWidths[i]\r\n }\r\n fixedColumnIndex++\r\n }\r\n }\r\n }\r\n return widths\r\n};\r\nvar baseFixedColumns = {\r\n init: function() {\r\n this.callBase();\r\n this._isFixedTableRendering = false;\r\n this._isFixedColumns = false\r\n },\r\n _createCol: function(column) {\r\n return this.callBase(column).toggleClass(FIXED_COL_CLASS, !!(this._isFixedTableRendering && (column.fixed || column.command && column.command !== COMMAND_TRANSPARENT)))\r\n },\r\n _correctColumnIndicesForFixedColumns: function(fixedColumns, change) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var transparentColspan = fixedColumns[transparentColumnIndex].colspan;\r\n var columnIndices = change && change.columnIndices;\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices.map(function(columnIndices) {\r\n if (columnIndices) {\r\n return columnIndices.map(function(columnIndex) {\r\n if (columnIndex < transparentColumnIndex) {\r\n return columnIndex\r\n } else {\r\n if (columnIndex >= transparentColumnIndex + transparentColspan) {\r\n return columnIndex - transparentColspan + 1\r\n }\r\n }\r\n return -1\r\n }).filter(function(columnIndex) {\r\n return columnIndex >= 0\r\n })\r\n }\r\n })\r\n }\r\n },\r\n _renderTable: function(options) {\r\n var that = this;\r\n var $fixedTable;\r\n var fixedColumns = that.getFixedColumns();\r\n that._isFixedColumns = !!fixedColumns.length;\r\n var $table = that.callBase(options);\r\n if (that._isFixedColumns) {\r\n that._isFixedTableRendering = true;\r\n var change = options && options.change;\r\n var columnIndices = change && change.columnIndices;\r\n that._correctColumnIndicesForFixedColumns(fixedColumns, change);\r\n $fixedTable = that._createTable(fixedColumns);\r\n that._renderRows($fixedTable, (0, _extend.extend)({}, options, {\r\n columns: fixedColumns\r\n }));\r\n that._updateContent($fixedTable, change);\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices\r\n }\r\n that._isFixedTableRendering = false\r\n } else {\r\n that._fixedTableElement && that._fixedTableElement.parent().remove();\r\n that._fixedTableElement = null\r\n }\r\n return $table\r\n },\r\n _renderRow: function($table, options) {\r\n var fixedCorrection;\r\n var cells = options.row.cells;\r\n this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering && cells && cells.length) {\r\n fixedCorrection = 0;\r\n var fixedCells = options.row.cells || [];\r\n cells = cells.slice();\r\n options.row.cells = cells;\r\n for (var i = 0; i < fixedCells.length; i++) {\r\n if (fixedCells[i].column && fixedCells[i].column.command === COMMAND_TRANSPARENT) {\r\n fixedCorrection = (fixedCells[i].column.colspan || 1) - 1;\r\n continue\r\n }\r\n cells[i + fixedCorrection] = fixedCells[i]\r\n }\r\n }\r\n },\r\n _createCell: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var columnCommand = column && column.command;\r\n var rowType = options.rowType;\r\n var $cell = that.callBase.apply(that, arguments);\r\n var fixedColumns;\r\n var prevFixedColumn;\r\n var transparentColumnIndex;\r\n if (that._isFixedTableRendering || \"filter\" === rowType) {\r\n fixedColumns = that.getFixedColumns();\r\n transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n prevFixedColumn = fixedColumns[transparentColumnIndex - 1]\r\n }\r\n if (that._isFixedTableRendering) {\r\n if (columnCommand === COMMAND_TRANSPARENT) {\r\n $cell.addClass(POINTER_EVENTS_NONE_CLASS).toggleClass(FIRST_CELL_CLASS, 0 === transparentColumnIndex || prevFixedColumn && \"expand\" === prevFixedColumn.command).toggleClass(LAST_CELL_CLASS, fixedColumns.length && transparentColumnIndex === fixedColumns.length - 1);\r\n if (\"freeSpace\" !== rowType) {\r\n _uiGrid_core.default.setEmptyText($cell)\r\n }\r\n }\r\n } else {\r\n if (\"filter\" === rowType) {\r\n $cell.toggleClass(FIRST_CELL_CLASS, options.columnIndex === transparentColumnIndex)\r\n }\r\n }\r\n var isRowAltStyle = that.option(\"rowAlternationEnabled\") && options.isAltRow;\r\n if (_browser.default.mozilla && options.column.fixed && \"group\" !== options.rowType && !isRowAltStyle) {\r\n $cell.addClass(FIXED_COL_CLASS)\r\n }\r\n return $cell\r\n },\r\n _wrapTableInScrollContainer: function() {\r\n var $scrollContainer = this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering) {\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_FIXED_CLASS))\r\n }\r\n return $scrollContainer\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var isEmptyCell;\r\n var column = options.column;\r\n var isFixedTableRendering = that._isFixedTableRendering;\r\n var isGroupCell = \"group\" === options.rowType && (0, _type.isDefined)(column.groupIndex);\r\n if (isFixedTableRendering && isGroupCell && !column.command && !column.groupCellTemplate) {\r\n $cell.css(\"pointerEvents\", \"none\")\r\n }\r\n if (!isFixedTableRendering && that._isFixedColumns) {\r\n isEmptyCell = column.fixed || column.command && false !== column.fixed;\r\n if (isGroupCell) {\r\n isEmptyCell = false;\r\n if (options.row.summaryCells && options.row.summaryCells.length) {\r\n var columns = that._columnsController.getVisibleColumns();\r\n var alignByFixedColumnCellCount = that._getAlignByColumnCellCount ? that._getAlignByColumnCellCount(column.colspan, {\r\n columns: columns,\r\n row: options.row,\r\n isFixed: true\r\n }) : 0;\r\n if (alignByFixedColumnCellCount > 0) {\r\n var transparentColumnIndex = getTransparentColumnIndex(that._columnsController.getFixedColumns());\r\n isEmptyCell = columns.length - alignByFixedColumnCellCount < transparentColumnIndex\r\n }\r\n }\r\n }\r\n if (isEmptyCell) {\r\n if (that.option(\"legacyRendering\") || column.command && \"buttons\" !== column.type || \"group\" === options.rowType) {\r\n $cell.html(\" \").addClass(column.cssClass);\r\n return\r\n } else {\r\n $cell.addClass(\"dx-hidden-cell\")\r\n }\r\n }\r\n }\r\n if (column.command !== COMMAND_TRANSPARENT) {\r\n that.callBase($cell, options)\r\n }\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var _this = this;\r\n var cellElements = this.callBase.apply(this, arguments);\r\n var isGroupRow = cellElements.parent().hasClass(GROUP_ROW_CLASS);\r\n var index = \"columnHeadersView\" === this.name ? rowIndex : void 0;\r\n if (this._fixedTableElement && cellElements) {\r\n var fixedColumns = this.getFixedColumns(index);\r\n var fixedCellElements = this._getRowElements(this._fixedTableElement).eq(rowIndex).children(\"td\");\r\n (0, _iterator.each)(fixedCellElements, function(columnIndex, cell) {\r\n if (isGroupRow) {\r\n if (cellElements[columnIndex] && \"hidden\" !== cell.style.visibility) {\r\n cellElements[columnIndex] = cell\r\n }\r\n } else {\r\n var fixedColumn = fixedColumns[columnIndex];\r\n if (fixedColumn) {\r\n if (fixedColumn.command === COMMAND_TRANSPARENT) {\r\n if (fixedCellElements.eq(columnIndex).hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n cellElements[columnIndex] = cell || cellElements[columnIndex]\r\n }\r\n } else {\r\n var fixedColumnIndex = _this._columnsController.getVisibleIndexByColumn(fixedColumn, rowIndex);\r\n cellElements[fixedColumnIndex] = cell || cellElements[fixedColumnIndex]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n return cellElements\r\n },\r\n getColumnWidths: function() {\r\n var that = this;\r\n var fixedWidths;\r\n var result = that.callBase();\r\n var fixedColumns = that.getFixedColumns();\r\n if (that._fixedTableElement && result.length) {\r\n fixedWidths = that.callBase(that._fixedTableElement)\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n },\r\n getTableElement: function() {\r\n var tableElement = this._isFixedTableRendering ? this._fixedTableElement : this.callBase();\r\n return tableElement\r\n },\r\n setTableElement: function(tableElement) {\r\n if (this._isFixedTableRendering) {\r\n this._fixedTableElement = tableElement.addClass(POINTER_EVENTS_NONE_CLASS)\r\n } else {\r\n this.callBase(tableElement)\r\n }\r\n },\r\n getColumns: function(rowIndex, $tableElement) {\r\n $tableElement = $tableElement || this.getTableElement();\r\n if (this._isFixedTableRendering || $tableElement && $tableElement.closest(\"table\").parent(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).length) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex, $tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n var $fixedTable = this._fixedTableElement;\r\n if ($fixedTable && $fixedTable.find($row).length) {\r\n return this._getRowElements($fixedTable).index($row)\r\n }\r\n return this.callBase($row)\r\n },\r\n getTableElements: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n result = (0, _renderer.default)([result.get(0), this._fixedTableElement.get(0)])\r\n }\r\n return result\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n return this._columnsController.getFixedColumns(rowIndex)\r\n },\r\n getFixedColumnsOffset: function() {\r\n var offset = {\r\n left: 0,\r\n right: 0\r\n };\r\n var $transparentColumn;\r\n if (this._fixedTableElement) {\r\n $transparentColumn = this.getTransparentColumnElement();\r\n var positionTransparentColumn = $transparentColumn.position();\r\n offset = {\r\n left: positionTransparentColumn.left,\r\n right: this.element().outerWidth(true) - ($transparentColumn.outerWidth(true) + positionTransparentColumn.left)\r\n }\r\n }\r\n return offset\r\n },\r\n getTransparentColumnElement: function() {\r\n return this._fixedTableElement && this._fixedTableElement.find(\".\" + POINTER_EVENTS_NONE_CLASS).first()\r\n },\r\n getFixedTableElement: function() {\r\n return this._fixedTableElement\r\n },\r\n isFixedColumns: function() {\r\n return this._isFixedColumns\r\n },\r\n _resizeCore: function() {\r\n this.callBase();\r\n this.synchronizeRows()\r\n },\r\n setColumnWidths: function(options) {\r\n var columns;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = options.widths;\r\n var isWidthsSynchronized = widths && widths.length && (0, _type.isDefined)(visibleColumns[0].visibleWidth);\r\n var optionNames = options.optionNames;\r\n var isColumnWidthChanged = optionNames && optionNames.width;\r\n var useVisibleColumns = false;\r\n this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n if (this.option(\"legacyRendering\")) {\r\n useVisibleColumns = widths && widths.length && !this.isScrollbarVisible(true)\r\n } else {\r\n var hasAutoWidth = widths && widths.some(function(width) {\r\n return \"auto\" === width\r\n });\r\n useVisibleColumns = hasAutoWidth && (!isWidthsSynchronized || !this.isScrollbarVisible(true))\r\n }\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n this.callBase((0, _extend.extend)({}, options, {\r\n $tableElement: this._fixedTableElement,\r\n columns: columns,\r\n fixed: true\r\n }))\r\n }\r\n if (isWidthsSynchronized || isColumnWidthChanged && this.option(\"wordWrapEnabled\")) {\r\n this.synchronizeRows()\r\n }\r\n },\r\n _createColGroup: function(columns) {\r\n if (!this.option(\"legacyRendering\") && this._isFixedTableRendering && !this.option(\"columnAutoWidth\")) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var useVisibleColumns = visibleColumns.filter(function(column) {\r\n return !column.width\r\n }).length;\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n }\r\n return this.callBase(columns)\r\n },\r\n _getClientHeight: function(element) {\r\n var boundingClientRectElement = element.getBoundingClientRect && (0, _position.getBoundingRect)(element);\r\n return boundingClientRectElement && boundingClientRectElement.height ? boundingClientRectElement.height : element.clientHeight\r\n },\r\n synchronizeRows: function() {\r\n var that = this;\r\n var rowHeights = [];\r\n var fixedRowHeights = [];\r\n var rowIndex;\r\n var $rowElements;\r\n var $fixedRowElements;\r\n var $contentElement;\r\n if (that._isFixedColumns && that._tableElement && that._fixedTableElement) {\r\n var heightTable = that._getClientHeight(that._tableElement.get(0));\r\n var heightFixedTable = that._getClientHeight(that._fixedTableElement.get(0));\r\n $rowElements = that._getRowElements(that._tableElement);\r\n $fixedRowElements = that._getRowElements(that._fixedTableElement);\r\n $contentElement = that._findContentElement();\r\n if (heightTable !== heightFixedTable) {\r\n $contentElement && $contentElement.css(\"height\", heightTable);\r\n $rowElements.css(\"height\", \"\");\r\n $fixedRowElements.css(\"height\", \"\");\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n rowHeights.push(that._getClientHeight($rowElements.get(rowIndex)));\r\n fixedRowHeights.push(that._getClientHeight($fixedRowElements.get(rowIndex)))\r\n }\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n var rowHeight = rowHeights[rowIndex];\r\n var fixedRowHeight = fixedRowHeights[rowIndex];\r\n if (rowHeight > fixedRowHeight) {\r\n $fixedRowElements.eq(rowIndex).css(\"height\", rowHeight)\r\n } else {\r\n if (rowHeight < fixedRowHeight) {\r\n $rowElements.eq(rowIndex).css(\"height\", fixedRowHeight)\r\n }\r\n }\r\n }\r\n $contentElement && $contentElement.css(\"height\", \"\")\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(width) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n this.callBase(width);\r\n this.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n }\r\n};\r\nvar ColumnHeadersViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n _getRowVisibleColumns: function(rowIndex) {\r\n if (this._isFixedTableRendering) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex)\r\n },\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var columnFixingOptions = that.option(\"columnFixing\");\r\n var items = that.callBase(options);\r\n if (options.row && \"header\" === options.row.rowType) {\r\n if (column && column.allowFixing) {\r\n var onItemClick = function(params) {\r\n switch (params.itemData.value) {\r\n case \"none\":\r\n that._columnsController.columnOption(column.index, \"fixed\", false);\r\n break;\r\n case \"left\":\r\n that._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"left\"\r\n });\r\n break;\r\n case \"right\":\r\n that._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"right\"\r\n })\r\n }\r\n };\r\n items = items || [];\r\n items.push({\r\n text: columnFixingOptions.texts.fix,\r\n beginGroup: true,\r\n items: [{\r\n text: columnFixingOptions.texts.leftPosition,\r\n value: \"left\",\r\n disabled: column.fixed && (!column.fixedPosition || \"left\" === column.fixedPosition),\r\n onItemClick: onItemClick\r\n }, {\r\n text: columnFixingOptions.texts.rightPosition,\r\n value: \"right\",\r\n disabled: column.fixed && \"right\" === column.fixedPosition,\r\n onItemClick: onItemClick\r\n }]\r\n }, {\r\n text: columnFixingOptions.texts.unfix,\r\n value: \"none\",\r\n disabled: !column.fixed,\r\n onItemClick: onItemClick\r\n })\r\n }\r\n }\r\n return items\r\n },\r\n getFixedColumnElements: function(rowIndex) {\r\n var that = this;\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n return this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).children()\r\n }\r\n var columnElements = that.getColumnElements();\r\n var $transparentColumnElement = that.getTransparentColumnElement();\r\n if (columnElements && $transparentColumnElement && $transparentColumnElement.length) {\r\n var transparentColumnIndex = getTransparentColumnIndex(that.getFixedColumns());\r\n columnElements.splice(transparentColumnIndex, $transparentColumnElement.get(0).colSpan, $transparentColumnElement.get(0))\r\n }\r\n return columnElements\r\n },\r\n getColumnWidths: function() {\r\n var that = this;\r\n var fixedWidths;\r\n var result = that.callBase();\r\n var $fixedColumnElements = that.getFixedColumnElements();\r\n var fixedColumns = that.getFixedColumns();\r\n if (that._fixedTableElement) {\r\n if ($fixedColumnElements && $fixedColumnElements.length) {\r\n fixedWidths = that._getWidths($fixedColumnElements)\r\n } else {\r\n fixedWidths = that.callBase(that._fixedTableElement)\r\n }\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n }\r\n});\r\nvar RowsViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n _detachHoverEvents: function() {\r\n this._fixedTableElement && _events_engine.default.off(this._fixedTableElement, \"mouseover mouseout\", \".dx-data-row\");\r\n this._tableElement && _events_engine.default.off(this._tableElement, \"mouseover mouseout\", \".dx-data-row\")\r\n },\r\n _attachHoverEvents: function() {\r\n var that = this;\r\n var attachHoverEvent = function($table) {\r\n _events_engine.default.on($table, \"mouseover mouseout\", \".dx-data-row\", that.createAction(function(args) {\r\n var event = args.event;\r\n var rowIndex = that.getRowIndex((0, _renderer.default)(event.target).closest(\".dx-row\"));\r\n var isHover = \"mouseover\" === event.type;\r\n if (rowIndex >= 0) {\r\n that._tableElement && that._getRowElements(that._tableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover);\r\n that._fixedTableElement && that._getRowElements(that._fixedTableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover)\r\n }\r\n }))\r\n };\r\n if (that._fixedTableElement && that._tableElement) {\r\n attachHoverEvent(that._fixedTableElement);\r\n attachHoverEvent(that._tableElement)\r\n }\r\n },\r\n _findContentElement: function() {\r\n var that = this;\r\n var $content;\r\n var scrollTop;\r\n var contentClass = that.addWidgetPrefix(CONTENT_CLASS);\r\n var element = that.element();\r\n var scrollDelay = _browser.default.mozilla ? 60 : 0;\r\n if (element && that._isFixedTableRendering) {\r\n $content = element.children(\".\" + contentClass);\r\n var scrollable = that.getScrollable();\r\n if (!$content.length && scrollable) {\r\n $content = (0, _renderer.default)(\"
\").addClass(contentClass);\r\n _events_engine.default.on($content, \"scroll\", function(e) {\r\n clearTimeout(that._fixedScrollTimeout);\r\n that._fixedScrollTimeout = setTimeout(function() {\r\n scrollTop = (0, _renderer.default)(e.target).scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }, scrollDelay)\r\n });\r\n _events_engine.default.on($content, _wheel.name, function(e) {\r\n var $nearestScrollable = (0, _renderer.default)(e.target).closest(\".dx-scrollable\");\r\n if (scrollable && scrollable.$element().is($nearestScrollable)) {\r\n scrollTop = scrollable.scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop - e.delta\r\n });\r\n if (scrollable.scrollTop() > 0 && scrollable.scrollTop() + scrollable.clientHeight() < scrollable.scrollHeight() + that.getScrollbarWidth()) {\r\n return false\r\n }\r\n }\r\n });\r\n $content.appendTo(element)\r\n }\r\n return $content\r\n }\r\n return that.callBase()\r\n },\r\n _updateScrollable: function() {\r\n this.callBase();\r\n var scrollable = this.getScrollable();\r\n var scrollTop = scrollable && scrollable.scrollOffset().top;\r\n this._updateFixedTablePosition(scrollTop)\r\n },\r\n _renderContent: function(contentElement, tableElement) {\r\n if (this._isFixedTableRendering) {\r\n return contentElement.empty().addClass(this.addWidgetPrefix(CONTENT_CLASS) + \" \" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).append(tableElement)\r\n }\r\n return this.callBase(contentElement, tableElement)\r\n },\r\n _getGroupCellOptions: function(options) {\r\n if (this._isFixedTableRendering) {\r\n return this.callBase((0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n }\r\n return this.callBase(options)\r\n },\r\n _renderGroupedCells: function($row, options) {\r\n return this.callBase($row, (0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n },\r\n _renderGroupSummaryCells: function($row, options) {\r\n if (this._isFixedTableRendering) {\r\n this.callBase($row, (0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n } else {\r\n this.callBase($row, options)\r\n }\r\n },\r\n _hasAlignByColumnSummaryItems: function(columnIndex, options) {\r\n var result = this.callBase.apply(this, arguments);\r\n var column = options.columns[columnIndex];\r\n if (options.isFixed) {\r\n return column.fixed && (result || \"right\" === column.fixedPosition)\r\n }\r\n return result && !column.fixed\r\n },\r\n _renderGroupSummaryCellsCore: function($groupCell, options, groupCellColSpan, alignByColumnCellCount) {\r\n var alignByFixedColumnCellCount;\r\n if (this._isFixedTableRendering) {\r\n options.isFixed = true;\r\n alignByFixedColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);\r\n options.isFixed = false;\r\n var startColumnIndex = options.columns.length - alignByFixedColumnCellCount;\r\n options = (0, _extend.extend)({}, options, {\r\n columns: this.getFixedColumns()\r\n });\r\n var transparentColumnIndex = getTransparentColumnIndex(options.columns);\r\n if (startColumnIndex < transparentColumnIndex) {\r\n alignByFixedColumnCellCount -= options.columns[transparentColumnIndex].colspan - 1 || 0;\r\n groupCellColSpan -= options.columns[transparentColumnIndex].colspan - 1 || 0\r\n } else {\r\n if (alignByColumnCellCount > 0) {\r\n $groupCell.css(\"visibility\", \"hidden\")\r\n }\r\n }\r\n alignByColumnCellCount = alignByFixedColumnCellCount\r\n }\r\n this.callBase($groupCell, options, groupCellColSpan, alignByColumnCellCount)\r\n },\r\n _getSummaryCellIndex: function(columnIndex, columns) {\r\n if (this._isFixedTableRendering) {\r\n var transparentColumnIndex = getTransparentColumnIndex(columns);\r\n if (columnIndex > transparentColumnIndex) {\r\n columnIndex += columns[transparentColumnIndex].colspan - 1\r\n }\r\n return columnIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _renderCore: function(change) {\r\n this._detachHoverEvents();\r\n this.callBase(change);\r\n var isFixedColumns = this._isFixedColumns;\r\n this.element().toggleClass(FIXED_COLUMNS_CLASS, isFixedColumns);\r\n if (this.option(\"hoverStateEnabled\") && isFixedColumns) {\r\n this._attachHoverEvents()\r\n }\r\n },\r\n setRowsOpacity: function(columnIndex, value) {\r\n this.callBase(columnIndex, value);\r\n var $rows = this._getRowElements(this._fixedTableElement);\r\n this._setRowsOpacityCore($rows, this.getFixedColumns(), columnIndex, value)\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n that.callBase(args);\r\n if (\"hoverStateEnabled\" === args.name && that._isFixedColumns) {\r\n args.value ? this._attachHoverEvents() : this._detachHoverEvents()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var $fixedTable = this._fixedTableElement;\r\n var cellIndex = 0;\r\n if ($fixedTable && $cell.is(\"td\") && $cell.closest($fixedTable).length) {\r\n var columns = this.getFixedColumns();\r\n (0, _iterator.each)(columns, function(index, column) {\r\n if (index === $cell[0].cellIndex) {\r\n return false\r\n }\r\n if (column.colspan) {\r\n cellIndex += column.colspan;\r\n return\r\n }\r\n cellIndex++\r\n });\r\n return cellIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateFixedTablePosition: function(scrollTop, needFocus) {\r\n if (this._fixedTableElement && this._tableElement) {\r\n var $focusedElement;\r\n var editorFactory = this.getController(\"editorFactory\");\r\n this._fixedTableElement.parent().scrollTop(scrollTop);\r\n if (needFocus && editorFactory) {\r\n $focusedElement = editorFactory.focus();\r\n $focusedElement && editorFactory.focus($focusedElement)\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(vWidth, hWidth) {\r\n var that = this;\r\n var styles = {\r\n marginBottom: 0\r\n };\r\n var $fixedContent = that.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if ($fixedContent.length && that._fixedTableElement) {\r\n $fixedContent.css(styles);\r\n that._fixedTableElement.css(styles);\r\n styles[that.option(\"rtlEnabled\") ? \"marginLeft\" : \"marginRight\"] = vWidth;\r\n styles.marginBottom = hWidth;\r\n var useNativeScrolling = that._scrollable && that._scrollable.option(\"useNative\");\r\n (useNativeScrolling ? $fixedContent : that._fixedTableElement).css(styles)\r\n }\r\n },\r\n _getElasticScrollTop: function(e) {\r\n var elasticScrollTop = 0;\r\n var scrollbarWidth = this.getScrollbarWidth(true);\r\n if (e.scrollOffset.top < 0) {\r\n elasticScrollTop = -e.scrollOffset.top\r\n } else {\r\n if (e.reachedBottom) {\r\n var scrollableContent = this._findContentElement();\r\n var scrollableContainer = e.component._container();\r\n var maxScrollTop = Math.max(scrollableContent.height() + scrollbarWidth - scrollableContainer.height(), 0);\r\n elasticScrollTop = maxScrollTop - e.scrollOffset.top\r\n }\r\n }\r\n return elasticScrollTop\r\n },\r\n _applyElasticScrolling: function(e) {\r\n if (this._fixedTableElement) {\r\n var elasticScrollTop = this._getElasticScrollTop(e);\r\n if (0 !== Math.ceil(elasticScrollTop)) {\r\n (0, _translator.move)(this._fixedTableElement, {\r\n top: elasticScrollTop\r\n })\r\n } else {\r\n this._fixedTableElement.css(\"transform\", \"\")\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n this._updateFixedTablePosition(e.scrollOffset.top, true);\r\n this._applyElasticScrolling(e);\r\n this.callBase(e)\r\n },\r\n _updateContentPosition: function(isRender) {\r\n this.callBase.apply(this, arguments);\r\n if (!isRender) {\r\n this._updateFixedTablePosition(this._scrollTop)\r\n }\r\n },\r\n _afterRowPrepared: function(e) {\r\n if (this._isFixedTableRendering) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _scrollToElement: function($element) {\r\n this.callBase($element, this.getFixedColumnsOffset())\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._fixedScrollTimeout)\r\n }\r\n});\r\nvar FooterViewFixedColumnsExtender = baseFixedColumns;\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnFixing: {\r\n enabled: false,\r\n texts: {\r\n fix: _message.default.format(\"dxDataGrid-columnFixingFix\"),\r\n unfix: _message.default.format(\"dxDataGrid-columnFixingUnfix\"),\r\n leftPosition: _message.default.format(\"dxDataGrid-columnFixingLeftPosition\"),\r\n rightPosition: _message.default.format(\"dxDataGrid-columnFixingRightPosition\")\r\n }\r\n }\r\n }\r\n },\r\n extenders: {\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFixedColumnsExtender,\r\n rowsView: RowsViewFixedColumnsExtender,\r\n footerView: FooterViewFixedColumnsExtender\r\n },\r\n controllers: function() {\r\n var normalizeColumnIndicesByPoints = function(columns, fixedColumns, pointsByColumns) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var correctIndex = columns.length - fixedColumns.length;\r\n (0, _iterator.each)(pointsByColumns, function(_, point) {\r\n if (point.index > transparentColumnIndex) {\r\n point.columnIndex += correctIndex;\r\n point.index += correctIndex\r\n }\r\n });\r\n return pointsByColumns\r\n };\r\n return {\r\n draggingHeader: {\r\n _generatePointsByColumns: function(options) {\r\n var visibleColumns = options.columns;\r\n var targetDraggingPanel = options.targetDraggingPanel;\r\n if (targetDraggingPanel && \"headers\" === targetDraggingPanel.getName() && targetDraggingPanel.isFixedColumns()) {\r\n if (options.sourceColumn.fixed) {\r\n if (!options.rowIndex) {\r\n options.columnElements = targetDraggingPanel.getFixedColumnElements(0)\r\n }\r\n options.columns = targetDraggingPanel.getFixedColumns(options.rowIndex);\r\n var pointsByColumns = this.callBase(options);\r\n normalizeColumnIndicesByPoints(visibleColumns, options.columns, pointsByColumns);\r\n return pointsByColumns\r\n }\r\n }\r\n return this.callBase(options)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase.apply(this, arguments);\r\n var targetColumn = columns[point.columnIndex];\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if (!result && \"headers\" === location && $transparentColumn && $transparentColumn.length) {\r\n var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n if (sourceColumn && sourceColumn.fixed) {\r\n return \"right\" === sourceColumn.fixedPosition ? point.x < boundingRect.right : point.x > boundingRect.left\r\n } else {\r\n if (targetColumn && targetColumn.fixed && \"right\" !== targetColumn.fixedPosition) {\r\n return true\r\n }\r\n return point.x < boundingRect.left || point.x > boundingRect.right\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n columnsResizer: {\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var columns = columnsController && that._columnsController.getVisibleColumns();\r\n var fixedColumns = columnsController && that._columnsController.getFixedColumns();\r\n var cells = that._columnHeadersView.getFixedColumnElements();\r\n var pointsByFixedColumns = [];\r\n that.callBase();\r\n if (cells && cells.length > 0) {\r\n pointsByFixedColumns = _uiGrid_core.default.getPointsByColumns(cells, function(point) {\r\n return that._pointCreated(point, cells.length, fixedColumns)\r\n });\r\n that._pointsByFixedColumns = normalizeColumnIndicesByPoints(columns, fixedColumns, pointsByFixedColumns)\r\n }\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isWidgetResizingMode = \"widget\" === this.option(\"columnResizingMode\");\r\n if (point.index > 0 && point.index < cellsLength) {\r\n var currentColumn = columns[point.columnIndex - 1] || {};\r\n var nextColumn = columns[point.columnIndex] || {};\r\n if (currentColumn.fixed || nextColumn.fixed) {\r\n point.columnIndex -= 1;\r\n return !((currentColumn.allowResizing || currentColumn.command === COMMAND_TRANSPARENT) && (isWidgetResizingMode || nextColumn.allowResizing || nextColumn.command === COMMAND_TRANSPARENT))\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if ($transparentColumn && $transparentColumn.length) {\r\n var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n if (currentX <= boundingRect.left || currentX >= boundingRect.right) {\r\n return this.callBase(this._pointsByFixedColumns, currentX, deltaX)\r\n }\r\n }\r\n return this.callBase(pointsByColumns, currentX, deltaX)\r\n }\r\n }\r\n }\r\n }()\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.adaptivity.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _themes = require(\"../themes\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\nvar ROWS_VIEW = \"rowsView\";\r\nvar FOOTER_VIEW = \"footerView\";\r\nvar COLUMN_VIEWS = [COLUMN_HEADERS_VIEW, ROWS_VIEW, FOOTER_VIEW];\r\nvar ADAPTIVE_NAMESPACE = \"dxDataGridAdaptivity\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar ADAPTIVE_ROW_TYPE = \"detailAdaptive\";\r\nvar FORM_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar FORM_ITEM_MODIFIED = \"dx-item-modified\";\r\nvar HIDDEN_COLUMN_CLASS = \"hidden-column\";\r\nvar ADAPTIVE_COLUMN_BUTTON_CLASS = \"adaptive-more\";\r\nvar ADAPTIVE_COLUMN_NAME_CLASS = \"dx-command-adaptive\";\r\nvar COMMAND_ADAPTIVE_HIDDEN_CLASS = \"dx-command-adaptive-hidden\";\r\nvar ADAPTIVE_DETAIL_ROW_CLASS = \"dx-adaptive-detail-row\";\r\nvar ADAPTIVE_ITEM_TEXT_CLASS = \"dx-adaptive-item-text\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar LAST_DATA_CELL_CLASS = \"dx-last-data-cell\";\r\nvar ADAPTIVE_COLUMN_NAME = \"adaptive\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar EXPAND_ARIA_NAME = \"dxDataGrid-ariaAdaptiveExpand\";\r\nvar COLLAPSE_ARIA_NAME = \"dxDataGrid-ariaAdaptiveCollapse\";\r\n\r\nfunction getColumnId(that, column) {\r\n return that._columnsController.getColumnId(column)\r\n}\r\n\r\nfunction getDataCellElements($row) {\r\n return $row.find(\"td:not(.dx-datagrid-hidden-column):not([class*='dx-command-'])\")\r\n}\r\n\r\nfunction adaptiveCellTemplate(container, options) {\r\n var $adaptiveColumnButton;\r\n var $container = (0, _renderer.default)(container);\r\n var adaptiveColumnsController = options.component.getController(\"adaptiveColumns\");\r\n if (\"data\" === options.rowType) {\r\n $adaptiveColumnButton = (0, _renderer.default)(\"\").addClass(adaptiveColumnsController.addWidgetPrefix(ADAPTIVE_COLUMN_BUTTON_CLASS));\r\n _events_engine.default.on($adaptiveColumnButton, (0, _index.addNamespace)(_click.name, ADAPTIVE_NAMESPACE), adaptiveColumnsController.createAction(function() {\r\n adaptiveColumnsController.toggleExpandAdaptiveDetailRow(options.key)\r\n }));\r\n $adaptiveColumnButton.appendTo($container)\r\n } else {\r\n _uiGrid_core2.default.setEmptyText($container)\r\n }\r\n}\r\nvar AdaptiveColumnsController = _uiGrid_core.default.ViewController.inherit({\r\n _isRowEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_ROW\r\n },\r\n _isItemModified: function(item, cellOptions) {\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n var rowIndex = this._dataController.getRowIndexByKey(cellOptions.key);\r\n var row = this._dataController.items()[rowIndex + 1];\r\n return row && row.modifiedValues && (0, _type.isDefined)(row.modifiedValues[columnIndex])\r\n },\r\n _renderFormViewTemplate: function(item, cellOptions, $container) {\r\n var that = this;\r\n var column = item.column;\r\n var focusAction = that.createAction(function() {\r\n _events_engine.default.trigger($container, _click.name)\r\n });\r\n var value = column.calculateCellValue(cellOptions.data);\r\n var displayValue = _uiGrid_core2.default.getDisplayValue(column, value, cellOptions.data, cellOptions.rowType);\r\n var text = _uiGrid_core2.default.formatValue(displayValue, column);\r\n var isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode();\r\n var rowsView = that._rowsView;\r\n if (column.allowEditing && that.getController(\"keyboardNavigation\").isKeyboardEnabled()) {\r\n $container.attr(\"tabIndex\", that.option(\"tabIndex\"));\r\n if (isCellOrBatchEditMode) {\r\n _events_engine.default.off($container, \"focus\", focusAction);\r\n _events_engine.default.on($container, \"focus\", focusAction)\r\n }\r\n }\r\n if (column.cellTemplate) {\r\n var templateOptions = (0, _extend.extend)({}, cellOptions, {\r\n value: value,\r\n displayValue: displayValue,\r\n text: text,\r\n column: column\r\n });\r\n var isDomElement = !!$container.closest((0, _window.getWindow)().document).length;\r\n rowsView.renderTemplate($container, column.cellTemplate, templateOptions, isDomElement).done(function() {\r\n rowsView._cellPrepared($container, cellOptions)\r\n })\r\n } else {\r\n var container = $container.get(0);\r\n if (column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n $container.addClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n if (!(0, _type.isDefined)(text) || \"\" === text) {\r\n $container.html(\" \")\r\n }\r\n if (!that._isRowEditMode()) {\r\n if (that._isItemModified(item, cellOptions)) {\r\n $container.addClass(FORM_ITEM_MODIFIED)\r\n }\r\n }\r\n rowsView._cellPrepared($container, cellOptions)\r\n }\r\n },\r\n _getTemplate: function(item, cellOptions) {\r\n var that = this;\r\n var column = item.column;\r\n var editingController = this.getController(\"editing\");\r\n return function(options, container) {\r\n var $container = (0, _renderer.default)(container);\r\n var columnIndex = that._columnsController.getVisibleIndex(column.index);\r\n var templateOptions = (0, _extend.extend)({}, cellOptions);\r\n var renderFormTemplate = function() {\r\n var isItemEdited = that._isItemEdited(item);\r\n templateOptions.value = cellOptions.row.values[columnIndex];\r\n if (isItemEdited || column.showEditorAlways) {\r\n editingController.renderFormEditTemplate(templateOptions, item, options.component, $container, !isItemEdited)\r\n } else {\r\n templateOptions.column = column;\r\n templateOptions.columnIndex = columnIndex;\r\n that._renderFormViewTemplate(item, templateOptions, $container)\r\n }\r\n };\r\n renderFormTemplate();\r\n templateOptions.watch && templateOptions.watch(function() {\r\n return {\r\n isItemEdited: that._isItemEdited(item),\r\n value: cellOptions.row.values[columnIndex]\r\n }\r\n }, function() {\r\n $container.contents().remove();\r\n $container.removeClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n renderFormTemplate()\r\n })\r\n }\r\n },\r\n _isVisibleColumnsValid: function(visibleColumns) {\r\n var getCommandColumnsCount = function() {\r\n var result = 0;\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var visibleColumn = visibleColumns[j];\r\n if (visibleColumn.command) {\r\n result++\r\n }\r\n }\r\n return result\r\n };\r\n if (visibleColumns < 2) {\r\n return false\r\n }\r\n if (visibleColumns.length - getCommandColumnsCount() <= 1) {\r\n return false\r\n }\r\n return true\r\n },\r\n _calculatePercentWidths: function(widths, visibleColumns) {\r\n var that = this;\r\n var percentWidths = 0;\r\n visibleColumns.forEach(function(item, index) {\r\n if (widths[index] !== HIDDEN_COLUMNS_WIDTH) {\r\n percentWidths += that._getItemPercentWidth(item)\r\n }\r\n });\r\n return percentWidths\r\n },\r\n _isPercentWidth: function(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n },\r\n _isColumnHidden: function(column) {\r\n return this._hiddenColumns.filter(function(hiddenColumn) {\r\n return hiddenColumn.index === column.index\r\n }).length > 0\r\n },\r\n _getAverageColumnsWidth: function(containerWidth, columns, columnsCanFit) {\r\n var that = this;\r\n var fixedColumnsWidth = 0;\r\n var columnsWithoutFixedWidthCount = 0;\r\n columns.forEach(function(column) {\r\n if (!that._isColumnHidden(column)) {\r\n var width = column.width;\r\n if ((0, _type.isDefined)(width) && !isNaN(parseFloat(width))) {\r\n fixedColumnsWidth += that._isPercentWidth(width) ? that._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columns.length,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: column.bestFitWidth,\r\n columnWidth: width,\r\n containerWidth: containerWidth\r\n }) : parseFloat(width)\r\n } else {\r\n columnsWithoutFixedWidthCount++\r\n }\r\n }\r\n });\r\n return (containerWidth - fixedColumnsWidth) / columnsWithoutFixedWidthCount\r\n },\r\n _calculateColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n var columnsCount = contentColumns.length;\r\n var colWidth;\r\n if (widthOption && \"auto\" !== widthOption) {\r\n if (this._isPercentWidth(widthOption)) {\r\n colWidth = this._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columnsCount,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: bestFitWidth,\r\n columnWidth: widthOption,\r\n containerWidth: containerWidth\r\n })\r\n } else {\r\n return widthOption\r\n }\r\n } else {\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n colWidth = columnAutoWidth || !!column.command ? bestFitWidth : this._getAverageColumnsWidth(containerWidth, contentColumns, columnsCanFit)\r\n }\r\n return colWidth\r\n },\r\n _calculatePercentWidth: function(options) {\r\n var columnFitted = options.visibleIndex < options.columnsCount - 1 && options.columnsCanFit;\r\n var partialWidth = options.containerWidth * parseFloat(options.columnWidth) / 100;\r\n var resultWidth = options.columnsCanFit && partialWidth < options.bestFitWidth ? options.bestFitWidth : partialWidth;\r\n return columnFitted ? options.containerWidth * parseFloat(options.columnWidth) / 100 : resultWidth\r\n },\r\n _getNotTruncatedColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (widthOption && \"auto\" !== widthOption && !this._isPercentWidth(widthOption)) {\r\n return parseFloat(widthOption)\r\n }\r\n var colWidth = this._calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit);\r\n return colWidth < bestFitWidth ? null : colWidth\r\n },\r\n _getItemPercentWidth: function(item) {\r\n var result = 0;\r\n if (item.width && this._isPercentWidth(item.width)) {\r\n result = parseFloat(item.width)\r\n }\r\n return result\r\n },\r\n _getCommandColumnsWidth: function() {\r\n var that = this;\r\n var columns = that._columnsController.getVisibleColumns();\r\n var colWidth = 0;\r\n (0, _iterator.each)(columns, function(index, column) {\r\n if (column.index < 0 || column.command) {\r\n colWidth += that._columnsController.columnOption(getColumnId(that, column), \"bestFitWidth\") || 0\r\n }\r\n });\r\n return colWidth\r\n },\r\n _isItemEdited: function(item) {\r\n if (this.isFormEditMode()) {\r\n return false\r\n }\r\n if (this._isRowEditMode()) {\r\n var editRowKey = this.option(\"editing.editRowKey\");\r\n if ((0, _common.equalByValue)(editRowKey, this._dataController.adaptiveExpandedKey())) {\r\n return true\r\n }\r\n } else {\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n return this._editingController.isEditCell(rowIndex, columnIndex)\r\n }\r\n },\r\n _getFormItemsByHiddenColumns: function(hiddenColumns) {\r\n var items = [];\r\n (0, _iterator.each)(hiddenColumns, function(_, column) {\r\n items.push({\r\n column: column,\r\n name: column.name,\r\n dataField: column.dataField,\r\n visibleIndex: column.visibleIndex\r\n })\r\n });\r\n return items\r\n },\r\n _getAdaptiveColumnVisibleIndex: function(visibleColumns) {\r\n for (var i = 0; i < visibleColumns.length; i++) {\r\n var column = visibleColumns[i];\r\n if (column.command === ADAPTIVE_COLUMN_NAME) {\r\n return i\r\n }\r\n }\r\n },\r\n _hideAdaptiveColumn: function(resultWidths, visibleColumns) {\r\n var visibleIndex = this._getAdaptiveColumnVisibleIndex(visibleColumns);\r\n if ((0, _type.isDefined)(visibleIndex)) {\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hideVisibleColumn({\r\n isCommandColumn: true,\r\n visibleIndex: visibleIndex\r\n })\r\n }\r\n },\r\n _showHiddenCellsInView: function(_ref) {\r\n var $cells = _ref.$cells,\r\n isCommandColumn = _ref.isCommandColumn;\r\n var cssClassNameToRemove = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cells.removeClass(cssClassNameToRemove)\r\n },\r\n _showHiddenColumns: function() {\r\n for (var i = 0; i < COLUMN_VIEWS.length; i++) {\r\n var view = this.getView(COLUMN_VIEWS[i]);\r\n if (view && view.isVisible() && view.element()) {\r\n var viewName = view.name;\r\n var $hiddenCommandCells = view.element().find(\".\" + COMMAND_ADAPTIVE_HIDDEN_CLASS);\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCommandCells,\r\n isCommandColumn: true\r\n });\r\n var $hiddenCells = view.element().find(\".\" + this.addWidgetPrefix(HIDDEN_COLUMN_CLASS));\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCells\r\n })\r\n }\r\n }\r\n },\r\n _isCellValid: function($cell) {\r\n return $cell && $cell.length && !$cell.hasClass(MASTER_DETAIL_CELL_CLASS) && !$cell.hasClass(GROUP_CELL_CLASS)\r\n },\r\n _hideVisibleColumn: function(_ref2) {\r\n var isCommandColumn = _ref2.isCommandColumn,\r\n visibleIndex = _ref2.visibleIndex;\r\n var that = this;\r\n COLUMN_VIEWS.forEach(function(viewName) {\r\n var view = that.getView(viewName);\r\n view && that._hideVisibleColumnInView({\r\n view: view,\r\n isCommandColumn: isCommandColumn,\r\n visibleIndex: visibleIndex\r\n })\r\n })\r\n },\r\n _hideVisibleColumnInView: function(_ref3) {\r\n var view = _ref3.view,\r\n isCommandColumn = _ref3.isCommandColumn,\r\n visibleIndex = _ref3.visibleIndex;\r\n var viewName = view.name;\r\n var $cellElement;\r\n var column = this._columnsController.getVisibleColumns()[visibleIndex];\r\n var editFormRowIndex = this._editingController && this._editingController.getEditFormRowIndex();\r\n if (view && view.isVisible() && column) {\r\n var rowsCount = view.getRowsCount();\r\n var $rowElements = view._getRowElements();\r\n for (var rowIndex = 0; rowIndex < rowsCount; rowIndex++) {\r\n var cancelClassAdding = rowIndex === editFormRowIndex && viewName === ROWS_VIEW && \"popup\" !== this.option(\"editing.mode\");\r\n if (!cancelClassAdding) {\r\n var currentVisibleIndex = viewName === COLUMN_HEADERS_VIEW ? this._columnsController.getVisibleIndex(column.index, rowIndex) : visibleIndex;\r\n if (currentVisibleIndex >= 0) {\r\n var $rowElement = $rowElements.eq(rowIndex);\r\n $cellElement = this._findCellElementInRow($rowElement, currentVisibleIndex);\r\n this._isCellValid($cellElement) && this._hideVisibleCellInView({\r\n viewName: viewName,\r\n isCommandColumn: isCommandColumn,\r\n $cell: $cellElement\r\n })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _findCellElementInRow: function($rowElement, visibleColumnIndex) {\r\n var $rowCells = $rowElement.children();\r\n var visibleIndex = visibleColumnIndex;\r\n var cellIsInsideGroup = false;\r\n if ($rowElement.hasClass(GROUP_ROW_CLASS)) {\r\n var $groupCell = $rowElement.find(\".\".concat(GROUP_CELL_CLASS));\r\n var colSpan = $groupCell.attr(\"colspan\");\r\n if ($groupCell.length && (0, _type.isDefined)(colSpan)) {\r\n var groupCellLength = parseInt(colSpan);\r\n var endGroupIndex = $groupCell.index() + groupCellLength - 1;\r\n if (visibleColumnIndex > endGroupIndex) {\r\n visibleIndex = visibleColumnIndex - groupCellLength + 1\r\n } else {\r\n cellIsInsideGroup = true\r\n }\r\n }\r\n }\r\n var $cellElement = !cellIsInsideGroup ? $rowCells.eq(visibleIndex) : void 0;\r\n return $cellElement\r\n },\r\n _hideVisibleCellInView: function(_ref4) {\r\n var $cell = _ref4.$cell,\r\n isCommandColumn = _ref4.isCommandColumn;\r\n var cssClassNameToAdd = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cell.addClass(cssClassNameToAdd)\r\n },\r\n _getEditMode: function() {\r\n return this._editingController.getEditMode()\r\n },\r\n isFormEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP\r\n },\r\n hideRedundantColumns: function(resultWidths, visibleColumns, hiddenQueue) {\r\n var that = this;\r\n this._hiddenColumns = [];\r\n if (that._isVisibleColumnsValid(visibleColumns) && hiddenQueue.length) {\r\n var totalWidth = 0;\r\n var $rootElement = that.component.$element();\r\n var rootElementWidth = $rootElement.width() - that._getCommandColumnsWidth();\r\n var getVisibleContentColumns = function() {\r\n var _this = this;\r\n return visibleColumns.filter(function(item) {\r\n return !item.command && 0 === _this._hiddenColumns.filter(function(i) {\r\n return i.index === item.index\r\n }).length\r\n })\r\n }.bind(this);\r\n var visibleContentColumns = getVisibleContentColumns();\r\n var contentColumnsCount = visibleContentColumns.length;\r\n var i;\r\n var hasHiddenColumns;\r\n var needHideColumn;\r\n do {\r\n needHideColumn = false;\r\n totalWidth = 0;\r\n var percentWidths = that._calculatePercentWidths(resultWidths, visibleColumns);\r\n var columnsCanFit = percentWidths < 100 && 0 !== percentWidths;\r\n for (i = 0; i < visibleColumns.length; i++) {\r\n var visibleColumn = visibleColumns[i];\r\n var columnWidth = that._getNotTruncatedColumnWidth(visibleColumn, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n var columnId = getColumnId(that, visibleColumn);\r\n var widthOption = that._columnsController.columnOption(columnId, \"width\");\r\n var minWidth = that._columnsController.columnOption(columnId, \"minWidth\");\r\n var columnBestFitWidth = that._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (resultWidths[i] === HIDDEN_COLUMNS_WIDTH) {\r\n hasHiddenColumns = true;\r\n continue\r\n }\r\n if (!columnWidth && !visibleColumn.command && !visibleColumn.fixed) {\r\n needHideColumn = true;\r\n break\r\n }\r\n if (!widthOption || \"auto\" === widthOption) {\r\n columnWidth = Math.max(columnBestFitWidth || 0, minWidth || 0)\r\n }\r\n if (visibleColumn.command !== ADAPTIVE_COLUMN_NAME || hasHiddenColumns) {\r\n totalWidth += columnWidth\r\n }\r\n }\r\n needHideColumn = needHideColumn || totalWidth > $rootElement.width();\r\n if (needHideColumn) {\r\n var column = hiddenQueue.pop();\r\n var visibleIndex = that._columnsController.getVisibleIndex(column.index);\r\n rootElementWidth += that._calculateColumnWidth(column, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n that._hideVisibleColumn({\r\n visibleIndex: visibleIndex\r\n });\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hiddenColumns.push(column);\r\n visibleContentColumns = getVisibleContentColumns()\r\n }\r\n } while (needHideColumn && visibleContentColumns.length > 1 && hiddenQueue.length);\r\n if (contentColumnsCount === visibleContentColumns.length) {\r\n that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n } else {\r\n that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n },\r\n getItemContentByColumnIndex: function(visibleColumnIndex) {\r\n var $itemContent;\r\n for (var i = 0; i < this._$itemContents.length; i++) {\r\n $itemContent = this._$itemContents.eq(i);\r\n var item = $itemContent.data(\"dx-form-item\");\r\n if (item && item.column && this._columnsController.getVisibleIndex(item.column.index) === visibleColumnIndex) {\r\n return $itemContent\r\n }\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n if (!(this.isFormEditMode() && this._editingController.isEditing())) {\r\n this.getController(\"data\").toggleExpandAdaptiveDetailRow(key, alwaysExpanded)\r\n }\r\n },\r\n createFormByHiddenColumns: function(container, options) {\r\n var that = this;\r\n var $container = (0, _renderer.default)(container);\r\n var userFormOptions = {\r\n items: that._getFormItemsByHiddenColumns(that._hiddenColumns),\r\n formID: \"dx-\" + new _guid.default\r\n };\r\n var defaultFormOptions = (0, _themes.isMaterial)() ? {\r\n colCount: 2\r\n } : {};\r\n this.executeAction(\"onAdaptiveDetailRowPreparing\", {\r\n formOptions: userFormOptions\r\n });\r\n that._$itemContents = null;\r\n that._form = that._createComponent((0, _renderer.default)(\"
\").appendTo($container), _form.default, (0, _extend.extend)(defaultFormOptions, userFormOptions, {\r\n customizeItem: function(item) {\r\n var column = item.column || that._columnsController.columnOption(item.name || item.dataField);\r\n if (column) {\r\n item.label = item.label || {};\r\n item.label.text = item.label.text || column.caption;\r\n item.column = column;\r\n item.template = that._getTemplate(item, options, that.updateForm.bind(that))\r\n }\r\n userFormOptions.customizeItem && userFormOptions.customizeItem.call(this, item)\r\n },\r\n onContentReady: function(e) {\r\n userFormOptions.onContentReady && userFormOptions.onContentReady.call(this, e);\r\n that._$itemContents = $container.find(\".\" + FORM_ITEM_CONTENT_CLASS)\r\n }\r\n }))\r\n },\r\n hasAdaptiveDetailRowExpanded: function() {\r\n return (0, _type.isDefined)(this._dataController.adaptiveExpandedKey())\r\n },\r\n updateForm: function(hiddenColumns) {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n if (this._form && (0, _type.isDefined)(this._form._contentReadyAction)) {\r\n if (hiddenColumns && hiddenColumns.length) {\r\n this._form.option(\"items\", this._getFormItemsByHiddenColumns(hiddenColumns))\r\n } else {\r\n this._form.repaint()\r\n }\r\n }\r\n }\r\n },\r\n updateHidingQueue: function(columns) {\r\n var that = this;\r\n var hideableColumns = columns.filter(function(column) {\r\n return column.visible && !column.type && !column.fixed && !((0, _type.isDefined)(column.groupIndex) && column.groupIndex >= 0)\r\n });\r\n var columnsHasHidingPriority;\r\n var i;\r\n that._hidingColumnsQueue = [];\r\n if (that.option(\"allowColumnResizing\") && \"widget\" === that.option(\"columnResizingMode\")) {\r\n return that._hidingColumnsQueue\r\n }\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n if ((0, _type.isDefined)(hideableColumns[i].hidingPriority) && hideableColumns[i].hidingPriority >= 0) {\r\n columnsHasHidingPriority = true;\r\n that._hidingColumnsQueue[hideableColumns[i].hidingPriority] = hideableColumns[i]\r\n }\r\n }\r\n if (columnsHasHidingPriority) {\r\n that._hidingColumnsQueue.reverse()\r\n } else {\r\n if (that.option(\"columnHidingEnabled\")) {\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n var visibleIndex = that._columnsController.getVisibleIndex(hideableColumns[i].index);\r\n that._hidingColumnsQueue[visibleIndex] = hideableColumns[i]\r\n }\r\n }\r\n }\r\n that._hidingColumnsQueue = that._hidingColumnsQueue.filter(Object);\r\n return that._hidingColumnsQueue\r\n },\r\n getHiddenColumns: function() {\r\n return this._hiddenColumns\r\n },\r\n hasHiddenColumns: function() {\r\n return this._hiddenColumns.length > 0\r\n },\r\n getHidingColumnsQueue: function() {\r\n return this._hidingColumnsQueue\r\n },\r\n init: function() {\r\n var that = this;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController.addCommandColumn({\r\n type: ADAPTIVE_COLUMN_NAME,\r\n command: ADAPTIVE_COLUMN_NAME,\r\n visible: true,\r\n adaptiveHidden: true,\r\n cssClass: ADAPTIVE_COLUMN_NAME_CLASS,\r\n alignment: \"center\",\r\n width: \"auto\",\r\n cellTemplate: adaptiveCellTemplate,\r\n fixedPosition: \"right\"\r\n });\r\n that._columnsController.columnsChanged.add(function() {\r\n var isAdaptiveVisible = !!that.updateHidingQueue(that._columnsController.getColumns()).length;\r\n that._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !isAdaptiveVisible, true)\r\n });\r\n that._editingController = that.getController(\"editing\");\r\n that._hidingColumnsQueue = [];\r\n that._hiddenColumns = [];\r\n that.createAction(\"onAdaptiveDetailRowPreparing\");\r\n that.callBase()\r\n },\r\n optionChanged: function(args) {\r\n if (\"columnHidingEnabled\" === args.name) {\r\n this._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !args.value)\r\n }\r\n this.callBase(args)\r\n },\r\n publicMethods: function() {\r\n return [\"isAdaptiveDetailRowExpanded\", \"expandAdaptiveDetailRow\", \"collapseAdaptiveDetailRow\"]\r\n },\r\n isAdaptiveDetailRowExpanded: function(key) {\r\n return this._dataController.adaptiveExpandedKey() && (0, _common.equalByValue)(this._dataController.adaptiveExpandedKey(), key)\r\n },\r\n expandAdaptiveDetailRow: function(key) {\r\n if (!this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow(key)\r\n }\r\n },\r\n collapseAdaptiveDetailRow: function() {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow()\r\n }\r\n },\r\n updateCommandAdaptiveAriaLabel: function(key, label) {\r\n var rowIndex = this._dataController.getRowIndexByKey(key);\r\n if (rowIndex === -1) {\r\n return\r\n }\r\n var $row = (0, _renderer.default)(this.component.getRowElement(rowIndex));\r\n this.setCommandAdaptiveAriaLabel($row, label)\r\n },\r\n setCommandAdaptiveAriaLabel: function($row, labelName) {\r\n var $adaptiveCommand = $row.find(\".dx-command-adaptive\");\r\n $adaptiveCommand.attr(\"aria-label\", _message.default.format(labelName))\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnHidingEnabled: false,\r\n onAdaptiveDetailRowPreparing: null\r\n }\r\n },\r\n controllers: {\r\n adaptiveColumns: AdaptiveColumnsController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.rowType === ADAPTIVE_ROW_TYPE && \"detail\" === column.command) {\r\n return function(container, options) {\r\n that._adaptiveColumnsController.createFormByHiddenColumns((0, _renderer.default)(container), options)\r\n }\r\n }\r\n return that.callBase(options)\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row && row.rowType === ADAPTIVE_ROW_TYPE && row.key === this._dataController.adaptiveExpandedKey()) {\r\n $row.addClass(ADAPTIVE_DETAIL_ROW_CLASS)\r\n }\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n this.callBase($row, options);\r\n var adaptiveColumnsController = this._adaptiveColumnsController;\r\n var hidingColumnsQueueLength = adaptiveColumnsController.getHidingColumnsQueue().length;\r\n var hiddenColumnsLength = adaptiveColumnsController.getHiddenColumns().length;\r\n if (hidingColumnsQueueLength && !hiddenColumnsLength) {\r\n getDataCellElements($row).last().addClass(LAST_DATA_CELL_CLASS)\r\n }\r\n if (\"data\" === options.row.rowType) {\r\n adaptiveColumnsController.setCommandAdaptiveAriaLabel($row, EXPAND_ARIA_NAME)\r\n }\r\n },\r\n _getColumnIndexByElementCore: function($element) {\r\n var $itemContent = $element.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n if ($itemContent.length && $itemContent.closest(this.component.$element()).length) {\r\n var formItem = $itemContent.length ? $itemContent.first().data(\"dx-form-item\") : null;\r\n return formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index)\r\n } else {\r\n return this.callBase($element)\r\n }\r\n },\r\n _cellPrepared: function($cell, options) {\r\n this.callBase.apply(this, arguments);\r\n if (options.row.rowType !== ADAPTIVE_ROW_TYPE && options.column.visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n $cell.addClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n }\r\n },\r\n _getCellElement: function(rowIndex, columnIdentifier) {\r\n var item = this._dataController.items()[rowIndex];\r\n if (item && item.rowType === ADAPTIVE_ROW_TYPE) {\r\n return this._adaptiveColumnsController.getItemContentByColumnIndex(columnIdentifier)\r\n } else {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n },\r\n getContextMenuItems: function(options) {\r\n if (options.row && \"detailAdaptive\" === options.row.rowType) {\r\n var view = this.component.getView(\"columnHeadersView\");\r\n var formItem = (0, _renderer.default)(options.targetElement).closest(\".dx-field-item-label\").next().data(\"dx-form-item\");\r\n options.column = formItem ? formItem.column : options.column;\r\n return view.getContextMenuItems && view.getContextMenuItems(options)\r\n }\r\n return this.callBase && this.callBase(options)\r\n },\r\n isClickableElement: function($target) {\r\n var isClickable = this.callBase ? this.callBase($target) : false;\r\n return isClickable || !!$target.closest(\".\" + ADAPTIVE_COLUMN_NAME_CLASS).length\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n },\r\n controllers: {\r\n \"export\": {\r\n _updateColumnWidth: function(column, width) {\r\n this.callBase(column, column.visibleWidth === HIDDEN_COLUMNS_WIDTH ? column.bestFitWidth : width)\r\n }\r\n },\r\n columnsResizer: {\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var result = this.callBase(point, cellsLength, columns);\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumnIndex = this._getNextColumnIndex(point.columnIndex);\r\n var nextColumn = columns[nextColumnIndex] || {};\r\n var hasHiddenColumnsOnly = nextColumnIndex !== point.columnIndex + 1 && nextColumn.command;\r\n var hasAdaptiveHiddenWidth = currentColumn.visibleWidth === HIDDEN_COLUMNS_WIDTH || hasHiddenColumnsOnly;\r\n return result || hasAdaptiveHiddenWidth\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var index = this.callBase(currentColumnIndex);\r\n while (visibleColumns[index] && visibleColumns[index].visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n index++\r\n }\r\n return index\r\n }\r\n },\r\n draggingHeader: {\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase(point, columns, location, sourceColumn);\r\n var column = columns[point.columnIndex - 1] || {};\r\n var hasAdaptiveHiddenWidth = column.visibleWidth === HIDDEN_COLUMNS_WIDTH;\r\n return result || hasAdaptiveHiddenWidth\r\n }\r\n },\r\n editing: {\r\n _isRowEditMode: function() {\r\n return this.getEditMode() === EDIT_MODE_ROW\r\n },\r\n _getFormEditItemTemplate: function(cellOptions, column) {\r\n if (this.getEditMode() !== EDIT_MODE_ROW && \"detailAdaptive\" === cellOptions.rowType) {\r\n cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index);\r\n return this.getColumnTemplate(cellOptions)\r\n }\r\n return this.callBase(cellOptions, column)\r\n },\r\n _closeEditItem: function($targetElement) {\r\n var $itemContents = $targetElement.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var formItem = $itemContents.length ? $itemContents.first().data(\"dx-form-item\") : null;\r\n var columnIndex = formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index);\r\n if (!this.isEditCell(rowIndex, columnIndex)) {\r\n this.callBase($targetElement)\r\n }\r\n },\r\n _beforeUpdateItems: function(rowIndices, rowIndex) {\r\n if (!this._adaptiveController.isFormEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n var items = this._dataController.items();\r\n var item = items[rowIndex];\r\n var oldExpandRowIndex = _uiGrid_core2.default.getIndexByKey(this._dataController.adaptiveExpandedKey(), items);\r\n this._isForceRowAdaptiveExpand = !this._adaptiveController.hasAdaptiveDetailRowExpanded();\r\n if (oldExpandRowIndex >= 0) {\r\n rowIndices.push(oldExpandRowIndex + 1)\r\n }\r\n rowIndices.push(rowIndex + 1);\r\n this._dataController.adaptiveExpandedKey(item.key)\r\n }\r\n },\r\n _afterInsertRow: function(options) {\r\n this.callBase(options);\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._adaptiveController.toggleExpandAdaptiveDetailRow(options.key, this.isRowEditMode());\r\n this._isForceRowAdaptiveExpand = true\r\n }\r\n },\r\n _collapseAdaptiveDetailRow: function() {\r\n if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) {\r\n this._adaptiveController.collapseAdaptiveDetailRow();\r\n this._isForceRowAdaptiveExpand = false\r\n }\r\n },\r\n _cancelEditAdaptiveDetailRow: function() {\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._collapseAdaptiveDetailRow()\r\n }\r\n },\r\n _afterSaveEditData: function() {\r\n var _this2 = this;\r\n this.callBase.apply(this, arguments);\r\n var deferred = new _deferred.Deferred;\r\n if (this._isRowEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n (0, _deferred.when)(this.getController(\"validating\").validate(true)).done(function(isValid) {\r\n if (isValid) {\r\n _this2._cancelEditAdaptiveDetailRow()\r\n }\r\n deferred.resolve()\r\n })\r\n } else {\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _beforeCancelEditData: function() {\r\n this.callBase();\r\n this._cancelEditAdaptiveDetailRow()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this._adaptiveController.isAdaptiveDetailRowExpanded(row.key)) {\r\n rowIndices.push(row.rowType === ADAPTIVE_ROW_TYPE ? row.rowIndex - 1 : row.rowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n _beforeCloseEditCellInBatchMode: function(rowIndices) {\r\n var expandedKey = this._dataController._adaptiveExpandedKey;\r\n if (expandedKey) {\r\n var rowIndex = _uiGrid_core2.default.getIndexByKey(expandedKey, this._dataController.items());\r\n if (rowIndex > -1) {\r\n rowIndices.unshift(rowIndex)\r\n }\r\n }\r\n },\r\n editRow: function(rowIndex) {\r\n if (this._adaptiveController.isFormEditMode()) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n deleteRow: function(rowIndex) {\r\n var rowKey = this._dataController.getKeyByRowIndex(rowIndex);\r\n if (this.getEditMode() === EDIT_MODE_BATCH && this._adaptiveController.isAdaptiveDetailRowExpanded(rowKey)) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n },\r\n resizing: {\r\n _needBestFit: function() {\r\n return this.callBase() || !!this._adaptiveColumnsController.getHidingColumnsQueue().length\r\n },\r\n _updateScrollableForIE: function() {\r\n var that = this;\r\n if (_browser.default.msie && parseInt(_browser.default.version) <= 11) {\r\n this._updateScrollableTimeoutID = setTimeout(function() {\r\n that.getView(\"rowsView\")._updateScrollable()\r\n })\r\n }\r\n },\r\n _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n var adaptiveController = this._adaptiveColumnsController;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var oldHiddenColumns = adaptiveController.getHiddenColumns();\r\n var hidingColumnsQueue = adaptiveController.updateHidingQueue(this._columnsController.getColumns());\r\n adaptiveController.hideRedundantColumns(resultWidths, visibleColumns, hidingColumnsQueue);\r\n var hiddenColumns = adaptiveController.getHiddenColumns();\r\n if (adaptiveController.hasAdaptiveDetailRowExpanded()) {\r\n if (oldHiddenColumns.length !== hiddenColumns.length) {\r\n adaptiveController.updateForm(hiddenColumns)\r\n }\r\n }!hiddenColumns.length && adaptiveController.collapseAdaptiveDetailRow();\r\n if (columnAutoWidth && hidingColumnsQueue.length && !hiddenColumns.length) {\r\n this._updateScrollableForIE()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n isBestFit && this._adaptiveColumnsController._showHiddenColumns();\r\n this.callBase(isBestFit)\r\n },\r\n _needStretch: function() {\r\n var adaptiveColumnsController = this._adaptiveColumnsController;\r\n return this.callBase.apply(this, arguments) || adaptiveColumnsController.getHidingColumnsQueue().length || adaptiveColumnsController.hasHiddenColumns()\r\n },\r\n init: function() {\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n this.callBase()\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._updateScrollableTimeoutID)\r\n }\r\n },\r\n data: {\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var changeType = change.changeType;\r\n items = that.callBase.apply(that, arguments);\r\n if (\"loadingAll\" === changeType || !(0, _type.isDefined)(that._adaptiveExpandedKey)) {\r\n return items\r\n }\r\n var expandRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, items);\r\n if (expandRowIndex >= 0) {\r\n var item = items[expandRowIndex];\r\n items.splice(expandRowIndex + 1, 0, {\r\n visible: true,\r\n rowType: ADAPTIVE_ROW_TYPE,\r\n key: item.key,\r\n data: item.data,\r\n node: item.node,\r\n modifiedValues: item.modifiedValues,\r\n isNewRow: item.isNewRow,\r\n values: item.values\r\n })\r\n } else {\r\n if (\"refresh\" === changeType) {\r\n that._adaptiveExpandedKey = void 0\r\n }\r\n }\r\n return items\r\n },\r\n _getRowIndicesForExpand: function(key) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this.getController(\"adaptiveColumns\").isAdaptiveDetailRowExpanded(key)) {\r\n var lastRowIndex = rowIndices[rowIndices.length - 1];\r\n rowIndices.push(lastRowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n adaptiveExpandedKey: function(value) {\r\n if ((0, _type.isDefined)(value)) {\r\n this._adaptiveExpandedKey = value\r\n } else {\r\n return this._adaptiveExpandedKey\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n var that = this;\r\n var oldExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, that._items);\r\n var newExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(key, that._items);\r\n if (oldExpandLoadedRowIndex >= 0 && oldExpandLoadedRowIndex === newExpandLoadedRowIndex && !alwaysExpanded) {\r\n key = void 0;\r\n newExpandLoadedRowIndex = -1\r\n }\r\n var oldKey = that._adaptiveExpandedKey;\r\n that._adaptiveExpandedKey = key;\r\n if (oldExpandLoadedRowIndex >= 0) {\r\n oldExpandLoadedRowIndex++\r\n }\r\n if (newExpandLoadedRowIndex >= 0) {\r\n newExpandLoadedRowIndex++\r\n }\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n that.updateItems({\r\n allowInvisibleRowIndices: true,\r\n changeType: \"update\",\r\n rowIndices: [oldExpandLoadedRowIndex - rowIndexDelta, newExpandLoadedRowIndex - rowIndexDelta]\r\n });\r\n var adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n adaptiveColumnsController.updateCommandAdaptiveAriaLabel(key, COLLAPSE_ARIA_NAME);\r\n adaptiveColumnsController.updateCommandAdaptiveAriaLabel(oldKey, EXPAND_ARIA_NAME)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveExpandedKey = void 0\r\n }\r\n },\r\n editorFactory: {\r\n _getFocusCellSelector: function() {\r\n return this.callBase() + \", .dx-adaptive-detail-row .dx-field-item > .dx-field-item-content\"\r\n },\r\n _getTooltipsSelector: function() {\r\n return this.callBase() + \", .dx-field-item-content .\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)\r\n }\r\n },\r\n columns: {\r\n _isColumnVisible: function(column) {\r\n return this.callBase(column) && !column.adaptiveHidden\r\n }\r\n },\r\n keyboardNavigation: {\r\n _isCellValid: function($cell) {\r\n return this.callBase.apply(this, arguments) && !$cell.hasClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n },\r\n _processNextCellInMasterDetail: function($nextCell) {\r\n this.callBase($nextCell);\r\n var isCellOrBatchMode = this._editingController.isCellOrBatchEditMode();\r\n if (!this._isInsideEditForm($nextCell) && $nextCell && isCellOrBatchMode) {\r\n var focusHandler = function focusHandler() {\r\n _events_engine.default.off($nextCell, \"focus\", focusHandler);\r\n _events_engine.default.trigger($nextCell, \"dxclick\")\r\n };\r\n _events_engine.default.on($nextCell, \"focus\", focusHandler)\r\n }\r\n },\r\n _handleTabKeyOnMasterDetailCell: function(eventTarget, direction) {\r\n var result = this.callBase(eventTarget, direction);\r\n var $currentCell = this._getFocusedCell();\r\n var $row = $currentCell && $currentCell.parent();\r\n if (!result && $row && $row.length) {\r\n var $dataCells = getDataCellElements($row);\r\n var $targetCell = \"next\" === direction ? $dataCells.last() : $dataCells.first();\r\n var rowIndex = $row.get(0).rowIndex;\r\n var adaptiveController = this._adaptiveController;\r\n var key = this._dataController.getKeyByRowIndex(\"next\" === direction ? rowIndex : rowIndex - 1);\r\n var isCellElementsEquals = $currentCell && $targetCell && $currentCell.get(0) === $targetCell.get(0);\r\n return adaptiveController.isAdaptiveDetailRowExpanded(key) && isCellElementsEquals\r\n }\r\n return result\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n"],"sourceRoot":""}