{"version":3,"sources":["../node_modules/devextreme/ui/grid_core/ui.grid_core.accessibility.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.column_headers.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.column_state_mixin.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.columns_controller.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.data_source_adapter.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.data_controller.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.context_menu.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.column_chooser.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.columns_resizing_reordering.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.column_fixing.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.adaptivity.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.columns_view.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","exports","registerKeyboardAction","accessibility","nodeInterop","__esModule","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","hasOwnProperty","call","desc","set","default","_interopRequireWildcard","require","WeakMap","cacheBabelInterop","cacheNodeInterop","viewName","instance","$element","selector","action","keyboardController","getController","option","isKeyboardEnabled","createAction","args","executeAction","_renderer","_interopRequireDefault","_events_engine","_uiGrid_core","_message","_type","_iterator","_extend","_uiGrid_core2","_default","defaultOptions","showColumnHeaders","cellHintEnabled","views","columnHeadersView","ColumnsView","inherit","createCellContent","that","$cell","options","$cellContent","addClass","addWidgetPrefix","setAria","addCssClassesToCellContent","column","showColumnLines","contentAlignment","getHeaderContentAlignment","alignment","$indicatorElements","_getIndicatorElements","$visibleIndicatorElements","indicatorCount","length","columnAlignment","_getColumnAlignment","sortIndicatorClassName","concat","_getIndicatorClassName","sortIndexIndicatorClassName","$sortIndicator","filter","$sortIndexIndicator","children","toggleClass","_createTable","$table","this","callBase","apply","arguments","on","e","event","shiftKey","preventDefault","_isLegacyKeyboardNavigation","_getDefaultTemplate","$container","$content","command","caption","text","html","_getHeaderTemplate","headerCellTemplate","allowRenderToDetachedContainer","render","_processTemplate","template","renderingTemplate","rowType","container","model","extend","_handleDataChanged","changeType","_isGroupingChanged","_requireReady","_renderCell","$row","row","type","attr","_setCellAriaAttributes","cellOptions","isBand","headerId","format","_createRow","_handleActionKeyDown","bind","$target","target","_lastActionElement","is","headerFilterController","$column","closest","columnIndex","getColumnIndexByElement","showHeaderFilterMenu","_processHeaderAction","_renderCore","element","_tableElement","_dataController","isLoaded","_hasRowElements","empty","_updateContent","_renderTable","getRowCount","_renderRows","_getRowVisibleColumns","rowIndex","_columnsController","getVisibleColumns","_renderRow","columns","_createCell","$cellElement","rowspan","_getRows","result","rowCount","i","push","_getCellTemplate","_columnOptionChanged","changeTypes","optionNames","grouping","groupExpanding","width","visible","resizeCompleted","fire","_isElementVisible","elementOptions","_alignCaptionByCenter","$indicatorsContainer","_getIndicatorContainer","remove","clone","css","insertBefore","_updateCell","_updateIndicator","indicatorName","$indicatorElement","returnAll","_isSortableElement","getHeadersRowHeight","$tableElement","getTableElement","$headerRows","find","toArray","reduce","sum","headerRow","height","getHeaderElement","index","columnElements","getColumnElements","eq","bandColumnIndex","columnsController","isDefined","visibleColumns","getChildrenByBandColumn","each","_","getRowIndex","_getCellElement","getVisibleIndex","getCellElements","cellIndex","getCellIndex","getColumns","getVisibleColumnIndex","getColumnWidths","$columnElements","_getWidths","allowDragging","sourceLocation","draggingPanels","draggableColumnCount","canHideColumn","allowHiding","allowDrag","allowReordering","allowGrouping","isColumnOptionUsed","draggingPanel","getBoundingRect","top","offset","getName","getColumnCount","isVisible","optionChanged","name","_invalidate","handled","getHeight","getElementHeight","getContextMenuItems","sortingOptions","mode","allowSorting","onItemClick","params","setTimeout","changeSortOrder","itemData","value","ascendingText","disabled","sortOrder","icon","descendingText","clearText","setRowsOpacity","columnID","setColumnOpacity","ownerBand","opacity","module","_common","_position","_applyColumnState","_that$component","rtlEnabled","parameters","isGroupPanelItem","rootElement","hasClass","_createIndicatorContainer","$span","component","indicatorAlignment","indicator","_renderIndicator","noop","getDefaultAlignment","ignoreIndicatorAlignment","$indicatorContainer","$indicator","append","_updateIndicators","$cells","rowOptions","parent","data","cells","_callbacks","_variable_wrapper","_data","_array","_config","_object","_ui","_inflector","_date_serialization","_number","_date","_deferred","_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","visibleWidth","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","date","datetime","COLUMN_INDEX_OPTIONS","visibleIndex","groupIndex","grouped","sortIndex","setFilterOperationsAsDefaultValues","filterOperations","defaultFilterOperations","createColumn","columnOptions","userStateColumnOptions","bandColumn","commonColumnOptions","isString","dataField","setName","deepExtendArraySafe","getCommonSettings","calculatedColumnOptions","_createCalculatedColumnOptions","createColumnsFromOptions","columnsOptions","_columnsUserState","checkUserStateColumn","hasColumns","getParentBandColumns","columnParentByIndex","unshift","getColumnFullPath","bandColumnsCache","getBandColumnsCache","callbackFilter","item","isPlain","_columns","indexOf","join","calculateColspan","colspan","getValueDataType","dataType","getSerializationFormat","getDateSerializationFormat","isNumeric","updateSerializers","deserializeValue","isDateType","deserializeDate","serializeValue","serializeDate","serializationFormat","parsedValue","parseFloat","isNaN","toString","customizeTextForBooleanDataType","valueText","getCustomizeTextByDataType","updateColumnIndexes","isObject","_commandColumns","updateColumnGroupIndexes","currentColumn","normalizeIndexes","getColumnIndexByVisibleIndex","location","getGroupColumns","getChooserColumns","col","userStateColumn","applyUserState","userStateColumnIndex","columnsUserState","ignoreColumnOptionNames","_ignoreColumnOptionNames","columnCountById","resultColumns","allColumnsHaveState","userStateColumnIndexes","applyFieldsState","fieldName","inArray","defaultSelectedFilterOperation","findUserStateColumn","id","count","j","_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","columnsChanged","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","forEach","map","expandColumn","splice","numberToString","digitsCount","str","mergeColumns","commandColumns","needToExtend","commandColumnIndex","slice","isColumnFixing","_isColumnFixing","defaultCommandColumns","fixed","getCommandColumnIndex","columnType","allowFixing","isColumnFixed","_bandColumnsCache","findColumn","identifier","identifierOptionName","substr","_getExpandColumnOptions","cssClass","allowResizing","_getFirstItems","dataSource","groupsCount","items","normalizeSortingInfo","group","getFirstItemsCore","childItems","collapsedItems","_endUpdateCore","init","_isColumnsFromOptions","addCommandColumn","addExpandColumn","_dataSourceApplied","applyDataSource","_dataSource","callbackNames","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","columnOption","_requireResize","publicMethods","forceApplying","isDataSourceLoaded","_dataSourceColumnsCount","columnsFromDataSource","firstItems","processedFields","isFunction","isWrapped","createColumnsFromDataSource","updateColumns","isAllDataTypesDefined","Deferred","reject","promise","reset","_visibleColumns","_fixedColumns","_rowCount","getUserState","isDataSourceApplied","groupingOptions","groupPanelOptions","minWidth","autoExpandGroup","autoExpandAll","allowCollapsing","allowColumnDragging","contextMenuEnabled","checkSerializers","calculateCellValue","defaultCalculateCellValue","isBandColumnsUsed","_getVisibleColumnsCore","getFixedColumns","_getFixedColumnsCore","getFilteringColumns","allowHeaderFiltering","field","getColumnIndexOffset","notFixedColumnCount","transparentColumnIndex","lastFixedPosition","transparentColumn","transparentColspan","prevColumn","newColumn","source","getOwnPropertyDescriptors","defineProperties","_objectSpread","_getExpandColumnsCore","getExpandColumns","firstGroupColumn","isFixedFirstGroupColumn","cellTemplate","columnChildrenByIndex","parentIndex","_isColumnVisible","isParentColumnVisible","isFixedToEnd","rowspanGroupColumns","rowspanExpandColumns","positiveIndexedColumns","negativeIndexedColumns","notGroupedColumnsCount","columnDigitsCount","showWhenGrouped","processBandColumns","indexedColumns","orderEach","firstPositiveIndexColumn","columnsByFixing","columnsByVisibleIndex","getDataColumns","bandColumnID","getInvisibleColumns","hiddenColumnsByBand","getAllColumns","grep","allowMoveColumn","fromVisibleIndex","toVisibleIndex","targetLocation","sourceColumn","moveColumn","targetGroupIndex","fromIndex","toIndex","groupColumns","Math","max","moveColumnToGroup","targetColumn","sortingMode","needResetSorting","nextSortOrder","getSortDataSourceParameters","useLocalSelector","sortColumns","sort","sortItem","calculateSortValue","displayField","calculateDisplayValue","sortingMethod","compare","getGroupDataSourceParameters","calculateGroupValue","groupItem","isExpanded","refresh","updateNewLookupsOnly","deferreds","lookup","valueMap","update","when","done","_updateColumnOptions","calculateCallbackName","calculateCallback","originalCallback","context","displayValueMap","isRTL","getAlignmentByDataType","getFormatByDataType","customizeText","defaultFilterOperation","showEditorAlways","isColumnDataTypesUpdated","lookupDataType","valueDataType","getDisplayValue","_customizeColumns","_this","updateSortingGrouping","sortParameters","groupParameters","filterParameters","lastLoadOptions","always","_updateChanges","sorting","filtering","equalSortParameters","dataController","equalFilterParameters","getCombinedFilter","fromDataSource","isColumnsChanged","updateSortGroupParameterIndexes","indexParameterName","columnsGroupParameters","columnsSortParameters","groupingChanged","groupExpandingChanged","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","getter","captionize","skipDeserialization","parseValue","parse","calculateFilterExpression","defaultCalculateFilterExpression","createFilterExpression","userDataType","selectedFilterOperation","valueExpr","updateValueMap","calculateValue","displayExpr","displayValue","isPlainObject","dataSourceOptions","normalizeDataSourceOptions","paginate","DataSource","load","resizedCallbacks","resized","add","defaultOptionName","charAt","toUpperCase","parents","invisibleParents","_getRowCount","alwaysGetRowIndex","onlyVisibleDirectChildren","_getChildrenByBandColumn","recursive","column1","column2","isParentBandColumn","getColumnId","_uiData_grid","_array_store","_array_utils","cloneItems","groupCount","calculateOperationTypes","loadOptions","isFullReload","operationTypes","reload","fullReload","groupExpand","pageIndex","skip","take","paging","getPageDataFromCache","cachedPagesData","pages","remoteOperations","_remoteOperations","_isLastPage","isLastPage","_hasLastPage","_currentTotalCount","_cachedPagesData","_lastOperationTypes","_eventsStrategy","_skipCorrection","_isLoadingAll","changed","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","_this2","totalCount","isVirtualMode","change","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","deferred","_isCustomLoading","loadingOperationTypes","totalItemsCount","ceil","hasKnownLastPage","loadFromStore","d","resolve","timeout","_this4","dataSourceLoadOptions","loadResult","_customLoadOptions","isLoadingAll","_scheduleLoadCallbacks","executeAsync","fireEvent","full","getCachedStoreData","_custom_store","_data_helper","_array_compare","loadingTimeout","cacheEnabled","repaintChangesOnly","highlightChanges","onDataErrorOccurred","enabled","include","changePaging","_skipProcessingPagingChange","pageChanged","members","_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","checkChanges","updateItemsHandler","isAsyncDataSourceApplying","_isDataSourceApplying","isDelayed","needApplyFilter","_isAllDataTypesDefined","hasAdditionalFilter","NAME","_fireLoadingChanged","fireError","Error","pagingEnabled","scrollingMode","appendMode","isChanged","_getSpecificDataSourceOption","_initDataSource","oldDataSource","setDataSource","_loadDataSource","_beforeProcessItems","getRowIndexDelta","_processItems","rowIndexDelta","visibleItems","lastVisibleItem","dataIndex","_processItem","_generateDataItem","_processDataItem","dataItem","values","generateDataValues","isModified","_applyChange","_applyChangeUpdate","_applyChangesOnly","_applyChangeFull","_getRowIndices","rowIndices","a","b","correctedRowIndex","allowInvisibleRowIndices","prevIndex","rowIndexCorrection","columnIndices","equalItems","item1","item2","strict","equalByValue","isEditing","oldItem","oldNextItem","newItem","newNextItem","isFullUpdate","_partialUpdateRow","_isCellChanged","oldRow","newRow","visibleRowIndex","isLiveUpdate","JSON","stringify","isCellModified","modifiedValues","_getChangedColumnIndices","changedColumnIndices","cell","watch","oldValues","_isItemEquals","_item1$data","_item2$data","_item1$data2","_item2$data2","expandedMatch","summaryCellsMatch","summaryCells","continuationMatch","isContinuation","isContinuationOnNextPage","newIndexByKey","getRowKey","oldItems","findChanges","_correctRowIndices","newRowIndex","_updateItemsCore","rows","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","_element","_context_menu","rowsView","footerView","headerPanel","VIEW_NAMES","onContextMenuPreparing","contextMenu","ViewController","dxEvent","$targetRowElement","$targetCellElement","menuItems","$targetElement","view","getView","targetElement","getPublicElement","_contextMenuPrepared","contextMenuView","View","_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","appendTo","onClick","showColumnChooser","hint","integrationOptions","hide","getPosition","my","at","of","collision","boundaryOffset","columnChooserView","_resizeCore","_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","scrollTo","y","useNativeScrolling","_prepareSelectModeConfig","_prepareDragModeConfig","searchValue","noDataText","selectNodesRecursive","onItemSelectionChanged","needPartialRender","needFullRender","all","$node","$nodes","columnVisible","isColumnChooserVisible","$overlayContent","left","right","outerWidth","bottom","outerHeight","hideColumnChooser","popupContainer","extenders","_getToolbarItems","_appendColumnChooserItem","hintText","toolbarItem","widget","onInitialized","_getToolbarButtonClass","showText","locateInMenu","_dom_adapter","_index","_pointer","_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","display","to","duration","easing","DraggingHeaderView","_isDragging","isDragging","_getDraggingPanelByPos","pos","_dragOptions","boundingRect","x","_resetTargetColumnOptions","_dropOptions","targetColumnIndex","targetColumnElement","isLast","posX","posY","_getVisibleIndexObject","_controller","_columnsResizerViewController","dragHeader","columnElement","isCommandColumn","sourceIndex","sourceColumnIndex","sourceColumnElement","document","getDocument","_onSelectStart","onselectstart","drag","textAlign","clientHeight","clientWidth","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","_that$_draggingHeader","columnsSeparatorWidth","_columnsSeparatorView","parentOffset","parentOffsetLeft","_draggingHeaderView","_isResizing","_resizingInfo","_updateColumnsWidthIfNeeded","currentColumnIndex","getBoundingClientRect","_targetPoint","_previousParentOffset","_isReadyResizing","_endResizing","_trackerView","_getNextColumnIndex","_setupResizingInfo","nextColumnIndex","currentHeader","nextHeader","startPosX","currentColumnWidth","nextColumnWidth","_startResizing","isTouchEvent","getScrollable","_scrollRight","_container","scrollLeft","loseFocus","getPointsByColumns","_pointsByColumns","_unsubscribeFromEvents","_moveSeparatorHandler","addNamespace","move","_startResizingHandler","down","_endResizingHandler","up","_subscribeToEvents","nextCellWidth","cellWidth","needUpdate","resizingInfo","contentWidth","_rowsView","isPercentWidth","setColumnWidth","oldColumnWidth","toFixed","floor","totalPercent","correctContentWidth","columnWidths","totalWidth","lastColumnIndex","getLastResizableColumnIndex","updateDimensions","callback","handler","_subscribesToCallbacks","_unsubscribeFromCallbacks","subscribe","_unsubscribes","generatePointsByColumnsHandler","generatePointsByColumnsScrollHandler","_scrollLeft","scrollChanged","previousScrollbarVisibility","getScrollbarWidth","previousTableHeight","scrollbarVisibility","updateFreeSpaceRowHeight","TablePositionViewController","diffOffsetTop","columnsHeadersHeight","scrollBarWidth","rowsHeight","columnsResizerController","draggingHeaderView","_pagerView","targetPoint","ctor","columnsSeparatorView","blockSeparatorView","trackerView","draggingHeader","nameDraggingPanel","subscribeToEvents","$columnElement","start","currentTarget","end","_getSeparator","_blockSeparatorView","hideSeparators","blockSeparator","columnsSeparator","_animationColumnIndex","_headerPanelView","_columnChooserView","allowDrop","headersView","separator","hasTargetVisibleIndex","tablePosition","columnsResizer","_needUpdateRowHeight","itemCount","wordWrapEnabled","editorFactory","renderFocusOverlay","_wheel","_browser","_translator","getTransparentColumnIndex","fixedColumns","normalizeColumnWidths","widths","fixedWidths","fixedColumnIndex","baseFixedColumns","_isFixedTableRendering","_isFixedColumns","_createCol","_correctColumnIndicesForFixedColumns","$fixedTable","_fixedTableElement","fixedCorrection","fixedCells","prevFixedColumn","columnCommand","setEmptyText","isRowAltStyle","isAltRow","mozilla","_wrapTableInScrollContainer","$scrollContainer","_renderCellContent","isEmptyCell","isFixedTableRendering","isGroupCell","groupCellTemplate","alignByFixedColumnCellCount","_getAlignByColumnCellCount","isFixed","_getCellElementsCore","cellElements","isGroupRow","headerRowIndex","fixedCellElements","_getRowElements","style","visibility","fixedColumn","setTableElement","tableElement","getTableElements","getFixedColumnsOffset","$transparentColumn","positionTransparentColumn","getTransparentColumnElement","first","getFixedTableElement","isFixedColumns","synchronizeRows","setColumnWidths","isWidthsSynchronized","isColumnWidthChanged","useVisibleColumns","isScrollbarVisible","hasAutoWidth","_createColGroup","_getClientHeight","boundingClientRectElement","$rowElements","$fixedRowElements","$contentElement","rowHeights","fixedRowHeights","heightTable","heightFixedTable","_findContentElement","rowHeight","fixedRowHeight","setScrollerSpacing","paddingLeft","paddingRight","columnFixing","texts","fix","unfix","leftPosition","rightPosition","columnFixingOptions","beginGroup","getFixedColumnElements","$transparentColumnElement","colSpan","$fixedColumnElements","_detachHoverEvents","_attachHoverEvents","attachHoverEvent","isHover","contentClass","scrollDelay","clearTimeout","_fixedScrollTimeout","$nearestScrollable","shouldScroll","nearestScrollableInstance","getInstance","nearestScrollableHasVerticalScrollbar","scrollHeight","delta","_updateScrollable","scrollOffset","_updateFixedTablePosition","_renderContent","contentElement","_getGroupCellOptions","_renderGroupedCells","_renderGroupSummaryCells","_hasAlignByColumnSummaryItems","_renderGroupSummaryCellsCore","$groupCell","groupCellColSpan","alignByColumnCellCount","_getSummaryCellIndex","$rows","_setRowsOpacityCore","needFocus","$focusedElement","focus","vWidth","hWidth","styles","marginBottom","$fixedContent","_scrollable","_getElasticScrollTop","elasticScrollTop","scrollbarWidth","reachedBottom","scrollableContent","scrollableContainer","_applyElasticScrolling","_handleScroll","_updateContentPosition","isRender","_scrollTop","_afterRowPrepared","_scrollToElement","normalizeColumnIndicesByPoints","correctIndex","pointsByFixedColumns","_pointsByFixedColumns","isWidgetResizingMode","_click","_guid","_form","_window","COLUMN_VIEWS","getDataCellElements","adaptiveCellTemplate","$adaptiveColumnButton","adaptiveColumnsController","toggleExpandAdaptiveDetailRow","columnHidingEnabled","onAdaptiveDetailRowPreparing","adaptiveColumns","_isRowEditMode","_getEditMode","_isItemModified","_renderFormViewTemplate","focusAction","trigger","formatValue","isCellOrBatchEditMode","_editingController","templateOptions","isDomElement","getWindow","renderTemplate","_cellPrepared","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","_ref","cssClassNameToRemove","_showHiddenColumns","$hiddenCommandCells","$hiddenCells","_isCellValid","_ref2","_hideVisibleColumnInView","_ref3","editFormRowIndex","getEditFormRowIndex","rowsCount","getRowsCount","currentVisibleIndex","$rowElement","_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","getRowElement","setCommandAdaptiveAriaLabel","labelName","_adaptiveColumnsController","_renderCells","hidingColumnsQueueLength","hiddenColumnsLength","_getColumnIndexByElementCore","formItem","columnIdentifier","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","msie","version","_updateScrollableTimeoutID","_correctColumnWidths","adaptiveController","columnAutoWidth","oldHiddenColumns","hidingColumnsQueue","_toggleBestFitMode","isBestFit","_needStretch","expandRowIndex","node","isNewRow","_getRowIndicesForExpand","lastRowIndex","oldExpandLoadedRowIndex","newExpandLoadedRowIndex","oldKey","_getFocusCellSelector","_getTooltipsSelector","keyboardNavigation","_processNextCellInMasterDetail","$nextCell","isCellOrBatchMode","_isInsideEditForm","focusHandler","_handleTabKeyOnMasterDetailCell","eventTarget","direction","$currentCell","_getFocusedCell","$dataCells","$targetCell","isCellElementsEquals","_element_data","_double_click","_style","iteratorUtils","_uiGrid_core3","appendElementTemplate","content","getWidthStyle","setCellWidth","maxWidth","_createScrollableOptions","scrollingOptions","pushBackValue","bounceEnabled","useKeyboard","useNative","useSimulatedScrollbar","createElement","rowObject","_isAltRow","isAppend","safari","ctrlKey","isDataRow","isHeaderRow","isMasterDetailRow","isFilterRow","msieCorrection","removeAttr","scrollWidth","getOptions","$fieldItemContent","delegateTarget","resultOptions","cellElement","eventType","formItemOptions","touchTarget","touchCurrentTarget","timeoutId","clearTouchTargets","_isNativeClick","rowElement","_rowPointerDown","_rowClick","_rowDblClick","subscribeToRowEvents","colgroupElement","setWidth","renderDelayedTemplates","delayedTemplates","_delayedTemplates","syncTemplates","async","asyncTemplates","_renderDelayedTemplatesCore","_renderDelayedTemplatesCoreAsync","templates","isAsync","Date","templateParameters","shift","doc","isRenderer","renderedTemplate","nodeType","templateID","_templatesCache","getTemplate","templateDeferred","onRendered","renderAsync","_getBodies","not","_wrapRowIfNeed","$tBodies","$tbody","_appendRow","appendTemplate","$root","$wrappedRow","_addWatchMethod","_rowPrepared","_needRenderCell","oldValue","_updateCells","$newRowElement","$newCells","cellUpdatedClass","$newCell","replaceWith","newElement","oldAttributes","attributes","newAttributes","nodeName","hasAttribute","removeAttribute","setAttribute","nodeValue","copyAttributes","columnIndexOffset","ariaColIndex","_getCellOptions","appendChild","watchers","updateFunc","watcher","newValue","keepRow","excludeValidators","category","afterExecute","_updateScrollLeftPosition","$newTableElement","$cellElements","legacyRendering","offsetWidth","clientRect","isRowVisible","$cols","columnVisibleIndex","_getVisibleColumnIndex","_getRowElement","$tableElements","getCellElement","elements","getCell","cellPosition","_getRowElementsCore","tBodies","isHorizontal"],"mappings":"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","file":"static/js/main~6ef07c07.5e549ed2.chunk.js","sourcesContent":["/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.accessibility.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\r\n return typeof obj\r\n } : function(obj) {\r\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }, _typeof(obj)\r\n}\r\nexports.registerKeyboardAction = void 0;\r\nvar accessibility = _interopRequireWildcard(require(\"../../ui/shared/accessibility\"));\r\n\r\nfunction _getRequireWildcardCache(nodeInterop) {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cacheBabelInterop = new WeakMap;\r\n var cacheNodeInterop = new WeakMap;\r\n return (_getRequireWildcardCache = function(nodeInterop) {\r\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop\r\n })(nodeInterop)\r\n}\r\n\r\nfunction _interopRequireWildcard(obj, nodeInterop) {\r\n if (!nodeInterop && 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(nodeInterop);\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 (\"default\" !== key && 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 || changeTypes.groupExpanding) {\r\n if (changeTypes.grouping) {\r\n this._isGroupingChanged = true\r\n }\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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 enumerableOnly && (symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\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 i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\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 ownerBand = column.ownerBand;\r\n var parentIndex = (0, _type.isObject)(ownerBand) ? ownerBand.index : 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)) {\r\n if (!calculateCallback.originalCallback) {\r\n var context = {\r\n column: column\r\n };\r\n column[calculateCallbackName] = function(data) {\r\n return calculateCallback.call(context.column, data)\r\n };\r\n column[calculateCallbackName].originalCallback = calculateCallback;\r\n column[calculateCallbackName].columnIndex = columnIndex;\r\n column[calculateCallbackName].context = context\r\n } else {\r\n column[calculateCallbackName].context.column = column\r\n }\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 var groupingChanged = !_uiGrid_core2.default.equalSortParameters(groupParameters, columnsGroupParameters, true);\r\n var groupExpandingChanged = !groupingChanged && !_uiGrid_core2.default.equalSortParameters(groupParameters, columnsGroupParameters);\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) && (groupingChanged || groupExpandingChanged)) {\r\n updateSortGroupParameterIndexes(that._columns, groupParameters, \"groupIndex\");\r\n if (fromDataSource) {\r\n groupingChanged && updateColumnChanges(that, \"grouping\");\r\n groupExpandingChanged && updateColumnChanges(that, \"groupExpanding\");\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 column.name = column.name || column.dataField || column.type\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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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, true)\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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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.$overlayContent();\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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\", null === outerX ? 0 : 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 _that$_draggingHeader;\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 var isDragging = null === (_that$_draggingHeader = that._draggingHeaderView) || void 0 === _that$_draggingHeader ? void 0 : _that$_draggingHeader.isDragging();\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 (!isDragging) {\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 that._columnsSeparatorView.moveByX(null)\r\n }\r\n } else {\r\n that.pointsByColumns(null);\r\n that._isReadyResizing = false;\r\n that._columnsSeparatorView.changeCursor();\r\n that._columnsSeparatorView.moveByX(null)\r\n }\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._draggingHeaderView = that.component.getView(\"draggingHeaderView\");\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,\r\n _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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\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 headerRowIndex = \"columnHeadersView\" === this.name ? rowIndex : void 0;\r\n if (this._fixedTableElement && cellElements) {\r\n var fixedColumns = this.getFixedColumns(headerRowIndex);\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, headerRowIndex);\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 var shouldScroll = false;\r\n if (scrollable && scrollable.$element().is($nearestScrollable)) {\r\n shouldScroll = true\r\n } else {\r\n var nearestScrollableInstance = $nearestScrollable.length && _ui.default.getInstance($nearestScrollable.get(0));\r\n var nearestScrollableHasVerticalScrollbar = nearestScrollableInstance && nearestScrollableInstance.scrollHeight() - nearestScrollableInstance.clientHeight() > 0;\r\n shouldScroll = nearestScrollableInstance && !nearestScrollableHasVerticalScrollbar\r\n }\r\n if (shouldScroll) {\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 && (!this._isFixedColumns || !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.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 parseFloat(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","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_view.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 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 return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\r\n return typeof obj\r\n } : function(obj) {\r\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }, _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(nodeInterop) {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cacheBabelInterop = new WeakMap;\r\n var cacheNodeInterop = new WeakMap;\r\n return (_getRequireWildcardCache = function(nodeInterop) {\r\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop\r\n })(nodeInterop)\r\n}\r\n\r\nfunction _interopRequireWildcard(obj, nodeInterop) {\r\n if (!nodeInterop && 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(nodeInterop);\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 (\"default\" !== key && 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 $row = $cell.parent();\r\n var rowOptions = $row.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 resultOptions.rowIndex = that.getRowIndex($row);\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, row)\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, keepRow) {\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 && !keepRow) {\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 _updateScrollLeftPosition: 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 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"],"sourceRoot":""}