{"version":3,"sources":["../node_modules/devextreme/ui/grid_core/ui.grid_core.error_handling.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.grid_view.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.header_panel.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.master_detail.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.editor_factory.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.editing.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.filter_row.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.header_filter.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.header_filter_core.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.filter_sync.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.filter_builder.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.filter_panel.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.pager.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.keyboard_navigation.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.export_mixin.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.focus.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.modules.js","../node_modules/devextreme/ui/grid_core/ui.grid_core.filter_custom_operations.js"],"names":["exports","default","_renderer","_interopRequireDefault","require","_events_engine","_click","_iterator","_uiGrid_core","obj","__esModule","_default","defaultOptions","errorRowEnabled","controllers","errorHandling","ViewController","inherit","init","this","_columnHeadersView","getView","_rowsView","_createErrorRow","error","$tableElements","$errorRow","$closeButton","that","$errorMessage","_renderErrorMessage","addClass","addWidgetPrefix","on","name","createAction","args","e","event","errorRowIndex","currentTarget","closest","index","stopPropagation","each","_","tableElement","children","eq","removeErrorRow","getController","fireContentReadyAction","attr","colSpan","getVisibleColumns","length","role","prepend","append","appendTo","message","url","replace","$message","text","renderErrorRow","rowIndex","$popupContent","$errorMessageElement","$firstErrorRow","find","remove","viewElement","isVisible","getTableElements","$row","_getRowElements","next","insertAfter","$tbody","rowElements","last","first","resizingController","$columnHeaders","element","$rowsViewElement","hasClass","optionChanged","handled","callBase","extenders","data","errorHandlingController","dataErrorOccurred","add","option","changed","changeType","editingController","hasChanges","module","_typeof","Symbol","iterator","constructor","prototype","_common","_window","_type","_position","_uiGrid_core2","_message","_deferred","_dom_adapter","_browser","accessibility","nodeInterop","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","hasOwnProperty","call","desc","set","_interopRequireWildcard","WeakMap","cacheBabelInterop","cacheNodeInterop","VIEW_NAMES","isPercentWidth","width","isString","slice","mergeArraysByMaxValue","values1","values2","result","i","push","calculateFreeWidth","widths","contentWidth","_getTotalWidth","restoreFocus","focusedElement","selectionRange","hiddenFocus","setSelectionRange","showBorders","renderAsync","legacyRendering","resizing","_initPostRenderHandlers","dataController","_dataController","_refreshSizesHandler","resizeDeferred","isDelayed","items","changeTypes","needUpdateDimensions","resize","deferUpdate","deferRender","_setScrollerSpacing","_hasHeight","when","done","_setAriaRowColCount","component","_fireContentReadyAction","setAria","rowCount","totalItemsCount","colCount","columnCount","$element","_getBestFitWidths","_this$_footerView","rowsView","columnHeadersView","_widths","getColumnWidths","_rowsView$getTableEle","headersTableElement","getTableElement","setTableElement","rowsColumnWidths","headerColumnWidths","footerColumnWidths","_footerView","resultWidths","_setVisibleWidths","visibleColumns","columnsController","_columnsController","beginUpdate","column","columnId","getColumnId","columnOption","endUpdate","_toggleBestFitModeForView","view","className","isBestFit","_this","$rowsTables","$viewTables","$tableBody","$rowsTable","$viewTable","toggleClass","_toggleBestFitMode","css","$rowsFixedTable","_needStretch","style","msie","parseInt","version","_synchronizeColumns","resetBestFitMode","columnAutoWidth","needBestFit","_needBestFit","hasMinWidth","isColumnWidthsCorrected","fixed","minWidth","getActiveElement","getSelectionRange","_maxWidth","maxWidth","isDefined","isNumeric","isPixelWidth","parseFloat","getBoundingRect","bottom","setTimeout","_correctColumnWidths","expandColumnWidth","type","normalizeWidthsByExpandColumns","_processStretch","some","c","command","_getAverageColumnsWidth","filter","hasPercentWidth","hasAutoWidth","hasWidth","_hasWidth","_loop","isHiddenColumn","averageColumnsWidth","columnIndex","currentMinWidth","map","calculateFreeWidthWithCurrentMinWidth","realColumnWidth","_getRealColumnWidth","columnWidth","scrollbarWidth","getScrollbarWidth","totalWidth","lastColumnIndex","getLastResizableColumnIndex","borderWidth","Math","ceil","outerWidth","innerWidth","resultSizes","groupSize","tableSize","unusedIndexes","diff","diffElement","floor","onePixelElementsCount","columnWidths","groupWidth","ratio","percentTotalWidth","reduce","sum","pixelTotalWidth","freeSpace","percentTotalWidthInPixel","updateSize","$rootElement","$groupElement","$container","importantMarginClass","is","getWidgetContainerClass","detach","clientHeight","removeClass","publicMethods","_requireResize","updateDimensions","checkSize","_checkSize","prevResult","_resizeDeferred","Deferred","always","isLoaded","_resetGroupElementHeight","_updateDimensionsCore","resolve","fail","reject","promise","groupElement","scrollable","getScrollable","height","scrollTop","_lastWidth","_lastHeight","_devicePixelRatio","getWindow","devicePixelRatio","_setScrollerSpacingCore","hasHeight","vScrollbarWidth","hScrollbarWidth","setScrollerSpacing","_this2","$testDiv","rootElementHeight","maxHeight","maxHeightHappened","editorFactory","isMaxHeightApplied","scrollHeight","offsetHeight","_updateLastSizes","viewName","setLoading","isLoading","_renderDimensions","synchronizeScrolling","_scrollChangedHandler","views","pos","j","scrollTo","left","top","scrollChanged","bind","gridView","View","_endUpdateCore","_resizingController","_getWidgetAriaLabel","_views","_groupElement","value","_renderViews","render","_getTableRoleName","isFirstRender","label","format","_rootElement","hasWindow","update","_toolbar","_visibility_change","headerPanel","ColumnsView","_getToolbarItems","_getButtonContainer","_getToolbarButtonClass","specificClass","secondClass","_getToolbarOptions","options","toolbarOptions","onItemRendered","itemRenderedCallback","itemData","executeAction","visible","toolbarItems","_renderCore","_toolbarOptions","$headerPanel","NAME","$toolbar","_createComponent","_columnOptionChanged","noop","_handleDataChanged","_requireReady","excludeValidators","apply","arguments","setToolbarItemDisabled","optionValue","toolbarInstance","itemIndex","indexOf","item","itemOptionPrefix","updateToolbarDimensions","triggerResizeEvent","getHeaderPanel","getHeight","getElementHeight","_invalidate","allowDragging","masterDetail","enabled","autoExpandAll","template","columns","_getExpandColumnsCore","expandColumns","cellTemplate","getExpandCellTemplate","initMasterDetail","_expandedItems","_isExpandAll","expandAll","groupIndex","updateItems","collapseAll","isRowExpanded","expandIndex","getIndexByKey","Array","isArray","_getRowIndicesForExpand","getRowIndexByKey","_changeRowExpandCore","rowIndices","_processDataItem","dataItem","isExpanded","detailColumnIndex","values","_processItems","change","grep","rowType","isNewRow","isEnabledChanged","isAutoExpandAllChanged","fullName","previousValue","_updateParentDataGrids","$masterDetailRow","_updateMasterDataGrid","parent","$detailElement","masterRowOptions","masterDataGrid","isFixedColumns","_updateFixedMasterDetailGrids","masterRowIndex","$rows","getRowElement","$tables","rowsNotEqual","tablesNotEqual","detailElementWidth","isDetailHorizontalScrollCanBeShown","isDetailGridWidthChanged","_getCellTemplate","isEditRow","allowRenderToDetachedContainer","_getDefaultTemplate","_isDetailRow","row","_createRow","toggle","_renderCells","_needRenderCell","columnIndices","_renderCell","_pointer","_index","_extend","_position2","_ui","UPDATE_FOCUS_EVENTS","addNamespace","down","join","_getFocusedElement","$dataGridElement","rowSelector","focusedElementSelector","concat","_getFocusCellSelector","_updateFocusCore","$focusCell","hideBorders","$focus","_$focusedElement","focus","loseFocus","_updateFocus","isFocusOverlay","target","_isFocusOverlay","clearTimeout","_updateFocusTimeoutID","_updateFocusOverlaySize","position","hide","location","calculate","extend","collision","h","oversize","v","outerHeight","show","callbackNames","hideBorder","_focusTimeoutID","renderFocusOverlay","focused","fire","refocus","isElementInCurrentGrid","_$focusOverlay","align","mozilla","$content","elemCoord","right","focusOverlayPosition","precise","my","at","of","boundary","setup","$focusedElement","category","_updateFocusHandler","getDocument","_attachContainerEventHandlers","normalizeKeyName","dispose","off","include","_guid","_dom","_array_utils","_dialog","_button","_popup","_devices","_form","_hold","iconUtils","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","enumerable","_objectSpread","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","o","minLen","n","toString","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","INSERT_INDEX","EDIT_MODES","ROW_BASED_MODES","CELL_BASED_MODES","FORM_BASED_MODES","MODES_WITH_DELAYED_FOCUS","EDIT_LINK_CLASS","save","cancel","edit","undelete","EDIT_ICON_CLASS","METHOD_NAMES","ACTION_OPTION_NAMES","BUTTON_NAMES","createFailureHandler","deferred","arg","Error","String","_getEditMode","editMode","_isRowEditMode","isEditingCell","cellOptions","isEditing","allowEditing","isEditingOrShowEditorAlwaysDataCell","isCommandCell","isEditorCell","showEditorAlways","editing","mode","refreshMode","allowAdding","allowUpdating","allowDeleting","useIcons","selectTextOnEditStart","confirmDelete","texts","editRow","saveAllChanges","saveRowChanges","cancelAllChanges","cancelRowChanges","addRow","deleteRow","undeleteRow","confirmDeleteMessage","confirmDeleteTitle","form","popup","startEditAction","editRowKey","editColumnName","changes","getDefaultEditorTemplate","container","$editor","createEditor","setValue","parentType","readOnly","isOnForm","id","getButtonIndex","buttons","button","getButtonName","isObject","$pointerDownTarget","isResizing","_editForm","_updateEditFormDeferred","_lastOperation","_deferreds","d","_dataChangedHandler","_saveEditorHandler","_pointerUpEditorHandler","_that$getController","_pointerDownEditorHandler","$target","targetComponent","_editCellInProgress","isEditorPopup","checkEditorPopup","isDomElement","document","isAnotherComponent","_disposed","isAddRowButton","isCellEditMode","_closeEditItem","up","_updateEditColumn","_updateEditButtons","_internalState","_optionsByReference","getChanges","resetChanges","_silentOption","_getInternalData","equalByValue","_addInternalData","params","internalData","_getOldData","_this$_getInternalDat","oldData","getUpdatedData","keyOf","editIndex","createObjectWithChanges","getInsertedData","getRemovedData","_fireDataErrorOccurred","getPopupContent","_needToCloseEditableCell","$targetElement","$targetCell","getRowIndex","getCellElements","isEditCell","closeEditCell","editForm","_repaintEditPopup","_isDefaultButtonVisible","isRowMode","isBatchMode","_getVisibleEditRowIndex","removed","_isButtonVisible","isFunction","_getButtonConfig","config","buttonName","editingTexts","addRowToNode","getEditingTexts","methodName","editingOptions","actionName","allowAction","cssClass","onClick","preventDefault","_getEditingButtons","buttonIndex","_this3","haveCustomButtons","splice","_renderEditingButtons","_this4","_createButton","_getEditCommandCellTemplate","_this5","watch","empty","setEmptyText","isRowEditMode","isFormEditMode","isCellOrBatchEditMode","getEditMode","getFirstEditableColumnIndex","firstFormItem","_firstFormItem","editRowIndex","$editFormElements","_getEditFormEditorVisibleIndex","getFirstEditableCellInRow","_getCellElement","getFocusedCellInRow","_inputFocusTimeoutID","editPopup","_editPopup","popupOptionName","_handleEditRowKeyChange","_handleEditColumnNameChange","_handleChangesChange","_resetEditColumnName","_resetEditRowKey","oldRowIndexCorrection","_getEditRowIndexCorrection","oldRowIndex","_getVisibleEditColumnIndex","_editCellFromOptionChanged","_editRowFromOptionChanged","cancelEditData","getVisibleColumnIndex","oldColumnIndex","repaintChangesOnly","_this6","_repaintEditCell","refresh","isPageChanged","needResetIndexes","_pageIndex","isEditRowKeyDefined","isEditColumnNameDefined","_isEditRowByIndex","_setEditRowKey","silent","_setEditRowKeyByIndex","getKeyByRowIndex","fireError","getEditRowIndex","getEditFormRowIndex","isKeyEqual","visibleRowIndex","popupVisible","_$popupContent","getEditForm","_needInsertItem","dataSource","scrollingMode","pageIndex","beginPageIndex","endPageIndex","dataRowIndex","_generateNewItem","_getLoadedRowIndexByInsertKey","loadedRowIndexOffset","getRowIndexOffset","loadedRowIndex","removeCount","processItems","_this7","processDataItem","generateDataValues","_changes$editIndex","modified","modifiedValues","_initNewRow","_this8","fromPromise","_getInsertKey","parentKey","rows","insertKey","_getInsertRowIndex","_getInsertIndex","parentRowIndex","getTopVisibleItemIndex","maxInsertIndex","editItem","store","param","oldEditRowIndex","saveEditData","_allowRowAdding","__KEY__","_addRowCore","insertIndex","initialOldEditRowIndex","_addChange","_showEditPopup","_focusFirstEditableCellInRow","_afterInsertRow","$firstCell","_delayedInputFocus","editCell","_isEditingStart","_beforeEditCell","_beforeUpdateItems","_setEditColumnNameByIndex","_visibleColumns$index","_setEditColumnName","_getEditColumn","_getColumnByName","editColumn","columnName","visibleWidth","_resetEditIndices","_item$oldData","_needFocusEditor","_focusEditorIfNeed","_this9","$editingCell","_this$_rowsView","editColumnIndex","$cell","_focusEditingCell","repaintForm","isMobileDevice","current","deviceType","popupOptions","showTitle","fullScreen","toolbar","widget","_getSaveButtonConfig","_getCancelButtonConfig","contentTemplate","_getPopupEditFormTemplate","$popupContainer","_getEditPopupHiddenHandler","trigger","not","repaint","defaultAnimation","getVisibleRows","templateOptions","formTemplate","getEditFormTemplate","_removeInternalData","_removeChange","executeOperation","func","_this10","waitForDeferredOperations","state","_editCell","coreResult","_this11","_editCellCore","_getNormalizedEditCellOptions","_ref","oldColumn","getVisibleIndex","_this12","isEditByOptionChanged","_this$_getNormalizedE","_prepareEditCell","_processCanceledEditingCell","_item$oldData2","beforeFocusCallback","callBeforeFocusCallbackAlways","inputFocus","$focusableElement","focusAndSelectElement","_beforeFocusCallback","real","ios","android","$editCell","_this13","rowKey","_checkAndDeleteRow","showDialogTitle","confirm","confirmResult","_deleteRowCore","isEmptyObject","_fireOnSaving","_this14","onSavingParams","_executeEditingAction","_processChanges","deferreds","results","dataChanges","_this15","changeCopy","_beforeSaveEditData","insert","newData","doneDeferred","_processSaveEditDataResult","hasSavedData","changesLength","_fireSaveEditDataEvents","_ref2","_this16","isSaving","_resolveAfterSave","_saving","_saveEditDataInner","_ref3","_afterSaveEditData","_this17","_ref4","beginLoading","_endSaving","endLoading","_cancelSaving","_resetModifiedClassCells","_this18","columnsCount","_ref5","_changes$","_refreshDataAfterSave","_cancelEditDataCore","_this19","isFullRefresh","selection","reload","load","changesOnly","isEditColumnVisible","_isEditColumnVisible","addCommandColumn","alignment","fixedPosition","isVisibleWithCurrentEditMode","_applyModified","_beforeCloseEditCellInBatchMode","_beforeCancelEditData","_hideEditPopup","hasEditData","isError","withoutSaveEditData","_this20","_closeEditCellCore","_this21","_getRowIndicesForCascadeUpdating","skipCurrentRow","addDeferred","_this22","_prepareChange","_options$row","$cellElement","cellElement","setCellValue","displayValueMap","_updateRowValues","updateFieldValue","forceUpdateRow","_this23","_applyChange","_focusPreviousEditingCellIfNeed","_updateEditRow","_needUpdateRow","isCustomSetCellValue","defaultSetCellValue","isCustomCalculateCellValue","visibleColumn","calculateCellValue","defaultCalculateCellValue","isUpdateInCellMode","_updateEditRowCore","_updateLockCount","getCellIndex","$focusedItem","selectionStart","_getFormEditItemTemplate","editCellTemplate","renderFormEditTemplate","detailCellOptions","isReadOnly","editorType","isCustomEditorType","formItem","getEditorType","rowData","editorOptions","getItemID","dataField","renderTemplate","_updateCell","getFormEditorTemplate","selector","_validator","$editorElement","validator","validatorOptions","contents","dxValidator","validationRules","validationGroup","dataGetter","getEditFormOptions","detailOptions","userCustomizeItem","editFormItemClass","forEachFormItems","callBack","tabs","itemId","getColumns","isBand","formID","customizeItem","caption","isRequired","rule","itemVisible","renderFormOnly","editFormOptions","baseEditFormOptions","$buttonsContainer","getColumnTemplate","editingStartOptions","isRowEditing","isCellEditing","icon","$button","iconType","getImageSourceType","getImageContainer","COMMAND_EDIT_CLASS","localizationName","getButtonLocalizationNames","hint","prepareEditButtons","titleButtonTextByClassNames","revert","classNameButtonByNames","buttonItems","prepareButtonItem","sortIndex","hintText","isButtonDisabled","onInitialized","EDIT_BUTTON_CLASS","disabled","showText","locateInMenu","highlightDataCell","parameters","isCellModified","_allowEditAction","allowEditAction","eventName","needCallback","isNewRowInEditMode","visibleEditRowIndex","_editingController","full","repaintRows","_updateItemsCore","_applyChangeUpdate","_applyChangesOnly","_processItem","dataIndex","_getChangedColumnIndices","oldItem","newItem","isLiveUpdate","_isCellChanged","oldRow","newRow","cell","cells","$cellElements","cellIndex","_getVisibleColumnIndex","$cells","columnIdentifier","editFormRowIndex","visibleIndex","_isNativeClick","_createTable","$table","isRowRemoved","isRowInserted","isRowModified","_getColumnIndexByElement","$tableElement","_getColumnIndexByElementCore","_editCellByClick","isEditedCell","resetActiveElement","_rowPointerDown","_this24","_pointerDownTimeout","_rowClick","isEditForm","rowElement","_rowDblClick","_cellPrepared","isEditableCell","_editCellPrepared","_formItemPrepared","_isFormItem","isDetailRow","isPopupEditing","_update","_getCellOptions","_createCell","_renderCellContent","cellValue","getCellOptions","optionName","_editor","_overlay","_menu","_accessibility","OPERATION_ICONS","notcontains","contains","startswith","endswith","between","OPERATION_DESCRIPTORS","BETWEEN_OPERATION_DATA_TYPES","isOnClickApplyFilterMode","ColumnHeadersViewFilterRowExtender","getEditorInstance","$editorContainer","componentNames","editor","getRangeTextByFilterValue","rangeEnd","filterValue","getColumnFilterValue","formatOptions","getFormatOptionsByColumn","formatValue","bufferedFilterValue","getColumnSelectedFilterOperation","bufferedSelectedFilterOperation","selectedFilterOperation","getFilterValue","isFilterRange","isRangeStart","dataType","isValidFilterValue","updateFilterValue","_applyFilterViewController","setHighLight","columnOptionName","normalizedValue","columnFilterValue","normalizeFilterValue","isBetween","notFireEvent","_updateEditorValue","$editorRangeElements","$menu","optionNames","checkChanges","overlayInstance","_updateFilterRangeContent","_updateFilterOperationChooser","_renderFilterRangeContent","_renderEditor","_getEditorOptions","_hideFilterRange","_filterRangeOverlayInstance","_resizeCore","isFilterRowVisible","_isElementVisible","_initFilterRangeOverlay","sharedData","$overlay","shading","focusStateEnabled","closeOnTargetScroll","closeOnOutsideClick","animation","offset","contentElement","EDITOR_CONTAINER_CLASS","$prevElement","shiftKey","prev","onShown","onHidden","_updateFilterRangeOverlay","_showFilterRange","getFilterRangeOverlayInstance","selectView","_getRows","_renderFilterCell","headerId","filterOperations","_renderFilterOperationChooser","html","allowFiltering","accessibilityOptions","inputAttr","_getFilterInputAccessibilityAttributes","showAllText","updateValueTimeout","placeholder","columnAriaLabel","$filterRangeContent","isCellWasFocused","menu","getInstance","_focusEditor","integrationOptions","activeStateEnabled","selectionMode","showFirstSubmenuMode","hideSubmenuOnMouseLeave","selectable","_getFilterOperationMenuItems","onItemClick","properties","columnSelectedFilterOperation","notFocusEditor","isOnClickMode","defaultSelectedFilterOperation","reset","onSubmenuShown","_isEditorFocused","onSubmenuHiding","onContentReady","_hideSubmenu","_visibleSubmenu","rtlEnabled","parents","prependTo","filterRowOptions","operationDescriptions","availableFilterOperations","descriptionName","selected","defaultFilterOperation","resetOperationText","DataControllerFilterRowExtender","skipCalculateColumnFilters","_calculateAdditionalFilter","filters","calculateFilterExpression","createFilterExpression","combineFilters","filterRow","showOperationChooser","applyFilter","applyFilterText","equal","notEqual","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","startsWith","notContains","endsWith","isBlank","isNotBlank","betweenStartText","betweenEndText","_getHeaderPanel","_headerPanel","enableApplyButton","removeHighLights","columnHeadersViewElement","columnsResizer","_startResizing","_targetPoint","_endResizing","_prepareFilterItem","filterItem","_isShowApplyFilterButton","toolbarItem","_filtering","_uiGrid_core3","_data","_utils","_date","_variable_wrapper","DATE_INTERVAL_FORMATS","month","getMonthNames","quarter","Date","HeaderFilterController","_headerFilterView","_updateSelectedState","isExclude","filterType","updateHeaderFilterItemSelectionState","filterValues","_normalizeGroupItem","currentLevel","displayValue","path","valueSelector","displaySelector","getHeaderItemText","headerFilterOptions","groupInterval","getGroupInterval","isDateType","getDisplayFormat","firstValueText","secondValue","secondValueText","getFormatOptions","emptyValue","_processGroupItems","groupItems","lookup","level","compileGetter","displayExpr","valueExpr","pop","getDataSource","group","getHeaderFilterGroupParameters","remoteOperations","grouping","headerFilterDataSource","headerFilter","isLookup","normalizeDataSourceOptions","lookupDataSourceOptions","isWrapped","cutoffLevel","_currentColumn","getCombinedFilter","useDefaultSearch","origPostProcess","postProcess","searchValue","unshift","getCurrentColumn","showHeaderFilterMenu","isGroupPanel","$columnElement","getColumnElements","showHeaderFilterMenuBase","columnElement","remoteFiltering","filtering","onShowing","dxResizableInstance","$overlayContent","dxResizable","headerFilterByColumn","isFilterBuilder","hideHeaderFilterMenu","ColumnHeadersViewHeaderFilterExtender","headerFilterMixin","$headerFilterIndicator","allowHeaderFiltering","_applyColumnState","rootElement","showColumnLines","_subscribeToIndicatorEvent","$indicator","indicatorName","_updateIndicator","_updateHeaderFilterIndicators","_updateIndicators","_needUpdateFilterIndicators","HeaderPanelHeaderFilterExtender","_createGroupPanelItem","groupColumn","$item","getDefaultAlignment","currentColumn","deserializeValue","invertFilterExpression","allowSearch","searchTimeout","ok","headerFilterView","HeaderFilterView","filterValuesMatch","isExcludeFilter","resetChildrenItemSelection","_tree_view","_list","updateSelectAllState","selectAllCheckBox","isSearchEnabled","getPopupContainer","_popupContainer","getListContainer","_listContainer","applyHeaderFilter","list","fillSelectedItemKeys","node","_getNode","hasChildrenWithSelection","_hasChildren","_initializePopupContainer","popupContainer","updatePopup","headerFilterMenu","_cleanPopupContent","_getSearchExpr","useDefaultSearchExpr","dxPopupOptions","showCloseButton","dragEnabled","resizeEnabled","_initializeListContainer","_getDefaultOptions","widgetOptions","searchEnabled","searchMode","renderCompleted","itemTemplate","encodeHtml","onOptionChanged","showCheckBoxesMode","keyExpr","searchExpr","pageLoadMode","showSelectionControls","onSelectionChanged","selectedItems","_selectedItemsUpdating","filterValueIndex","_isHeaderFilterEmpty","_getIndicatorClassName","_renderIndicator","indicator","columnAlignment","requireReady","FILTER_ROW_OPERATIONS","getColumnIdentifier","filterSyncEnabled","filterSync","Controller","canSyncHeaderFilterWithFilterRow","getConditionFromFilterRow","operation","getDefaultOperation","getConditionFromHeaderFilter","selectedOperation","updateHeaderFilterCondition","headerFilterCondition","hasArrayValue","getHeaderFilterFromCondition","updateFilterRowCondition","condition","defaultFilterOperations","syncFilterValue","getFilteringColumns","_skipSyncColumnOptions","filterConditions","getMatchedConditions","filterCondition","_initSync","identifier","checkForErrors","filteringColumns","getFilterValueFromColumns","isFilterSyncActive","isAllDataTypesDefined","dataSourceChanged","_getSyncFilterRow","syncFilters","removeFieldConditionsFromFilter","_getSyncHeaderFilter","addItem","getNormalizedFilter","syncFilterRow","syncHeaderFilter","getCustomFilterOperations","filterBuilderCustomOperations","anyOf","noneOf","filterSyncEnabledValue","customOperations","calculatedFilterValue","getFilterExpression","_parseColumnPropertyName","match","clearFilter","filterName","_applyFilter","getColumnByPath","filterSyncController","propertyName","filterHasField","_filter_builder","_scroll_view","filterBuilder","groupOperationDescriptions","and","or","notAnd","notOr","filterOperationDescriptions","filterBuilderPopup","filterBuilderView","_updatePopupOptions","_initPopup","_filterBuilderPopup","_disposePopup","_filterBuilder","title","$contentElement","_getPopupContentTemplate","_getPopupToolbarItems","$filterBuilderContainer","fields","direction","_check_box","_inflector","filterPanel","filterEnabled","createFilter","filterEnabledHint","filterPanelView","$leftContainer","FILTER_PANEL_CLASS","_filterValueBuffer","_getCheckElement","_getFilterElement","_getTextElement","_getRemoveButtonElement","onValueChanged","_showFilterBuilder","registerKeyboardAction","_addTabIndexToElement","filterText","$textElement","getFilterText","customizeText","customText","clearFilterValue","tabindex","_getConditionText","fieldText","operationText","valueText","_getValueMaskedText","_getValueText","field","customOperation","hasCustomOperation","getCurrentLookupValueText","getDisplayValue","getCurrentValueText","getConditionText","getCustomOperation","getField","captionize","getCaptionByOperation","getGroupText","isInnerGroup","textParts","groupValue","getGroupValue","isCondition","isGroup","_len","_key","groupText","substring","toUpperCase","split","_pager","_array","getPageIndex","pager","showPageSizeSelector","allowedPageSizes","pagerView","_getPager","pageSize","pageCount","totalCount","hasKnownLastPage","pagerOptions","keyboardController","maxPagesCount","showPageSizes","showInfo","displayMode","pagesNavigatorVisible","showNavigationButtons","pageSizes","getPageSizes","pageIndexChanged","pageSizeChanged","onKeyDown","useLegacyKeyboardNavigation","useKeyboard","infoText","_pageSizes","inArray","pagerVisible","scrolling","isPager","isPaging","isDataSource","isScrolling","skipProcessingPagingChange","_selectors","_short","INTERACTIVE_ELEMENTS_SELECTOR","NON_FOCUSABLE_ELEMENTS_SELECTOR","isGroupRow","isDataRow","isCellElement","tagName","isElementDefined","isMobile","isCellInHeaderRow","keyboardNavigation","enterKeyAction","enterKeyDirection","editOnKeyPress","_selectionController","_editorFactory","isKeyboardEnabled","subscribeVisibilityChange","_updateFocusTimeout","_fastEditingStarted","_focusedCellPosition","_canceledCellPosition","setupFocusedView","_isNeedScroll","_focusedView","_scrollToElement","_initViewHandlers","_initDocumentHandlers","rowsViewFocusHandler","isRelatedTargetInRowsView","relatedTarget","_isEventInCurrentGrid","$focusedCell","_getFocusedCell","$rowsView","isFullUpdate","isFocusedViewCorrect","isAppend","isFocusedElementCorrect","_initPointerEventHandler","_initKeyDownHandler","_setRowsViewAttributes","_isNeedFocus","_isHiddenFocus","_documentClickHandler","isCurrentRowsViewClick","isEditorOverlay","columnsResizerController","isColumnResizing","_resetFocusedCell","_resetFocusedView","_getRowsViewElement","_applyTabIndexToElement","pointerEventName","clickSelector","_pointerEventAction","_pointerEventHandler","keyboard","_keyDownListener","_keyDownHandler","unsubscribeVisibilityChange","isRowFocusType","focusType","isCellFocusType","setRowFocusType","setCellFocusType","needStopPropagation","originalEvent","isHandled","_processOnKeyDown","isDefaultPrevented","_updateFocusedCellPositionByTarget","keyName","_leftRightKeysHandler","ctrl","_upDownKeysHandler","_pageUpDownKeyHandler","_spaceKeyHandler","_ctrlAKeyHandler","_beginFastEditing","_tabKeyHandler","_enterKeyHandler","_escapeKeyHandler","_ctrlFKeyHandler","_f2KeyHandler","_isFastEditingAllowed","_isFastEditingStarted","eventArgs","ctrlKey","alt","altKey","shift","_closeEditCell","getVisibleRowIndex","$event","getRow","directionCode","_getDirectionCodeByKey","isEditingNavigationMode","_isVirtualColumnRender","_processVirtualHorizontalPosition","_getNextCell","_arrowKeysHandlerFocusCell","isUpArrow","_navigateNextCell","_isVirtualRowRender","rowHeight","_scrollBy","pagingEnabled","isPageUp","pageStep","_isVirtualScrolling","_container","isFocusedRowElement","_getElementType","startSelectionWithCheckboxes","changeItemSelection","control","selectAll","isOriginalHandlerRequired","_isLastValidCell","_isFirstValidCell","eventTarget","focusedViewElement","_handleTabKeyOnMasterDetailCell","_editingCellTabHandler","_targetCellTabHandler","_getMaxHorizontalOffset","scrollWidth","_isColumnRendered","allVisibleColumns","renderedVisibleColumns","_isFixedColumn","_isColumnVirtual","localColumnIndex","getColumnIndexOffset","nextColumnIndex","getColumnIndex","horizontalScrollPosition","needToScroll","_getVisibleColumnCount","columnIndexOffset","_getHorizontalScrollPositionOffset","scrollBy","positionOffset","$currentCell","_getCell","currentCellWidth","rtlMultiplier","isEditingAllowed","_getCellElementFromTarget","elementType","_updateFocusedCellPosition","nextCellInfo","_getNextCellByTabKey","_getRowIndex","_isDataRow","_focusCell","isHighlighted","_editFocusedCell","_focusInteractiveElement","$lastInteractiveElement","_getInteractiveElement","getFirstValidCellInRow","_checkNewLineTransition","_fireFocusedCellChanging","$newCellElement","cellPosition","_getCellPosition","_fireFocusedRowChanging","rowIndexChanged","setFocusedColumnIndex","isContinuation","changeRowExpand","_processEnterKeyForDataCell","_getEnterKeyDirection","allowEditingOnEnterKey","_allowEditingOnEnterKey","_handleEnterKeyEditingCell","_startEditing","isShift","_focusEditFormCell","searchTextEditor","getSearchTextEditor","keyCode","_isCellValid","$nextCell","isVerticalDirection","_fireFocusChangingEvents","_focus","isDeleting","which","fastEditingKey","fromCharCode","$parent","isInteractiveElement","isRevertButton","isExpandCommandCell","_isInsideEditForm","_focusView","_isMasterDetailCell","_clickTargetCellHandler","_isCellEditMode","setFocusedRowIndex","prevRowIndex","resetFocusedRow","_resetFocusedRow","_allowRowUpdating","skipFocusEvent","isDisabled","activeElementSelector","focusedRowEnabled","_focusElement","getFocusedView","rowsViewElement","$focusedView","_getFocusedViewByElement","$view","isLast","disableFocus","isNotFocusedRow","$focusElement","focusedView","$focusViewElement","isRowFocus","removeAttr","one","isRenderView","isBatchEditMode","_hasSkipRow","_checkCellOverlapped","$focusedElementInsideCell","isFocusedElementDefined","cellOffset","isOverlapped","_this$_focusedCellPos","setFocusedCellPosition","_getFocusedColumnIndexOffset","_getFixedColumnIndexOffset","isFixedColumnIndexOffsetRequired","_applyColumnIndexBoundaries","preventScroll","_this$_focusedView","renderFocusState","restoreFocusableElement","$rowElement","rowIndexOffset","newRowIndex","_getNewPositionByCode","code","_hasValidCellAfterPosition","_isLastRow","_hasValidCellBeforePosition","visibleColumnsCount","_isCellByPositionValid","getMaxRowIndex","isFirstValidCell","hasValidCells","checkingPosition","visibleColumnCount","visibleRows","isClick","isMasterDetailRow","isShowWhenGrouped","showWhenGrouped","isDataCell","rowItems","isRowEditingInCurrentRow","_isLegacyNavigation","$result","focusedCellPosition","includeCommandCells","newFocusedCellPosition","isLastCellOnDirection","_isCellInRow","visibleColumnIndex","_isAllowEditing","_startEditCell","colIndex","editResult","_editingCellHandler","editorValue","_$input$get$select","_$input$get","$input","keyDownEvent","createEvent","keyPressEvent","inputEvent","select","timeout","val","selectionEnd","$widgetContainer","fireRowEvent","newColumnIndex","prevCellIndex","prevColumnIndex","_fireFocusedCellChanged","localRowIndex","min","$newFocusedRow","prevFocusedRowIndex","loadingOperationTypes","paging","_fireFocusedRowChanged","focusedRowKey","focusController","focusedRowIndex","getFocusedRowIndexByKey","tabIndex","getCell","display","scrollHandler","$masterDetailCell","$masterDetailGrid","_processNextCellInMasterDetail","_processCanceledEditCellPosition","isCanceled","needTriggerPointerEventHandler","_triggerPointerDownEventHandler","cellElements","updateFocusElementTabIndex","_updateFocusedCellTabIndex","cellElementsLength","updateCellTabIndex","isMasterDetailCell","isValidCell","renderDelayedTemplates","_renderFocusByChange","shouldPreventScroll","editorInstance","_getEditorInstance","_handleEditingNavigationMode","originalKeyHandler","_supportedKeys","registerKeyHandler","_input","getWidgetInstance","keyboardNavigationController","_keyboardNavigationController","_correctRowIndices","getRowIndexCorrection","focusedRowIndexCorrection","virtualItemsCount","begin","end","adaptiveColumns","_showHiddenCellsInView","isCommandColumn","_hideVisibleCellInView","_getEmptyCell","colspan","rowspan","_defaultSetter","_cloneItem","_prepareItems","resultItems","cols","getItem","clone","r","_c","autoNavigateToFocusedRow","focusedColumnIndex","_keyboardController","_focusRowByIndex","_triggerFocusedRowChangedIfNeed","_focusRowByKey","isAutoNavigateToFocusedRow","operationTypes","_focusRowByIndexCore","setKeyByIndex","_isValidFocusedRowIndex","lastItemIndex","_getLastItemIndex","isRowFocused","_isLocalRowIndex","waitReady","virtualItems","virtualItemsBegin","visibleRowsCount","visiblePagesCount","_setFocusedRowKeyByIndex","_navigateToRow","isFocusedRowKeyDefined","navigateToRow","needFocusRow","isAutoNavigate","rowIndexByKey","_navigateTo","getPageIndexByKey","isVirtualRowRenderingMode","_navigateToVirtualRow","_navigateToVisibleRow","_triggerUpdateFocusedRow","scrollToRowElement","rowsScrollController","_rowsScrollController","getItemOffset","triggerUpdateFocusedRow","y","_focusRowByKeyOrIndex","currentFocusedRowIndex","updateFocusedRow","_change$items","isMainTable","_clearPreviousFocusedRow","_prepareFocusedRow","changedItem","$prevRowFocusedElement","focusedRow","$focusedRowTable","scrollToElementVertically","visibleRow","isRowElement","getSortDataSourceParameters","sortByKey","_dataSource","isLocalOperations","every","operationName","notSortedKeys","getDataIndexGetter","notSortedKey","_fireChanged","isPartialUpdateWithDeleting","_updatePageIndexes","processUpdateFocusedRow","prevRenderingPageIndex","_lastRenderingPageIndex","renderingPageIndex","_isPagingByRendering","isPagingByRendering","fullReload","isVirtualScrolling","isValidRowIndexByKey","getGlobalRowIndexByKey","globalIndex","_calculateGlobalRowIndexByGroupedData","_calculateGlobalRowIndexByFlatData","groupFilter","useGroup","_generateFilterByKey","_concatWithCombinedFilter","skip","take","_generateOperationFilterByKey","requireTotalCount","extra","combinedFilter","_generateBooleanFilter","sortInfo","sort","getGroupDataSourceParameters","reverse","getter","isBoolean","booleanFilter","sortFilter","dataSourceKey","keyPart","_checkRowKeys","_setFocusedRowElementTabIndex","_findRowElementForTabIndex","_scrollToFocusOnResize","resizeCompleted","getScrollElementPosition","_class","_callbacks","ModuleItem","ctor","_actions","_actionConfigs","flags","callbackFlags","unique","syncStrategy","optionCache","_optionCache","_setOptionWithoutOptionChange","localize","getAction","prefix","setAttribute","_controllers","action","_createAction","_createActionByOption","toLowerCase","containerName","getViews","_isReady","isReady","_requireRender","_$parent","requireResize","_afterRender","_parentElement","_$element","marginTop","marginBottom","getTemplate","_getTemplate","modules","registerModule","controllerTypes","viewTypes","registerModulesOrder","moduleNames","modulesOrder","unregisterModule","processModules","componentClass","module1","module2","orderIndex1","orderIndex2","moduleName","subclassOf","extender","createModuleItems","moduleTypes","moduleItems","moduleType","moduleItem","registerPublicMethods","callModuleItemsMethod","grid","baseOperation","baseOp","baseFilter","_data_source","getFullText","itemText","parentText","headerFilterController","dataTypes","lastIndex","filterExpression","editorTemplate","conditionInfo","div","renderValueText","closeEditor","fieldInfo","itemsDeferred","dataSourceOptions","paginate","DataSource","_values","getSelectedItemsTexts","selectedItemsTexts"],"mappings":"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","file":"static/js/main~cac05d6d.a180e546.chunk.js","sourcesContent":["/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.error_handling.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 _click = require(\"../../events/click\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ERROR_ROW_CLASS = \"dx-error-row\";\r\nvar ERROR_MESSAGE_CLASS = \"dx-error-message\";\r\nvar ERROR_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar ACTION_CLASS = \"action\";\r\nvar ErrorHandlingController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n var that = this;\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._rowsView = that.getView(\"rowsView\")\r\n },\r\n _createErrorRow: function(error, $tableElements) {\r\n var that = this;\r\n var $errorRow;\r\n var $closeButton;\r\n var $errorMessage = this._renderErrorMessage(error);\r\n if ($tableElements) {\r\n $errorRow = (0, _renderer.default)(\"\").addClass(ERROR_ROW_CLASS);\r\n $closeButton = (0, _renderer.default)(\"
\").addClass(ERROR_CLOSEBUTTON_CLASS).addClass(that.addWidgetPrefix(ACTION_CLASS));\r\n _events_engine.default.on($closeButton, _click.name, that.createAction(function(args) {\r\n var e = args.event;\r\n var $errorRow;\r\n var errorRowIndex = (0, _renderer.default)(e.currentTarget).closest(\".\" + ERROR_ROW_CLASS).index();\r\n e.stopPropagation();\r\n (0, _iterator.each)($tableElements, function(_, tableElement) {\r\n $errorRow = (0, _renderer.default)(tableElement).children(\"tbody\").children(\"tr\").eq(errorRowIndex);\r\n that.removeErrorRow($errorRow)\r\n });\r\n that.getController(\"resizing\") && that.getController(\"resizing\").fireContentReadyAction()\r\n }));\r\n (0, _renderer.default)(\"\").attr({\r\n colSpan: that.getController(\"columns\").getVisibleColumns().length,\r\n role: \"presentation\"\r\n }).prepend($closeButton).append($errorMessage).appendTo($errorRow);\r\n return $errorRow\r\n }\r\n return $errorMessage\r\n },\r\n _renderErrorMessage: function(error) {\r\n var message = error.url ? error.message.replace(error.url, \"\") : error.message || error;\r\n var $message = (0, _renderer.default)(\"
\").addClass(ERROR_MESSAGE_CLASS).text(message);\r\n if (error.url) {\r\n (0, _renderer.default)(\"\").attr(\"href\", error.url).text(error.url).appendTo($message)\r\n }\r\n return $message\r\n },\r\n renderErrorRow: function(error, rowIndex, $popupContent) {\r\n var that = this;\r\n var $errorMessageElement;\r\n var $firstErrorRow;\r\n if ($popupContent) {\r\n $popupContent.find(\".\" + ERROR_MESSAGE_CLASS).remove();\r\n $errorMessageElement = that._createErrorRow(error);\r\n $popupContent.prepend($errorMessageElement);\r\n return $errorMessageElement\r\n }\r\n var viewElement = rowIndex >= 0 || !that._columnHeadersView.isVisible() ? that._rowsView : that._columnHeadersView;\r\n var $tableElements = $popupContent || viewElement.getTableElements();\r\n (0, _iterator.each)($tableElements, function(_, tableElement) {\r\n $errorMessageElement = that._createErrorRow(error, $tableElements);\r\n $firstErrorRow = $firstErrorRow || $errorMessageElement;\r\n if (rowIndex >= 0) {\r\n var $row = viewElement._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex);\r\n that.removeErrorRow($row.next());\r\n $errorMessageElement.insertAfter($row)\r\n } else {\r\n var $tbody = (0, _renderer.default)(tableElement).children(\"tbody\");\r\n var rowElements = $tbody.children(\"tr\");\r\n if (that._columnHeadersView.isVisible()) {\r\n that.removeErrorRow(rowElements.last());\r\n (0, _renderer.default)(tableElement).append($errorMessageElement)\r\n } else {\r\n that.removeErrorRow(rowElements.first());\r\n $tbody.first().prepend($errorMessageElement)\r\n }\r\n }\r\n });\r\n if (!$popupContent) {\r\n var resizingController = that.getController(\"resizing\");\r\n resizingController && resizingController.fireContentReadyAction()\r\n }\r\n return $firstErrorRow\r\n },\r\n removeErrorRow: function($row) {\r\n if (!$row) {\r\n var $columnHeaders = this._columnHeadersView && this._columnHeadersView.element();\r\n $row = $columnHeaders && $columnHeaders.find(\".\" + ERROR_ROW_CLASS);\r\n if (!$row || !$row.length) {\r\n var $rowsViewElement = this._rowsView.element();\r\n $row = $rowsViewElement && $rowsViewElement.find(\".\" + ERROR_ROW_CLASS)\r\n }\r\n }\r\n $row && $row.hasClass(ERROR_ROW_CLASS) && $row.remove()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"errorRowEnabled\":\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n errorRowEnabled: true\r\n }\r\n },\r\n controllers: {\r\n errorHandling: ErrorHandlingController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n init: function() {\r\n var that = this;\r\n var errorHandlingController = that.getController(\"errorHandling\");\r\n that.callBase();\r\n that.dataErrorOccurred.add(function(error, $popupContent) {\r\n if (that.option(\"errorRowEnabled\")) {\r\n errorHandlingController.renderErrorRow(error, void 0, $popupContent)\r\n }\r\n });\r\n that.changed.add(function(e) {\r\n if (e && \"loadError\" === e.changeType) {\r\n return\r\n }\r\n var errorHandlingController = that.getController(\"errorHandling\");\r\n var editingController = that.getController(\"editing\");\r\n if (editingController && !editingController.hasChanges()) {\r\n errorHandlingController && errorHandlingController.removeErrorRow()\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.grid_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.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar accessibility = _interopRequireWildcard(require(\"../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\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TABLE_CLASS = \"table\";\r\nvar BORDERS_CLASS = \"borders\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar IMPORTANT_MARGIN_CLASS = \"important-margin\";\r\nvar TEXT_CONTENT_CLASS = \"text-content\";\r\nvar HIDDEN_CLASS = \"dx-hidden\";\r\nvar GRIDBASE_CONTAINER_CLASS = \"dx-gridbase-container\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar VIEW_NAMES = [\"columnsSeparatorView\", \"blockSeparatorView\", \"trackerView\", \"headerPanel\", \"columnHeadersView\", \"rowsView\", \"footerView\", \"columnChooserView\", \"filterPanelView\", \"pagerView\", \"draggingHeaderView\", \"contextMenuView\", \"errorView\", \"headerFilterView\", \"filterBuilderView\"];\r\nvar isPercentWidth = function(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n};\r\nvar isPixelWidth = function(width) {\r\n return (0, _type.isString)(width) && \"px\" === width.slice(-2)\r\n};\r\nvar mergeArraysByMaxValue = function(values1, values2) {\r\n var result = [];\r\n if (values1 && values2 && values1.length && values1.length === values2.length) {\r\n for (var i = 0; i < values1.length; i++) {\r\n result.push(values1[i] > values2[i] ? values1[i] : values2[i])\r\n }\r\n } else {\r\n if (values1 && values1.length) {\r\n result = values1\r\n } else {\r\n if (values2) {\r\n result = values2\r\n }\r\n }\r\n }\r\n return result\r\n};\r\nvar getContainerHeight = function($container) {\r\n var clientHeight = $container.get(0).clientHeight;\r\n var paddingTop = parseFloat($container.css(\"paddingTop\"));\r\n var paddingBottom = parseFloat($container.css(\"paddingBottom\"));\r\n return clientHeight - paddingTop - paddingBottom\r\n};\r\nvar calculateFreeWidth = function(that, widths) {\r\n var contentWidth = that._rowsView.contentWidth();\r\n var totalWidth = that._getTotalWidth(widths, contentWidth);\r\n return contentWidth - totalWidth\r\n};\r\nvar calculateFreeWidthWithCurrentMinWidth = function(that, columnIndex, currentMinWidth, widths) {\r\n return calculateFreeWidth(that, widths.map(function(width, index) {\r\n return index === columnIndex ? currentMinWidth : width\r\n }))\r\n};\r\nvar restoreFocus = function(focusedElement, selectionRange) {\r\n accessibility.hiddenFocus(focusedElement);\r\n _uiGrid_core2.default.setSelectionRange(focusedElement, selectionRange)\r\n};\r\nvar ResizingController = _uiGrid_core.default.ViewController.inherit({\r\n _initPostRenderHandlers: function() {\r\n var that = this;\r\n var dataController = that._dataController;\r\n if (!that._refreshSizesHandler) {\r\n that._refreshSizesHandler = function(e) {\r\n dataController.changed.remove(that._refreshSizesHandler);\r\n var resizeDeferred;\r\n var changeType = e && e.changeType;\r\n var isDelayed = e && e.isDelayed;\r\n var items = dataController.items();\r\n if (!e || \"refresh\" === changeType || \"prepend\" === changeType || \"append\" === changeType) {\r\n if (!isDelayed) {\r\n resizeDeferred = that.resize()\r\n }\r\n } else {\r\n if (\"update\" === changeType && e.changeTypes) {\r\n if ((items.length > 1 || \"insert\" !== e.changeTypes[0]) && !(0 === items.length && \"remove\" === e.changeTypes[0]) && !e.needUpdateDimensions) {\r\n (0, _common.deferUpdate)(function() {\r\n return (0, _common.deferRender)(function() {\r\n return (0, _common.deferUpdate)(function() {\r\n that._setScrollerSpacing(that._hasHeight);\r\n that._rowsView.resize()\r\n })\r\n })\r\n })\r\n } else {\r\n resizeDeferred = that.resize()\r\n }\r\n }\r\n }\r\n if (changeType && \"updateSelection\" !== changeType && \"updateFocusedRow\" !== changeType && !isDelayed) {\r\n (0, _deferred.when)(resizeDeferred).done(function() {\r\n that._setAriaRowColCount();\r\n that.fireContentReadyAction()\r\n })\r\n }\r\n };\r\n that._dataController.changed.add(function() {\r\n that._dataController.changed.add(that._refreshSizesHandler)\r\n })\r\n }\r\n },\r\n fireContentReadyAction: function() {\r\n this.component._fireContentReadyAction()\r\n },\r\n _setAriaRowColCount: function() {\r\n var component = this.component;\r\n component.setAria({\r\n rowCount: this._dataController.totalItemsCount(),\r\n colCount: component.columnCount()\r\n }, component.$element().children(\".\" + GRIDBASE_CONTAINER_CLASS))\r\n },\r\n _getBestFitWidths: function() {\r\n var _this$_footerView;\r\n var rowsView = this._rowsView;\r\n var columnHeadersView = this._columnHeadersView;\r\n if (!this.option(\"legacyRendering\")) {\r\n var _widths;\r\n var widths = rowsView.getColumnWidths();\r\n if (!(null !== (_widths = widths) && void 0 !== _widths && _widths.length)) {\r\n var _rowsView$getTableEle;\r\n var headersTableElement = columnHeadersView.getTableElement();\r\n columnHeadersView.setTableElement(null === (_rowsView$getTableEle = rowsView.getTableElement()) || void 0 === _rowsView$getTableEle ? void 0 : _rowsView$getTableEle.children(\".dx-header\"));\r\n widths = columnHeadersView.getColumnWidths();\r\n columnHeadersView.setTableElement(headersTableElement)\r\n }\r\n return widths\r\n }\r\n var rowsColumnWidths = rowsView.getColumnWidths();\r\n var headerColumnWidths = null === columnHeadersView || void 0 === columnHeadersView ? void 0 : columnHeadersView.getColumnWidths();\r\n var footerColumnWidths = null === (_this$_footerView = this._footerView) || void 0 === _this$_footerView ? void 0 : _this$_footerView.getColumnWidths();\r\n var resultWidths = mergeArraysByMaxValue(rowsColumnWidths, headerColumnWidths);\r\n resultWidths = mergeArraysByMaxValue(resultWidths, footerColumnWidths);\r\n return resultWidths\r\n },\r\n _setVisibleWidths: function(visibleColumns, widths) {\r\n var columnsController = this._columnsController;\r\n columnsController.beginUpdate();\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n var columnId = columnsController.getColumnId(column);\r\n columnsController.columnOption(columnId, \"visibleWidth\", widths[index])\r\n });\r\n columnsController.endUpdate()\r\n },\r\n _toggleBestFitModeForView: function(view, className, isBestFit) {\r\n var _this = this;\r\n if (!view || !view.isVisible()) {\r\n return\r\n }\r\n var $rowsTables = this._rowsView.getTableElements();\r\n var $viewTables = view.getTableElements();\r\n (0, _iterator.each)($rowsTables, function(index, tableElement) {\r\n var $tableBody;\r\n var $rowsTable = (0, _renderer.default)(tableElement);\r\n var $viewTable = $viewTables.eq(index);\r\n if ($viewTable && $viewTable.length) {\r\n if (isBestFit) {\r\n $tableBody = $viewTable.children(\"tbody\").appendTo($rowsTable)\r\n } else {\r\n $tableBody = $rowsTable.children(\".\" + className).appendTo($viewTable)\r\n }\r\n $tableBody.toggleClass(className, isBestFit);\r\n $tableBody.toggleClass(_this.addWidgetPrefix(\"best-fit\"), isBestFit)\r\n }\r\n })\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n var $element = this.component.$element();\r\n var that = this;\r\n if (!that.option(\"legacyRendering\")) {\r\n var $rowsTable = that._rowsView.getTableElement();\r\n var $rowsFixedTable = that._rowsView.getTableElements().eq(1);\r\n if (!$rowsTable) {\r\n return\r\n }\r\n $rowsTable.css(\"tableLayout\", isBestFit ? \"auto\" : \"fixed\");\r\n $rowsTable.children(\"colgroup\").css(\"display\", isBestFit ? \"none\" : \"\");\r\n $rowsFixedTable.toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n that._toggleBestFitModeForView(that._columnHeadersView, \"dx-header\", isBestFit);\r\n that._toggleBestFitModeForView(that._footerView, \"dx-footer\", isBestFit);\r\n if (that._needStretch()) {\r\n $rowsTable.get(0).style.width = isBestFit ? \"auto\" : \"\"\r\n }\r\n if (_browser.default.msie && 11 === parseInt(_browser.default.version)) {\r\n $rowsTable.find(\".\" + this.addWidgetPrefix(TABLE_FIXED_CLASS)).each(function() {\r\n this.style.width = isBestFit ? \"10px\" : \"\"\r\n })\r\n }\r\n } else {\r\n $element.find(\".\" + this.addWidgetPrefix(TABLE_CLASS)).toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n $element.find(EDITORS_INPUT_SELECTOR).toggleClass(HIDDEN_CLASS, isBestFit);\r\n $element.find(\".dx-group-cell\").toggleClass(HIDDEN_CLASS, isBestFit);\r\n $element.find(\".dx-header-row .\" + this.addWidgetPrefix(TEXT_CONTENT_CLASS)).css(\"maxWidth\", \"\")\r\n }\r\n },\r\n _synchronizeColumns: function() {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnAutoWidth = that.option(\"columnAutoWidth\");\r\n var legacyRendering = that.option(\"legacyRendering\");\r\n var needBestFit = that._needBestFit();\r\n var hasMinWidth = false;\r\n var resetBestFitMode;\r\n var isColumnWidthsCorrected = false;\r\n var resultWidths = [];\r\n var focusedElement;\r\n var selectionRange;\r\n var normalizeWidthsByExpandColumns = function() {\r\n var expandColumnWidth;\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"groupExpand\" === column.type) {\r\n expandColumnWidth = resultWidths[index]\r\n }\r\n });\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"groupExpand\" === column.type && expandColumnWidth) {\r\n resultWidths[index] = expandColumnWidth\r\n }\r\n })\r\n };\r\n !needBestFit && (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"auto\" === column.width || legacyRendering && column.fixed) {\r\n needBestFit = true;\r\n return false\r\n }\r\n });\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (column.minWidth) {\r\n hasMinWidth = true;\r\n return false\r\n }\r\n });\r\n that._setVisibleWidths(visibleColumns, []);\r\n if (needBestFit) {\r\n focusedElement = _dom_adapter.default.getActiveElement();\r\n selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n that._toggleBestFitMode(true);\r\n resetBestFitMode = true\r\n }\r\n var $element = this.component.$element();\r\n if ($element && $element[0] && this._maxWidth) {\r\n delete this._maxWidth;\r\n $element[0].style.maxWidth = \"\"\r\n }(0, _common.deferUpdate)(function() {\r\n if (needBestFit) {\r\n resultWidths = that._getBestFitWidths();\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n var columnId = columnsController.getColumnId(column);\r\n columnsController.columnOption(columnId, \"bestFitWidth\", resultWidths[index], true)\r\n })\r\n } else {\r\n if (hasMinWidth) {\r\n resultWidths = that._getBestFitWidths()\r\n }\r\n }(0, _iterator.each)(visibleColumns, function(index) {\r\n var width = this.width;\r\n if (\"auto\" !== width) {\r\n if ((0, _type.isDefined)(width)) {\r\n resultWidths[index] = (0, _type.isNumeric)(width) || isPixelWidth(width) ? parseFloat(width) : width\r\n } else {\r\n if (!columnAutoWidth) {\r\n resultWidths[index] = void 0\r\n }\r\n }\r\n }\r\n });\r\n if (resetBestFitMode) {\r\n that._toggleBestFitMode(false);\r\n resetBestFitMode = false;\r\n if (focusedElement && focusedElement !== _dom_adapter.default.getActiveElement()) {\r\n var isFocusOutsideWindow = (0, _position.getBoundingRect)(focusedElement).bottom < 0;\r\n if (!isFocusOutsideWindow) {\r\n if (_browser.default.msie) {\r\n setTimeout(function() {\r\n restoreFocus(focusedElement, selectionRange)\r\n })\r\n } else {\r\n restoreFocus(focusedElement, selectionRange)\r\n }\r\n }\r\n }\r\n }\r\n isColumnWidthsCorrected = that._correctColumnWidths(resultWidths, visibleColumns);\r\n if (columnAutoWidth) {\r\n normalizeWidthsByExpandColumns();\r\n if (that._needStretch()) {\r\n that._processStretch(resultWidths, visibleColumns)\r\n }\r\n }(0, _common.deferRender)(function() {\r\n if (needBestFit || isColumnWidthsCorrected) {\r\n that._setVisibleWidths(visibleColumns, resultWidths)\r\n }\r\n })\r\n })\r\n },\r\n _needBestFit: function() {\r\n return this.option(\"columnAutoWidth\")\r\n },\r\n _needStretch: function() {\r\n return this.option(\"legacyRendering\") || this._columnsController.getVisibleColumns().some(function(c) {\r\n return \"auto\" === c.width && !c.command\r\n })\r\n },\r\n _getAverageColumnsWidth: function(resultWidths) {\r\n var freeWidth = calculateFreeWidth(this, resultWidths);\r\n var columnCountWithoutWidth = resultWidths.filter(function(width) {\r\n return void 0 === width\r\n }).length;\r\n return freeWidth / columnCountWithoutWidth\r\n },\r\n _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n var that = this;\r\n var i;\r\n var hasPercentWidth = false;\r\n var hasAutoWidth = false;\r\n var isColumnWidthsCorrected = false;\r\n var $element = that.component.$element();\r\n var hasWidth = that._hasWidth;\r\n var _loop = function() {\r\n var index = i;\r\n var column = visibleColumns[index];\r\n var isHiddenColumn = resultWidths[index] === HIDDEN_COLUMNS_WIDTH;\r\n var width = resultWidths[index];\r\n var minWidth = column.minWidth;\r\n if (minWidth) {\r\n if (void 0 === width) {\r\n var averageColumnsWidth = that._getAverageColumnsWidth(resultWidths);\r\n width = averageColumnsWidth\r\n } else {\r\n if (isPercentWidth(width)) {\r\n var freeWidth = calculateFreeWidthWithCurrentMinWidth(that, index, minWidth, resultWidths);\r\n if (freeWidth < 0) {\r\n width = -1\r\n }\r\n }\r\n }\r\n }\r\n var realColumnWidth = that._getRealColumnWidth(index, resultWidths.map(function(columnWidth, columnIndex) {\r\n return index === columnIndex ? width : columnWidth\r\n }));\r\n if (minWidth && !isHiddenColumn && realColumnWidth < minWidth) {\r\n resultWidths[index] = minWidth;\r\n isColumnWidthsCorrected = true;\r\n i = -1\r\n }\r\n if (!(0, _type.isDefined)(column.width)) {\r\n hasAutoWidth = true\r\n }\r\n if (isPercentWidth(column.width)) {\r\n hasPercentWidth = true\r\n }\r\n };\r\n for (i = 0; i < visibleColumns.length; i++) {\r\n _loop()\r\n }\r\n if (!hasAutoWidth && resultWidths.length) {\r\n var $rowsViewElement = that._rowsView.element();\r\n var contentWidth = that._rowsView.contentWidth();\r\n var scrollbarWidth = that._rowsView.getScrollbarWidth();\r\n var totalWidth = that._getTotalWidth(resultWidths, contentWidth);\r\n if (totalWidth < contentWidth) {\r\n var lastColumnIndex = _uiGrid_core2.default.getLastResizableColumnIndex(visibleColumns, resultWidths);\r\n if (lastColumnIndex >= 0) {\r\n resultWidths[lastColumnIndex] = \"auto\";\r\n isColumnWidthsCorrected = true;\r\n if (false === hasWidth && !hasPercentWidth) {\r\n var borderWidth = that.option(\"showBorders\") ? Math.ceil($rowsViewElement.outerWidth() - $rowsViewElement.innerWidth()) : 0;\r\n that._maxWidth = totalWidth + scrollbarWidth + borderWidth;\r\n $element.css(\"maxWidth\", that._maxWidth)\r\n }\r\n }\r\n }\r\n }\r\n return isColumnWidthsCorrected\r\n },\r\n _processStretch: function(resultSizes, visibleColumns) {\r\n var groupSize = this._rowsView.contentWidth();\r\n var tableSize = this._getTotalWidth(resultSizes, groupSize);\r\n var unusedIndexes = {\r\n length: 0\r\n };\r\n if (!resultSizes.length) {\r\n return\r\n }(0, _iterator.each)(visibleColumns, function(index) {\r\n if (this.width || resultSizes[index] === HIDDEN_COLUMNS_WIDTH) {\r\n unusedIndexes[index] = true;\r\n unusedIndexes.length++\r\n }\r\n });\r\n var diff = groupSize - tableSize;\r\n var diffElement = Math.floor(diff / (resultSizes.length - unusedIndexes.length));\r\n var onePixelElementsCount = diff - diffElement * (resultSizes.length - unusedIndexes.length);\r\n if (diff >= 0) {\r\n for (var i = 0; i < resultSizes.length; i++) {\r\n if (unusedIndexes[i]) {\r\n continue\r\n }\r\n resultSizes[i] += diffElement;\r\n if (onePixelElementsCount > 0) {\r\n if (onePixelElementsCount < 1) {\r\n resultSizes[i] += onePixelElementsCount;\r\n onePixelElementsCount = 0\r\n } else {\r\n resultSizes[i]++;\r\n onePixelElementsCount--\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _getRealColumnWidth: function(columnIndex, columnWidths, groupWidth) {\r\n var ratio = 1;\r\n var width = columnWidths[columnIndex];\r\n if (!isPercentWidth(width)) {\r\n return parseFloat(width)\r\n }\r\n var percentTotalWidth = columnWidths.reduce(function(sum, width, index) {\r\n if (!isPercentWidth(width)) {\r\n return sum\r\n }\r\n return sum + parseFloat(width)\r\n }, 0);\r\n var pixelTotalWidth = columnWidths.reduce(function(sum, width) {\r\n if (!width || width === HIDDEN_COLUMNS_WIDTH || isPercentWidth(width)) {\r\n return sum\r\n }\r\n return sum + parseFloat(width)\r\n }, 0);\r\n groupWidth = groupWidth || this._rowsView.contentWidth();\r\n var freeSpace = groupWidth - pixelTotalWidth;\r\n var percentTotalWidthInPixel = percentTotalWidth * groupWidth / 100;\r\n if (pixelTotalWidth > 0 && percentTotalWidthInPixel + pixelTotalWidth >= groupWidth) {\r\n ratio = percentTotalWidthInPixel > freeSpace ? freeSpace / percentTotalWidthInPixel : 1\r\n }\r\n return parseFloat(width) * groupWidth * ratio / 100\r\n },\r\n _getTotalWidth: function(widths, groupWidth) {\r\n var result = 0;\r\n for (var i = 0; i < widths.length; i++) {\r\n var width = widths[i];\r\n if (width && width !== HIDDEN_COLUMNS_WIDTH) {\r\n result += this._getRealColumnWidth(i, widths, groupWidth)\r\n }\r\n }\r\n return Math.ceil(result)\r\n },\r\n updateSize: function($rootElement) {\r\n var that = this;\r\n var $groupElement;\r\n var width;\r\n var importantMarginClass = that.addWidgetPrefix(IMPORTANT_MARGIN_CLASS);\r\n if (void 0 === that._hasHeight && $rootElement && $rootElement.is(\":visible\") && $rootElement.width()) {\r\n $groupElement = $rootElement.children(\".\" + that.getWidgetContainerClass());\r\n if ($groupElement.length) {\r\n $groupElement.detach()\r\n }\r\n that._hasHeight = !!getContainerHeight($rootElement);\r\n width = $rootElement.width();\r\n $rootElement.addClass(importantMarginClass);\r\n that._hasWidth = $rootElement.width() === width;\r\n $rootElement.removeClass(importantMarginClass);\r\n if ($groupElement.length) {\r\n $groupElement.appendTo($rootElement)\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"resize\", \"updateDimensions\"]\r\n },\r\n resize: function() {\r\n return !this.component._requireResize && this.updateDimensions()\r\n },\r\n updateDimensions: function(checkSize) {\r\n var that = this;\r\n that._initPostRenderHandlers();\r\n if (!that._checkSize(checkSize)) {\r\n return\r\n }\r\n var prevResult = that._resizeDeferred;\r\n var result = that._resizeDeferred = new _deferred.Deferred;\r\n (0, _deferred.when)(prevResult).always(function() {\r\n (0, _common.deferRender)(function() {\r\n if (that._dataController.isLoaded()) {\r\n that._synchronizeColumns()\r\n }\r\n that._resetGroupElementHeight();\r\n (0, _common.deferUpdate)(function() {\r\n (0, _common.deferRender)(function() {\r\n (0, _common.deferUpdate)(function() {\r\n that._updateDimensionsCore()\r\n })\r\n })\r\n })\r\n }).done(result.resolve).fail(result.reject)\r\n });\r\n return result.promise()\r\n },\r\n _resetGroupElementHeight: function() {\r\n var groupElement = this.component.$element().children().get(0);\r\n var scrollable = this._rowsView.getScrollable();\r\n if (groupElement && groupElement.style.height && (!scrollable || !scrollable.scrollTop())) {\r\n groupElement.style.height = \"\"\r\n }\r\n },\r\n _checkSize: function(checkSize) {\r\n var $rootElement = this.component.$element();\r\n if (checkSize && (this._lastWidth === $rootElement.width() && this._lastHeight === $rootElement.height() && this._devicePixelRatio === (0, _window.getWindow)().devicePixelRatio || !$rootElement.is(\":visible\"))) {\r\n return false\r\n }\r\n return true\r\n },\r\n _setScrollerSpacingCore: function(hasHeight) {\r\n var that = this;\r\n var vScrollbarWidth = hasHeight ? that._rowsView.getScrollbarWidth() : 0;\r\n var hScrollbarWidth = that._rowsView.getScrollbarWidth(true);\r\n (0, _common.deferRender)(function() {\r\n that._columnHeadersView && that._columnHeadersView.setScrollerSpacing(vScrollbarWidth);\r\n that._footerView && that._footerView.setScrollerSpacing(vScrollbarWidth);\r\n that._rowsView.setScrollerSpacing(vScrollbarWidth, hScrollbarWidth)\r\n })\r\n },\r\n _setScrollerSpacing: function(hasHeight) {\r\n var _this2 = this;\r\n if (true === this.option(\"scrolling.useNative\")) {\r\n (0, _common.deferRender)(function() {\r\n (0, _common.deferUpdate)(function() {\r\n _this2._setScrollerSpacingCore(hasHeight)\r\n })\r\n })\r\n } else {\r\n this._setScrollerSpacingCore(hasHeight)\r\n }\r\n },\r\n _updateDimensionsCore: function() {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var rowsView = that._rowsView;\r\n var $rootElement = that.component.$element();\r\n var groupElement = $rootElement.children().get(0);\r\n var rootElementHeight = $rootElement && ($rootElement.get(0).clientHeight || $rootElement.height());\r\n var maxHeight = parseInt($rootElement.css(\"maxHeight\"));\r\n var maxHeightHappened = maxHeight && rootElementHeight >= maxHeight;\r\n var height = that.option(\"height\") || $rootElement.get(0).style.height;\r\n var editorFactory = that.getController(\"editorFactory\");\r\n var isMaxHeightApplied = maxHeightHappened && groupElement.scrollHeight === groupElement.offsetHeight;\r\n var $testDiv;\r\n that.updateSize($rootElement);\r\n var hasHeight = that._hasHeight || maxHeightHappened;\r\n if (height && that._hasHeight ^ \"auto\" !== height) {\r\n $testDiv = (0, _renderer.default)(\"
\").height(height).appendTo($rootElement);\r\n that._hasHeight = !!$testDiv.height();\r\n $testDiv.remove()\r\n }(0, _common.deferRender)(function() {\r\n rowsView.height(null, hasHeight);\r\n if (maxHeightHappened && !isMaxHeightApplied) {\r\n (0, _renderer.default)(groupElement).css(\"height\", maxHeight)\r\n }\r\n if (!dataController.isLoaded()) {\r\n rowsView.setLoading(dataController.isLoading());\r\n return\r\n }(0, _common.deferUpdate)(function() {\r\n that._updateLastSizes($rootElement);\r\n that._setScrollerSpacing(hasHeight);\r\n (0, _iterator.each)(VIEW_NAMES, function(index, viewName) {\r\n var view = that.getView(viewName);\r\n if (view) {\r\n view.resize()\r\n }\r\n });\r\n editorFactory && editorFactory.resize()\r\n })\r\n })\r\n },\r\n _updateLastSizes: function($rootElement) {\r\n this._lastWidth = $rootElement.width();\r\n this._lastHeight = $rootElement.height();\r\n this._devicePixelRatio = (0, _window.getWindow)().devicePixelRatio\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n this.component._renderDimensions();\r\n this.resize();\r\n case \"legacyRendering\":\r\n case \"renderAsync\":\r\n args.handled = true;\r\n return;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n init: function() {\r\n var that = this;\r\n that._dataController = that.getController(\"data\");\r\n that._columnsController = that.getController(\"columns\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._footerView = that.getView(\"footerView\");\r\n that._rowsView = that.getView(\"rowsView\")\r\n }\r\n});\r\nvar SynchronizeScrollingController = _uiGrid_core.default.ViewController.inherit({\r\n _scrollChangedHandler: function(views, pos, viewName) {\r\n for (var j = 0; j < views.length; j++) {\r\n if (views[j] && views[j].name !== viewName) {\r\n views[j].scrollTo({\r\n left: pos.left,\r\n top: pos.top\r\n })\r\n }\r\n }\r\n },\r\n init: function() {\r\n var views = [this.getView(\"columnHeadersView\"), this.getView(\"footerView\"), this.getView(\"rowsView\")];\r\n for (var i = 0; i < views.length; i++) {\r\n var view = views[i];\r\n if (view) {\r\n view.scrollChanged.add(this._scrollChangedHandler.bind(this, views))\r\n }\r\n }\r\n }\r\n});\r\nvar GridView = _uiGrid_core.default.View.inherit({\r\n _endUpdateCore: function() {\r\n if (this.component._requireResize) {\r\n this.component._requireResize = false;\r\n this._resizingController.resize()\r\n }\r\n },\r\n _getWidgetAriaLabel: function() {\r\n return \"dxDataGrid-ariaDataGrid\"\r\n },\r\n init: function() {\r\n var that = this;\r\n that._resizingController = that.getController(\"resizing\");\r\n that._dataController = that.getController(\"data\")\r\n },\r\n getView: function(name) {\r\n return this.component._views[name]\r\n },\r\n element: function() {\r\n return this._groupElement\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n if ((0, _type.isDefined)(that._groupElement) && \"showBorders\" === args.name) {\r\n that._groupElement.toggleClass(that.addWidgetPrefix(BORDERS_CLASS), !!args.value);\r\n args.handled = true\r\n } else {\r\n that.callBase(args)\r\n }\r\n },\r\n _renderViews: function($groupElement) {\r\n var that = this;\r\n (0, _iterator.each)(VIEW_NAMES, function(index, viewName) {\r\n var view = that.getView(viewName);\r\n if (view) {\r\n view.render($groupElement)\r\n }\r\n })\r\n },\r\n _getTableRoleName: function() {\r\n return \"grid\"\r\n },\r\n render: function($rootElement) {\r\n var that = this;\r\n var isFirstRender = !that._groupElement;\r\n var $groupElement = that._groupElement || (0, _renderer.default)(\"
\").addClass(that.getWidgetContainerClass());\r\n $groupElement.addClass(GRIDBASE_CONTAINER_CLASS);\r\n $groupElement.toggleClass(that.addWidgetPrefix(BORDERS_CLASS), !!that.option(\"showBorders\"));\r\n that.setAria(\"role\", \"presentation\", $rootElement);\r\n that.component.setAria({\r\n role: this._getTableRoleName(),\r\n label: _message.default.format(that._getWidgetAriaLabel())\r\n }, $groupElement);\r\n that._rootElement = $rootElement || that._rootElement;\r\n if (isFirstRender) {\r\n that._groupElement = $groupElement;\r\n (0, _window.hasWindow)() && that.getController(\"resizing\").updateSize($rootElement);\r\n $groupElement.appendTo($rootElement)\r\n }\r\n that._renderViews($groupElement)\r\n },\r\n update: function() {\r\n var that = this;\r\n var $rootElement = that._rootElement;\r\n var $groupElement = that._groupElement;\r\n var resizingController = that.getController(\"resizing\");\r\n if ($rootElement && $groupElement) {\r\n resizingController.resize();\r\n if (that._dataController.isLoaded()) {\r\n that._resizingController.fireContentReadyAction()\r\n }\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n showBorders: false,\r\n renderAsync: false,\r\n legacyRendering: false\r\n }\r\n },\r\n controllers: {\r\n resizing: ResizingController,\r\n synchronizeScrolling: SynchronizeScrollingController\r\n },\r\n views: {\r\n gridView: GridView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.header_panel.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 _toolbar = _interopRequireDefault(require(\"../toolbar\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nrequire(\"../drop_down_menu\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar TOOLBAR_BUTTON_CLASS = \"toolbar-button\";\r\nvar TOOLBAR_ARIA_LABEL = \"-ariaToolbar\";\r\nvar HeaderPanel = _uiGrid_core.ColumnsView.inherit({\r\n _getToolbarItems: function() {\r\n return []\r\n },\r\n _getButtonContainer: function() {\r\n return (0, _renderer.default)(\"
\").addClass(this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS))\r\n },\r\n _getToolbarButtonClass: function(specificClass) {\r\n var secondClass = specificClass ? \" \" + specificClass : \"\";\r\n return this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS) + secondClass\r\n },\r\n _getToolbarOptions: function() {\r\n var options = {\r\n toolbarOptions: {\r\n items: this._getToolbarItems(),\r\n onItemRendered: function(e) {\r\n var itemRenderedCallback = e.itemData.onItemRendered;\r\n if (itemRenderedCallback) {\r\n itemRenderedCallback(e)\r\n }\r\n }\r\n }\r\n };\r\n this.executeAction(\"onToolbarPreparing\", options);\r\n if (options.toolbarOptions && !(0, _type.isDefined)(options.toolbarOptions.visible)) {\r\n var toolbarItems = options.toolbarOptions.items;\r\n options.toolbarOptions.visible = !!(toolbarItems && toolbarItems.length)\r\n }\r\n return options.toolbarOptions\r\n },\r\n _renderCore: function() {\r\n if (!this._toolbar) {\r\n var $headerPanel = this.element();\r\n $headerPanel.addClass(this.addWidgetPrefix(HEADER_PANEL_CLASS));\r\n var label = _message.default.format(this.component.NAME + TOOLBAR_ARIA_LABEL);\r\n var $toolbar = (0, _renderer.default)(\"
\").attr(\"aria-label\", label).appendTo($headerPanel);\r\n this._toolbar = this._createComponent($toolbar, _toolbar.default, this._toolbarOptions)\r\n } else {\r\n this._toolbar.option(this._toolbarOptions)\r\n }\r\n },\r\n _columnOptionChanged: _common.noop,\r\n _handleDataChanged: function() {\r\n if (this._requireReady) {\r\n this.render()\r\n }\r\n },\r\n init: function() {\r\n this.callBase();\r\n this.createAction(\"onToolbarPreparing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n render: function() {\r\n this._toolbarOptions = this._getToolbarOptions();\r\n this.callBase.apply(this, arguments)\r\n },\r\n setToolbarItemDisabled: function(name, optionValue) {\r\n var toolbarInstance = this._toolbar;\r\n if (toolbarInstance) {\r\n var items = toolbarInstance.option(\"items\") || [];\r\n var itemIndex = items.indexOf(items.filter(function(item) {\r\n return item.name === name\r\n })[0]);\r\n if (itemIndex >= 0) {\r\n var itemOptionPrefix = \"items[\" + itemIndex + \"]\";\r\n if (toolbarInstance.option(itemOptionPrefix + \".options\")) {\r\n toolbarInstance.option(itemOptionPrefix + \".options.disabled\", optionValue)\r\n } else {\r\n toolbarInstance.option(itemOptionPrefix + \".disabled\", optionValue)\r\n }\r\n }\r\n }\r\n },\r\n updateToolbarDimensions: function() {\r\n if (this._toolbar) {\r\n (0, _visibility_change.triggerResizeEvent)(this.getHeaderPanel())\r\n }\r\n },\r\n getHeaderPanel: function() {\r\n return this.element()\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n optionChanged: function(args) {\r\n if (\"onToolbarPreparing\" === args.name) {\r\n this._invalidate();\r\n args.handled = true\r\n }\r\n this.callBase(args)\r\n },\r\n isVisible: function() {\r\n return this._toolbarOptions && this._toolbarOptions.visible\r\n },\r\n allowDragging: _common.noop\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {}\r\n },\r\n views: {\r\n headerPanel: HeaderPanel\r\n },\r\n extenders: {\r\n controllers: {\r\n resizing: {\r\n _updateDimensionsCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this.getView(\"headerPanel\").updateToolbarDimensions()\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.master_detail.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.utils\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\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 MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar MASTER_DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n masterDetail: {\r\n enabled: false,\r\n autoExpandAll: false,\r\n template: null\r\n }\r\n }\r\n },\r\n extenders: {\r\n controllers: {\r\n columns: {\r\n _getExpandColumnsCore: function() {\r\n var expandColumns = this.callBase();\r\n if (this.option(\"masterDetail.enabled\")) {\r\n expandColumns.push({\r\n type: \"detailExpand\",\r\n cellTemplate: _uiGrid_core.default.getExpandCellTemplate()\r\n })\r\n }\r\n return expandColumns\r\n }\r\n },\r\n data: function() {\r\n var initMasterDetail = function(that) {\r\n that._expandedItems = [];\r\n that._isExpandAll = that.option(\"masterDetail.autoExpandAll\")\r\n };\r\n return {\r\n init: function() {\r\n var that = this;\r\n initMasterDetail(that);\r\n that.callBase()\r\n },\r\n expandAll: function(groupIndex) {\r\n var that = this;\r\n if (groupIndex < 0) {\r\n that._isExpandAll = true;\r\n that._expandedItems = [];\r\n that.updateItems()\r\n } else {\r\n that.callBase.apply(that, arguments)\r\n }\r\n },\r\n collapseAll: function(groupIndex) {\r\n var that = this;\r\n if (groupIndex < 0) {\r\n that._isExpandAll = false;\r\n that._expandedItems = [];\r\n that.updateItems()\r\n } else {\r\n that.callBase.apply(that, arguments)\r\n }\r\n },\r\n isRowExpanded: function(key) {\r\n var that = this;\r\n var expandIndex = _uiGrid_core.default.getIndexByKey(key, that._expandedItems);\r\n if (Array.isArray(key)) {\r\n return that.callBase.apply(that, arguments)\r\n } else {\r\n return !!(that._isExpandAll ^ (expandIndex >= 0 && that._expandedItems[expandIndex].visible))\r\n }\r\n },\r\n _getRowIndicesForExpand: function(key) {\r\n var rowIndex = this.getRowIndexByKey(key);\r\n return [rowIndex, rowIndex + 1]\r\n },\r\n _changeRowExpandCore: function(key) {\r\n var that = this;\r\n var result;\r\n if (Array.isArray(key)) {\r\n result = that.callBase.apply(that, arguments)\r\n } else {\r\n var expandIndex = _uiGrid_core.default.getIndexByKey(key, that._expandedItems);\r\n if (expandIndex >= 0) {\r\n var visible = that._expandedItems[expandIndex].visible;\r\n that._expandedItems[expandIndex].visible = !visible\r\n } else {\r\n that._expandedItems.push({\r\n key: key,\r\n visible: true\r\n })\r\n }\r\n that.updateItems({\r\n changeType: \"update\",\r\n rowIndices: that._getRowIndicesForExpand(key)\r\n });\r\n result = (new _deferred.Deferred).resolve()\r\n }\r\n return result\r\n },\r\n _processDataItem: function(data, options) {\r\n var that = this;\r\n var dataItem = that.callBase.apply(that, arguments);\r\n dataItem.isExpanded = that.isRowExpanded(dataItem.key);\r\n if (void 0 === options.detailColumnIndex) {\r\n options.detailColumnIndex = -1;\r\n (0, _iterator.each)(options.visibleColumns, function(index, column) {\r\n if (\"expand\" === column.command && !(0, _type.isDefined)(column.groupIndex)) {\r\n options.detailColumnIndex = index;\r\n return false\r\n }\r\n })\r\n }\r\n if (options.detailColumnIndex >= 0) {\r\n dataItem.values[options.detailColumnIndex] = dataItem.isExpanded\r\n }\r\n return dataItem\r\n },\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var changeType = change.changeType;\r\n var result = [];\r\n items = that.callBase.apply(that, arguments);\r\n if (\"loadingAll\" === changeType) {\r\n return items\r\n }\r\n if (\"refresh\" === changeType) {\r\n that._expandedItems = (0, _common.grep)(that._expandedItems, function(item) {\r\n return item.visible\r\n })\r\n }(0, _iterator.each)(items, function(index, item) {\r\n result.push(item);\r\n var expandIndex = _uiGrid_core.default.getIndexByKey(item.key, that._expandedItems);\r\n if (\"data\" === item.rowType && (item.isExpanded || expandIndex >= 0) && !item.isNewRow) {\r\n result.push({\r\n visible: item.isExpanded,\r\n rowType: \"detail\",\r\n key: item.key,\r\n data: item.data,\r\n values: []\r\n })\r\n }\r\n });\r\n return result\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n var isEnabledChanged;\r\n var isAutoExpandAllChanged;\r\n if (\"masterDetail\" === args.name) {\r\n args.name = \"dataSource\";\r\n switch (args.fullName) {\r\n case \"masterDetail\":\r\n var value = args.value || {};\r\n var previousValue = args.previousValue || {};\r\n isEnabledChanged = value.enabled !== previousValue.enabled;\r\n isAutoExpandAllChanged = value.autoExpandAll !== previousValue.autoExpandAll;\r\n break;\r\n case \"masterDetail.enabled\":\r\n isEnabledChanged = true;\r\n break;\r\n case \"masterDetail.autoExpandAll\":\r\n isAutoExpandAllChanged = true\r\n }\r\n if (isEnabledChanged || isAutoExpandAllChanged) {\r\n initMasterDetail(that)\r\n }\r\n }\r\n that.callBase(args)\r\n }\r\n }\r\n }(),\r\n resizing: {\r\n fireContentReadyAction: function() {\r\n this.callBase.apply(this, arguments);\r\n this._updateParentDataGrids(this.component.$element())\r\n },\r\n _updateParentDataGrids: function($element) {\r\n var _this = this;\r\n var $masterDetailRow = $element.closest(\".\" + MASTER_DETAIL_ROW_CLASS);\r\n if ($masterDetailRow.length) {\r\n (0, _deferred.when)(this._updateMasterDataGrid($masterDetailRow, $element)).done(function() {\r\n _this._updateParentDataGrids($masterDetailRow.parent())\r\n })\r\n }\r\n },\r\n _updateMasterDataGrid: function($masterDetailRow, $detailElement) {\r\n var masterRowOptions = (0, _renderer.default)($masterDetailRow).data(\"options\");\r\n var masterDataGrid = (0, _renderer.default)($masterDetailRow).closest(\".\" + this.getWidgetContainerClass()).parent().data(\"dxDataGrid\");\r\n if (masterRowOptions && masterDataGrid) {\r\n if (masterDataGrid.getView(\"rowsView\").isFixedColumns()) {\r\n return this._updateFixedMasterDetailGrids(masterDataGrid, masterRowOptions.rowIndex, $detailElement)\r\n } else {\r\n if (true === masterDataGrid.option(\"scrolling.useNative\")) {\r\n return masterDataGrid.updateDimensions()\r\n }\r\n var scrollable = masterDataGrid.getScrollable();\r\n return null === scrollable || void 0 === scrollable ? void 0 : scrollable.update()\r\n }\r\n }\r\n },\r\n _updateFixedMasterDetailGrids: function(masterDataGrid, masterRowIndex, $detailElement) {\r\n var _this2 = this;\r\n var $rows = (0, _renderer.default)(masterDataGrid.getRowElement(masterRowIndex));\r\n var $tables = (0, _renderer.default)(masterDataGrid.getView(\"rowsView\").getTableElements());\r\n var rowsNotEqual = 2 === (null === $rows || void 0 === $rows ? void 0 : $rows.length) && $rows.eq(0).height() !== $rows.eq(1).height();\r\n var tablesNotEqual = 2 === (null === $tables || void 0 === $tables ? void 0 : $tables.length) && $tables.eq(0).height() !== $tables.eq(1).height();\r\n if (rowsNotEqual || tablesNotEqual) {\r\n var detailElementWidth = $detailElement.width();\r\n return masterDataGrid.updateDimensions().done(function() {\r\n var isDetailHorizontalScrollCanBeShown = _this2.option(\"columnAutoWidth\") && true === masterDataGrid.option(\"scrolling.useNative\");\r\n var isDetailGridWidthChanged = isDetailHorizontalScrollCanBeShown && detailElementWidth !== $detailElement.width();\r\n if (isDetailHorizontalScrollCanBeShown && isDetailGridWidthChanged) {\r\n _this2.updateDimensions()\r\n }\r\n })\r\n }\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"masterDetail.template\")) {\r\n var $rowsTable = this._rowsView.getTableElement();\r\n if ($rowsTable) {\r\n $rowsTable.find(\".dx-master-detail-cell\").css(\"maxWidth\", isBestFit ? 0 : \"\")\r\n }\r\n }\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: function() {\r\n return {\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var editingController = that.getController(\"editing\");\r\n var isEditRow = editingController && editingController.isEditRow(options.rowIndex);\r\n var template;\r\n if (\"detail\" === column.command && !isEditRow) {\r\n template = that.option(\"masterDetail.template\") || {\r\n allowRenderToDetachedContainer: false,\r\n render: that._getDefaultTemplate(column)\r\n }\r\n } else {\r\n template = that.callBase.apply(that, arguments)\r\n }\r\n return template\r\n },\r\n _isDetailRow: function(row) {\r\n return row && row.rowType && 0 === row.rowType.indexOf(\"detail\")\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row && this._isDetailRow(row)) {\r\n this.option(\"showRowLines\") && $row.addClass(ROW_LINES_CLASS);\r\n $row.addClass(MASTER_DETAIL_ROW_CLASS);\r\n if ((0, _type.isDefined)(row.visible)) {\r\n $row.toggle(row.visible)\r\n }\r\n }\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n var row = options.row;\r\n var $detailCell;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n if (row.rowType && this._isDetailRow(row)) {\r\n if (this._needRenderCell(0, options.columnIndices)) {\r\n $detailCell = this._renderCell($row, {\r\n value: null,\r\n row: row,\r\n rowIndex: row.rowIndex,\r\n column: {\r\n command: \"detail\"\r\n },\r\n columnIndex: 0\r\n });\r\n $detailCell.addClass(CELL_FOCUS_DISABLED_CLASS).addClass(MASTER_DETAIL_CELL_CLASS).attr(\"colSpan\", visibleColumns.length)\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\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.editor_factory.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 _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position2 = require(\"../../core/utils/position\");\r\nvar _ui = _interopRequireDefault(require(\"../shared/ui.editor_factory_mixin\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EDITOR_INLINE_BLOCK = \"dx-editor-inline-block\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar FOCUSED_ELEMENT_CLASS = \"dx-focused\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar MODULE_NAMESPACE = \"dxDataGridEditorFactory\";\r\nvar UPDATE_FOCUS_EVENTS = (0, _index.addNamespace)([_pointer.default.down, \"focusin\", _click.name].join(\" \"), MODULE_NAMESPACE);\r\nvar DX_HIDDEN = \"dx-hidden\";\r\nvar EditorFactory = _uiGrid_core.default.ViewController.inherit({\r\n _getFocusedElement: function($dataGridElement) {\r\n var rowSelector = this.option(\"focusedRowEnabled\") ? \"tr[tabindex]:focus\" : \"tr[tabindex]:not(.dx-data-row):focus\";\r\n var focusedElementSelector = \"td[tabindex]:focus, \".concat(rowSelector, \", input:focus, textarea:focus, .dx-lookup-field:focus, .dx-checkbox:focus, .dx-switch:focus, .dx-dropdownbutton .dx-buttongroup:focus\");\r\n return $dataGridElement.find(focusedElementSelector)\r\n },\r\n _getFocusCellSelector: function() {\r\n return \".dx-row > td\"\r\n },\r\n _updateFocusCore: function() {\r\n var $focus = this._$focusedElement;\r\n var $dataGridElement = this.component && this.component.$element();\r\n var $focusCell;\r\n var hideBorders;\r\n if ($dataGridElement) {\r\n $focus = this._getFocusedElement($dataGridElement);\r\n if ($focus.length) {\r\n if (!$focus.hasClass(CELL_FOCUS_DISABLED_CLASS) && !$focus.hasClass(ROW_CLASS)) {\r\n $focusCell = $focus.closest(this._getFocusCellSelector() + \", .\" + CELL_FOCUS_DISABLED_CLASS);\r\n hideBorders = $focusCell.get(0) !== $focus.get(0) && $focusCell.hasClass(EDITOR_INLINE_BLOCK);\r\n $focus = $focusCell\r\n }\r\n if ($focus.length && !$focus.hasClass(CELL_FOCUS_DISABLED_CLASS)) {\r\n this.focus($focus, hideBorders);\r\n return\r\n }\r\n }\r\n }\r\n this.loseFocus()\r\n },\r\n _updateFocus: function(e) {\r\n var that = this;\r\n var isFocusOverlay = e && e.event && (0, _renderer.default)(e.event.target).hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n that._isFocusOverlay = that._isFocusOverlay || isFocusOverlay;\r\n clearTimeout(that._updateFocusTimeoutID);\r\n that._updateFocusTimeoutID = setTimeout(function() {\r\n delete that._updateFocusTimeoutID;\r\n if (!that._isFocusOverlay) {\r\n that._updateFocusCore()\r\n }\r\n that._isFocusOverlay = false\r\n })\r\n },\r\n _updateFocusOverlaySize: function($element, position) {\r\n $element.hide();\r\n var location = _position.default.calculate($element, (0, _extend.extend)({\r\n collision: \"fit\"\r\n }, position));\r\n if (location.h.oversize > 0) {\r\n $element.outerWidth($element.outerWidth() - location.h.oversize)\r\n }\r\n if (location.v.oversize > 0) {\r\n $element.outerHeight($element.outerHeight() - location.v.oversize)\r\n }\r\n $element.show()\r\n },\r\n callbackNames: function() {\r\n return [\"focused\"]\r\n },\r\n focus: function($element, hideBorder) {\r\n var that = this;\r\n if (void 0 === $element) {\r\n return that._$focusedElement\r\n } else {\r\n if ($element) {\r\n if (!$element.is(that._$focusedElement)) {\r\n that._$focusedElement && that._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS)\r\n }\r\n that._$focusedElement = $element;\r\n clearTimeout(that._focusTimeoutID);\r\n that._focusTimeoutID = setTimeout(function() {\r\n delete that._focusTimeoutID;\r\n that.renderFocusOverlay($element, hideBorder);\r\n $element.addClass(FOCUSED_ELEMENT_CLASS);\r\n that.focused.fire($element)\r\n })\r\n }\r\n }\r\n },\r\n refocus: function() {\r\n var $focus = this.focus();\r\n this.focus($focus)\r\n },\r\n renderFocusOverlay: function($element, hideBorder) {\r\n var that = this;\r\n if (!_uiGrid_core2.default.isElementInCurrentGrid(this, $element)) {\r\n return\r\n }\r\n if (!that._$focusOverlay) {\r\n that._$focusOverlay = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS))\r\n }\r\n if (hideBorder) {\r\n that._$focusOverlay.addClass(DX_HIDDEN)\r\n } else {\r\n if ($element.length) {\r\n var align = _browser.default.msie ? \"left bottom\" : _browser.default.mozilla ? \"right bottom\" : \"left top\";\r\n var $content = $element.closest(\".\" + that.addWidgetPrefix(CONTENT_CLASS));\r\n var elemCoord = (0, _position2.getBoundingRect)($element.get(0));\r\n that._$focusOverlay.removeClass(DX_HIDDEN).appendTo($content).outerWidth(elemCoord.right - elemCoord.left + 1).outerHeight(elemCoord.bottom - elemCoord.top + 1);\r\n var focusOverlayPosition = {\r\n precise: true,\r\n my: align,\r\n at: align,\r\n of: $element,\r\n boundary: $content.length && $content\r\n };\r\n that._updateFocusOverlaySize(that._$focusOverlay, focusOverlayPosition);\r\n _position.default.setup(that._$focusOverlay, focusOverlayPosition);\r\n that._$focusOverlay.css(\"visibility\", \"visible\")\r\n }\r\n }\r\n },\r\n resize: function() {\r\n var $focusedElement = this._$focusedElement;\r\n if ($focusedElement) {\r\n this.focus($focusedElement)\r\n }\r\n },\r\n loseFocus: function() {\r\n this._$focusedElement && this._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS);\r\n this._$focusedElement = null;\r\n this._$focusOverlay && this._$focusOverlay.addClass(DX_HIDDEN)\r\n },\r\n init: function() {\r\n this.createAction(\"onEditorPreparing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n this.createAction(\"onEditorPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n this._updateFocusHandler = this._updateFocusHandler || this.createAction(this._updateFocus.bind(this));\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler);\r\n this._attachContainerEventHandlers()\r\n },\r\n _attachContainerEventHandlers: function() {\r\n var that = this;\r\n var $container = that.component && that.component.$element();\r\n if ($container) {\r\n _events_engine.default.on($container, (0, _index.addNamespace)(\"keydown\", MODULE_NAMESPACE), function(e) {\r\n if (\"tab\" === (0, _index.normalizeKeyName)(e)) {\r\n that._updateFocusHandler(e)\r\n }\r\n })\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._focusTimeoutID);\r\n clearTimeout(this._updateFocusTimeoutID);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler)\r\n }\r\n}).include(_ui.default);\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {}\r\n },\r\n controllers: {\r\n editorFactory: EditorFactory\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.editing.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.default = 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 _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _dialog = require(\"../dialog\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar iconUtils = _interopRequireWildcard(require(\"../../core/utils/icon\"));\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\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\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\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\nvar EDIT_FORM_CLASS = \"edit-form\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar READONLY_CLASS = \"readonly\";\r\nvar EDIT_POPUP_CLASS = \"edit-popup\";\r\nvar FORM_BUTTONS_CONTAINER_CLASS = \"form-buttons-container\";\r\nvar ADD_ROW_BUTTON_CLASS = \"addrow-button\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar LINK_CLASS = \"dx-link\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_SELECTED = \"dx-selection\";\r\nvar EDIT_ROW = \"dx-edit-row\";\r\nvar EDIT_BUTTON_CLASS = \"dx-edit-button\";\r\nvar COMMAND_EDIT_CLASS = \"dx-command-edit\";\r\nvar COMMAND_EDIT_WITH_ICONS_CLASS = COMMAND_EDIT_CLASS + \"-with-icons\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar BUTTON_CLASS = \"dx-button\";\r\nvar INSERT_INDEX = \"__DX_INSERT_INDEX__\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar ROW_REMOVED = \"dx-row-removed\";\r\nvar ROW_INSERTED = \"dx-row-inserted\";\r\nvar ROW_MODIFIED = \"dx-row-modified\";\r\nvar CELL_MODIFIED = \"dx-cell-modified\";\r\nvar EDITING_NAMESPACE = \"dxDataGridEditing\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar FOCUSABLE_ELEMENT_SELECTOR = \"[tabindex], \" + EDITORS_INPUT_SELECTOR;\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar DATA_EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar DATA_EDIT_DATA_UPDATE_TYPE = \"update\";\r\nvar DATA_EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nvar DEFAULT_START_EDIT_ACTION = \"click\";\r\nvar EDIT_MODES = [EDIT_MODE_BATCH, EDIT_MODE_ROW, EDIT_MODE_CELL, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar ROW_BASED_MODES = [EDIT_MODE_ROW, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar CELL_BASED_MODES = [EDIT_MODE_BATCH, EDIT_MODE_CELL];\r\nvar FORM_BASED_MODES = [EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar MODES_WITH_DELAYED_FOCUS = [EDIT_MODE_ROW, EDIT_MODE_FORM];\r\nvar TARGET_COMPONENT_NAME = \"targetComponent\";\r\nvar EDIT_LINK_CLASS = {\r\n save: \"dx-link-save\",\r\n cancel: \"dx-link-cancel\",\r\n edit: \"dx-link-edit\",\r\n undelete: \"dx-link-undelete\",\r\n \"delete\": \"dx-link-delete\",\r\n add: \"dx-link-add\"\r\n};\r\nvar EDIT_ICON_CLASS = {\r\n save: \"save\",\r\n cancel: \"revert\",\r\n edit: \"edit\",\r\n undelete: \"revert\",\r\n \"delete\": \"trash\",\r\n add: \"add\"\r\n};\r\nvar METHOD_NAMES = {\r\n edit: \"editRow\",\r\n \"delete\": \"deleteRow\",\r\n undelete: \"undeleteRow\",\r\n save: \"saveEditData\",\r\n cancel: \"cancelEditData\",\r\n add: \"addRowByRowIndex\"\r\n};\r\nvar ACTION_OPTION_NAMES = {\r\n add: \"allowAdding\",\r\n edit: \"allowUpdating\",\r\n \"delete\": \"allowDeleting\"\r\n};\r\nvar BUTTON_NAMES = [\"edit\", \"save\", \"cancel\", \"delete\", \"undelete\"];\r\nvar EDITING_POPUP_OPTION_NAME = \"editing.popup\";\r\nvar EDITING_CHANGES_OPTION_NAME = \"editing.changes\";\r\nvar EDITING_EDITROWKEY_OPTION_NAME = \"editing.editRowKey\";\r\nvar EDITING_EDITCOLUMNNAME_OPTION_NAME = \"editing.editColumnName\";\r\nvar createFailureHandler = function(deferred) {\r\n return function(arg) {\r\n var error = arg instanceof Error ? arg : new Error(arg && String(arg) || \"Unknown error\");\r\n deferred.reject(error)\r\n }\r\n};\r\nvar _getEditMode = function(that) {\r\n var editMode = that.option(\"editing.mode\");\r\n if (EDIT_MODES.indexOf(editMode) !== -1) {\r\n return editMode\r\n }\r\n return EDIT_MODE_ROW\r\n};\r\nvar _isRowEditMode = function(that) {\r\n var editMode = _getEditMode(that);\r\n return ROW_BASED_MODES.indexOf(editMode) !== -1\r\n};\r\nvar isEditingCell = function(isEditRow, cellOptions) {\r\n return cellOptions.isEditing || isEditRow && cellOptions.column.allowEditing\r\n};\r\nvar isEditingOrShowEditorAlwaysDataCell = function(isEditRow, cellOptions) {\r\n var isCommandCell = !!cellOptions.column.command;\r\n var isEditing = isEditingCell(isEditRow, cellOptions);\r\n var isEditorCell = !isCommandCell && (isEditing || cellOptions.column.showEditorAlways);\r\n return \"data\" === cellOptions.rowType && isEditorCell\r\n};\r\nvar EditingController = _uiGrid_core.default.ViewController.inherit(function() {\r\n var getDefaultEditorTemplate = function(that) {\r\n return function(container, options) {\r\n var $editor = (0, _renderer.default)(\"
\").appendTo(container);\r\n that.getController(\"editorFactory\").createEditor($editor, (0, _extend.extend)({}, options.column, {\r\n value: options.value,\r\n setValue: options.setValue,\r\n row: options.row,\r\n parentType: \"dataRow\",\r\n width: null,\r\n readOnly: !options.setValue,\r\n isOnForm: options.isOnForm,\r\n id: options.id\r\n }))\r\n }\r\n };\r\n var getEditingTexts = function(options) {\r\n var editingTexts = options.component.option(\"editing.texts\") || {};\r\n return {\r\n save: editingTexts.saveRowChanges,\r\n cancel: editingTexts.cancelRowChanges,\r\n edit: editingTexts.editRow,\r\n undelete: editingTexts.undeleteRow,\r\n \"delete\": editingTexts.deleteRow,\r\n add: editingTexts.addRowToNode\r\n }\r\n };\r\n var getButtonIndex = function(buttons, name) {\r\n var result = -1;\r\n buttons.some(function(button, index) {\r\n if (getButtonName(button) === name) {\r\n result = index;\r\n return true\r\n }\r\n });\r\n return result\r\n };\r\n\r\n function getButtonName(button) {\r\n return (0, _type.isObject)(button) ? button.name : button\r\n }\r\n var getEditorType = function(item) {\r\n var column = item.column;\r\n return item.isCustomEditorType ? item.editorType : column.formItem && column.formItem.editorType\r\n };\r\n var forEachFormItems = function forEachFormItems(items, callBack) {\r\n items.forEach(function(item) {\r\n if (item.items || item.tabs) {\r\n forEachFormItems(item.items || item.tabs, callBack)\r\n } else {\r\n callBack(item)\r\n }\r\n })\r\n };\r\n return {\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._editForm = null;\r\n that._updateEditFormDeferred = null;\r\n that._lastOperation = null;\r\n if (that._deferreds) {\r\n that._deferreds.forEach(function(d) {\r\n return d.reject(\"cancel\")\r\n })\r\n }\r\n that._deferreds = [];\r\n if (!that._dataChangedHandler) {\r\n that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n that._dataController.changed.add(that._dataChangedHandler)\r\n }\r\n if (!that._saveEditorHandler) {\r\n that.createAction(\"onInitNewRow\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowInserting\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowInserted\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditingStart\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowUpdating\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowUpdated\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowRemoving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowRemoved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onSaved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onSaving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditCanceling\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditCanceled\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n var $pointerDownTarget;\r\n var isResizing;\r\n that._pointerUpEditorHandler = function() {\r\n var _that$getController;\r\n isResizing = null === (_that$getController = that.getController(\"columnsResizer\")) || void 0 === _that$getController ? void 0 : _that$getController.isResizing()\r\n };\r\n that._pointerDownEditorHandler = function(e) {\r\n return $pointerDownTarget = (0, _renderer.default)(e.target)\r\n };\r\n that._saveEditorHandler = that.createAction(function(e) {\r\n var event = e.event;\r\n var $target = (0, _renderer.default)(event.target);\r\n var targetComponent = event[TARGET_COMPONENT_NAME];\r\n if ($pointerDownTarget && $pointerDownTarget.is(\"input\") && !$pointerDownTarget.is($target)) {\r\n return\r\n }\r\n\r\n function checkEditorPopup($element) {\r\n return $element && !!$element.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length\r\n }\r\n if (!_isRowEditMode(that) && !that._editCellInProgress) {\r\n var isEditorPopup = checkEditorPopup($target) || checkEditorPopup(null === targetComponent || void 0 === targetComponent ? void 0 : targetComponent.$element());\r\n var isDomElement = !!$target.closest((0, _window.getWindow)().document).length;\r\n var isAnotherComponent = targetComponent && !targetComponent._disposed && targetComponent !== that.component;\r\n var isAddRowButton = !!$target.closest(\".\".concat(that.addWidgetPrefix(ADD_ROW_BUTTON_CLASS))).length;\r\n var isFocusOverlay = $target.hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n var isCellEditMode = _getEditMode(that) === EDIT_MODE_CELL;\r\n if (!isResizing && !isEditorPopup && !isFocusOverlay && !(isAddRowButton && isCellEditMode && that.isEditing()) && (isDomElement || isAnotherComponent)) {\r\n that._closeEditItem.bind(that)($target)\r\n }\r\n }\r\n });\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.up, that._pointerUpEditorHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.down, that._pointerDownEditorHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _click.name, that._saveEditorHandler)\r\n }\r\n that._updateEditColumn();\r\n that._updateEditButtons();\r\n if (!this._internalState) {\r\n this._internalState = []\r\n }\r\n this.component._optionsByReference[EDITING_EDITROWKEY_OPTION_NAME] = true;\r\n this.component._optionsByReference[EDITING_CHANGES_OPTION_NAME] = true\r\n },\r\n getChanges: function() {\r\n return this.option(EDITING_CHANGES_OPTION_NAME)\r\n },\r\n resetChanges: function() {\r\n var changes = this.getChanges();\r\n var needReset = null === changes || void 0 === changes ? void 0 : changes.length;\r\n if (needReset) {\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, [])\r\n }\r\n },\r\n _getInternalData: function(key) {\r\n return this._internalState.filter(function(item) {\r\n return (0, _common.equalByValue)(item.key, key)\r\n })[0]\r\n },\r\n _addInternalData: function(params) {\r\n var internalData = this._getInternalData(params.key);\r\n if (internalData) {\r\n return (0, _extend.extend)(internalData, params)\r\n }\r\n this._internalState.push(params);\r\n return params\r\n },\r\n _getOldData: function(key) {\r\n var _this$_getInternalDat;\r\n return null === (_this$_getInternalDat = this._getInternalData(key)) || void 0 === _this$_getInternalDat ? void 0 : _this$_getInternalDat.oldData\r\n },\r\n getUpdatedData: function(data) {\r\n var key = this._dataController.keyOf(data);\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (changes[editIndex]) {\r\n return (0, _array_utils.createObjectWithChanges)(data, changes[editIndex].data)\r\n }\r\n return data\r\n },\r\n getInsertedData: function() {\r\n return this.getChanges().filter(function(change) {\r\n return change.data && change.type === DATA_EDIT_DATA_INSERT_TYPE\r\n }).map(function(change) {\r\n return change.data\r\n })\r\n },\r\n getRemovedData: function() {\r\n var _this = this;\r\n return this.getChanges().filter(function(change) {\r\n return _this._getOldData(change.key) && change.type === DATA_EDIT_DATA_REMOVE_TYPE\r\n }).map(function(change) {\r\n return _this._getOldData(change.key)\r\n })\r\n },\r\n _fireDataErrorOccurred: function(arg) {\r\n if (\"cancel\" === arg) {\r\n return\r\n }\r\n var $popupContent = this.getPopupContent();\r\n this._dataController.dataErrorOccurred.fire(arg, $popupContent)\r\n },\r\n _needToCloseEditableCell: function($targetElement) {\r\n var $element = this.component.$element();\r\n var result = this.isEditing();\r\n var isCurrentComponentElement = !$element || !!$targetElement.closest($element).length;\r\n if (isCurrentComponentElement) {\r\n var isDataRow = $targetElement.closest(\".\" + DATA_ROW_CLASS).length;\r\n if (isDataRow) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var $targetCell = $targetElement.closest(\".\" + ROW_CLASS + \"> td\");\r\n var rowIndex = rowsView.getRowIndex($targetCell.parent());\r\n var columnIndex = rowsView.getCellElements(rowIndex).index($targetCell);\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var allowEditing = visibleColumns[columnIndex] && visibleColumns[columnIndex].allowEditing;\r\n result = result && !allowEditing && !this.isEditCell(rowIndex, columnIndex)\r\n }\r\n }\r\n return result\r\n },\r\n _closeEditItem: function($targetElement) {\r\n if (this._needToCloseEditableCell($targetElement)) {\r\n this.closeEditCell()\r\n }\r\n },\r\n _handleDataChanged: function(args) {\r\n var editForm = this._editForm;\r\n if (\"refresh\" === args.changeType && _getEditMode(this) === EDIT_MODE_POPUP && editForm && editForm.option(\"visible\")) {\r\n this._repaintEditPopup()\r\n }\r\n },\r\n _isDefaultButtonVisible: function(button, options) {\r\n var result = true;\r\n var isRowMode = _isRowEditMode(this);\r\n var isBatchMode = _getEditMode(this) === EDIT_MODE_BATCH;\r\n var isEditRow = options.row && options.row.rowIndex === this._getVisibleEditRowIndex() && isRowMode;\r\n switch (button.name) {\r\n case \"edit\":\r\n result = !isEditRow && this.allowUpdating(options) && isRowMode;\r\n break;\r\n case \"save\":\r\n case \"cancel\":\r\n result = isEditRow;\r\n break;\r\n case \"delete\":\r\n result = !isEditRow && this.allowDeleting(options) && (!isBatchMode || !options.row.removed);\r\n break;\r\n case \"undelete\":\r\n result = isBatchMode && this.allowDeleting(options) && options.row.removed\r\n }\r\n return result\r\n },\r\n _isButtonVisible: function(button, options) {\r\n var visible = button.visible;\r\n if (!(0, _type.isDefined)(visible)) {\r\n return this._isDefaultButtonVisible(button, options)\r\n }\r\n return (0, _type.isFunction)(visible) ? visible.call(button, {\r\n component: options.component,\r\n row: options.row,\r\n column: options.column\r\n }) : visible\r\n },\r\n _getButtonConfig: function(button, options) {\r\n var _this2 = this;\r\n var config = (0, _type.isObject)(button) ? button : {};\r\n var buttonName = getButtonName(button);\r\n var editingTexts = getEditingTexts(options);\r\n var methodName = METHOD_NAMES[buttonName];\r\n var editingOptions = this.option(\"editing\");\r\n var actionName = ACTION_OPTION_NAMES[buttonName];\r\n var allowAction = actionName ? editingOptions[actionName] : true;\r\n return (0, _extend.extend)({\r\n name: buttonName,\r\n text: editingTexts[buttonName],\r\n cssClass: EDIT_LINK_CLASS[buttonName],\r\n onClick: function(e) {\r\n var event = e.event;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n setTimeout(function() {\r\n options.row && allowAction && _this2[methodName] && _this2[methodName](options.row.rowIndex)\r\n })\r\n }\r\n }, config)\r\n },\r\n _getEditingButtons: function(options) {\r\n var _this3 = this;\r\n var buttonIndex;\r\n var haveCustomButtons = !!options.column.buttons;\r\n var buttons = (options.column.buttons || []).slice();\r\n if (haveCustomButtons) {\r\n buttonIndex = getButtonIndex(buttons, \"edit\");\r\n if (buttonIndex >= 0) {\r\n if (getButtonIndex(buttons, \"save\") < 0) {\r\n buttons.splice(buttonIndex + 1, 0, \"save\")\r\n }\r\n if (getButtonIndex(buttons, \"cancel\") < 0) {\r\n buttons.splice(getButtonIndex(buttons, \"save\") + 1, 0, \"cancel\")\r\n }\r\n }\r\n buttonIndex = getButtonIndex(buttons, \"delete\");\r\n if (buttonIndex >= 0 && getButtonIndex(buttons, \"undelete\") < 0) {\r\n buttons.splice(buttonIndex + 1, 0, \"undelete\")\r\n }\r\n } else {\r\n buttons = BUTTON_NAMES.slice()\r\n }\r\n return buttons.map(function(button) {\r\n return _this3._getButtonConfig(button, options)\r\n })\r\n },\r\n _renderEditingButtons: function($container, buttons, options) {\r\n var _this4 = this;\r\n buttons.forEach(function(button) {\r\n if (_this4._isButtonVisible(button, options)) {\r\n _this4._createButton($container, button, options)\r\n }\r\n })\r\n },\r\n _getEditCommandCellTemplate: function() {\r\n var _this5 = this;\r\n return function(container, options) {\r\n var $container = (0, _renderer.default)(container);\r\n if (\"data\" === options.rowType) {\r\n var buttons = _this5._getEditingButtons(options);\r\n _this5._renderEditingButtons($container, buttons, options);\r\n options.watch && options.watch(function() {\r\n return buttons.map(function(button) {\r\n return _this5._isButtonVisible(button, options)\r\n })\r\n }, function() {\r\n $container.empty();\r\n _this5._renderEditingButtons($container, buttons, options)\r\n })\r\n } else {\r\n _uiGrid_core2.default.setEmptyText($container)\r\n }\r\n }\r\n },\r\n isRowEditMode: function() {\r\n return _isRowEditMode(this)\r\n },\r\n isFormEditMode: function() {\r\n var editMode = _getEditMode(this);\r\n return FORM_BASED_MODES.indexOf(editMode) !== -1\r\n },\r\n isCellOrBatchEditMode: function() {\r\n var editMode = this.getEditMode();\r\n return CELL_BASED_MODES.indexOf(editMode) !== -1\r\n },\r\n getEditMode: function() {\r\n return _getEditMode(this)\r\n },\r\n getFirstEditableColumnIndex: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var firstFormItem = this._firstFormItem;\r\n var columnIndex;\r\n if (_getEditMode(this) === EDIT_MODE_FORM && firstFormItem) {\r\n var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n var editRowIndex = this._dataController.getRowIndexByKey(editRowKey);\r\n var $editFormElements = this._rowsView.getCellElements(editRowIndex);\r\n columnIndex = this._rowsView._getEditFormEditorVisibleIndex($editFormElements, firstFormItem.column)\r\n } else {\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (column.allowEditing) {\r\n columnIndex = index;\r\n return false\r\n }\r\n })\r\n }\r\n return columnIndex\r\n },\r\n getFirstEditableCellInRow: function(rowIndex) {\r\n var rowsView = this.getView(\"rowsView\");\r\n return rowsView && rowsView._getCellElement(rowIndex ? rowIndex : 0, this.getFirstEditableColumnIndex())\r\n },\r\n getFocusedCellInRow: function(rowIndex) {\r\n return this.getFirstEditableCellInRow(rowIndex)\r\n },\r\n getIndexByKey: function(key, items) {\r\n return _uiGrid_core2.default.getIndexByKey(key, items)\r\n },\r\n hasChanges: function(rowIndex) {\r\n var changes = this.getChanges();\r\n var result = false;\r\n for (var i = 0; i < (null === changes || void 0 === changes ? void 0 : changes.length); i++) {\r\n if (changes[i].type && (!(0, _type.isDefined)(rowIndex) || this._dataController.getRowIndexByKey(changes[i].key) === rowIndex)) {\r\n result = true;\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._inputFocusTimeoutID);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.up, this._pointerUpEditorHandler);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.down, this._pointerDownEditorHandler);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), _click.name, this._saveEditorHandler)\r\n },\r\n optionChanged: function(args) {\r\n if (\"editing\" === args.name) {\r\n var fullName = args.fullName;\r\n var editPopup = this._editPopup;\r\n if (fullName && 0 === fullName.indexOf(EDITING_POPUP_OPTION_NAME)) {\r\n if (editPopup) {\r\n var popupOptionName = fullName.slice(EDITING_POPUP_OPTION_NAME.length + 1);\r\n if (popupOptionName) {\r\n editPopup.option(popupOptionName, args.value)\r\n } else {\r\n editPopup.option(args.value)\r\n }\r\n }\r\n } else {\r\n if (editPopup && editPopup.option(\"visible\") && 0 === fullName.indexOf(\"editing.form\")) {\r\n this._repaintEditPopup()\r\n } else {\r\n if (fullName === EDITING_EDITROWKEY_OPTION_NAME) {\r\n this._handleEditRowKeyChange(args)\r\n } else {\r\n if (fullName === EDITING_EDITCOLUMNNAME_OPTION_NAME) {\r\n this._handleEditColumnNameChange(args)\r\n } else {\r\n if (fullName === EDITING_CHANGES_OPTION_NAME) {\r\n this._handleChangesChange(args)\r\n } else {\r\n this.init();\r\n this.resetChanges();\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\r\n }\r\n }\r\n }\r\n }\r\n }\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n },\r\n _handleEditRowKeyChange: function(args) {\r\n var rowIndex = this._dataController.getRowIndexByKey(args.value);\r\n var oldRowIndexCorrection = this._getEditRowIndexCorrection();\r\n var oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection;\r\n var columnIndex = this._getVisibleEditColumnIndex();\r\n if (!this.isCellOrBatchEditMode()) {\r\n if ((0, _type.isDefined)(args.value)) {\r\n if (args.value !== args.previousValue) {\r\n this._editRowFromOptionChanged(rowIndex, oldRowIndex)\r\n }\r\n } else {\r\n this.cancelEditData()\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(args.value) && args.value !== args.previousValue) {\r\n this._editCellFromOptionChanged(columnIndex, columnIndex, oldRowIndex)\r\n }\r\n }\r\n },\r\n _handleEditColumnNameChange: function(args) {\r\n var oldRowIndex = this._getVisibleEditRowIndex(args.previousValue);\r\n if (this.isCellOrBatchEditMode() && oldRowIndex !== -1 && (0, _type.isDefined)(args.value) && args.value !== args.previousValue) {\r\n var columnIndex = this._columnsController.getVisibleColumnIndex(args.value);\r\n var oldColumnIndex = this._columnsController.getVisibleColumnIndex(args.previousValue);\r\n this._editCellFromOptionChanged(columnIndex, oldColumnIndex, oldRowIndex)\r\n }\r\n },\r\n _handleChangesChange: function(args) {\r\n var dataController = this._dataController;\r\n if (!args.value.length && !args.previousValue.length) {\r\n return\r\n }\r\n dataController.updateItems({\r\n repaintChangesOnly: true\r\n })\r\n },\r\n _editCellFromOptionChanged: function(columnIndex, oldColumnIndex, oldRowIndex) {\r\n var _this6 = this;\r\n var columns = this._columnsController.getVisibleColumns();\r\n if (columnIndex > -1) {\r\n (0, _common.deferRender)(function() {\r\n _this6._repaintEditCell(columns[columnIndex], columns[oldColumnIndex], oldRowIndex)\r\n })\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"addRow\", \"deleteRow\", \"undeleteRow\", \"editRow\", \"editCell\", \"closeEditCell\", \"saveEditData\", \"cancelEditData\", \"hasEditData\"]\r\n },\r\n refresh: function(isPageChanged) {\r\n var editMode = _getEditMode(this);\r\n var needResetIndexes = editMode === EDIT_MODE_BATCH || isPageChanged && \"virtual\" !== this.option(\"scrolling.mode\");\r\n if (!(0, _type.isDefined)(this._pageIndex)) {\r\n return\r\n }\r\n if (!this.isCellOrBatchEditMode()) {\r\n this.resetChanges();\r\n this.init();\r\n if ((0, _type.isDefined)(this.option(EDITING_EDITROWKEY_OPTION_NAME))) {\r\n this._resetEditRowKey()\r\n }\r\n } else {\r\n if (needResetIndexes) {\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\r\n }\r\n }\r\n },\r\n isEditing: function() {\r\n var isEditRowKeyDefined = (0, _type.isDefined)(this.option(EDITING_EDITROWKEY_OPTION_NAME));\r\n var isEditColumnNameDefined = (0, _type.isDefined)(this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME));\r\n if (this.isCellOrBatchEditMode()) {\r\n return isEditRowKeyDefined && isEditColumnNameDefined\r\n }\r\n return isEditRowKeyDefined\r\n },\r\n isEditRow: function(rowIndex) {\r\n var editMode = _getEditMode(this);\r\n return ROW_BASED_MODES.indexOf(editMode) !== -1 && this._isEditRowByIndex(rowIndex)\r\n },\r\n _setEditRowKey: function(value, silent) {\r\n if (silent) {\r\n this._silentOption(EDITING_EDITROWKEY_OPTION_NAME, value)\r\n } else {\r\n this.option(EDITING_EDITROWKEY_OPTION_NAME, value)\r\n }\r\n },\r\n _setEditRowKeyByIndex: function(rowIndex, silent) {\r\n var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n if (void 0 === key) {\r\n this._dataController.fireError(\"E1043\");\r\n return\r\n }\r\n this._setEditRowKey(key, silent)\r\n },\r\n getEditRowIndex: function() {\r\n return this._getVisibleEditRowIndex()\r\n },\r\n getEditFormRowIndex: function() {\r\n var editMode = _getEditMode(this);\r\n return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP ? this._getVisibleEditRowIndex() : -1\r\n },\r\n _isEditRowByIndex: function(rowIndex) {\r\n var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n var isKeyEqual = (0, _type.isDefined)(key) && (0, _common.equalByValue)(this.option(EDITING_EDITROWKEY_OPTION_NAME), key);\r\n if (isKeyEqual) {\r\n return this._getVisibleEditRowIndex() === rowIndex\r\n }\r\n return isKeyEqual\r\n },\r\n isEditCell: function(visibleRowIndex, columnIndex) {\r\n return this._isEditRowByIndex(visibleRowIndex) && this._getVisibleEditColumnIndex() === columnIndex\r\n },\r\n getPopupContent: function() {\r\n var editMode = _getEditMode(this);\r\n var popupVisible = this._editPopup && this._editPopup.option(\"visible\");\r\n if (editMode === EDIT_MODE_POPUP && popupVisible) {\r\n return this._$popupContent\r\n }\r\n },\r\n getEditForm: function() {\r\n return this._editForm\r\n },\r\n _needInsertItem: function(change, changeType) {\r\n var that = this;\r\n var dataSource = that._dataController.dataSource();\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n var pageIndex = dataSource.pageIndex();\r\n var beginPageIndex = dataSource.beginPageIndex ? dataSource.beginPageIndex() : pageIndex;\r\n var endPageIndex = dataSource.endPageIndex ? dataSource.endPageIndex() : pageIndex;\r\n if (\"standard\" !== scrollingMode) {\r\n switch (changeType) {\r\n case \"append\":\r\n return change.key.pageIndex === endPageIndex;\r\n case \"prepend\":\r\n return change.key.pageIndex === beginPageIndex;\r\n case \"refresh\":\r\n change.key.rowIndex = 0;\r\n change.key.dataRowIndex = 0;\r\n change.key.pageIndex = 0;\r\n break;\r\n default:\r\n return change.key.pageIndex >= beginPageIndex && change.key.pageIndex <= endPageIndex\r\n }\r\n }\r\n return change.key.pageIndex === pageIndex\r\n },\r\n _generateNewItem: function(key) {\r\n var item = {\r\n key: key\r\n };\r\n if (key && key[INSERT_INDEX]) {\r\n item[INSERT_INDEX] = key[INSERT_INDEX]\r\n }\r\n return item\r\n },\r\n _getLoadedRowIndexByInsertKey: function(items, change, key) {\r\n var dataController = this._dataController;\r\n var loadedRowIndexOffset = dataController.getRowIndexOffset(true);\r\n var loadedRowIndex = key.dataRowIndex - loadedRowIndexOffset;\r\n if (\"append\" === change.changeType) {\r\n loadedRowIndex -= dataController.items(true).length;\r\n if (change.removeCount) {\r\n loadedRowIndex += change.removeCount\r\n }\r\n }\r\n for (var i = 0; i < loadedRowIndex; i++) {\r\n if (items[i] && items[i][INSERT_INDEX]) {\r\n loadedRowIndex++\r\n }\r\n }\r\n return loadedRowIndex\r\n },\r\n processItems: function(items, e) {\r\n var _this7 = this;\r\n var changeType = e.changeType;\r\n this.update(changeType);\r\n var changes = this.getChanges();\r\n changes.forEach(function(change) {\r\n var key = change.key;\r\n if ((0, _type.isDefined)(key) && change.type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n var loadedRowIndex = _this7._getLoadedRowIndexByInsertKey(items, e, key);\r\n var item = _this7._generateNewItem(key);\r\n if (loadedRowIndex >= 0 && _this7._needInsertItem(change, changeType, items, item)) {\r\n items.splice(key.dataRowIndex ? loadedRowIndex : 0, 0, item)\r\n }\r\n }\r\n });\r\n return items\r\n },\r\n processDataItem: function(item, options, generateDataValues) {\r\n var columns = options.visibleColumns;\r\n var key = item.data[INSERT_INDEX] ? item.data.key : item.key;\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n item.isEditing = false;\r\n if (editIndex >= 0) {\r\n var editMode = _getEditMode(this);\r\n var _changes$editIndex = changes[editIndex],\r\n data = _changes$editIndex.data,\r\n type = _changes$editIndex.type;\r\n switch (type) {\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n if (editMode === EDIT_MODE_POPUP) {\r\n item.visible = false\r\n }\r\n item.isNewRow = true;\r\n item.key = key;\r\n item.data = data;\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n item.modified = true;\r\n item.oldData = item.data;\r\n item.data = (0, _array_utils.createObjectWithChanges)(item.data, data);\r\n item.modifiedValues = generateDataValues(data, columns, true);\r\n break;\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n if (editMode === EDIT_MODE_BATCH) {\r\n item.data = (0, _array_utils.createObjectWithChanges)(item.data, data)\r\n }\r\n item.removed = true\r\n }\r\n }\r\n },\r\n _initNewRow: function(options) {\r\n var _this8 = this;\r\n this.executeAction(\"onInitNewRow\", options);\r\n if (options.promise) {\r\n var deferred = new _deferred.Deferred;\r\n (0, _deferred.when)((0, _deferred.fromPromise)(options.promise)).done(deferred.resolve).fail(createFailureHandler(deferred)).fail(function(arg) {\r\n return _this8._fireDataErrorOccurred(arg)\r\n });\r\n return deferred\r\n }\r\n },\r\n _getInsertKey: function(parentKey) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var rows = dataController.items();\r\n var editMode = _getEditMode(that);\r\n var insertKey = {\r\n parentKey: parentKey,\r\n pageIndex: dataController.pageIndex(),\r\n rowIndex: that._getInsertRowIndex(parentKey)\r\n };\r\n var row = rows[insertKey.rowIndex];\r\n if (row && (!row.isEditing && \"detail\" === row.rowType || \"detailAdaptive\" === row.rowType)) {\r\n insertKey.rowIndex++\r\n }\r\n insertKey.dataRowIndex = dataController.getRowIndexOffset() + rows.filter(function(row, index) {\r\n return index < insertKey.rowIndex && (\"data\" === row.rowType && !row.isNewRow || \"group\" === row.rowType)\r\n }).length;\r\n if (editMode !== EDIT_MODE_BATCH) {\r\n this._setEditRowKey(insertKey, true)\r\n }\r\n insertKey[INSERT_INDEX] = that._getInsertIndex();\r\n return insertKey\r\n },\r\n _getInsertRowIndex: function(parentKey) {\r\n var that = this;\r\n var rowsView = that.getView(\"rowsView\");\r\n var parentRowIndex = that._dataController.getRowIndexByKey(parentKey);\r\n if (parentRowIndex >= 0) {\r\n return parentRowIndex + 1\r\n }\r\n if (rowsView) {\r\n return rowsView.getTopVisibleItemIndex(true)\r\n }\r\n return 0\r\n },\r\n _getInsertIndex: function() {\r\n var maxInsertIndex = 0;\r\n this.getChanges().forEach(function(editItem) {\r\n if (editItem.type === DATA_EDIT_DATA_INSERT_TYPE && editItem.key[INSERT_INDEX] > maxInsertIndex) {\r\n maxInsertIndex = editItem.key[INSERT_INDEX]\r\n }\r\n });\r\n return maxInsertIndex + 1\r\n },\r\n addRow: function(parentKey) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var store = dataController.store();\r\n var key = store && store.key();\r\n var param = {\r\n data: {}\r\n };\r\n var editMode = _getEditMode(that);\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n var deferred = new _deferred.Deferred;\r\n if (!store) {\r\n dataController.fireError(\"E1052\", this.component.NAME);\r\n return deferred.reject()\r\n }\r\n if (editMode === EDIT_MODE_CELL && that.hasChanges()) {\r\n that.saveEditData().done(function() {\r\n if (!that.hasChanges()) {\r\n that.addRow(parentKey).done(deferred.resolve).fail(deferred.reject)\r\n } else {\r\n deferred.reject(\"cancel\")\r\n }\r\n });\r\n return deferred.promise()\r\n }\r\n that.refresh();\r\n if (!that._allowRowAdding()) {\r\n return deferred.reject(\"cancel\")\r\n }\r\n if (!key) {\r\n param.data.__KEY__ = String(new _guid.default)\r\n }(0, _deferred.when)(that._initNewRow(param, parentKey)).done(function() {\r\n if (that._allowRowAdding()) {\r\n that._addRowCore(param.data, parentKey, oldEditRowIndex);\r\n deferred.resolve()\r\n } else {\r\n deferred.reject(\"cancel\")\r\n }\r\n }).fail(deferred.reject);\r\n return deferred.promise()\r\n },\r\n _allowRowAdding: function() {\r\n var that = this;\r\n var editMode = _getEditMode(that);\r\n var insertIndex = that._getInsertIndex();\r\n if (editMode !== EDIT_MODE_BATCH && insertIndex > 1) {\r\n return false\r\n }\r\n return true\r\n },\r\n _addRowCore: function(data, parentKey, initialOldEditRowIndex) {\r\n var that = this;\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n var insertKey = that._getInsertKey(parentKey);\r\n var editMode = _getEditMode(that);\r\n that._addChange({\r\n key: insertKey,\r\n data: data,\r\n type: DATA_EDIT_DATA_INSERT_TYPE\r\n });\r\n that._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [initialOldEditRowIndex, oldEditRowIndex, insertKey.rowIndex]\r\n });\r\n if (editMode === EDIT_MODE_POPUP) {\r\n that._showEditPopup(insertKey.rowIndex)\r\n } else {\r\n that._focusFirstEditableCellInRow(insertKey.rowIndex);\r\n }\r\n that._afterInsertRow({\r\n key: insertKey,\r\n data: data\r\n })\r\n },\r\n _focusFirstEditableCellInRow: function(rowIndex) {\r\n var that = this;\r\n var $firstCell = that.getFirstEditableCellInRow(rowIndex);\r\n that._editCellInProgress = true;\r\n that._delayedInputFocus($firstCell, function() {\r\n that._editCellInProgress = false;\r\n var editRowIndex = rowIndex >= 0 ? rowIndex : 0;\r\n var columnIndex = that.getFirstEditableColumnIndex();\r\n columnIndex >= 0 && that.editCell(editRowIndex, columnIndex)\r\n })\r\n },\r\n _isEditingStart: function(options) {\r\n this.executeAction(\"onEditingStart\", options);\r\n return options.cancel\r\n },\r\n _beforeEditCell: function(rowIndex, columnIndex, item) {\r\n var that = this;\r\n if (_getEditMode(that) === EDIT_MODE_CELL && !item.isNewRow && that.hasChanges()) {\r\n var d = new _deferred.Deferred;\r\n that.saveEditData().always(function() {\r\n d.resolve(that.hasChanges())\r\n });\r\n return d\r\n }\r\n },\r\n _beforeUpdateItems: function() {},\r\n _getVisibleEditColumnIndex: function() {\r\n var editColumnName = this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME);\r\n if (!(0, _type.isDefined)(editColumnName)) {\r\n return -1\r\n }\r\n return this._columnsController.getVisibleColumnIndex(editColumnName)\r\n },\r\n _setEditColumnNameByIndex: function(index, silent) {\r\n var _visibleColumns$index;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n this._setEditColumnName(null === (_visibleColumns$index = visibleColumns[index]) || void 0 === _visibleColumns$index ? void 0 : _visibleColumns$index.name, silent)\r\n },\r\n _setEditColumnName: function(name, silent) {\r\n if (silent) {\r\n this._silentOption(EDITING_EDITCOLUMNNAME_OPTION_NAME, name)\r\n } else {\r\n this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME, name)\r\n }\r\n },\r\n _resetEditColumnName: function() {\r\n this._setEditColumnName(null, true)\r\n },\r\n _getEditColumn: function() {\r\n var editColumnName = this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME);\r\n return this._getColumnByName(editColumnName)\r\n },\r\n _getColumnByName: function(name) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var editColumn;\r\n (0, _type.isDefined)(name) && visibleColumns.some(function(column) {\r\n if (column.name === name) {\r\n editColumn = column;\r\n return true\r\n }\r\n });\r\n return editColumn\r\n },\r\n _getVisibleEditRowIndex: function(columnName) {\r\n var dataController = this._dataController;\r\n var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n var rowIndex = dataController.getRowIndexByKey(editRowKey);\r\n if (rowIndex === -1) {\r\n return rowIndex\r\n }\r\n return rowIndex + this._getEditRowIndexCorrection(columnName)\r\n },\r\n _getEditRowIndexCorrection: function(columnName) {\r\n var editColumn = columnName ? this._getColumnByName(columnName) : this._getEditColumn();\r\n var isColumnHidden = \"adaptiveHidden\" === (null === editColumn || void 0 === editColumn ? void 0 : editColumn.visibleWidth);\r\n return isColumnHidden ? 1 : 0\r\n },\r\n _resetEditRowKey: function() {\r\n this._setEditRowKey(null, true)\r\n },\r\n _resetEditIndices: function() {\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\r\n },\r\n editRow: function(rowIndex) {\r\n var _item$oldData;\r\n var dataController = this._dataController;\r\n var items = dataController.items();\r\n var item = items[rowIndex];\r\n var params = {\r\n data: item && item.data,\r\n cancel: false\r\n };\r\n var oldRowIndex = this._getVisibleEditRowIndex();\r\n if (!item) {\r\n return\r\n }\r\n if (rowIndex === oldRowIndex) {\r\n return true\r\n }\r\n if (void 0 === item.key) {\r\n this._dataController.fireError(\"E1043\");\r\n return\r\n }\r\n if (!item.isNewRow) {\r\n params.key = item.key\r\n }\r\n if (this._isEditingStart(params)) {\r\n return\r\n }\r\n this.resetChanges();\r\n this.init();\r\n this._resetEditColumnName();\r\n this._pageIndex = dataController.pageIndex();\r\n this._addInternalData({\r\n key: item.key,\r\n oldData: null !== (_item$oldData = item.oldData) && void 0 !== _item$oldData ? _item$oldData : item.data\r\n });\r\n this._setEditRowKey(item.key)\r\n },\r\n _editRowFromOptionChanged: function(rowIndex, oldRowIndex) {\r\n var rowIndices = [oldRowIndex, rowIndex];\r\n var editMode = _getEditMode(this);\r\n this._beforeUpdateItems(rowIndices, rowIndex, oldRowIndex);\r\n if (editMode === EDIT_MODE_POPUP) {\r\n this._showEditPopup(rowIndex)\r\n } else {\r\n this._needFocusEditor = true;\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndices\r\n })\r\n }\r\n },\r\n _focusEditorIfNeed: function() {\r\n var _this9 = this;\r\n var editMode = _getEditMode(this);\r\n if (this._needFocusEditor) {\r\n if (MODES_WITH_DELAYED_FOCUS.indexOf(editMode) !== -1) {\r\n var $editingCell = this.getFocusedCellInRow(this._getVisibleEditRowIndex());\r\n this._delayedInputFocus($editingCell, function() {\r\n $editingCell && _this9.component.focus($editingCell)\r\n })\r\n } else {\r\n if (CELL_BASED_MODES.indexOf(editMode) !== -1) {\r\n var _this$_rowsView;\r\n var editColumnIndex = this._getVisibleEditColumnIndex();\r\n var $cell = null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex);\r\n if ($cell && !$cell.find(\":focus\").length) {\r\n this._focusEditingCell(function() {\r\n _this9._editCellInProgress = false\r\n }, $cell, true)\r\n } else {\r\n this._editCellInProgress = false\r\n }\r\n }\r\n }\r\n this._needFocusEditor = false\r\n }\r\n },\r\n _showEditPopup: function(rowIndex, repaintForm) {\r\n var that = this;\r\n var isMobileDevice = \"desktop\" !== _devices.default.current().deviceType;\r\n var popupOptions = (0, _extend.extend)({\r\n showTitle: false,\r\n fullScreen: isMobileDevice,\r\n toolbarItems: [{\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: that._getSaveButtonConfig()\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: that._getCancelButtonConfig()\r\n }],\r\n contentTemplate: that._getPopupEditFormTemplate(rowIndex)\r\n }, that.option(EDITING_POPUP_OPTION_NAME));\r\n if (!that._editPopup) {\r\n var $popupContainer = (0, _renderer.default)(\"
\").appendTo(that.component.$element()).addClass(that.addWidgetPrefix(EDIT_POPUP_CLASS));\r\n that._editPopup = that._createComponent($popupContainer, _popup.default, {});\r\n that._editPopup.on(\"hiding\", that._getEditPopupHiddenHandler());\r\n that._editPopup.on(\"shown\", function(e) {\r\n _events_engine.default.trigger(e.component.$content().find(FOCUSABLE_ELEMENT_SELECTOR).not(\".\" + SCROLLABLE_CONTAINER_CLASS).first(), \"focus\");\r\n if (repaintForm) {\r\n that._editForm && that._editForm.repaint()\r\n }\r\n })\r\n }\r\n that._editPopup.option(popupOptions);\r\n that._editPopup.show()\r\n },\r\n _repaintEditPopup: function() {\r\n var rowIndex = this._getVisibleEditRowIndex();\r\n if (this._editPopup && this._editPopup.option(\"visible\") && rowIndex >= 0) {\r\n var defaultAnimation = this._editPopup.option(\"animation\");\r\n this._editPopup.option(\"animation\", null);\r\n this._showEditPopup(rowIndex, true);\r\n this._editPopup.option(\"animation\", defaultAnimation)\r\n }\r\n },\r\n _getEditPopupHiddenHandler: function() {\r\n var that = this;\r\n return function(e) {\r\n if (that.isEditing()) {\r\n that.cancelEditData()\r\n }\r\n }\r\n },\r\n _getPopupEditFormTemplate: function(rowIndex) {\r\n var that = this;\r\n var row = that.component.getVisibleRows()[rowIndex];\r\n var templateOptions = {\r\n row: row,\r\n rowType: row.rowType,\r\n key: row.key\r\n };\r\n return function(container) {\r\n var formTemplate = that.getEditFormTemplate();\r\n var scrollable = that._createComponent((0, _renderer.default)(\"
\").appendTo(container), _ui.default);\r\n that._$popupContent = scrollable.$content();\r\n formTemplate(that._$popupContent, templateOptions, true)\r\n }\r\n },\r\n _getSaveButtonConfig: function() {\r\n return {\r\n text: this.option(\"editing.texts.saveRowChanges\"),\r\n onClick: this.saveEditData.bind(this)\r\n }\r\n },\r\n _getCancelButtonConfig: function() {\r\n return {\r\n text: this.option(\"editing.texts.cancelRowChanges\"),\r\n onClick: this.cancelEditData.bind(this)\r\n }\r\n },\r\n _removeInternalData: function(key) {\r\n var internalData = this._getInternalData(key);\r\n var index = this._internalState.indexOf(internalData);\r\n if (index > -1) {\r\n this._internalState.splice(index, 1)\r\n }\r\n },\r\n _removeChange: function(index) {\r\n if (index >= 0) {\r\n var changes = _toConsumableArray(this.getChanges());\r\n var key = changes[index].key;\r\n this._removeInternalData(key);\r\n changes.splice(index, 1);\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes);\r\n if ((0, _common.equalByValue)(this.option(EDITING_EDITROWKEY_OPTION_NAME), key)) {\r\n this._resetEditIndices()\r\n }\r\n }\r\n },\r\n executeOperation: function(deferred, func) {\r\n var _this10 = this;\r\n this._lastOperation && this._lastOperation.reject();\r\n this._lastOperation = deferred;\r\n this.waitForDeferredOperations().done(function() {\r\n if (\"rejected\" === deferred.state()) {\r\n return\r\n }\r\n func();\r\n _this10._lastOperation = null\r\n }).fail(function() {\r\n deferred.reject();\r\n _this10._lastOperation = null\r\n })\r\n },\r\n waitForDeferredOperations: function() {\r\n return _deferred.when.apply(void 0, _toConsumableArray(this._deferreds))\r\n },\r\n editCell: function(rowIndex, columnIndex) {\r\n return this._editCell({\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n })\r\n },\r\n _editCell: function(options) {\r\n var _this11 = this;\r\n var d = new _deferred.Deferred;\r\n var coreResult;\r\n this.executeOperation(d, function() {\r\n coreResult = _this11._editCellCore(options);\r\n (0, _deferred.when)(coreResult).done(d.resolve).fail(d.reject)\r\n });\r\n return void 0 !== coreResult ? coreResult : d.promise()\r\n },\r\n _getNormalizedEditCellOptions: function(_ref) {\r\n var oldColumnIndex = _ref.oldColumnIndex,\r\n oldRowIndex = _ref.oldRowIndex,\r\n columnIndex = _ref.columnIndex,\r\n rowIndex = _ref.rowIndex;\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var items = this._dataController.items();\r\n var item = items[rowIndex];\r\n var oldColumn;\r\n if ((0, _type.isDefined)(oldColumnIndex)) {\r\n oldColumn = visibleColumns[oldColumnIndex]\r\n } else {\r\n oldColumn = this._getEditColumn()\r\n }\r\n if (!(0, _type.isDefined)(oldRowIndex)) {\r\n oldRowIndex = this._getVisibleEditRowIndex()\r\n }\r\n if ((0, _type.isString)(columnIndex)) {\r\n columnIndex = columnsController.columnOption(columnIndex, \"index\");\r\n columnIndex = columnsController.getVisibleIndex(columnIndex)\r\n }\r\n var column = visibleColumns[columnIndex];\r\n return {\r\n oldColumn: oldColumn,\r\n columnIndex: columnIndex,\r\n oldRowIndex: oldRowIndex,\r\n rowIndex: rowIndex,\r\n column: column,\r\n item: item\r\n }\r\n },\r\n _editCellCore: function(options) {\r\n var _this12 = this;\r\n var dataController = this._dataController;\r\n var isEditByOptionChanged = (0, _type.isDefined)(options.oldColumnIndex) || (0, _type.isDefined)(options.oldRowIndex);\r\n var _this$_getNormalizedE = this._getNormalizedEditCellOptions(options),\r\n columnIndex = _this$_getNormalizedE.columnIndex,\r\n rowIndex = _this$_getNormalizedE.rowIndex,\r\n column = _this$_getNormalizedE.column,\r\n item = _this$_getNormalizedE.item;\r\n var params = {\r\n data: null === item || void 0 === item ? void 0 : item.data,\r\n cancel: false,\r\n column: column\r\n };\r\n if (void 0 === item.key) {\r\n this._dataController.fireError(\"E1043\");\r\n return\r\n }\r\n if (column && item && (\"data\" === item.rowType || \"detailAdaptive\" === item.rowType) && !item.removed && !_isRowEditMode(this)) {\r\n if (!isEditByOptionChanged && this.isEditCell(rowIndex, columnIndex)) {\r\n return true\r\n }\r\n var editRowIndex = rowIndex + dataController.getRowIndexOffset();\r\n return (0, _deferred.when)(this._beforeEditCell(rowIndex, columnIndex, item)).done(function(cancel) {\r\n if (cancel) {\r\n return\r\n }\r\n if (!_this12._prepareEditCell(params, item, columnIndex, editRowIndex)) {\r\n _this12._processCanceledEditingCell()\r\n }\r\n })\r\n }\r\n return false\r\n },\r\n _processCanceledEditingCell: function() {},\r\n _prepareEditCell: function(params, item, editColumnIndex, editRowIndex) {\r\n if (!item.isNewRow) {\r\n params.key = item.key\r\n }\r\n if (this._isEditingStart(params)) {\r\n return false\r\n }\r\n this._pageIndex = this._dataController.pageIndex();\r\n this._setEditRowKey(item.key);\r\n this._setEditColumnNameByIndex(editColumnIndex);\r\n if (!params.column.showEditorAlways) {\r\n var _item$oldData2;\r\n this._addInternalData({\r\n key: item.key,\r\n oldData: null !== (_item$oldData2 = item.oldData) && void 0 !== _item$oldData2 ? _item$oldData2 : item.data\r\n })\r\n }\r\n return true\r\n },\r\n _repaintEditCell: function(column, oldColumn, oldEditRowIndex) {\r\n this._needFocusEditor = true;\r\n if (!column || !column.showEditorAlways || oldColumn && !oldColumn.showEditorAlways) {\r\n this._editCellInProgress = true;\r\n this.getController(\"editorFactory\").loseFocus();\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, this._getVisibleEditRowIndex()]\r\n })\r\n } else {\r\n if (column !== oldColumn) {\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: []\r\n })\r\n }\r\n }\r\n },\r\n _delayedInputFocus: function($cell, beforeFocusCallback, callBeforeFocusCallbackAlways) {\r\n var that = this;\r\n\r\n function inputFocus() {\r\n if (beforeFocusCallback) {\r\n beforeFocusCallback()\r\n }\r\n if ($cell) {\r\n var $focusableElement = $cell.find(FOCUSABLE_ELEMENT_SELECTOR).first();\r\n _uiGrid_core2.default.focusAndSelectElement(that, $focusableElement)\r\n }\r\n that._beforeFocusCallback = null\r\n }\r\n if (_devices.default.real().ios || _devices.default.real().android) {\r\n inputFocus()\r\n } else {\r\n if (that._beforeFocusCallback) {\r\n that._beforeFocusCallback()\r\n }\r\n clearTimeout(that._inputFocusTimeoutID);\r\n if (callBeforeFocusCallbackAlways) {\r\n that._beforeFocusCallback = beforeFocusCallback\r\n }\r\n that._inputFocusTimeoutID = setTimeout(inputFocus)\r\n }\r\n },\r\n _focusEditingCell: function(beforeFocusCallback, $editCell, callBeforeFocusCallbackAlways) {\r\n var that = this;\r\n var rowsView = that.getView(\"rowsView\");\r\n var editColumnIndex = this._getVisibleEditColumnIndex();\r\n $editCell = $editCell || rowsView && rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex);\r\n if ($editCell) {\r\n this._delayedInputFocus($editCell, beforeFocusCallback, callBeforeFocusCallbackAlways)\r\n }\r\n },\r\n deleteRow: function(rowIndex) {\r\n var _this13 = this;\r\n if (\"cell\" === this.option(\"editing.mode\") && this.isEditing()) {\r\n var isNewRow = this._dataController.items()[rowIndex].isNewRow;\r\n var rowKey = this._dataController.getKeyByRowIndex(rowIndex);\r\n this.closeEditCell(null, isNewRow).always(function() {\r\n rowIndex = _this13._dataController.getRowIndexByKey(rowKey);\r\n _this13._checkAndDeleteRow(rowIndex)\r\n })\r\n } else {\r\n this._checkAndDeleteRow(rowIndex)\r\n }\r\n },\r\n _checkAndDeleteRow: function(rowIndex) {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\");\r\n var editingTexts = editingOptions && editingOptions.texts;\r\n var isBatchMode = editingOptions && editingOptions.mode === EDIT_MODE_BATCH;\r\n var confirmDelete = editingOptions && editingOptions.confirmDelete;\r\n var confirmDeleteMessage = editingTexts && editingTexts.confirmDeleteMessage;\r\n var item = that._dataController.items()[rowIndex];\r\n var allowDeleting = isBatchMode || !that.isEditing() || item.isNewRow;\r\n if (item && allowDeleting) {\r\n if (isBatchMode || !confirmDelete || !confirmDeleteMessage) {\r\n that._deleteRowCore(rowIndex)\r\n } else {\r\n var confirmDeleteTitle = editingTexts && editingTexts.confirmDeleteTitle;\r\n var showDialogTitle = (0, _type.isDefined)(confirmDeleteTitle) && confirmDeleteTitle.length > 0;\r\n (0, _dialog.confirm)(confirmDeleteMessage, confirmDeleteTitle, showDialogTitle).done(function(confirmResult) {\r\n if (confirmResult) {\r\n that._deleteRowCore(rowIndex)\r\n }\r\n })\r\n }\r\n }\r\n },\r\n _deleteRowCore: function(rowIndex) {\r\n var dataController = this._dataController;\r\n var item = dataController.items()[rowIndex];\r\n var key = item && item.key;\r\n var oldEditRowIndex = this._getVisibleEditRowIndex();\r\n var isBatchMode = this.option(\"editing.mode\") === EDIT_MODE_BATCH;\r\n this.refresh();\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n if (changes[editIndex].type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n this._removeChange(editIndex)\r\n } else {\r\n this._addChange({\r\n key: key,\r\n type: DATA_EDIT_DATA_REMOVE_TYPE\r\n })\r\n }\r\n } else {\r\n this._addChange({\r\n key: key,\r\n oldData: item.data,\r\n type: DATA_EDIT_DATA_REMOVE_TYPE\r\n })\r\n }\r\n if (isBatchMode) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, rowIndex]\r\n });\r\n return (new _deferred.Deferred).resolve()\r\n }\r\n return this.saveEditData()\r\n },\r\n undeleteRow: function(rowIndex) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var item = dataController.items()[rowIndex];\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n var key = item && item.key;\r\n var changes = this.getChanges();\r\n if (item) {\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n var data = changes[editIndex].data;\r\n if ((0, _type.isEmptyObject)(data)) {\r\n that._removeChange(editIndex)\r\n } else {\r\n that._addChange({\r\n key: key,\r\n type: DATA_EDIT_DATA_UPDATE_TYPE\r\n })\r\n }\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, rowIndex]\r\n })\r\n }\r\n }\r\n },\r\n _fireOnSaving: function() {\r\n var _this14 = this;\r\n var onSavingParams = {\r\n cancel: false,\r\n promise: null,\r\n changes: _toConsumableArray(this.getChanges())\r\n };\r\n this.executeAction(\"onSaving\", onSavingParams);\r\n var d = new _deferred.Deferred;\r\n (0, _deferred.when)((0, _deferred.fromPromise)(onSavingParams.promise)).done(function() {\r\n d.resolve(onSavingParams)\r\n }).fail(function(arg) {\r\n createFailureHandler(d);\r\n _this14._fireDataErrorOccurred(arg);\r\n d.resolve({\r\n cancel: true\r\n })\r\n });\r\n return d\r\n },\r\n _executeEditingAction: function(actionName, params, func) {\r\n if (this.component._disposed) {\r\n return null\r\n }\r\n var deferred = new _deferred.Deferred;\r\n this.executeAction(actionName, params);\r\n (0, _deferred.when)((0, _deferred.fromPromise)(params.cancel)).done(function(cancel) {\r\n if (cancel) {\r\n setTimeout(function() {\r\n deferred.resolve(\"cancel\")\r\n })\r\n } else {\r\n func(params).done(deferred.resolve).fail(createFailureHandler(deferred))\r\n }\r\n }).fail(createFailureHandler(deferred));\r\n return deferred\r\n },\r\n _processChanges: function(deferreds, results, dataChanges, changes) {\r\n var _this15 = this;\r\n var store = this._dataController.store();\r\n (0, _iterator.each)(changes, function(index, change) {\r\n var oldData = _this15._getOldData(change.key);\r\n var data = change.data,\r\n type = change.type;\r\n var changeCopy = _objectSpread({}, change);\r\n var deferred;\r\n var params;\r\n if (_this15._beforeSaveEditData(change, index)) {\r\n return\r\n }\r\n switch (type) {\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n params = {\r\n data: oldData,\r\n key: change.key,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowRemoving\", params, function() {\r\n return store.remove(change.key).done(function(key) {\r\n dataChanges.push({\r\n type: \"remove\",\r\n key: key\r\n })\r\n })\r\n });\r\n break;\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n params = {\r\n data: data,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowInserting\", params, function() {\r\n return store.insert(params.data).done(function(data, key) {\r\n if ((0, _type.isDefined)(key)) {\r\n changeCopy.key = key\r\n }\r\n if (data && (0, _type.isObject)(data) && data !== params.data) {\r\n changeCopy.data = data\r\n }\r\n dataChanges.push({\r\n type: \"insert\",\r\n data: data,\r\n index: 0\r\n })\r\n })\r\n });\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n params = {\r\n newData: data,\r\n oldData: oldData,\r\n key: change.key,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowUpdating\", params, function() {\r\n return store.update(change.key, params.newData).done(function(data, key) {\r\n if (data && (0, _type.isObject)(data) && data !== params.newData) {\r\n changeCopy.data = data\r\n }\r\n dataChanges.push({\r\n type: \"update\",\r\n key: key,\r\n data: data\r\n })\r\n })\r\n })\r\n }\r\n changes[index] = changeCopy;\r\n if (deferred) {\r\n var doneDeferred = new _deferred.Deferred;\r\n deferred.always(function(data) {\r\n results.push({\r\n key: change.key,\r\n result: data\r\n })\r\n }).always(doneDeferred.resolve);\r\n deferreds.push(doneDeferred.promise())\r\n }\r\n })\r\n },\r\n _processSaveEditDataResult: function(results) {\r\n var that = this;\r\n var hasSavedData = false;\r\n var editMode = _getEditMode(that);\r\n var changes = _toConsumableArray(this.getChanges());\r\n var changesLength = changes.length;\r\n for (var i = 0; i < results.length; i++) {\r\n var arg = results[i].result;\r\n var cancel = \"cancel\" === arg;\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(results[i].key, changes);\r\n var change = changes[editIndex];\r\n var isError = arg && arg instanceof Error;\r\n if (isError) {\r\n if (change) {\r\n this._addInternalData({\r\n key: change.key,\r\n error: arg\r\n })\r\n }\r\n that._fireDataErrorOccurred(arg);\r\n if (editMode !== EDIT_MODE_BATCH) {\r\n if ((null === change || void 0 === change ? void 0 : change.type) === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n if (editIndex >= 0) {\r\n changes.splice(editIndex, 1)\r\n }\r\n }\r\n break\r\n }\r\n } else {\r\n if (!cancel || !change || editMode !== EDIT_MODE_BATCH && change.type === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n if (editIndex >= 0) {\r\n changes.splice(editIndex, 1)\r\n }\r\n hasSavedData = !cancel\r\n }\r\n }\r\n }\r\n if (changes.length < changesLength) {\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes)\r\n }\r\n return hasSavedData\r\n },\r\n _fireSaveEditDataEvents: function(changes) {\r\n var that = this;\r\n (0, _iterator.each)(changes, function(_, _ref2) {\r\n var data = _ref2.data,\r\n key = _ref2.key,\r\n type = _ref2.type;\r\n var internalData = that._addInternalData({\r\n key: key\r\n });\r\n var params = {\r\n key: key,\r\n data: data\r\n };\r\n if (internalData.error) {\r\n params.error = internalData.error\r\n }\r\n switch (type) {\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n that.executeAction(\"onRowRemoved\", (0, _extend.extend)({}, params, {\r\n data: internalData.oldData\r\n }));\r\n break;\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n that.executeAction(\"onRowInserted\", params);\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n that.executeAction(\"onRowUpdated\", params)\r\n }\r\n });\r\n this.executeAction(\"onSaved\", {\r\n changes: changes\r\n })\r\n },\r\n saveEditData: function() {\r\n var _this16 = this;\r\n var deferred = new _deferred.Deferred;\r\n this.waitForDeferredOperations().done(function() {\r\n if (_this16.isSaving()) {\r\n _this16._resolveAfterSave(deferred);\r\n return\r\n }(0, _deferred.when)(_this16._beforeSaveEditData()).done(function(cancel) {\r\n if (cancel) {\r\n _this16._resolveAfterSave(deferred, {\r\n cancel: cancel\r\n });\r\n return\r\n }\r\n _this16._saving = true;\r\n _this16._saveEditDataInner().always(function() {\r\n _this16._saving = false\r\n }).done(deferred.resolve).fail(deferred.reject)\r\n }).fail(deferred.reject)\r\n }).fail(deferred.reject);\r\n return deferred.promise()\r\n },\r\n _resolveAfterSave: function(deferred) {\r\n var _ref3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\r\n cancel = _ref3.cancel,\r\n error = _ref3.error;\r\n (0, _deferred.when)(this._afterSaveEditData(cancel)).done(function() {\r\n deferred.resolve(error)\r\n }).fail(deferred.reject)\r\n },\r\n _saveEditDataInner: function() {\r\n var _this17 = this;\r\n var results = [];\r\n var deferreds = [];\r\n var dataChanges = [];\r\n var dataController = this._dataController;\r\n var dataSource = dataController.dataSource();\r\n var result = new _deferred.Deferred;\r\n (0, _deferred.when)(this._fireOnSaving()).done(function(_ref4) {\r\n var cancel = _ref4.cancel,\r\n changes = _ref4.changes;\r\n if (cancel) {\r\n return result.resolve().promise()\r\n }\r\n _this17._processChanges(deferreds, results, dataChanges, changes);\r\n if (deferreds.length) {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.beginLoading();\r\n _deferred.when.apply(void 0, deferreds).done(function() {\r\n if (_this17._processSaveEditDataResult(results)) {\r\n _this17._endSaving(dataChanges, changes, result)\r\n } else {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n result.resolve()\r\n }\r\n }).fail(function(error) {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n result.resolve(error)\r\n });\r\n return result.always(function() {\r\n _this17._focusEditingCell()\r\n }).promise()\r\n }\r\n _this17._cancelSaving(result)\r\n }).fail(result.reject);\r\n return result.promise()\r\n },\r\n _resetModifiedClassCells: function(changes) {\r\n var _this18 = this;\r\n var editMode = _getEditMode(this);\r\n if (editMode === EDIT_MODE_BATCH) {\r\n var columnsCount = this._columnsController.getVisibleColumns().length;\r\n changes.forEach(function(_ref5) {\r\n var key = _ref5.key;\r\n var rowIndex = _this18._dataController.getRowIndexByKey(key);\r\n if (rowIndex !== -1) {\r\n for (var columnIndex = 0; columnIndex < columnsCount; columnIndex++) {\r\n _this18._rowsView._getCellElement(rowIndex, columnIndex).removeClass(CELL_MODIFIED)\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _endSaving: function(dataChanges, changes, deferred) {\r\n var _changes$;\r\n var editMode = _getEditMode(this);\r\n var dataSource = this._dataController.dataSource();\r\n if (editMode !== EDIT_MODE_CELL) {\r\n this._resetModifiedClassCells(changes);\r\n this._resetEditIndices()\r\n } else {\r\n if (\"update\" !== (null === (_changes$ = changes[0]) || void 0 === _changes$ ? void 0 : _changes$.type)) {\r\n this._resetEditIndices()\r\n }\r\n }\r\n if (editMode === EDIT_MODE_POPUP && this._editPopup) {\r\n this._editPopup.hide()\r\n }\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n this._refreshDataAfterSave(dataChanges, changes, deferred)\r\n },\r\n _cancelSaving: function(result) {\r\n var editMode = _getEditMode(this);\r\n var dataController = this._dataController;\r\n if (_isRowEditMode(this)) {\r\n if (!this.hasChanges()) {\r\n this._cancelEditDataCore()\r\n }\r\n } else {\r\n if (this.isCellOrBatchEditMode()) {\r\n if (editMode !== EDIT_MODE_CELL) {\r\n this._resetEditIndices()\r\n }\r\n dataController.updateItems()\r\n } else {\r\n this._focusEditingCell()\r\n }\r\n }\r\n this.executeAction(\"onSaved\", {\r\n changes: []\r\n });\r\n this._resolveAfterSave(result)\r\n },\r\n _refreshDataAfterSave: function(dataChanges, changes, deferred) {\r\n var _this19 = this;\r\n var dataController = this._dataController;\r\n var refreshMode = this.option(\"editing.refreshMode\");\r\n var isFullRefresh = \"reshape\" !== refreshMode && \"repaint\" !== refreshMode;\r\n if (!isFullRefresh) {\r\n dataController.push(dataChanges)\r\n }(0, _deferred.when)(dataController.refresh({\r\n selection: isFullRefresh,\r\n reload: isFullRefresh,\r\n load: \"reshape\" === refreshMode,\r\n changesOnly: this.option(\"repaintChangesOnly\")\r\n })).always(function() {\r\n _this19._fireSaveEditDataEvents(changes)\r\n }).done(function() {\r\n _this19._resolveAfterSave(deferred)\r\n }).fail(function(error) {\r\n _this19._resolveAfterSave(deferred, {\r\n error: error\r\n })\r\n })\r\n },\r\n isSaving: function() {\r\n return this._saving\r\n },\r\n _updateEditColumn: function() {\r\n var that = this;\r\n var isEditColumnVisible = that._isEditColumnVisible();\r\n var useIcons = that.option(\"editing.useIcons\");\r\n var cssClass = COMMAND_EDIT_CLASS + (useIcons ? \" \" + COMMAND_EDIT_WITH_ICONS_CLASS : \"\");\r\n that._columnsController.addCommandColumn({\r\n type: \"buttons\",\r\n command: \"edit\",\r\n visible: isEditColumnVisible,\r\n cssClass: cssClass,\r\n width: \"auto\",\r\n alignment: \"center\",\r\n cellTemplate: that._getEditCommandCellTemplate(),\r\n fixedPosition: \"right\"\r\n });\r\n that._columnsController.columnOption(\"command:edit\", {\r\n visible: isEditColumnVisible,\r\n cssClass: cssClass\r\n })\r\n },\r\n _isEditColumnVisible: function() {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\");\r\n if (editingOptions) {\r\n var editMode = _getEditMode(that);\r\n var isVisibleWithCurrentEditMode = false;\r\n switch (editMode) {\r\n case EDIT_MODE_ROW:\r\n isVisibleWithCurrentEditMode = editingOptions.allowUpdating || editingOptions.allowAdding;\r\n break;\r\n case EDIT_MODE_FORM:\r\n case EDIT_MODE_POPUP:\r\n isVisibleWithCurrentEditMode = editingOptions.allowUpdating\r\n }\r\n return editingOptions.allowDeleting || isVisibleWithCurrentEditMode\r\n }\r\n },\r\n _updateEditButtons: function() {\r\n var that = this;\r\n var headerPanel = that.getView(\"headerPanel\");\r\n var hasChanges = that.hasChanges();\r\n if (headerPanel) {\r\n headerPanel.setToolbarItemDisabled(\"saveButton\", !hasChanges);\r\n headerPanel.setToolbarItemDisabled(\"revertButton\", !hasChanges)\r\n }\r\n },\r\n _applyModified: function($element) {\r\n $element && $element.addClass(CELL_MODIFIED)\r\n },\r\n _beforeCloseEditCellInBatchMode: function() {},\r\n cancelEditData: function() {\r\n var changes = this.getChanges();\r\n var params = {\r\n cancel: false,\r\n changes: changes\r\n };\r\n this.executeAction(\"onEditCanceling\", params);\r\n if (!params.cancel) {\r\n this._cancelEditDataCore();\r\n this.executeAction(\"onEditCanceled\", {\r\n changes: changes\r\n })\r\n }\r\n },\r\n _cancelEditDataCore: function() {\r\n var editMode = _getEditMode(this);\r\n var rowIndex = this._getVisibleEditRowIndex();\r\n var dataController = this._dataController;\r\n this._beforeCancelEditData();\r\n this.init();\r\n this.resetChanges();\r\n this._resetEditColumnName();\r\n this._resetEditRowKey();\r\n if (ROW_BASED_MODES.indexOf(editMode) !== -1 && rowIndex >= 0) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [rowIndex, rowIndex + 1]\r\n })\r\n } else {\r\n dataController.updateItems({\r\n repaintChangesOnly: this.option(\"repaintChangesOnly\")\r\n })\r\n }\r\n if (editMode === EDIT_MODE_POPUP) {\r\n this._hideEditPopup()\r\n }\r\n },\r\n _hideEditPopup: function() {\r\n this._editPopup && this._editPopup.option(\"visible\", false)\r\n },\r\n hasEditData: function() {\r\n return this.hasChanges()\r\n },\r\n closeEditCell: function(isError, withoutSaveEditData) {\r\n var _this20 = this;\r\n var that = this;\r\n var result = (0, _deferred.when)();\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n if (!_isRowEditMode(that)) {\r\n var deferred = new _deferred.Deferred;\r\n result = new _deferred.Deferred;\r\n this.executeOperation(deferred, function() {\r\n _this20._closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData).always(result.resolve)\r\n })\r\n }\r\n return result.promise()\r\n },\r\n _closeEditCellCore: function(isError, oldEditRowIndex, withoutSaveEditData) {\r\n var _this21 = this;\r\n var editMode = _getEditMode(this);\r\n var dataController = this._dataController;\r\n var deferred = new _deferred.Deferred;\r\n var promise = deferred.promise();\r\n if (editMode === EDIT_MODE_CELL && this.hasChanges()) {\r\n if (!withoutSaveEditData) {\r\n this.saveEditData().done(function(error) {\r\n if (!_this21.hasChanges()) {\r\n _this21.closeEditCell(!!error).always(deferred.resolve);\r\n return\r\n }\r\n deferred.resolve()\r\n });\r\n return promise\r\n }\r\n } else {\r\n this._resetEditRowKey();\r\n this._resetEditColumnName();\r\n if (oldEditRowIndex >= 0) {\r\n var rowIndices = [oldEditRowIndex];\r\n this._beforeCloseEditCellInBatchMode(rowIndices);\r\n if (!isError) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndices\r\n })\r\n }\r\n }\r\n }\r\n deferred.resolve();\r\n return promise\r\n },\r\n update: function(changeType) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n if (dataController && that._pageIndex !== dataController.pageIndex()) {\r\n if (\"refresh\" === changeType) {\r\n that.refresh(true)\r\n }\r\n that._pageIndex = dataController.pageIndex()\r\n }\r\n that._updateEditButtons()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row, skipCurrentRow) {\r\n return skipCurrentRow ? [] : [row.rowIndex]\r\n },\r\n addDeferred: function(deferred) {\r\n var _this22 = this;\r\n if (this._deferreds.indexOf(deferred) < 0) {\r\n this._deferreds.push(deferred);\r\n deferred.always(function() {\r\n var index = _this22._deferreds.indexOf(deferred);\r\n if (index >= 0) {\r\n _this22._deferreds.splice(index, 1)\r\n }\r\n })\r\n }\r\n },\r\n _prepareChange: function(options, value, text) {\r\n var _options$row;\r\n var that = this;\r\n var newData = {};\r\n var oldData = null === (_options$row = options.row) || void 0 === _options$row ? void 0 : _options$row.data;\r\n var rowKey = options.key;\r\n var $cellElement = (0, _renderer.default)(options.cellElement);\r\n var editMode = _getEditMode(that);\r\n var deferred = new _deferred.Deferred;\r\n if (void 0 !== rowKey) {\r\n if (editMode === EDIT_MODE_BATCH) {\r\n that._applyModified($cellElement, options)\r\n }\r\n options.value = value;\r\n var setCellValueResult = (0, _deferred.fromPromise)(options.column.setCellValue(newData, value, (0, _extend.extend)(true, {}, oldData), text));\r\n setCellValueResult.done(function() {\r\n deferred.resolve({\r\n data: newData,\r\n key: rowKey,\r\n oldData: oldData,\r\n type: DATA_EDIT_DATA_UPDATE_TYPE\r\n })\r\n }).fail(createFailureHandler(deferred)).fail(function(arg) {\r\n return that._fireDataErrorOccurred(arg)\r\n });\r\n if ((0, _type.isDefined)(text) && options.column.displayValueMap) {\r\n options.column.displayValueMap[value] = text\r\n }\r\n that._updateRowValues(options);\r\n that.addDeferred(deferred)\r\n }\r\n return deferred\r\n },\r\n _updateRowValues: function(options) {\r\n if (options.values) {\r\n var dataController = this._dataController;\r\n var rowIndex = dataController.getRowIndexByKey(options.key);\r\n var row = dataController.getVisibleRows()[rowIndex];\r\n if (row) {\r\n options.values = row.values\r\n }\r\n options.values[options.columnIndex] = options.value\r\n }\r\n },\r\n updateFieldValue: function(options, value, text, forceUpdateRow) {\r\n var _this23 = this;\r\n var rowKey = options.key;\r\n var deferred = new _deferred.Deferred;\r\n if (void 0 === rowKey) {\r\n this._dataController.fireError(\"E1043\")\r\n }\r\n if (options.column.setCellValue) {\r\n this._prepareChange(options, value, text).done(function(params) {\r\n (0, _deferred.when)(_this23._applyChange(options, params, forceUpdateRow)).always(function() {\r\n deferred.resolve()\r\n })\r\n })\r\n } else {\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _focusPreviousEditingCellIfNeed: function(options) {\r\n var that = this;\r\n if (that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex)) {\r\n that._focusEditingCell();\r\n that._updateEditRow(options.row, true);\r\n return true\r\n }\r\n },\r\n _needUpdateRow: function(column) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n if (!column) {\r\n column = this._getEditColumn()\r\n }\r\n var isCustomSetCellValue = column && column.setCellValue !== column.defaultSetCellValue;\r\n var isCustomCalculateCellValue = visibleColumns.some(function(visibleColumn) {\r\n return visibleColumn.calculateCellValue !== visibleColumn.defaultCalculateCellValue\r\n });\r\n return isCustomSetCellValue || isCustomCalculateCellValue\r\n },\r\n _applyChange: function(options, params, forceUpdateRow) {\r\n var that = this;\r\n var editMode = _getEditMode(that);\r\n var isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;\r\n var showEditorAlways = options.column.showEditorAlways;\r\n var isUpdateInCellMode = editMode === EDIT_MODE_CELL && options.row && !options.row.isNewRow;\r\n var focusPreviousEditingCell = showEditorAlways && !forceUpdateRow && isUpdateInCellMode && that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex);\r\n if (focusPreviousEditingCell) {\r\n that._focusEditingCell();\r\n that._updateEditRow(options.row, true, isCustomSetCellValue);\r\n return\r\n }\r\n that._addChange(params, options.row);\r\n that._updateEditButtons();\r\n if (showEditorAlways && !forceUpdateRow) {\r\n if (isUpdateInCellMode) {\r\n that._setEditRowKey(options.row.key, true);\r\n that._setEditColumnNameByIndex(options.columnIndex, true);\r\n return that.saveEditData()\r\n } else {\r\n if (editMode === EDIT_MODE_BATCH) {\r\n forceUpdateRow = that._needUpdateRow(options.column)\r\n }\r\n }\r\n }\r\n var row = options.row;\r\n if (row) {\r\n if (forceUpdateRow || isCustomSetCellValue) {\r\n that._updateEditRow(row, forceUpdateRow, isCustomSetCellValue)\r\n } else {\r\n if (row.update) {\r\n row.update()\r\n }\r\n }\r\n }\r\n },\r\n _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n var that = this;\r\n var editForm = that._editForm;\r\n var editMode = _getEditMode(that);\r\n if (editMode === EDIT_MODE_POPUP) {\r\n if (that.option(\"repaintChangesOnly\")) {\r\n row.update && row.update(row)\r\n } else {\r\n if (editForm) {\r\n that._updateEditFormDeferred = (new _deferred.Deferred).done(function() {\r\n return editForm.repaint()\r\n });\r\n if (!that._updateLockCount) {\r\n that._updateEditFormDeferred.resolve()\r\n }\r\n }\r\n }\r\n } else {\r\n that._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: that._getRowIndicesForCascadeUpdating(row, skipCurrentRow)\r\n })\r\n }\r\n },\r\n _endUpdateCore: function() {\r\n this._updateEditFormDeferred && this._updateEditFormDeferred.resolve()\r\n },\r\n _updateEditRow: function(row, forceUpdateRow, isCustomSetCellValue) {\r\n var that = this;\r\n if (forceUpdateRow || !_isRowEditMode(that)) {\r\n that._updateEditRowCore(row, !forceUpdateRow, isCustomSetCellValue);\r\n if (!forceUpdateRow) {\r\n that._focusEditingCell()\r\n }\r\n } else {\r\n var deferred = new _deferred.Deferred;\r\n that.addDeferred(deferred);\r\n setTimeout(function() {\r\n var $focusedElement = (0, _renderer.default)(_dom_adapter.default.getActiveElement());\r\n var columnIndex = that._rowsView.getCellIndex($focusedElement, row.rowIndex);\r\n var focusedElement = $focusedElement.get(0);\r\n var selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n that._updateEditRowCore(row, false, isCustomSetCellValue);\r\n if (columnIndex >= 0) {\r\n var $focusedItem = that._rowsView._getCellElement(row.rowIndex, columnIndex);\r\n that._delayedInputFocus($focusedItem, function() {\r\n setTimeout(function() {\r\n focusedElement = _dom_adapter.default.getActiveElement();\r\n if (selectionRange.selectionStart >= 0) {\r\n _uiGrid_core2.default.setSelectionRange(focusedElement, selectionRange)\r\n }\r\n })\r\n })\r\n }\r\n deferred.resolve()\r\n })\r\n }\r\n },\r\n _addChange: function(options, row) {\r\n var changes = _toConsumableArray(this.getChanges());\r\n var index = _uiGrid_core2.default.getIndexByKey(options.key, changes);\r\n if (index < 0) {\r\n index = changes.length;\r\n this._addInternalData({\r\n key: options.key,\r\n oldData: options.oldData\r\n });\r\n delete options.oldData;\r\n changes.push(options)\r\n }\r\n var change = _objectSpread({}, changes[index]);\r\n if (change) {\r\n if (options.data) {\r\n change.data = (0, _array_utils.createObjectWithChanges)(change.data, options.data)\r\n }\r\n if ((!change.type || !options.data) && options.type) {\r\n change.type = options.type\r\n }\r\n if (row) {\r\n row.oldData = this._getOldData(row.key);\r\n row.data = (0, _array_utils.createObjectWithChanges)(row.data, options.data)\r\n }\r\n }\r\n changes[index] = change;\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes);\r\n return index\r\n },\r\n _getFormEditItemTemplate: function(cellOptions, column) {\r\n return column.editCellTemplate || getDefaultEditorTemplate(this)\r\n },\r\n renderFormEditTemplate: function(detailCellOptions, item, form, container, isReadOnly) {\r\n var that = this;\r\n var $container = (0, _renderer.default)(container);\r\n var column = item.column;\r\n var editorType = getEditorType(item);\r\n var rowData = null === detailCellOptions || void 0 === detailCellOptions ? void 0 : detailCellOptions.row.data;\r\n var cellOptions = (0, _extend.extend)({}, detailCellOptions, {\r\n data: rowData,\r\n cellElement: null,\r\n isOnForm: true,\r\n item: item,\r\n column: (0, _extend.extend)({}, column, {\r\n editorType: editorType,\r\n editorOptions: item.editorOptions\r\n }),\r\n id: form.getItemID(item.name || item.dataField),\r\n columnIndex: column.index,\r\n setValue: !isReadOnly && column.allowEditing && function(value) {\r\n that.updateFieldValue(cellOptions, value)\r\n }\r\n });\r\n cellOptions.value = column.calculateCellValue(rowData);\r\n var template = that._getFormEditItemTemplate.bind(that)(cellOptions, column);\r\n that._rowsView.renderTemplate($container, template, cellOptions, !!$container.closest((0, _window.getWindow)().document).length).done(function() {\r\n that._rowsView._updateCell($container, cellOptions)\r\n });\r\n return cellOptions\r\n },\r\n getFormEditorTemplate: function(cellOptions, item) {\r\n var that = this;\r\n var column = this.component.columnOption(item.dataField);\r\n return function(options, container) {\r\n var $container = (0, _renderer.default)(container);\r\n cellOptions.row.watch && cellOptions.row.watch(function() {\r\n return column.selector(cellOptions.row.data)\r\n }, function() {\r\n var _validator;\r\n var $editorElement = $container.find(\".dx-widget\").first();\r\n var validator = $editorElement.data(\"dxValidator\");\r\n var validatorOptions = null === (_validator = validator) || void 0 === _validator ? void 0 : _validator.option();\r\n $container.contents().remove();\r\n cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container);\r\n $editorElement = $container.find(\".dx-widget\").first();\r\n validator = $editorElement.data(\"dxValidator\");\r\n if (validatorOptions && !validator) {\r\n $editorElement.dxValidator({\r\n validationRules: validatorOptions.validationRules,\r\n validationGroup: validatorOptions.validationGroup,\r\n dataGetter: validatorOptions.dataGetter\r\n })\r\n }\r\n });\r\n cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container)\r\n }\r\n },\r\n getEditFormOptions: function(detailOptions) {\r\n var userCustomizeItem = this.option(\"editing.form.customizeItem\");\r\n var editFormItemClass = this.addWidgetPrefix(EDIT_FORM_ITEM_CLASS);\r\n var items = this.option(\"editing.form.items\");\r\n var isCustomEditorType = {};\r\n var that = this;\r\n if (!items) {\r\n var columns = this.getController(\"columns\").getColumns();\r\n items = [];\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (!column.isBand && !column.type) {\r\n items.push({\r\n column: column,\r\n name: column.name,\r\n dataField: column.dataField\r\n })\r\n }\r\n })\r\n } else {\r\n forEachFormItems(items, function(item) {\r\n var itemId = (null === item || void 0 === item ? void 0 : item.name) || (null === item || void 0 === item ? void 0 : item.dataField);\r\n if (itemId) {\r\n isCustomEditorType[itemId] = !!item.editorType\r\n }\r\n })\r\n }\r\n return {\r\n items: items,\r\n formID: \"dx-\" + new _guid.default,\r\n customizeItem: function(item) {\r\n var column;\r\n var itemId = item.name || item.dataField;\r\n if (item.column || itemId) {\r\n column = item.column || that._columnsController.columnOption(item.name ? \"name:\" + item.name : \"dataField:\" + item.dataField)\r\n }\r\n if (column) {\r\n item.label = item.label || {};\r\n item.label.text = item.label.text || column.caption;\r\n item.template = item.template || that.getFormEditorTemplate(detailOptions, item);\r\n item.column = column;\r\n item.isCustomEditorType = isCustomEditorType[itemId];\r\n if (column.formItem) {\r\n (0, _extend.extend)(item, column.formItem)\r\n }\r\n if (void 0 === item.isRequired && column.validationRules) {\r\n item.isRequired = column.validationRules.some(function(rule) {\r\n return \"required\" === rule.type\r\n });\r\n item.validationRules = []\r\n }\r\n var itemVisible = (0, _type.isDefined)(item.visible) ? item.visible : true;\r\n if (!that._firstFormItem && itemVisible) {\r\n that._firstFormItem = item\r\n }\r\n }\r\n userCustomizeItem && userCustomizeItem.call(this, item);\r\n item.cssClass = (0, _type.isString)(item.cssClass) ? item.cssClass + \" \" + editFormItemClass : editFormItemClass\r\n }\r\n }\r\n },\r\n getEditFormTemplate: function() {\r\n var that = this;\r\n return function($container, detailOptions, renderFormOnly) {\r\n var editFormOptions = that.option(\"editing.form\");\r\n var baseEditFormOptions = that.getEditFormOptions(detailOptions);\r\n that._firstFormItem = void 0;\r\n that._editForm = that._createComponent((0, _renderer.default)(\"
\").appendTo($container), _form.default, (0, _extend.extend)({}, editFormOptions, baseEditFormOptions));\r\n if (!renderFormOnly) {\r\n var $buttonsContainer = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FORM_BUTTONS_CONTAINER_CLASS)).appendTo($container);\r\n that._createComponent((0, _renderer.default)(\"
\").appendTo($buttonsContainer), _button.default, that._getSaveButtonConfig());\r\n that._createComponent((0, _renderer.default)(\"
\").appendTo($buttonsContainer), _button.default, that._getCancelButtonConfig())\r\n }\r\n that._editForm.on(\"contentReady\", function() {\r\n that._editPopup && that._editPopup.repaint()\r\n })\r\n }\r\n },\r\n getColumnTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var rowIndex = options.row && options.row.rowIndex;\r\n var template;\r\n var isRowMode = _isRowEditMode(that);\r\n var isRowEditing = that.isEditRow(rowIndex);\r\n var isCellEditing = that.isEditCell(rowIndex, options.columnIndex);\r\n var editingStartOptions;\r\n if ((column.showEditorAlways || column.setCellValue && (isRowEditing && column.allowEditing || isCellEditing)) && (\"data\" === options.rowType || \"detailAdaptive\" === options.rowType) && !column.command) {\r\n var allowUpdating = that.allowUpdating(options);\r\n if (((allowUpdating || isRowEditing) && column.allowEditing || isCellEditing) && (isRowMode && isRowEditing || !isRowMode)) {\r\n if (column.showEditorAlways && !isRowMode) {\r\n editingStartOptions = {\r\n cancel: false,\r\n key: options.row.isNewRow ? void 0 : options.row.key,\r\n data: options.row.data,\r\n column: column\r\n };\r\n that._isEditingStart(editingStartOptions)\r\n }\r\n if (!editingStartOptions || !editingStartOptions.cancel) {\r\n options.setValue = function(value, text) {\r\n that.updateFieldValue(options, value, text)\r\n }\r\n }\r\n }\r\n template = column.editCellTemplate || getDefaultEditorTemplate(that)\r\n } else {\r\n if (\"detail\" === column.command && \"detail\" === options.rowType && isRowEditing) {\r\n template = that.getEditFormTemplate(options)\r\n }\r\n }\r\n return template\r\n },\r\n _createButton: function($container, button, options) {\r\n var that = this;\r\n var icon = EDIT_ICON_CLASS[button.name];\r\n var useIcons = that.option(\"editing.useIcons\");\r\n var $button = (0, _renderer.default)(\"\").attr(\"href\", \"#\").addClass(LINK_CLASS).addClass(button.cssClass);\r\n if (button.template) {\r\n that._rowsView.renderTemplate($container, button.template, options, true)\r\n } else {\r\n if (useIcons && icon || button.icon) {\r\n icon = button.icon || icon;\r\n var iconType = iconUtils.getImageSourceType(icon);\r\n if (\"image\" === iconType || \"svg\" === iconType) {\r\n $button = iconUtils.getImageContainer(icon).addClass(button.cssClass)\r\n } else {\r\n $button.addClass(\"dx-icon\" + (\"dxIcon\" === iconType ? \"-\" : \" \") + icon).attr(\"title\", button.text)\r\n }\r\n $button.addClass(\"dx-link-icon\");\r\n $container.addClass(COMMAND_EDIT_WITH_ICONS_CLASS);\r\n var localizationName = this.getButtonLocalizationNames()[button.name];\r\n localizationName && $button.attr(\"aria-label\", _message.default.format(localizationName))\r\n } else {\r\n $button.text(button.text)\r\n }\r\n if ((0, _type.isDefined)(button.hint)) {\r\n $button.attr(\"title\", button.hint)\r\n }\r\n _events_engine.default.on($button, (0, _index.addNamespace)(\"click\", EDITING_NAMESPACE), that.createAction(function(e) {\r\n button.onClick.call(button, (0, _extend.extend)({}, e, {\r\n row: options.row,\r\n column: options.column\r\n }));\r\n e.event.preventDefault();\r\n e.event.stopPropagation()\r\n }));\r\n $container.append($button, \" \")\r\n }\r\n },\r\n getButtonLocalizationNames: function() {\r\n return {\r\n edit: \"dxDataGrid-editingEditRow\",\r\n save: \"dxDataGrid-editingSaveRowChanges\",\r\n \"delete\": \"dxDataGrid-editingDeleteRow\",\r\n undelete: \"dxDataGrid-editingUndeleteRow\",\r\n cancel: \"dxDataGrid-editingCancelRowChanges\"\r\n }\r\n },\r\n prepareEditButtons: function(headerPanel) {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\") || {};\r\n var editingTexts = that.option(\"editing.texts\") || {};\r\n var titleButtonTextByClassNames = {\r\n revert: editingTexts.cancelAllChanges,\r\n save: editingTexts.saveAllChanges,\r\n addRow: editingTexts.addRow\r\n };\r\n var classNameButtonByNames = {\r\n revert: \"cancel\",\r\n save: \"save\",\r\n addRow: \"addrow\"\r\n };\r\n var buttonItems = [];\r\n var prepareButtonItem = function(name, methodName, sortIndex) {\r\n var className = classNameButtonByNames[name];\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(headerPanel._getToolbarButtonClass(EDIT_BUTTON_CLASS + \" \" + that.addWidgetPrefix(className) + \"-button\"))\r\n };\r\n var hintText = titleButtonTextByClassNames[name];\r\n var isButtonDisabled = (\"save\" === className || \"cancel\" === className) && !that.hasChanges();\r\n return {\r\n widget: \"dxButton\",\r\n options: {\r\n onInitialized: onInitialized,\r\n icon: \"edit-button-\" + className,\r\n disabled: isButtonDisabled,\r\n onClick: function() {\r\n setTimeout(function() {\r\n that[methodName]()\r\n })\r\n },\r\n text: hintText,\r\n hint: hintText\r\n },\r\n showText: \"inMenu\",\r\n name: name + \"Button\",\r\n location: \"after\",\r\n locateInMenu: \"auto\",\r\n sortIndex: sortIndex\r\n }\r\n };\r\n if (editingOptions.allowAdding) {\r\n buttonItems.push(prepareButtonItem(\"addRow\", \"addRow\", 20))\r\n }\r\n if ((editingOptions.allowUpdating || editingOptions.allowAdding || editingOptions.allowDeleting) && _getEditMode(that) === EDIT_MODE_BATCH) {\r\n buttonItems.push(prepareButtonItem(\"save\", \"saveEditData\", 21));\r\n buttonItems.push(prepareButtonItem(\"revert\", \"cancelEditData\", 22))\r\n }\r\n return buttonItems\r\n },\r\n highlightDataCell: function($cell, parameters) {\r\n var cellModified = this.isCellModified(parameters);\r\n cellModified && parameters.column.setCellValue && $cell.addClass(CELL_MODIFIED)\r\n },\r\n _afterInsertRow: function() {},\r\n _beforeSaveEditData: function(change) {\r\n if (change && !(0, _type.isDefined)(change.key) && (0, _type.isDefined)(change.type)) {\r\n return true\r\n }\r\n },\r\n _afterSaveEditData: function() {},\r\n _beforeCancelEditData: function() {},\r\n _allowEditAction: function(actionName, options) {\r\n var allowEditAction = this.option(\"editing.\" + actionName);\r\n if ((0, _type.isFunction)(allowEditAction)) {\r\n allowEditAction = allowEditAction({\r\n component: this.component,\r\n row: options.row\r\n })\r\n }\r\n return allowEditAction\r\n },\r\n allowUpdating: function(options, eventName) {\r\n var startEditAction = this.option(\"editing.startEditAction\") || DEFAULT_START_EDIT_ACTION;\r\n var needCallback = arguments.length > 1 ? startEditAction === eventName || \"down\" === eventName : true;\r\n return needCallback && this._allowEditAction(\"allowUpdating\", options)\r\n },\r\n allowDeleting: function(options) {\r\n return this._allowEditAction(\"allowDeleting\", options)\r\n },\r\n isCellModified: function(parameters) {\r\n var columnIndex = parameters.columnIndex;\r\n var modifiedValues = parameters.row && (parameters.row.isNewRow ? parameters.row.values : parameters.row.modifiedValues);\r\n return !!modifiedValues && void 0 !== modifiedValues[columnIndex]\r\n },\r\n isNewRowInEditMode: function() {\r\n var visibleEditRowIndex = this._getVisibleEditRowIndex();\r\n var rows = this._dataController.items();\r\n return visibleEditRowIndex >= 0 ? rows[visibleEditRowIndex].isNewRow : false\r\n }\r\n }\r\n}());\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n editing: {\r\n mode: \"row\",\r\n refreshMode: \"full\",\r\n allowAdding: false,\r\n allowUpdating: false,\r\n allowDeleting: false,\r\n useIcons: false,\r\n selectTextOnEditStart: false,\r\n confirmDelete: true,\r\n texts: {\r\n editRow: _message.default.format(\"dxDataGrid-editingEditRow\"),\r\n saveAllChanges: _message.default.format(\"dxDataGrid-editingSaveAllChanges\"),\r\n saveRowChanges: _message.default.format(\"dxDataGrid-editingSaveRowChanges\"),\r\n cancelAllChanges: _message.default.format(\"dxDataGrid-editingCancelAllChanges\"),\r\n cancelRowChanges: _message.default.format(\"dxDataGrid-editingCancelRowChanges\"),\r\n addRow: _message.default.format(\"dxDataGrid-editingAddRow\"),\r\n deleteRow: _message.default.format(\"dxDataGrid-editingDeleteRow\"),\r\n undeleteRow: _message.default.format(\"dxDataGrid-editingUndeleteRow\"),\r\n confirmDeleteMessage: _message.default.format(\"dxDataGrid-editingConfirmDeleteMessage\"),\r\n confirmDeleteTitle: \"\"\r\n },\r\n form: {\r\n colCount: 2\r\n },\r\n popup: {},\r\n startEditAction: \"click\",\r\n editRowKey: null,\r\n editColumnName: null,\r\n changes: []\r\n }\r\n }\r\n },\r\n controllers: {\r\n editing: EditingController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n init: function() {\r\n this._editingController = this.getController(\"editing\");\r\n this.callBase()\r\n },\r\n reload: function(full, repaintChangesOnly) {\r\n !repaintChangesOnly && this._editingController.refresh();\r\n return this.callBase.apply(this, arguments)\r\n },\r\n repaintRows: function() {\r\n if (this.getController(\"editing\").isSaving()) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateEditRow: function(items) {\r\n var editingController = this._editingController;\r\n var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n var editRowIndex = _uiGrid_core2.default.getIndexByKey(editRowKey, items);\r\n var editItem = items[editRowIndex];\r\n if (editItem) {\r\n editItem.isEditing = true;\r\n if (editingController.getEditMode() === EDIT_MODE_FORM) {\r\n editItem.rowType = \"detail\"\r\n }\r\n }\r\n },\r\n _updateItemsCore: function(change) {\r\n this.callBase(change);\r\n this._updateEditRow(this.items())\r\n },\r\n _applyChangeUpdate: function(change) {\r\n this._updateEditRow(change.items);\r\n this.callBase(change)\r\n },\r\n _applyChangesOnly: function(change) {\r\n this._updateEditRow(change.items);\r\n this.callBase(change)\r\n },\r\n _processItems: function(items, change) {\r\n items = this._editingController.processItems(items, change);\r\n return this.callBase(items, change)\r\n },\r\n _processDataItem: function(dataItem, options) {\r\n this._editingController.processDataItem(dataItem, options, this.generateDataValues);\r\n return this.callBase(dataItem, options)\r\n },\r\n _processItem: function(item, options) {\r\n item = this.callBase(item, options);\r\n if (item.isNewRow) {\r\n options.dataIndex--;\r\n delete item.dataIndex\r\n }\r\n return item\r\n },\r\n _getChangedColumnIndices: function(oldItem, newItem, rowIndex, isLiveUpdate) {\r\n var editingController = this.getController(\"editing\");\r\n var isRowEditMode = editingController.isRowEditMode();\r\n if (oldItem.isNewRow !== newItem.isNewRow || oldItem.removed !== newItem.removed || isRowEditMode && oldItem.isEditing !== newItem.isEditing) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n var editingController = this.getController(\"editing\");\r\n var cell = oldRow.cells && oldRow.cells[columnIndex];\r\n var isEditing = editingController && editingController.isEditCell(visibleRowIndex, columnIndex);\r\n if (isLiveUpdate && isEditing) {\r\n return false\r\n }\r\n if (cell && cell.column && !cell.column.showEditorAlways && cell.isEditing !== isEditing) {\r\n return true\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: {\r\n init: function() {\r\n this.callBase();\r\n this._editingController = this.getController(\"editing\")\r\n },\r\n getCellElements: function(rowIndex) {\r\n var $cellElements = this.callBase(rowIndex);\r\n var editingController = this._editingController;\r\n var editForm = editingController.getEditForm();\r\n var editFormRowIndex = editingController.getEditFormRowIndex();\r\n if (editFormRowIndex === rowIndex && $cellElements && editForm) {\r\n return editForm.$element().find(\".\" + this.addWidgetPrefix(EDIT_FORM_ITEM_CLASS) + \", .\" + BUTTON_CLASS)\r\n }\r\n return $cellElements\r\n },\r\n getCellIndex: function($cell, rowIndex) {\r\n if (!$cell.is(\"td\") && rowIndex >= 0) {\r\n var $cellElements = this.getCellElements(rowIndex);\r\n var cellIndex = -1;\r\n (0, _iterator.each)($cellElements, function(index, cellElement) {\r\n if ((0, _renderer.default)(cellElement).find($cell).length) {\r\n cellIndex = index\r\n }\r\n });\r\n return cellIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n var editFormRowIndex = this._editingController.getEditFormRowIndex();\r\n if (editFormRowIndex === rowIndex && (0, _type.isString)(columnIdentifier)) {\r\n var column = this._columnsController.columnOption(columnIdentifier);\r\n return this._getEditFormEditorVisibleIndex($cells, column)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getEditFormEditorVisibleIndex: function($cells, column) {\r\n var visibleIndex = -1;\r\n (0, _iterator.each)($cells, function(index, cellElement) {\r\n var item = (0, _renderer.default)(cellElement).find(\".dx-field-item-content\").data(\"dx-form-item\");\r\n if (item && item.column && column && item.column.index === column.index) {\r\n visibleIndex = index;\r\n return false\r\n }\r\n });\r\n return visibleIndex\r\n },\r\n publicMethods: function() {\r\n return this.callBase().concat([\"cellValue\"])\r\n },\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var template = that._editingController.getColumnTemplate(options);\r\n return template || that.callBase(options)\r\n },\r\n _isNativeClick: function() {\r\n return (_devices.default.real().ios || _devices.default.real().android) && this.option(\"editing.allowUpdating\")\r\n },\r\n _createTable: function() {\r\n var that = this;\r\n var $table = that.callBase.apply(that, arguments);\r\n if (!_isRowEditMode(that) && that.option(\"editing.allowUpdating\")) {\r\n _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, \"dxDataGridRowsView\"), \"td:not(.\" + EDITOR_CELL_CLASS + \")\", that.createAction(function() {\r\n var editingController = that._editingController;\r\n if (editingController.isEditing()) {\r\n editingController.closeEditCell()\r\n }\r\n }))\r\n }\r\n return $table\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row) {\r\n var editingController = this._editingController;\r\n var isEditRow = editingController.isEditRow(row.rowIndex);\r\n var isRowRemoved = !!row.removed;\r\n var isRowInserted = !!row.isNewRow;\r\n var isRowModified = !!row.modified;\r\n if (_getEditMode(this) === EDIT_MODE_BATCH) {\r\n isRowRemoved && $row.addClass(ROW_REMOVED)\r\n } else {\r\n isEditRow && $row.addClass(EDIT_ROW)\r\n }\r\n isRowInserted && $row.addClass(ROW_INSERTED);\r\n isRowModified && $row.addClass(ROW_MODIFIED);\r\n if (isEditRow || isRowInserted || isRowRemoved) {\r\n $row.removeClass(ROW_SELECTED)\r\n }\r\n if (isEditRow && \"detail\" === row.rowType) {\r\n $row.addClass(this.addWidgetPrefix(EDIT_FORM_CLASS))\r\n }\r\n }\r\n return $row\r\n },\r\n _getColumnIndexByElement: function($element) {\r\n var $tableElement = $element.closest(\"table\");\r\n var $tableElements = this.getTableElements();\r\n while ($tableElement.length && !$tableElements.filter($tableElement).length) {\r\n $element = $tableElement.closest(\"td\");\r\n $tableElement = $element.closest(\"table\")\r\n }\r\n return this._getColumnIndexByElementCore($element)\r\n },\r\n _getColumnIndexByElementCore: function($element) {\r\n var $targetElement = $element.closest(\".\" + ROW_CLASS + \"> td:not(.dx-master-detail-cell)\");\r\n return this.getCellIndex($targetElement)\r\n },\r\n _editCellByClick: function(e, eventName) {\r\n var that = this;\r\n var editingController = that._editingController;\r\n var $targetElement = (0, _renderer.default)(e.event.target);\r\n var columnIndex = that._getColumnIndexByElement($targetElement);\r\n var row = that._dataController.items()[e.rowIndex];\r\n var allowUpdating = editingController.allowUpdating({\r\n row: row\r\n }, eventName) || row && row.isNewRow;\r\n var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n var isEditedCell = editingController.isEditCell(e.rowIndex, columnIndex);\r\n var allowEditing = allowUpdating && column && (column.allowEditing || isEditedCell);\r\n var startEditAction = this.option(\"editing.startEditAction\") || \"click\";\r\n if (\"down\" === eventName) {\r\n if ((_devices.default.real().ios || _devices.default.real().android) && !isEditedCell) {\r\n (0, _dom.resetActiveElement)()\r\n }\r\n return column && column.showEditorAlways && allowEditing && editingController.editCell(e.rowIndex, columnIndex)\r\n }\r\n if (\"click\" === eventName && \"dblClick\" === startEditAction && !isEditedCell) {\r\n editingController.closeEditCell()\r\n }\r\n if (allowEditing && eventName === startEditAction) {\r\n return editingController.editCell(e.rowIndex, columnIndex) || editingController.isEditRow(e.rowIndex)\r\n }\r\n },\r\n _rowPointerDown: function(e) {\r\n var _this24 = this;\r\n this._pointerDownTimeout = setTimeout(function() {\r\n _this24._editCellByClick(e, \"down\")\r\n })\r\n },\r\n _rowClick: function(e) {\r\n var isEditForm = (0, _renderer.default)(e.rowElement).hasClass(this.addWidgetPrefix(EDIT_FORM_CLASS));\r\n e.event[TARGET_COMPONENT_NAME] = this.component;\r\n if (!this._editCellByClick(e, \"click\") && !isEditForm) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _rowDblClick: function(e) {\r\n if (!this._editCellByClick(e, \"dblClick\")) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _cellPrepared: function($cell, parameters) {\r\n var editingController = this._editingController;\r\n var isCommandCell = !!parameters.column.command;\r\n var isEditableCell = parameters.setValue;\r\n var isEditRow = editingController.isEditRow(parameters.rowIndex);\r\n var isEditing = isEditingCell(isEditRow, parameters);\r\n if (isEditingOrShowEditorAlwaysDataCell(isEditRow, parameters)) {\r\n var alignment = parameters.column.alignment;\r\n $cell.toggleClass(this.addWidgetPrefix(READONLY_CLASS), !isEditableCell).toggleClass(CELL_FOCUS_DISABLED_CLASS, !isEditableCell);\r\n if (alignment) {\r\n $cell.find(EDITORS_INPUT_SELECTOR).first().css(\"textAlign\", alignment)\r\n }\r\n }\r\n if (isEditing) {\r\n this._editCellPrepared($cell)\r\n }\r\n if (parameters.column && !isCommandCell) {\r\n editingController.highlightDataCell($cell, parameters)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _editCellPrepared: function($cell) {},\r\n _formItemPrepared: function() {},\r\n _isFormItem: function(parameters) {\r\n var isDetailRow = \"detail\" === parameters.rowType || \"detailAdaptive\" === parameters.rowType;\r\n var isPopupEditing = \"data\" === parameters.rowType && \"popup\" === _getEditMode(this);\r\n return (isDetailRow || isPopupEditing) && parameters.item\r\n },\r\n _updateCell: function($cell, parameters) {\r\n if (this._isFormItem(parameters)) {\r\n this._formItemPrepared(parameters, $cell)\r\n } else {\r\n this.callBase($cell, parameters)\r\n }\r\n },\r\n _update: function(change) {\r\n this.callBase(change);\r\n if (\"updateSelection\" === change.changeType) {\r\n this.getTableElements().children(\"tbody\").children(\".\" + EDIT_ROW).removeClass(ROW_SELECTED)\r\n }\r\n },\r\n _getCellOptions: function(options) {\r\n var cellOptions = this.callBase(options);\r\n cellOptions.isEditing = this._editingController.isEditCell(cellOptions.rowIndex, cellOptions.columnIndex);\r\n return cellOptions\r\n },\r\n _createCell: function(options) {\r\n var $cell = this.callBase(options);\r\n var isEditRow = this._editingController.isEditRow(options.rowIndex);\r\n isEditingOrShowEditorAlwaysDataCell(isEditRow, options) && $cell.addClass(EDITOR_CELL_CLASS);\r\n return $cell\r\n },\r\n _renderCellContent: function($cell, options) {\r\n if (\"data\" === options.rowType && _getEditMode(this) === EDIT_MODE_POPUP && false === options.row.visible) {\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n cellValue: function(rowIndex, columnIdentifier, value, text) {\r\n var cellOptions = this.getCellOptions(rowIndex, columnIdentifier);\r\n if (cellOptions) {\r\n if (void 0 === value) {\r\n return cellOptions.value\r\n } else {\r\n this._editingController.updateFieldValue(cellOptions, value, text, true)\r\n }\r\n }\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._pointerDownTimeout)\r\n },\r\n _renderCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this._editingController._focusEditorIfNeed()\r\n }\r\n },\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n var editButtonItems = this.getController(\"editing\").prepareEditButtons(this);\r\n return editButtonItems.concat(items)\r\n },\r\n optionChanged: function(args) {\r\n var fullName = args.fullName;\r\n switch (args.name) {\r\n case \"editing\":\r\n var excludedOptions = [EDITING_POPUP_OPTION_NAME, EDITING_CHANGES_OPTION_NAME, EDITING_EDITCOLUMNNAME_OPTION_NAME, EDITING_EDITROWKEY_OPTION_NAME];\r\n var shouldInvalidate = fullName && !excludedOptions.some(function(optionName) {\r\n return optionName === fullName\r\n });\r\n shouldInvalidate && this._invalidate();\r\n this.callBase(args);\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 editingOptions = that.getController(\"editing\").option(\"editing\");\r\n return that.callBase() || editingOptions && (editingOptions.allowAdding || (editingOptions.allowUpdating || editingOptions.allowDeleting) && editingOptions.mode === EDIT_MODE_BATCH)\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.filter_row.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 _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _menu = _interopRequireDefault(require(\"../menu\"));\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar OPERATION_ICONS = {\r\n \"=\": \"filter-operation-equals\",\r\n \"<>\": \"filter-operation-not-equals\",\r\n \"<\": \"filter-operation-less\",\r\n \"<=\": \"filter-operation-less-equal\",\r\n \">\": \"filter-operation-greater\",\r\n \">=\": \"filter-operation-greater-equal\",\r\n \"default\": \"filter-operation-default\",\r\n notcontains: \"filter-operation-not-contains\",\r\n contains: \"filter-operation-contains\",\r\n startswith: \"filter-operation-starts-with\",\r\n endswith: \"filter-operation-ends-with\",\r\n between: \"filter-operation-between\"\r\n};\r\nvar OPERATION_DESCRIPTORS = {\r\n \"=\": \"equal\",\r\n \"<>\": \"notEqual\",\r\n \"<\": \"lessThan\",\r\n \"<=\": \"lessThanOrEqual\",\r\n \">\": \"greaterThan\",\r\n \">=\": \"greaterThanOrEqual\",\r\n startswith: \"startsWith\",\r\n contains: \"contains\",\r\n notcontains: \"notContains\",\r\n endswith: \"endsWith\",\r\n between: \"between\"\r\n};\r\nvar FILTERING_TIMEOUT = 700;\r\nvar CORRECT_FILTER_RANGE_OVERLAY_WIDTH = 1;\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar FILTER_RANGE_OVERLAY_CLASS = \"filter-range-overlay\";\r\nvar FILTER_RANGE_START_CLASS = \"filter-range-start\";\r\nvar FILTER_RANGE_END_CLASS = \"filter-range-end\";\r\nvar MENU_CLASS = \"dx-menu\";\r\nvar EDITOR_WITH_MENU_CLASS = \"dx-editor-with-menu\";\r\nvar EDITOR_CONTAINER_CLASS = \"dx-editor-container\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar FILTER_MENU = \"dx-filter-menu\";\r\nvar APPLY_BUTTON_CLASS = \"dx-apply-button\";\r\nvar HIGHLIGHT_OUTLINE_CLASS = \"dx-highlight-outline\";\r\nvar FOCUSED_CLASS = \"dx-focused\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FILTER_RANGE_CONTENT_CLASS = \"dx-filter-range-content\";\r\nvar FILTER_MODIFIED_CLASS = \"dx-filter-modified\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar BETWEEN_OPERATION_DATA_TYPES = [\"date\", \"datetime\", \"number\"];\r\n\r\nfunction isOnClickApplyFilterMode(that) {\r\n return \"onClick\" === that.option(\"filterRow.applyFilter\")\r\n}\r\nvar ColumnHeadersViewFilterRowExtender = function() {\r\n var getEditorInstance = function($editorContainer) {\r\n var $editor = $editorContainer && $editorContainer.children();\r\n var componentNames = $editor && $editor.data(\"dxComponents\");\r\n var editor = componentNames && componentNames.length && $editor.data(componentNames[0]);\r\n if (editor instanceof _editor.default) {\r\n return editor\r\n }\r\n };\r\n var getRangeTextByFilterValue = function(that, column) {\r\n var result = \"\";\r\n var rangeEnd = \"\";\r\n var filterValue = getColumnFilterValue(that, column);\r\n var formatOptions = _uiGrid_core2.default.getFormatOptionsByColumn(column, \"filterRow\");\r\n if (Array.isArray(filterValue)) {\r\n result = _uiGrid_core2.default.formatValue(filterValue[0], formatOptions);\r\n rangeEnd = _uiGrid_core2.default.formatValue(filterValue[1], formatOptions);\r\n if (\"\" !== rangeEnd) {\r\n result += \" - \" + rangeEnd\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(filterValue)) {\r\n result = _uiGrid_core2.default.formatValue(filterValue, formatOptions)\r\n }\r\n }\r\n return result\r\n };\r\n\r\n function getColumnFilterValue(that, column) {\r\n if (column) {\r\n return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedFilterValue ? column.bufferedFilterValue : column.filterValue\r\n }\r\n }\r\n var getColumnSelectedFilterOperation = function(that, column) {\r\n if (column) {\r\n return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedSelectedFilterOperation ? column.bufferedSelectedFilterOperation : column.selectedFilterOperation\r\n }\r\n };\r\n var isValidFilterValue = function(filterValue, column) {\r\n if (column && BETWEEN_OPERATION_DATA_TYPES.indexOf(column.dataType) >= 0 && Array.isArray(filterValue)) {\r\n return false\r\n }\r\n return void 0 !== filterValue\r\n };\r\n var getFilterValue = function(that, columnIndex, $editorContainer) {\r\n var column = that._columnsController.columnOption(columnIndex);\r\n var filterValue = getColumnFilterValue(that, column);\r\n var isFilterRange = $editorContainer.closest(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).length;\r\n var isRangeStart = $editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS));\r\n if (filterValue && Array.isArray(filterValue) && \"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n if (isRangeStart) {\r\n return filterValue[0]\r\n } else {\r\n return filterValue[1]\r\n }\r\n }\r\n return !isFilterRange && isValidFilterValue(filterValue, column) ? filterValue : null\r\n };\r\n var normalizeFilterValue = function(that, filterValue, column, $editorContainer) {\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n var columnFilterValue = getColumnFilterValue(that, column);\r\n if ($editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS))) {\r\n return [filterValue, Array.isArray(columnFilterValue) ? columnFilterValue[1] : void 0]\r\n } else {\r\n return [Array.isArray(columnFilterValue) ? columnFilterValue[0] : columnFilterValue, filterValue]\r\n }\r\n }\r\n return filterValue\r\n };\r\n var updateFilterValue = function(that, options) {\r\n var value = \"\" === options.value ? null : options.value;\r\n var $editorContainer = options.container;\r\n var column = that._columnsController.columnOption(options.column.index);\r\n var filterValue = getFilterValue(that, column.index, $editorContainer);\r\n if (!(0, _type.isDefined)(filterValue) && !(0, _type.isDefined)(value)) {\r\n return\r\n }\r\n that._applyFilterViewController.setHighLight($editorContainer, filterValue !== value);\r\n var columnOptionName = isOnClickApplyFilterMode(that) ? \"bufferedFilterValue\" : \"filterValue\";\r\n var normalizedValue = normalizeFilterValue(that, value, column, $editorContainer);\r\n var isBetween = \"between\" === getColumnSelectedFilterOperation(that, column);\r\n var notFireEvent = options.notFireEvent || isBetween && Array.isArray(normalizedValue) && normalizedValue.indexOf(void 0) >= 0;\r\n that._columnsController.columnOption(column.index, columnOptionName, normalizedValue, notFireEvent)\r\n };\r\n return {\r\n _updateEditorValue: function(column, $editorContainer) {\r\n var that = this;\r\n var editor = getEditorInstance($editorContainer);\r\n editor && editor.option(\"value\", getFilterValue(that, column.index, $editorContainer))\r\n },\r\n _columnOptionChanged: function(e) {\r\n var that = this;\r\n var optionNames = e.optionNames;\r\n var $cell;\r\n var $editorContainer;\r\n var $editorRangeElements;\r\n var $menu;\r\n if (_uiGrid_core2.default.checkChanges(optionNames, [\"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"bufferedSelectedFilterOperation\"]) && void 0 !== e.columnIndex) {\r\n var visibleIndex = that._columnsController.getVisibleIndex(e.columnIndex);\r\n var column = that._columnsController.columnOption(e.columnIndex);\r\n $cell = that._getCellElement(that.element().find(\".\" + that.addWidgetPrefix(FILTER_ROW_CLASS)).index(), visibleIndex) || (0, _renderer.default)();\r\n $editorContainer = $cell.find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n if (optionNames.filterValue || optionNames.bufferedFilterValue) {\r\n that._updateEditorValue(column, $editorContainer);\r\n var overlayInstance = $cell.find(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).data(\"dxOverlay\");\r\n if (overlayInstance) {\r\n $editorRangeElements = overlayInstance.$content().find(\".\" + EDITOR_CONTAINER_CLASS);\r\n that._updateEditorValue(column, $editorRangeElements.first());\r\n that._updateEditorValue(column, $editorRangeElements.last())\r\n }\r\n if (!overlayInstance || !overlayInstance.option(\"visible\")) {\r\n that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))\r\n }\r\n }\r\n if (optionNames.selectedFilterOperation || optionNames.bufferedSelectedFilterOperation) {\r\n if (visibleIndex >= 0 && column) {\r\n $menu = $cell.find(\".\" + MENU_CLASS);\r\n if ($menu.length) {\r\n that._updateFilterOperationChooser($menu, column, $editorContainer);\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n that._renderFilterRangeContent($cell, column)\r\n } else {\r\n if ($editorContainer.find(\".\" + FILTER_RANGE_CONTENT_CLASS).length) {\r\n that._renderEditor($editorContainer, that._getEditorOptions($editorContainer, column));\r\n that._hideFilterRange()\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return\r\n }\r\n that.callBase(e)\r\n },\r\n _renderCore: function() {\r\n this._filterRangeOverlayInstance = null;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _resizeCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this._filterRangeOverlayInstance && this._filterRangeOverlayInstance.repaint()\r\n },\r\n isFilterRowVisible: function() {\r\n return this._isElementVisible(this.option(\"filterRow\"))\r\n },\r\n isVisible: function() {\r\n return this.callBase() || this.isFilterRowVisible()\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._applyFilterViewController = this.getController(\"applyFilter\")\r\n },\r\n _initFilterRangeOverlay: function($cell, column) {\r\n var that = this;\r\n var sharedData = {};\r\n var $editorContainer = $cell.find(\".dx-editor-container\");\r\n var $overlay = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).appendTo($cell);\r\n return that._createComponent($overlay, _overlay.default, {\r\n height: \"auto\",\r\n shading: false,\r\n showTitle: false,\r\n focusStateEnabled: false,\r\n closeOnTargetScroll: false,\r\n closeOnOutsideClick: true,\r\n animation: false,\r\n position: {\r\n my: \"top\",\r\n at: \"top\",\r\n of: $editorContainer.length && $editorContainer || $cell,\r\n offset: \"0 -1\"\r\n },\r\n contentTemplate: function(contentElement) {\r\n var editorOptions;\r\n var $editor = (0, _renderer.default)(\"
\").addClass(EDITOR_CONTAINER_CLASS + \" \" + that.addWidgetPrefix(FILTER_RANGE_START_CLASS)).appendTo(contentElement);\r\n column = that._columnsController.columnOption(column.index);\r\n editorOptions = that._getEditorOptions($editor, column);\r\n editorOptions.sharedData = sharedData;\r\n that._renderEditor($editor, editorOptions);\r\n _events_engine.default.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", function(e) {\r\n var $prevElement = $cell.find(\"[tabindex]\").not(e.target).first();\r\n if (\"tab\" === (0, _index.normalizeKeyName)(e) && e.shiftKey) {\r\n e.preventDefault();\r\n that._hideFilterRange();\r\n if (!$prevElement.length) {\r\n $prevElement = $cell.prev().find(\"[tabindex]\").last()\r\n }\r\n _events_engine.default.trigger($prevElement, \"focus\")\r\n }\r\n });\r\n $editor = (0, _renderer.default)(\"
\").addClass(EDITOR_CONTAINER_CLASS + \" \" + that.addWidgetPrefix(FILTER_RANGE_END_CLASS)).appendTo(contentElement);\r\n editorOptions = that._getEditorOptions($editor, column);\r\n editorOptions.sharedData = sharedData;\r\n that._renderEditor($editor, editorOptions);\r\n _events_engine.default.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", function(e) {\r\n if (\"tab\" === (0, _index.normalizeKeyName)(e) && !e.shiftKey) {\r\n e.preventDefault();\r\n that._hideFilterRange();\r\n _events_engine.default.trigger($cell.next().find(\"[tabindex]\").first(), \"focus\")\r\n }\r\n });\r\n return (0, _renderer.default)(contentElement).addClass(that.getWidgetContainerClass())\r\n },\r\n onShown: function(e) {\r\n var $editor = e.component.$content().find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n _events_engine.default.trigger($editor.find(EDITORS_INPUT_SELECTOR), \"focus\")\r\n },\r\n onHidden: function() {\r\n column = that._columnsController.columnOption(column.index);\r\n $cell.find(\".\" + MENU_CLASS).parent().addClass(EDITOR_WITH_MENU_CLASS);\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column));\r\n that.component.updateDimensions()\r\n }\r\n }\r\n })\r\n },\r\n _updateFilterRangeOverlay: function(options) {\r\n var overlayInstance = this._filterRangeOverlayInstance;\r\n overlayInstance && overlayInstance.option(options)\r\n },\r\n _showFilterRange: function($cell, column) {\r\n var that = this;\r\n var $overlay = $cell.children(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS));\r\n var overlayInstance = $overlay.length && $overlay.data(\"dxOverlay\");\r\n if (!overlayInstance && column) {\r\n overlayInstance = that._initFilterRangeOverlay($cell, column)\r\n }\r\n if (!overlayInstance.option(\"visible\")) {\r\n that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.hide();\r\n that._filterRangeOverlayInstance = overlayInstance;\r\n that._updateFilterRangeOverlay({\r\n width: $cell.outerWidth(true) + CORRECT_FILTER_RANGE_OVERLAY_WIDTH\r\n });\r\n that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.show()\r\n }\r\n },\r\n _hideFilterRange: function() {\r\n var overlayInstance = this._filterRangeOverlayInstance;\r\n overlayInstance && overlayInstance.hide()\r\n },\r\n getFilterRangeOverlayInstance: function() {\r\n return this._filterRangeOverlayInstance\r\n },\r\n _createRow: function(row) {\r\n var _this = this;\r\n var $row = this.callBase(row);\r\n if (\"filter\" === row.rowType) {\r\n $row.addClass(this.addWidgetPrefix(FILTER_ROW_CLASS));\r\n if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n _events_engine.default.on($row, \"keydown\", function(event) {\r\n return (0, _accessibility.selectView)(\"filterRow\", _this, event)\r\n })\r\n }\r\n }\r\n return $row\r\n },\r\n _getRows: function() {\r\n var result = this.callBase();\r\n if (this.isFilterRowVisible()) {\r\n result.push({\r\n rowType: \"filter\"\r\n })\r\n }\r\n return result\r\n },\r\n _renderFilterCell: function(cell, options) {\r\n var that = this;\r\n var column = options.column;\r\n var $cell = (0, _renderer.default)(cell);\r\n if (that.component.option(\"showColumnHeaders\")) {\r\n that.setAria(\"describedby\", column.headerId, $cell)\r\n }\r\n that.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaFilterCell\"), $cell);\r\n $cell.addClass(EDITOR_CELL_CLASS);\r\n var $container = (0, _renderer.default)(\"
\").appendTo($cell);\r\n var $editorContainer = (0, _renderer.default)(\"
\").addClass(EDITOR_CONTAINER_CLASS).appendTo($container);\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n that._renderFilterRangeContent($cell, column)\r\n } else {\r\n var editorOptions = that._getEditorOptions($editorContainer, column);\r\n that._renderEditor($editorContainer, editorOptions)\r\n }\r\n var alignment = column.alignment;\r\n if (alignment && \"center\" !== alignment) {\r\n $cell.find(EDITORS_INPUT_SELECTOR).first().css(\"textAlign\", column.alignment)\r\n }\r\n if (column.filterOperations && column.filterOperations.length) {\r\n that._renderFilterOperationChooser($container, column, $editorContainer)\r\n }\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var column = options.column;\r\n if (\"filter\" === options.rowType) {\r\n if (column.command) {\r\n $cell.html(\" \")\r\n } else {\r\n if (column.allowFiltering) {\r\n that.renderTemplate($cell, that._renderFilterCell.bind(that), options).done(function() {\r\n that._updateCell($cell, options)\r\n });\r\n return\r\n }\r\n }\r\n }\r\n that.callBase($cell, options)\r\n },\r\n _getEditorOptions: function($editorContainer, column) {\r\n var that = this;\r\n var accessibilityOptions = {\r\n editorOptions: {\r\n inputAttr: that._getFilterInputAccessibilityAttributes(column)\r\n }\r\n };\r\n var result = (0, _extend.extend)(accessibilityOptions, column, {\r\n value: getFilterValue(that, column.index, $editorContainer),\r\n parentType: \"filterRow\",\r\n showAllText: that.option(\"filterRow.showAllText\"),\r\n updateValueTimeout: \"onClick\" === that.option(\"filterRow.applyFilter\") ? 0 : FILTERING_TIMEOUT,\r\n width: null,\r\n setValue: function(value, notFireEvent) {\r\n updateFilterValue(that, {\r\n column: column,\r\n value: value,\r\n container: $editorContainer,\r\n notFireEvent: notFireEvent\r\n })\r\n }\r\n });\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n if ($editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS))) {\r\n result.placeholder = that.option(\"filterRow.betweenStartText\")\r\n } else {\r\n result.placeholder = that.option(\"filterRow.betweenEndText\")\r\n }\r\n }\r\n return result\r\n },\r\n _getFilterInputAccessibilityAttributes: function(column) {\r\n var columnAriaLabel = _message.default.format(\"dxDataGrid-ariaFilterCell\");\r\n if (this.component.option(\"showColumnHeaders\")) {\r\n return {\r\n \"aria-label\": columnAriaLabel,\r\n \"aria-describedby\": column.headerId\r\n }\r\n }\r\n return {\r\n \"aria-label\": columnAriaLabel\r\n }\r\n },\r\n _renderEditor: function($editorContainer, options) {\r\n $editorContainer.empty();\r\n return this.getController(\"editorFactory\").createEditor((0, _renderer.default)(\"
\").appendTo($editorContainer), options)\r\n },\r\n _renderFilterRangeContent: function($cell, column) {\r\n var that = this;\r\n var $editorContainer = $cell.find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n $editorContainer.empty();\r\n var $filterRangeContent = (0, _renderer.default)(\"
\").addClass(FILTER_RANGE_CONTENT_CLASS).attr(\"tabindex\", this.option(\"tabIndex\"));\r\n _events_engine.default.on($filterRangeContent, \"focusin\", function() {\r\n that._showFilterRange($cell, column)\r\n });\r\n $filterRangeContent.appendTo($editorContainer);\r\n that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))\r\n },\r\n _updateFilterRangeContent: function($cell, value) {\r\n var $filterRangeContent = $cell.find(\".\" + FILTER_RANGE_CONTENT_CLASS);\r\n if ($filterRangeContent.length) {\r\n if (\"\" === value) {\r\n $filterRangeContent.html(\" \")\r\n } else {\r\n $filterRangeContent.text(value)\r\n }\r\n }\r\n },\r\n _updateFilterOperationChooser: function($menu, column, $editorContainer) {\r\n var that = this;\r\n var isCellWasFocused;\r\n var restoreFocus = function() {\r\n var menu = _menu.default.getInstance($menu);\r\n menu && menu.option(\"focusedElement\", null);\r\n isCellWasFocused && that._focusEditor($editorContainer)\r\n };\r\n that._createComponent($menu, _menu.default, {\r\n integrationOptions: {},\r\n activeStateEnabled: false,\r\n selectionMode: \"single\",\r\n cssClass: that.getWidgetContainerClass() + \" \" + CELL_FOCUS_DISABLED_CLASS + \" \" + FILTER_MENU,\r\n showFirstSubmenuMode: \"onHover\",\r\n hideSubmenuOnMouseLeave: true,\r\n items: [{\r\n disabled: column.filterOperations && column.filterOperations.length ? false : true,\r\n icon: OPERATION_ICONS[getColumnSelectedFilterOperation(that, column) || \"default\"],\r\n selectable: false,\r\n items: that._getFilterOperationMenuItems(column)\r\n }],\r\n onItemClick: function(properties) {\r\n var selectedFilterOperation = properties.itemData.name;\r\n var columnSelectedFilterOperation = getColumnSelectedFilterOperation(that, column);\r\n var notFocusEditor = false;\r\n var isOnClickMode = isOnClickApplyFilterMode(that);\r\n var options = {};\r\n if (properties.itemData.items || selectedFilterOperation && selectedFilterOperation === columnSelectedFilterOperation) {\r\n return\r\n }\r\n if (selectedFilterOperation) {\r\n options[isOnClickMode ? \"bufferedSelectedFilterOperation\" : \"selectedFilterOperation\"] = selectedFilterOperation;\r\n if (\"between\" === selectedFilterOperation || \"between\" === columnSelectedFilterOperation) {\r\n notFocusEditor = \"between\" === selectedFilterOperation;\r\n options[isOnClickMode ? \"bufferedFilterValue\" : \"filterValue\"] = null\r\n }\r\n } else {\r\n options[isOnClickMode ? \"bufferedFilterValue\" : \"filterValue\"] = null;\r\n options[isOnClickMode ? \"bufferedSelectedFilterOperation\" : \"selectedFilterOperation\"] = column.defaultSelectedFilterOperation || null\r\n }\r\n that._columnsController.columnOption(column.index, options);\r\n that._applyFilterViewController.setHighLight($editorContainer, true);\r\n if (!selectedFilterOperation) {\r\n var editor = getEditorInstance($editorContainer);\r\n if (editor && \"dxDateBox\" === editor.NAME && !editor.option(\"isValid\")) {\r\n editor.reset();\r\n editor.option(\"isValid\", true)\r\n }\r\n }\r\n if (!notFocusEditor) {\r\n that._focusEditor($editorContainer)\r\n } else {\r\n that._showFilterRange($editorContainer.closest(\".\" + EDITOR_CELL_CLASS), column)\r\n }\r\n },\r\n onSubmenuShown: function() {\r\n isCellWasFocused = that._isEditorFocused($editorContainer);\r\n that.getController(\"editorFactory\").loseFocus()\r\n },\r\n onSubmenuHiding: function() {\r\n _events_engine.default.trigger($menu, \"blur\");\r\n restoreFocus()\r\n },\r\n onContentReady: function(e) {\r\n _events_engine.default.on($menu, \"blur\", function() {\r\n var menu = e.component;\r\n menu._hideSubmenu(menu._visibleSubmenu);\r\n restoreFocus()\r\n })\r\n },\r\n rtlEnabled: that.option(\"rtlEnabled\")\r\n })\r\n },\r\n _isEditorFocused: function($container) {\r\n return $container.hasClass(FOCUSED_CLASS) || $container.parents(\".\" + FOCUSED_CLASS).length\r\n },\r\n _focusEditor: function($container) {\r\n this.getController(\"editorFactory\").focus($container);\r\n _events_engine.default.trigger($container.find(EDITORS_INPUT_SELECTOR), \"focus\")\r\n },\r\n _renderFilterOperationChooser: function($container, column, $editorContainer) {\r\n var that = this;\r\n var $menu;\r\n if (that.option(\"filterRow.showOperationChooser\")) {\r\n $container.addClass(EDITOR_WITH_MENU_CLASS);\r\n $menu = (0, _renderer.default)(\"
\").prependTo($container);\r\n that._updateFilterOperationChooser($menu, column, $editorContainer)\r\n }\r\n },\r\n _getFilterOperationMenuItems: function(column) {\r\n var that = this;\r\n var result = [{}];\r\n var filterRowOptions = that.option(\"filterRow\");\r\n var operationDescriptions = filterRowOptions && filterRowOptions.operationDescriptions || {};\r\n if (column.filterOperations && column.filterOperations.length) {\r\n var availableFilterOperations = column.filterOperations.filter(function(value) {\r\n return (0, _type.isDefined)(OPERATION_DESCRIPTORS[value])\r\n });\r\n result = (0, _iterator.map)(availableFilterOperations, function(value) {\r\n var descriptionName = OPERATION_DESCRIPTORS[value];\r\n return {\r\n name: value,\r\n selected: (getColumnSelectedFilterOperation(that, column) || column.defaultFilterOperation) === value,\r\n text: operationDescriptions[descriptionName],\r\n icon: OPERATION_ICONS[value]\r\n }\r\n });\r\n result.push({\r\n name: null,\r\n text: filterRowOptions && filterRowOptions.resetOperationText,\r\n icon: OPERATION_ICONS.default\r\n })\r\n }\r\n return result\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"filterRow\":\r\n case \"showColumnLines\":\r\n this._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 }\r\n}();\r\nvar DataControllerFilterRowExtender = {\r\n skipCalculateColumnFilters: function() {\r\n return false\r\n },\r\n _calculateAdditionalFilter: function() {\r\n if (this.skipCalculateColumnFilters()) {\r\n return this.callBase()\r\n }\r\n var filters = [this.callBase()];\r\n var columns = this._columnsController.getVisibleColumns(null, true);\r\n (0, _iterator.each)(columns, function() {\r\n if (this.allowFiltering && this.calculateFilterExpression && (0, _type.isDefined)(this.filterValue)) {\r\n var filter = this.createFilterExpression(this.filterValue, this.selectedFilterOperation || this.defaultFilterOperation, \"filterRow\");\r\n filters.push(filter)\r\n }\r\n });\r\n return _uiGrid_core2.default.combineFilters(filters)\r\n }\r\n};\r\nvar ApplyFilterViewController = _uiGrid_core.default.ViewController.inherit({\r\n _getHeaderPanel: function() {\r\n if (!this._headerPanel) {\r\n this._headerPanel = this.getView(\"headerPanel\")\r\n }\r\n return this._headerPanel\r\n },\r\n setHighLight: function($element, value) {\r\n if (isOnClickApplyFilterMode(this)) {\r\n $element && $element.toggleClass(HIGHLIGHT_OUTLINE_CLASS, value) && $element.closest(\".\" + EDITOR_CELL_CLASS).toggleClass(FILTER_MODIFIED_CLASS, value);\r\n this._getHeaderPanel().enableApplyButton(value)\r\n }\r\n },\r\n applyFilter: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var columns = columnsController.getColumns();\r\n columnsController.beginUpdate();\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n if (void 0 !== column.bufferedFilterValue) {\r\n columnsController.columnOption(i, \"filterValue\", column.bufferedFilterValue);\r\n column.bufferedFilterValue = void 0\r\n }\r\n if (void 0 !== column.bufferedSelectedFilterOperation) {\r\n columnsController.columnOption(i, \"selectedFilterOperation\", column.bufferedSelectedFilterOperation);\r\n column.bufferedSelectedFilterOperation = void 0\r\n }\r\n }\r\n columnsController.endUpdate();\r\n this.removeHighLights()\r\n },\r\n removeHighLights: function() {\r\n if (isOnClickApplyFilterMode(this)) {\r\n var columnHeadersViewElement = this.getView(\"columnHeadersView\").element();\r\n columnHeadersViewElement.find(\".\" + this.addWidgetPrefix(FILTER_ROW_CLASS) + \" .\" + HIGHLIGHT_OUTLINE_CLASS).removeClass(HIGHLIGHT_OUTLINE_CLASS);\r\n columnHeadersViewElement.find(\".\" + this.addWidgetPrefix(FILTER_ROW_CLASS) + \" .\" + FILTER_MODIFIED_CLASS).removeClass(FILTER_MODIFIED_CLASS);\r\n this._getHeaderPanel().enableApplyButton(false)\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterRow: {\r\n visible: false,\r\n showOperationChooser: true,\r\n showAllText: _message.default.format(\"dxDataGrid-filterRowShowAllText\"),\r\n resetOperationText: _message.default.format(\"dxDataGrid-filterRowResetOperationText\"),\r\n applyFilter: \"auto\",\r\n applyFilterText: _message.default.format(\"dxDataGrid-applyFilterText\"),\r\n operationDescriptions: {\r\n equal: _message.default.format(\"dxDataGrid-filterRowOperationEquals\"),\r\n notEqual: _message.default.format(\"dxDataGrid-filterRowOperationNotEquals\"),\r\n lessThan: _message.default.format(\"dxDataGrid-filterRowOperationLess\"),\r\n lessThanOrEqual: _message.default.format(\"dxDataGrid-filterRowOperationLessOrEquals\"),\r\n greaterThan: _message.default.format(\"dxDataGrid-filterRowOperationGreater\"),\r\n greaterThanOrEqual: _message.default.format(\"dxDataGrid-filterRowOperationGreaterOrEquals\"),\r\n startsWith: _message.default.format(\"dxDataGrid-filterRowOperationStartsWith\"),\r\n contains: _message.default.format(\"dxDataGrid-filterRowOperationContains\"),\r\n notContains: _message.default.format(\"dxDataGrid-filterRowOperationNotContains\"),\r\n endsWith: _message.default.format(\"dxDataGrid-filterRowOperationEndsWith\"),\r\n between: _message.default.format(\"dxDataGrid-filterRowOperationBetween\"),\r\n isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n },\r\n betweenStartText: _message.default.format(\"dxDataGrid-filterRowOperationBetweenStartText\"),\r\n betweenEndText: _message.default.format(\"dxDataGrid-filterRowOperationBetweenEndText\")\r\n }\r\n }\r\n },\r\n controllers: {\r\n applyFilter: ApplyFilterViewController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: DataControllerFilterRowExtender,\r\n columnsResizer: {\r\n _startResizing: function() {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n if (that.isResizing()) {\r\n var overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();\r\n if (overlayInstance) {\r\n var cellIndex = overlayInstance.$element().closest(\"td\").index();\r\n if (cellIndex === that._targetPoint.columnIndex || cellIndex === that._targetPoint.columnIndex + 1) {\r\n overlayInstance.$content().hide()\r\n }\r\n }\r\n }\r\n },\r\n _endResizing: function() {\r\n var that = this;\r\n var $cell;\r\n if (that.isResizing()) {\r\n var overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();\r\n if (overlayInstance) {\r\n $cell = overlayInstance.$element().closest(\"td\");\r\n that._columnHeadersView._updateFilterRangeOverlay({\r\n width: $cell.outerWidth(true) + CORRECT_FILTER_RANGE_OVERLAY_WIDTH\r\n });\r\n overlayInstance.$content().show()\r\n }\r\n }\r\n that.callBase.apply(that, arguments)\r\n }\r\n }\r\n },\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFilterRowExtender,\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n var filterItem = this._prepareFilterItem(items);\r\n return filterItem.concat(items)\r\n },\r\n _prepareFilterItem: function() {\r\n var that = this;\r\n var filterItem = [];\r\n if (that._isShowApplyFilterButton()) {\r\n var hintText = that.option(\"filterRow.applyFilterText\");\r\n var columns = that._columnsController.getColumns();\r\n var disabled = !columns.filter(function(column) {\r\n return void 0 !== column.bufferedFilterValue\r\n }).length;\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(APPLY_BUTTON_CLASS))\r\n };\r\n var onClickHandler = function() {\r\n that._applyFilterViewController.applyFilter()\r\n };\r\n var toolbarItem = {\r\n widget: \"dxButton\",\r\n options: {\r\n icon: \"apply-filter\",\r\n disabled: disabled,\r\n onClick: onClickHandler,\r\n hint: hintText,\r\n text: hintText,\r\n onInitialized: onInitialized\r\n },\r\n showText: \"inMenu\",\r\n name: \"applyFilterButton\",\r\n location: \"after\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 10\r\n };\r\n filterItem.push(toolbarItem)\r\n }\r\n return filterItem\r\n },\r\n _isShowApplyFilterButton: function() {\r\n var filterRowOptions = this.option(\"filterRow\");\r\n return filterRowOptions && filterRowOptions.visible && \"onClick\" === filterRowOptions.applyFilter\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._dataController = this.getController(\"data\");\r\n this._applyFilterViewController = this.getController(\"applyFilter\")\r\n },\r\n enableApplyButton: function(value) {\r\n this.setToolbarItemDisabled(\"applyFilterButton\", !value)\r\n },\r\n isVisible: function() {\r\n return this.callBase() || this._isShowApplyFilterButton()\r\n },\r\n optionChanged: function(args) {\r\n if (\"filterRow\" === args.name) {\r\n this._invalidate();\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\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.header_filter.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 _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.header_filter_core\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DATE_INTERVAL_FORMATS = {\r\n month: function(value) {\r\n return _date.default.getMonthNames()[value - 1]\r\n },\r\n quarter: function(value) {\r\n return _date.default.format(new Date(2e3, 3 * value - 1), \"quarter\")\r\n }\r\n};\r\nvar HeaderFilterController = _uiGrid_core.default.ViewController.inherit(function() {\r\n var getFormatOptions = function(value, column, currentLevel) {\r\n var groupInterval = _filtering.default.getGroupInterval(column);\r\n var result = _uiGrid_core2.default.getFormatOptionsByColumn(column, \"headerFilter\");\r\n if (groupInterval) {\r\n result.groupInterval = groupInterval[currentLevel];\r\n if (_uiGrid_core2.default.isDateType(column.dataType)) {\r\n result.format = DATE_INTERVAL_FORMATS[groupInterval[currentLevel]]\r\n } else {\r\n if (\"number\" === column.dataType) {\r\n result.getDisplayFormat = function() {\r\n var formatOptions = {\r\n format: column.format,\r\n target: \"headerFilter\"\r\n };\r\n var firstValueText = _uiGrid_core2.default.formatValue(value, formatOptions);\r\n var secondValue = value + groupInterval[currentLevel];\r\n var secondValueText = _uiGrid_core2.default.formatValue(secondValue, formatOptions);\r\n return firstValueText && secondValueText ? firstValueText + \" - \" + secondValueText : \"\"\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n return {\r\n init: function() {\r\n this._columnsController = this.getController(\"columns\");\r\n this._dataController = this.getController(\"data\");\r\n this._headerFilterView = this.getView(\"headerFilterView\")\r\n },\r\n _updateSelectedState: function(items, column) {\r\n var i = items.length;\r\n var isExclude = \"exclude\" === column.filterType;\r\n while (i--) {\r\n var item = items[i];\r\n if (\"items\" in items[i]) {\r\n this._updateSelectedState(items[i].items, column)\r\n }(0, _uiGrid_core3.updateHeaderFilterItemSelectionState)(item, _uiGrid_core2.default.getIndexByKey(items[i].value, column.filterValues, null) > -1, isExclude)\r\n }\r\n },\r\n _normalizeGroupItem: function(item, currentLevel, options) {\r\n var value;\r\n var displayValue;\r\n var path = options.path;\r\n var valueSelector = options.valueSelector;\r\n var displaySelector = options.displaySelector;\r\n var column = options.column;\r\n if (valueSelector && displaySelector) {\r\n value = valueSelector(item);\r\n displayValue = displaySelector(item)\r\n } else {\r\n value = item.key;\r\n displayValue = value\r\n }\r\n if (!(0, _type.isObject)(item)) {\r\n item = {}\r\n } else {\r\n item = (0, _extend.extend)({}, item)\r\n }\r\n path.push(value);\r\n if (1 === path.length) {\r\n item.value = path[0]\r\n } else {\r\n item.value = path.join(\"/\")\r\n }\r\n item.text = this.getHeaderItemText(displayValue, column, currentLevel, options.headerFilterOptions);\r\n return item\r\n },\r\n getHeaderItemText: function(displayValue, column, currentLevel, headerFilterOptions) {\r\n var text = _uiGrid_core2.default.formatValue(displayValue, getFormatOptions(displayValue, column, currentLevel));\r\n if (!text) {\r\n text = headerFilterOptions.texts.emptyValue\r\n }\r\n return text\r\n },\r\n _processGroupItems: function(groupItems, currentLevel, path, options) {\r\n var that = this;\r\n var displaySelector;\r\n var valueSelector;\r\n var column = options.column;\r\n var lookup = column.lookup;\r\n var level = options.level;\r\n path = path || [];\r\n currentLevel = currentLevel || 0;\r\n if (lookup) {\r\n displaySelector = (0, _data.compileGetter)(lookup.displayExpr);\r\n valueSelector = (0, _data.compileGetter)(lookup.valueExpr)\r\n }\r\n for (var i = 0; i < groupItems.length; i++) {\r\n groupItems[i] = that._normalizeGroupItem(groupItems[i], currentLevel, {\r\n column: options.column,\r\n headerFilterOptions: options.headerFilterOptions,\r\n displaySelector: displaySelector,\r\n valueSelector: valueSelector,\r\n path: path\r\n });\r\n if (\"items\" in groupItems[i]) {\r\n if (currentLevel === level || !(0, _type.isDefined)(groupItems[i].value)) {\r\n delete groupItems[i].items\r\n } else {\r\n that._processGroupItems(groupItems[i].items, currentLevel + 1, path, options)\r\n }\r\n }\r\n path.pop()\r\n }\r\n },\r\n getDataSource: function(column) {\r\n var that = this;\r\n var dataSource = that._dataController.dataSource();\r\n var group = _uiGrid_core2.default.getHeaderFilterGroupParameters(column, dataSource && dataSource.remoteOperations().grouping);\r\n var headerFilterDataSource = column.headerFilter && column.headerFilter.dataSource;\r\n var headerFilterOptions = that.option(\"headerFilter\");\r\n var isLookup = false;\r\n var options = {\r\n component: that.component\r\n };\r\n if (!dataSource) {\r\n return\r\n }\r\n if ((0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {\r\n options.dataSource = (0, _utils.normalizeDataSourceOptions)(headerFilterDataSource)\r\n } else {\r\n if (column.lookup) {\r\n isLookup = true;\r\n var lookupDataSourceOptions;\r\n if (column.lookup.items) {\r\n lookupDataSourceOptions = column.lookup.items\r\n } else {\r\n lookupDataSourceOptions = column.lookup.dataSource;\r\n if ((0, _type.isFunction)(lookupDataSourceOptions) && !_variable_wrapper.default.isWrapped(lookupDataSourceOptions)) {\r\n lookupDataSourceOptions = lookupDataSourceOptions({})\r\n }\r\n }\r\n options.dataSource = (0, _utils.normalizeDataSourceOptions)(lookupDataSourceOptions)\r\n } else {\r\n var cutoffLevel = Array.isArray(group) ? group.length - 1 : 0;\r\n that._currentColumn = column;\r\n var filter = that._dataController.getCombinedFilter();\r\n that._currentColumn = null;\r\n options.dataSource = {\r\n filter: filter,\r\n group: group,\r\n useDefaultSearch: true,\r\n load: function(options) {\r\n var d = new _deferred.Deferred;\r\n options.dataField = column.dataField || column.name;\r\n dataSource.load(options).done(function(data) {\r\n that._processGroupItems(data, null, null, {\r\n level: cutoffLevel,\r\n column: column,\r\n headerFilterOptions: headerFilterOptions\r\n });\r\n d.resolve(data)\r\n }).fail(d.reject);\r\n return d\r\n }\r\n }\r\n }\r\n }\r\n if ((0, _type.isFunction)(headerFilterDataSource)) {\r\n headerFilterDataSource.call(column, options)\r\n }\r\n var origPostProcess = options.dataSource.postProcess;\r\n options.dataSource.postProcess = function(data) {\r\n var items = data;\r\n if (isLookup) {\r\n if (0 === this.pageIndex() && !this.searchValue()) {\r\n items = items.slice(0);\r\n items.unshift(null)\r\n }\r\n that._processGroupItems(items, null, null, {\r\n level: 0,\r\n column: column,\r\n headerFilterOptions: headerFilterOptions\r\n })\r\n }\r\n items = origPostProcess && origPostProcess.call(this, items) || items;\r\n that._updateSelectedState(items, column);\r\n return items\r\n };\r\n return options.dataSource\r\n },\r\n getCurrentColumn: function() {\r\n return this._currentColumn\r\n },\r\n showHeaderFilterMenu: function(columnIndex, isGroupPanel) {\r\n var columnsController = this._columnsController;\r\n var column = (0, _extend.extend)(true, {}, this._columnsController.getColumns()[columnIndex]);\r\n if (column) {\r\n var visibleIndex = columnsController.getVisibleIndex(columnIndex);\r\n var view = isGroupPanel ? this.getView(\"headerPanel\") : this.getView(\"columnHeadersView\");\r\n var $columnElement = $columnElement || view.getColumnElements().eq(isGroupPanel ? column.groupIndex : visibleIndex);\r\n this.showHeaderFilterMenuBase({\r\n columnElement: $columnElement,\r\n column: column,\r\n applyFilter: true,\r\n apply: function() {\r\n columnsController.columnOption(columnIndex, {\r\n filterValues: this.filterValues,\r\n filterType: this.filterType\r\n })\r\n }\r\n })\r\n }\r\n },\r\n showHeaderFilterMenuBase: function(options) {\r\n var _this = this;\r\n var that = this;\r\n var column = options.column;\r\n if (column) {\r\n var groupInterval = _filtering.default.getGroupInterval(column);\r\n var dataSource = that._dataController.dataSource();\r\n var remoteFiltering = dataSource && dataSource.remoteOperations().filtering;\r\n (0, _extend.extend)(options, column, {\r\n type: groupInterval && groupInterval.length > 1 ? \"tree\" : \"list\",\r\n remoteFiltering: remoteFiltering,\r\n onShowing: function(e) {\r\n var dxResizableInstance = e.component.$overlayContent().dxResizable(\"instance\");\r\n dxResizableInstance && dxResizableInstance.option(\"onResizeEnd\", function(e) {\r\n var columnsController = that.getController(\"columns\");\r\n var headerFilterByColumn = columnsController.columnOption(options.dataField, \"headerFilter\");\r\n headerFilterByColumn = headerFilterByColumn || {};\r\n headerFilterByColumn.width = e.width;\r\n headerFilterByColumn.height = e.height;\r\n columnsController.columnOption(options.dataField, \"headerFilter\", headerFilterByColumn, true)\r\n })\r\n },\r\n onHidden: function() {\r\n return (0, _accessibility.restoreFocus)(_this)\r\n }\r\n });\r\n options.dataSource = that.getDataSource(options);\r\n if (options.isFilterBuilder) {\r\n options.dataSource.filter = null;\r\n options.alignment = \"right\"\r\n }\r\n that._headerFilterView.showHeaderFilterMenu(options.columnElement, options)\r\n }\r\n },\r\n hideHeaderFilterMenu: function() {\r\n this._headerFilterView.hideHeaderFilterMenu()\r\n }\r\n }\r\n}());\r\nvar ColumnHeadersViewHeaderFilterExtender = (0, _extend.extend)({}, _uiGrid_core3.headerFilterMixin, {\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var $headerFilterIndicator;\r\n var column = options.column;\r\n if (!column.command && (0, _uiGrid_core3.allowHeaderFiltering)(column) && that.option(\"headerFilter.visible\") && \"header\" === options.rowType) {\r\n $headerFilterIndicator = that._applyColumnState({\r\n name: \"headerFilter\",\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: that.option(\"showColumnLines\")\r\n });\r\n $headerFilterIndicator && that._subscribeToIndicatorEvent($headerFilterIndicator, column, \"headerFilter\")\r\n }\r\n that.callBase($cell, options)\r\n },\r\n _subscribeToIndicatorEvent: function($indicator, column, indicatorName) {\r\n var that = this;\r\n if (\"headerFilter\" === indicatorName) {\r\n _events_engine.default.on($indicator, _click.name, that.createAction(function(e) {\r\n e.event.stopPropagation();\r\n that.getController(\"headerFilter\").showHeaderFilterMenu(column.index, false)\r\n }))\r\n }\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n var $indicator = this.callBase($cell, column, indicatorName);\r\n $indicator && this._subscribeToIndicatorEvent($indicator, column, indicatorName)\r\n },\r\n _updateHeaderFilterIndicators: function() {\r\n if (this.option(\"headerFilter.visible\")) {\r\n this._updateIndicators(\"headerFilter\")\r\n }\r\n },\r\n _needUpdateFilterIndicators: function() {\r\n return true\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (_uiGrid_core2.default.checkChanges(optionNames, [\"filterValues\", \"filterType\"])) {\r\n if (this._needUpdateFilterIndicators()) {\r\n this._updateHeaderFilterIndicators()\r\n }\r\n return\r\n }\r\n this.callBase(e)\r\n }\r\n});\r\nvar HeaderPanelHeaderFilterExtender = (0, _extend.extend)({}, _uiGrid_core3.headerFilterMixin, {\r\n _createGroupPanelItem: function($rootElement, groupColumn) {\r\n var that = this;\r\n var $item = that.callBase.apply(that, arguments);\r\n var $headerFilterIndicator;\r\n if (!groupColumn.command && (0, _uiGrid_core3.allowHeaderFiltering)(groupColumn) && that.option(\"headerFilter.visible\")) {\r\n $headerFilterIndicator = that._applyColumnState({\r\n name: \"headerFilter\",\r\n rootElement: $item,\r\n column: {\r\n alignment: (0, _position.getDefaultAlignment)(that.option(\"rtlEnabled\")),\r\n filterValues: groupColumn.filterValues,\r\n allowHeaderFiltering: true\r\n },\r\n showColumnLines: true\r\n });\r\n $headerFilterIndicator && _events_engine.default.on($headerFilterIndicator, _click.name, that.createAction(function(e) {\r\n var event = e.event;\r\n event.stopPropagation();\r\n that.getController(\"headerFilter\").showHeaderFilterMenu(groupColumn.index, true)\r\n }))\r\n }\r\n return $item\r\n }\r\n});\r\n\r\nfunction invertFilterExpression(filter) {\r\n return [\"!\", filter]\r\n}\r\nvar DataControllerFilterRowExtender = {\r\n skipCalculateColumnFilters: function() {\r\n return false\r\n },\r\n _calculateAdditionalFilter: function() {\r\n if (this.skipCalculateColumnFilters()) {\r\n return this.callBase()\r\n }\r\n var that = this;\r\n var filters = [that.callBase()];\r\n var columns = that._columnsController.getVisibleColumns(null, true);\r\n var headerFilterController = that.getController(\"headerFilter\");\r\n var currentColumn = headerFilterController.getCurrentColumn();\r\n (0, _iterator.each)(columns, function(_, column) {\r\n var filter;\r\n if (currentColumn && currentColumn.index === column.index) {\r\n return\r\n }\r\n if ((0, _uiGrid_core3.allowHeaderFiltering)(column) && column.calculateFilterExpression && Array.isArray(column.filterValues) && column.filterValues.length) {\r\n var filterValues = [];\r\n (0, _iterator.each)(column.filterValues, function(_, filterValue) {\r\n if (Array.isArray(filterValue)) {\r\n filter = filterValue\r\n } else {\r\n if (column.deserializeValue && !_uiGrid_core2.default.isDateType(column.dataType) && \"number\" !== column.dataType) {\r\n filterValue = column.deserializeValue(filterValue)\r\n }\r\n filter = column.createFilterExpression(filterValue, \"=\", \"headerFilter\")\r\n }\r\n if (filter) {\r\n filter.columnIndex = column.index\r\n }\r\n filterValues.push(filter)\r\n });\r\n filterValues = _uiGrid_core2.default.combineFilters(filterValues, \"or\");\r\n filters.push(\"exclude\" === column.filterType ? [\"!\", filterValues] : filterValues)\r\n }\r\n });\r\n return _uiGrid_core2.default.combineFilters(filters)\r\n }\r\n};\r\nvar _default = {\r\n invertFilterExpression: invertFilterExpression,\r\n defaultOptions: function() {\r\n return {\r\n headerFilter: {\r\n visible: false,\r\n width: 252,\r\n height: 325,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n texts: {\r\n emptyValue: _message.default.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n ok: _message.default.format(\"dxDataGrid-headerFilterOK\"),\r\n cancel: _message.default.format(\"dxDataGrid-headerFilterCancel\")\r\n }\r\n }\r\n }\r\n },\r\n controllers: {\r\n headerFilter: HeaderFilterController\r\n },\r\n views: {\r\n headerFilterView: _uiGrid_core3.HeaderFilterView\r\n },\r\n extenders: {\r\n controllers: {\r\n data: DataControllerFilterRowExtender\r\n },\r\n views: {\r\n columnHeadersView: ColumnHeadersViewHeaderFilterExtender,\r\n headerPanel: HeaderPanelHeaderFilterExtender\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.header_filter_core.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.headerFilterMixin = exports.allowHeaderFiltering = exports.HeaderFilterView = void 0;\r\nexports.updateHeaderFilterItemSelectionState = updateHeaderFilterItemSelectionState;\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 _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _list = _interopRequireDefault(require(\"../list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar HEADER_FILTER_CLASS = \"dx-header-filter\";\r\nvar HEADER_FILTER_MENU_CLASS = \"dx-header-filter-menu\";\r\nvar DEFAULT_SEARCH_EXPRESSION = \"text\";\r\n\r\nfunction resetChildrenItemSelection(items) {\r\n items = items || [];\r\n for (var i = 0; i < items.length; i++) {\r\n items[i].selected = false;\r\n resetChildrenItemSelection(items[i].items)\r\n }\r\n}\r\n\r\nfunction updateSelectAllState(e, filterValues) {\r\n if (e.component.option(\"searchValue\")) {\r\n return\r\n }\r\n var selectAllCheckBox = (0, _renderer.default)(e.element).find(\".dx-list-select-all-checkbox\").data(\"dxCheckBox\");\r\n if (selectAllCheckBox && filterValues && filterValues.length) {\r\n selectAllCheckBox.option(\"value\", void 0)\r\n }\r\n}\r\n\r\nfunction isSearchEnabled(that, options) {\r\n var headerFilter = options.headerFilter;\r\n if (headerFilter && (0, _type.isDefined)(headerFilter.allowSearch)) {\r\n return headerFilter.allowSearch\r\n }\r\n return that.option(\"headerFilter.allowSearch\")\r\n}\r\n\r\nfunction updateHeaderFilterItemSelectionState(item, filterValuesMatch, isExcludeFilter) {\r\n if (filterValuesMatch ^ isExcludeFilter) {\r\n item.selected = true;\r\n if (isExcludeFilter && item.items) {\r\n for (var j = 0; j < item.items.length; j++) {\r\n if (!item.items[j].selected) {\r\n item.selected = void 0;\r\n break\r\n }\r\n }\r\n }\r\n } else {\r\n if (isExcludeFilter || item.selected) {\r\n item.selected = false;\r\n resetChildrenItemSelection(item.items)\r\n }\r\n }\r\n}\r\nvar HeaderFilterView = _uiGrid_core.default.View.inherit({\r\n getPopupContainer: function() {\r\n return this._popupContainer\r\n },\r\n getListContainer: function() {\r\n return this._listContainer\r\n },\r\n applyHeaderFilter: function(options) {\r\n var that = this;\r\n var list = that.getListContainer();\r\n var searchValue = list.option(\"searchValue\");\r\n var isSelectAll = !searchValue && !options.isFilterBuilder && list.$element().find(\".dx-checkbox\").eq(0).hasClass(\"dx-checkbox-checked\");\r\n var filterValues = [];\r\n var fillSelectedItemKeys = function fillSelectedItemKeys(filterValues, items, isExclude) {\r\n (0, _iterator.each)(items, function(_, item) {\r\n if (void 0 !== item.selected && !!item.selected ^ isExclude) {\r\n var node = list._getNode(item);\r\n var hasChildren = list._hasChildren(node);\r\n var hasChildrenWithSelection = hasChildren && item.items && item.items.some(function(item) {\r\n return item.selected\r\n });\r\n if (!searchValue || !hasChildrenWithSelection) {\r\n filterValues.push(item.value);\r\n return\r\n }\r\n }\r\n if (item.items && item.items.length) {\r\n fillSelectedItemKeys(filterValues, item.items, isExclude)\r\n }\r\n })\r\n };\r\n if (!isSelectAll) {\r\n if (\"tree\" === options.type) {\r\n if (options.filterType) {\r\n options.filterType = \"include\"\r\n }\r\n fillSelectedItemKeys(filterValues, list.option(\"items\"), false);\r\n options.filterValues = filterValues\r\n }\r\n } else {\r\n if (\"tree\" === options.type) {\r\n options.filterType = \"exclude\"\r\n }\r\n if (Array.isArray(options.filterValues)) {\r\n options.filterValues = []\r\n }\r\n }\r\n if (options.filterValues && !options.filterValues.length) {\r\n options.filterValues = null\r\n }\r\n options.apply();\r\n that.hideHeaderFilterMenu()\r\n },\r\n showHeaderFilterMenu: function($columnElement, options) {\r\n var that = this;\r\n if (options) {\r\n that._initializePopupContainer(options);\r\n var popupContainer = that.getPopupContainer();\r\n that.hideHeaderFilterMenu();\r\n that.updatePopup($columnElement, options);\r\n popupContainer.show()\r\n }\r\n },\r\n hideHeaderFilterMenu: function() {\r\n var headerFilterMenu = this.getPopupContainer();\r\n headerFilterMenu && headerFilterMenu.hide()\r\n },\r\n updatePopup: function($element, options) {\r\n var that = this;\r\n var showColumnLines = this.option(\"showColumnLines\");\r\n var alignment = \"right\" === options.alignment ^ !showColumnLines ? \"left\" : \"right\";\r\n if (that._popupContainer) {\r\n that._cleanPopupContent();\r\n that._popupContainer.option(\"position\", {\r\n my: alignment + \" top\",\r\n at: alignment + \" bottom\",\r\n of: $element,\r\n collision: \"flip fit\"\r\n })\r\n }\r\n },\r\n _getSearchExpr: function(options) {\r\n var lookup = options.lookup;\r\n var useDefaultSearchExpr = options.useDefaultSearchExpr;\r\n var headerFilterDataSource = options.headerFilter && options.headerFilter.dataSource;\r\n if (useDefaultSearchExpr || (0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {\r\n return DEFAULT_SEARCH_EXPRESSION\r\n }\r\n if (lookup) {\r\n return lookup.displayExpr || \"this\"\r\n }\r\n if (options.dataSource) {\r\n var group = options.dataSource.group;\r\n if (Array.isArray(group) && group.length > 0) {\r\n return group[0].selector\r\n } else {\r\n if ((0, _type.isFunction)(group) && !options.remoteFiltering) {\r\n return group\r\n }\r\n }\r\n }\r\n return options.dataField || options.selector\r\n },\r\n _cleanPopupContent: function() {\r\n this._popupContainer && this._popupContainer.$content().empty()\r\n },\r\n _initializePopupContainer: function(options) {\r\n var that = this;\r\n var $element = that.element();\r\n var headerFilterOptions = that.option(\"headerFilter\");\r\n var width = options.headerFilter && options.headerFilter.width || headerFilterOptions && headerFilterOptions.width;\r\n var height = options.headerFilter && options.headerFilter.height || headerFilterOptions && headerFilterOptions.height;\r\n var dxPopupOptions = {\r\n width: width,\r\n height: height,\r\n visible: false,\r\n shading: false,\r\n showTitle: false,\r\n showCloseButton: false,\r\n closeOnTargetScroll: false,\r\n dragEnabled: false,\r\n closeOnOutsideClick: true,\r\n focusStateEnabled: false,\r\n toolbarItems: [{\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: headerFilterOptions.texts.ok,\r\n onClick: function() {\r\n that.applyHeaderFilter(options)\r\n }\r\n }\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: headerFilterOptions.texts.cancel,\r\n onClick: function() {\r\n that.hideHeaderFilterMenu()\r\n }\r\n }\r\n }],\r\n resizeEnabled: true,\r\n onShowing: function(e) {\r\n e.component.$content().parent().addClass(\"dx-dropdowneditor-overlay\");\r\n that._initializeListContainer(options);\r\n options.onShowing && options.onShowing(e)\r\n },\r\n onShown: function() {\r\n that.getListContainer().focus()\r\n },\r\n onHidden: options.onHidden,\r\n onInitialized: function(e) {\r\n var component = e.component;\r\n component.option(\"animation\", component._getDefaultOptions().animation)\r\n }\r\n };\r\n if (!(0, _type.isDefined)(that._popupContainer)) {\r\n that._popupContainer = that._createComponent($element, _popup.default, dxPopupOptions)\r\n } else {\r\n that._popupContainer.option(dxPopupOptions)\r\n }\r\n },\r\n _initializeListContainer: function(options) {\r\n var that = this;\r\n var $content = that._popupContainer.$content();\r\n var widgetOptions = {\r\n searchEnabled: isSearchEnabled(that, options),\r\n searchTimeout: that.option(\"headerFilter.searchTimeout\"),\r\n searchMode: options.headerFilter && options.headerFilter.searchMode || \"\",\r\n dataSource: options.dataSource,\r\n onContentReady: function() {\r\n that.renderCompleted.fire()\r\n },\r\n itemTemplate: function(data, _, element) {\r\n var $element = (0, _renderer.default)(element);\r\n if (options.encodeHtml) {\r\n return $element.text(data.text)\r\n }\r\n return $element.html(data.text)\r\n }\r\n };\r\n\r\n function onOptionChanged(e) {\r\n if (\"searchValue\" === e.fullName && !options.isFilterBuilder && false !== that.option(\"headerFilter.hideSelectAllOnSearch\")) {\r\n if (\"tree\" === options.type) {\r\n e.component.option(\"showCheckBoxesMode\", e.value ? \"normal\" : \"selectAll\")\r\n } else {\r\n e.component.option(\"selectionMode\", e.value ? \"multiple\" : \"all\")\r\n }\r\n }\r\n }\r\n if (\"tree\" === options.type) {\r\n that._listContainer = that._createComponent((0, _renderer.default)(\"
\").appendTo($content), _tree_view.default, (0, _extend.extend)(widgetOptions, {\r\n showCheckBoxesMode: options.isFilterBuilder ? \"normal\" : \"selectAll\",\r\n onOptionChanged: onOptionChanged,\r\n keyExpr: \"id\"\r\n }))\r\n } else {\r\n that._listContainer = that._createComponent((0, _renderer.default)(\"
\").appendTo($content), _list.default, (0, _extend.extend)(widgetOptions, {\r\n searchExpr: that._getSearchExpr(options),\r\n pageLoadMode: \"scrollBottom\",\r\n showSelectionControls: true,\r\n selectionMode: options.isFilterBuilder ? \"multiple\" : \"all\",\r\n onOptionChanged: onOptionChanged,\r\n onSelectionChanged: function(e) {\r\n var items = e.component.option(\"items\");\r\n var selectedItems = e.component.option(\"selectedItems\");\r\n if (!e.component._selectedItemsUpdating && !e.component.option(\"searchValue\") && !options.isFilterBuilder) {\r\n var filterValues = options.filterValues || [];\r\n var isExclude = \"exclude\" === options.filterType;\r\n if (0 === selectedItems.length && items.length && (filterValues.length <= 1 || isExclude && filterValues.length === items.length - 1)) {\r\n options.filterType = \"include\";\r\n options.filterValues = []\r\n } else {\r\n if (selectedItems.length === items.length) {\r\n options.filterType = \"exclude\";\r\n options.filterValues = []\r\n }\r\n }\r\n }(0, _iterator.each)(items, function(index, item) {\r\n var selected = _uiGrid_core2.default.getIndexByKey(item, selectedItems, null) >= 0;\r\n var oldSelected = !!item.selected;\r\n if (oldSelected !== selected) {\r\n item.selected = selected;\r\n options.filterValues = options.filterValues || [];\r\n var filterValueIndex = _uiGrid_core2.default.getIndexByKey(item.value, options.filterValues, null);\r\n if (filterValueIndex >= 0) {\r\n options.filterValues.splice(filterValueIndex, 1)\r\n }\r\n if (selected ^ \"exclude\" === options.filterType) {\r\n options.filterValues.push(item.value)\r\n }\r\n }\r\n });\r\n updateSelectAllState(e, options.filterValues)\r\n },\r\n onContentReady: function(e) {\r\n var component = e.component;\r\n var items = component.option(\"items\");\r\n var selectedItems = [];\r\n (0, _iterator.each)(items, function() {\r\n if (this.selected) {\r\n selectedItems.push(this)\r\n }\r\n });\r\n component._selectedItemsUpdating = true;\r\n component.option(\"selectedItems\", selectedItems);\r\n component._selectedItemsUpdating = false;\r\n updateSelectAllState(e, options.filterValues)\r\n }\r\n }))\r\n }\r\n },\r\n _renderCore: function() {\r\n this.element().addClass(HEADER_FILTER_MENU_CLASS)\r\n }\r\n});\r\nexports.HeaderFilterView = HeaderFilterView;\r\nvar allowHeaderFiltering = function(column) {\r\n return (0, _type.isDefined)(column.allowHeaderFiltering) ? column.allowHeaderFiltering : column.allowFiltering\r\n};\r\nexports.allowHeaderFiltering = allowHeaderFiltering;\r\nvar headerFilterMixin = {\r\n _applyColumnState: function(options) {\r\n var $headerFilterIndicator;\r\n var rootElement = options.rootElement;\r\n var column = options.column;\r\n if (\"headerFilter\" === options.name) {\r\n rootElement.find(\".\" + HEADER_FILTER_CLASS).remove();\r\n if (allowHeaderFiltering(column)) {\r\n $headerFilterIndicator = this.callBase(options).toggleClass(\"dx-header-filter-empty\", this._isHeaderFilterEmpty(column));\r\n if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n $headerFilterIndicator.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n }\r\n }\r\n return $headerFilterIndicator\r\n }\r\n return this.callBase(options)\r\n },\r\n _isHeaderFilterEmpty: function(column) {\r\n return !column.filterValues || !column.filterValues.length\r\n },\r\n _getIndicatorClassName: function(name) {\r\n if (\"headerFilter\" === name) {\r\n return HEADER_FILTER_CLASS\r\n }\r\n return this.callBase(name)\r\n },\r\n _renderIndicator: function(options) {\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n if (\"headerFilter\" === options.name) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if ($container.children().length && (!rtlEnabled && \"right\" === options.columnAlignment || rtlEnabled && \"left\" === options.columnAlignment)) {\r\n $container.prepend($indicator);\r\n return\r\n }\r\n }\r\n this.callBase(options)\r\n },\r\n optionChanged: function(args) {\r\n if (\"headerFilter\" === args.name) {\r\n var requireReady = \"columnHeadersView\" === this.name;\r\n this._invalidate(requireReady, requireReady);\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n};\r\nexports.headerFilterMixin = headerFilterMixin;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_sync.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 _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _utils = require(\"../filter_builder/utils\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.filter_custom_operations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar FILTER_ROW_OPERATIONS = [\"=\", \"<>\", \"<\", \"<=\", \">\", \">=\", \"notcontains\", \"contains\", \"startswith\", \"endswith\", \"between\"];\r\nvar FILTER_TYPES_INCLUDE = \"include\";\r\nvar FILTER_TYPES_EXCLUDE = \"exclude\";\r\n\r\nfunction getColumnIdentifier(column) {\r\n return column.dataField || column.name\r\n}\r\n\r\nfunction checkForErrors(columns) {\r\n columns.forEach(function(column) {\r\n var identifier = getColumnIdentifier(column);\r\n if (!(0, _type.isDefined)(identifier) && column.allowFiltering) {\r\n throw new _ui.default.Error(\"E1049\", column.caption)\r\n }\r\n })\r\n}\r\nvar FilterSyncController = _uiGrid_core.default.Controller.inherit(function() {\r\n var getEmptyFilterValues = function() {\r\n return {\r\n filterType: FILTER_TYPES_INCLUDE,\r\n filterValues: void 0\r\n }\r\n };\r\n var canSyncHeaderFilterWithFilterRow = function(column) {\r\n return !_filtering.default.getGroupInterval(column) && !(column.headerFilter && column.headerFilter.dataSource)\r\n };\r\n var getHeaderFilterFromCondition = function(headerFilterCondition, column) {\r\n if (!headerFilterCondition) {\r\n return getEmptyFilterValues()\r\n }\r\n var filterType;\r\n var selectedFilterOperation = headerFilterCondition[1];\r\n var value = headerFilterCondition[2];\r\n var hasArrayValue = Array.isArray(value);\r\n if (!hasArrayValue) {\r\n if (!canSyncHeaderFilterWithFilterRow(column)) {\r\n return getEmptyFilterValues()\r\n }\r\n }\r\n switch (selectedFilterOperation) {\r\n case \"anyof\":\r\n case \"=\":\r\n filterType = FILTER_TYPES_INCLUDE;\r\n break;\r\n case \"noneof\":\r\n case \"<>\":\r\n filterType = FILTER_TYPES_EXCLUDE;\r\n break;\r\n default:\r\n return getEmptyFilterValues()\r\n }\r\n return {\r\n filterType: filterType,\r\n filterValues: hasArrayValue ? value : [value]\r\n }\r\n };\r\n var getConditionFromFilterRow = function(column) {\r\n var value = column.filterValue;\r\n if ((0, _type.isDefined)(value)) {\r\n var operation = column.selectedFilterOperation || column.defaultFilterOperation || (0, _utils.getDefaultOperation)(column);\r\n var filter = [getColumnIdentifier(column), operation, column.filterValue];\r\n return filter\r\n } else {\r\n return null\r\n }\r\n };\r\n var getConditionFromHeaderFilter = function(column) {\r\n var selectedOperation;\r\n var value;\r\n var filterValues = column.filterValues;\r\n if (!filterValues) {\r\n return null\r\n }\r\n if (canSyncHeaderFilterWithFilterRow(column) && 1 === column.filterValues.length && !Array.isArray(filterValues[0])) {\r\n column.filterType === FILTER_TYPES_EXCLUDE ? selectedOperation = \"<>\" : selectedOperation = \"=\";\r\n value = filterValues[0]\r\n } else {\r\n column.filterType === FILTER_TYPES_EXCLUDE ? selectedOperation = \"noneof\" : selectedOperation = \"anyof\";\r\n value = filterValues\r\n }\r\n return [getColumnIdentifier(column), selectedOperation, value]\r\n };\r\n var updateHeaderFilterCondition = function(columnsController, column, headerFilterCondition) {\r\n var headerFilter = getHeaderFilterFromCondition(headerFilterCondition, column);\r\n columnsController.columnOption(getColumnIdentifier(column), headerFilter)\r\n };\r\n var updateFilterRowCondition = function(columnsController, column, condition) {\r\n var filterRowOptions;\r\n var selectedFilterOperation = condition && condition[1];\r\n var filterOperations = column.filterOperations || column.defaultFilterOperations;\r\n if ((!filterOperations || filterOperations.indexOf(selectedFilterOperation) >= 0 || selectedFilterOperation === column.defaultFilterOperation) && FILTER_ROW_OPERATIONS.indexOf(selectedFilterOperation) >= 0) {\r\n if (selectedFilterOperation === column.defaultFilterOperation && !(0, _type.isDefined)(column.selectedFilterOperation)) {\r\n selectedFilterOperation = column.selectedFilterOperation\r\n }\r\n filterRowOptions = {\r\n filterValue: condition[2],\r\n selectedFilterOperation: selectedFilterOperation\r\n }\r\n } else {\r\n filterRowOptions = {\r\n filterValue: void 0,\r\n selectedFilterOperation: void 0\r\n }\r\n }\r\n columnsController.columnOption(getColumnIdentifier(column), filterRowOptions)\r\n };\r\n return {\r\n syncFilterValue: function() {\r\n var that = this;\r\n var columnsController = that.getController(\"columns\");\r\n var columns = columnsController.getFilteringColumns();\r\n this._skipSyncColumnOptions = true;\r\n columns.forEach(function(column) {\r\n var filterConditions = (0, _utils.getMatchedConditions)(that.option(\"filterValue\"), getColumnIdentifier(column));\r\n if (1 === filterConditions.length) {\r\n var filterCondition = filterConditions[0];\r\n updateHeaderFilterCondition(columnsController, column, filterCondition);\r\n updateFilterRowCondition(columnsController, column, filterCondition)\r\n } else {\r\n (0, _type.isDefined)(column.filterValues) && updateHeaderFilterCondition(columnsController, column);\r\n (0, _type.isDefined)(column.filterValue) && updateFilterRowCondition(columnsController, column)\r\n }\r\n });\r\n this._skipSyncColumnOptions = false\r\n },\r\n _initSync: function() {\r\n var columns = this.getController(\"columns\").getColumns();\r\n var dataController = this.getController(\"data\");\r\n var pageIndex = dataController.pageIndex();\r\n checkForErrors(columns);\r\n if (!this.option(\"filterValue\")) {\r\n var filteringColumns = this.getController(\"columns\").getFilteringColumns();\r\n var filterValue = this.getFilterValueFromColumns(filteringColumns);\r\n this.option(\"filterValue\", filterValue)\r\n }\r\n this.syncFilterValue();\r\n dataController.pageIndex(pageIndex)\r\n },\r\n init: function() {\r\n var _this = this;\r\n var dataController = this.getController(\"data\");\r\n if (dataController.isFilterSyncActive()) {\r\n if (this.getController(\"columns\").isAllDataTypesDefined()) {\r\n this._initSync()\r\n } else {\r\n dataController.dataSourceChanged.add(function() {\r\n return _this._initSync()\r\n })\r\n }\r\n }\r\n },\r\n _getSyncFilterRow: function(filterValue, column) {\r\n var filter = getConditionFromFilterRow(column);\r\n if ((0, _type.isDefined)(filter)) {\r\n return (0, _utils.syncFilters)(filterValue, filter)\r\n } else {\r\n return (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))\r\n }\r\n },\r\n _getSyncHeaderFilter: function(filterValue, column) {\r\n var filter = getConditionFromHeaderFilter(column);\r\n if (filter) {\r\n return (0, _utils.syncFilters)(filterValue, filter)\r\n } else {\r\n return (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))\r\n }\r\n },\r\n getFilterValueFromColumns: function(columns) {\r\n if (!this.getController(\"data\").isFilterSyncActive()) {\r\n return null\r\n }\r\n var filterValue = [\"and\"];\r\n columns && columns.forEach(function(column) {\r\n var headerFilter = getConditionFromHeaderFilter(column);\r\n var filterRow = getConditionFromFilterRow(column);\r\n headerFilter && (0, _utils.addItem)(headerFilter, filterValue);\r\n filterRow && (0, _utils.addItem)(filterRow, filterValue)\r\n });\r\n return (0, _utils.getNormalizedFilter)(filterValue)\r\n },\r\n syncFilterRow: function(column, value) {\r\n this.option(\"filterValue\", this._getSyncFilterRow(this.option(\"filterValue\"), column))\r\n },\r\n syncHeaderFilter: function(column) {\r\n this.option(\"filterValue\", this._getSyncHeaderFilter(this.option(\"filterValue\"), column))\r\n },\r\n getCustomFilterOperations: function() {\r\n var filterBuilderCustomOperations = this.option(\"filterBuilder.customOperations\") || [];\r\n return [(0, _uiGrid_core3.anyOf)(this.component), (0, _uiGrid_core3.noneOf)(this.component)].concat(filterBuilderCustomOperations)\r\n },\r\n publicMethods: function() {\r\n return [\"getCustomFilterOperations\"]\r\n }\r\n }\r\n}());\r\nvar DataControllerFilterSyncExtender = {\r\n isFilterSyncActive: function() {\r\n var filterSyncEnabledValue = this.option(\"filterSyncEnabled\");\r\n return \"auto\" === filterSyncEnabledValue ? this.option(\"filterPanel.visible\") : filterSyncEnabledValue\r\n },\r\n skipCalculateColumnFilters: function() {\r\n return (0, _type.isDefined)(this.option(\"filterValue\")) && this.isFilterSyncActive()\r\n },\r\n _calculateAdditionalFilter: function() {\r\n var that = this;\r\n if (false === that.option(\"filterPanel.filterEnabled\")) {\r\n return that.callBase()\r\n }\r\n var filters = [that.callBase()];\r\n var columns = that.getController(\"columns\").getFilteringColumns();\r\n var filterValue = that.option(\"filterValue\");\r\n if (that.isFilterSyncActive()) {\r\n var currentColumn = that.getController(\"headerFilter\").getCurrentColumn();\r\n if (currentColumn && filterValue) {\r\n filterValue = (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(currentColumn))\r\n }\r\n }\r\n var customOperations = that.getController(\"filterSync\").getCustomFilterOperations();\r\n var calculatedFilterValue = (0, _utils.getFilterExpression)(filterValue, columns, customOperations, \"filterBuilder\");\r\n if (calculatedFilterValue) {\r\n filters.push(calculatedFilterValue)\r\n }\r\n return _uiGrid_core2.default.combineFilters(filters)\r\n },\r\n _parseColumnPropertyName: function(fullName) {\r\n var matched = fullName.match(/.*\\.(.*)/);\r\n return matched[1]\r\n },\r\n clearFilter: function(filterName) {\r\n this.component.beginUpdate();\r\n if (arguments.length > 0) {\r\n if (\"filterValue\" === filterName) {\r\n this.option(\"filterValue\", null)\r\n }\r\n this.callBase(filterName)\r\n } else {\r\n this.option(\"filterValue\", null);\r\n this.callBase()\r\n }\r\n this.component.endUpdate()\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterValue\":\r\n this._applyFilter();\r\n this.isFilterSyncActive() && this.getController(\"filterSync\").syncFilterValue();\r\n args.handled = true;\r\n break;\r\n case \"filterSyncEnabled\":\r\n args.handled = true;\r\n break;\r\n case \"columns\":\r\n if (this.isFilterSyncActive()) {\r\n var column = this.getController(\"columns\").getColumnByPath(args.fullName);\r\n var filterSyncController = this.getController(\"filterSync\");\r\n if (column && !filterSyncController._skipSyncColumnOptions) {\r\n var propertyName = this._parseColumnPropertyName(args.fullName);\r\n filterSyncController._skipSyncColumnOptions = true;\r\n if (\"filterType\" === propertyName) {\r\n if (FILTER_TYPES_EXCLUDE === args.value || FILTER_TYPES_EXCLUDE === args.previousValue) {\r\n filterSyncController.syncHeaderFilter(column)\r\n }\r\n } else {\r\n if (\"filterValues\" === propertyName) {\r\n filterSyncController.syncHeaderFilter(column)\r\n } else {\r\n if ([\"filterValue\", \"selectedFilterOperation\"].indexOf(propertyName) > -1) {\r\n filterSyncController.syncFilterRow(column, column.filterValue)\r\n }\r\n }\r\n }\r\n filterSyncController._skipSyncColumnOptions = false\r\n }\r\n }\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n};\r\nvar ColumnHeadersViewFilterSyncExtender = {\r\n _isHeaderFilterEmpty: function(column) {\r\n if (this.getController(\"data\").isFilterSyncActive()) {\r\n return !(0, _utils.filterHasField)(this.option(\"filterValue\"), getColumnIdentifier(column))\r\n }\r\n return this.callBase(column)\r\n },\r\n _needUpdateFilterIndicators: function() {\r\n return !this.getController(\"data\").isFilterSyncActive()\r\n },\r\n optionChanged: function(args) {\r\n if (\"filterValue\" === args.name) {\r\n this._updateHeaderFilterIndicators()\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n};\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterValue: null,\r\n filterSyncEnabled: \"auto\"\r\n }\r\n },\r\n controllers: {\r\n filterSync: FilterSyncController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: DataControllerFilterSyncExtender\r\n },\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFilterSyncExtender\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.filter_builder.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 _extend = require(\"../../core/utils/extend\");\r\nvar _filter_builder = _interopRequireDefault(require(\"./../filter_builder\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _scroll_view = _interopRequireDefault(require(\"./../scroll_view\"));\r\nvar _popup = _interopRequireDefault(require(\"./../popup\"));\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar FilterBuilderView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n this._updatePopupOptions()\r\n },\r\n _updatePopupOptions: function() {\r\n if (this.option(\"filterBuilderPopup.visible\")) {\r\n this._initPopup()\r\n } else {\r\n if (this._filterBuilderPopup) {\r\n this._filterBuilderPopup.hide()\r\n }\r\n }\r\n },\r\n _disposePopup: function() {\r\n if (this._filterBuilderPopup) {\r\n this._filterBuilderPopup.dispose();\r\n this._filterBuilderPopup = void 0\r\n }\r\n if (this._filterBuilder) {\r\n this._filterBuilder.dispose();\r\n this._filterBuilder = void 0\r\n }\r\n },\r\n _initPopup: function() {\r\n var that = this;\r\n that._disposePopup();\r\n that._filterBuilderPopup = that._createComponent(that.element(), _popup.default, (0, _extend.extend)({\r\n title: _message.default.format(\"dxDataGrid-filterBuilderPopupTitle\"),\r\n contentTemplate: function($contentElement) {\r\n return that._getPopupContentTemplate($contentElement)\r\n },\r\n onOptionChanged: function(args) {\r\n if (\"visible\" === args.name) {\r\n that.option(\"filterBuilderPopup.visible\", args.value)\r\n }\r\n },\r\n toolbarItems: that._getPopupToolbarItems()\r\n }, that.option(\"filterBuilderPopup\"), {\r\n onHidden: function(e) {\r\n (0, _accessibility.restoreFocus)(that);\r\n that._disposePopup()\r\n }\r\n }))\r\n },\r\n _getPopupContentTemplate: function(contentElement) {\r\n var $contentElement = (0, _renderer.default)(contentElement);\r\n var $filterBuilderContainer = (0, _renderer.default)(\"
\").appendTo((0, _renderer.default)(contentElement));\r\n this._filterBuilder = this._createComponent($filterBuilderContainer, _filter_builder.default, (0, _extend.extend)({\r\n value: this.option(\"filterValue\"),\r\n fields: this.getController(\"columns\").getFilteringColumns()\r\n }, this.option(\"filterBuilder\"), {\r\n customOperations: this.getController(\"filterSync\").getCustomFilterOperations()\r\n }));\r\n this._createComponent($contentElement, _scroll_view.default, {\r\n direction: \"both\"\r\n })\r\n },\r\n _getPopupToolbarItems: function() {\r\n var that = this;\r\n return [{\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: _message.default.format(\"OK\"),\r\n onClick: function(e) {\r\n var filter = that._filterBuilder.option(\"value\");\r\n that.option(\"filterValue\", filter);\r\n that._filterBuilderPopup.hide()\r\n }\r\n }\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: _message.default.format(\"Cancel\"),\r\n onClick: function(e) {\r\n that._filterBuilderPopup.hide()\r\n }\r\n }\r\n }]\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterBuilder\":\r\n case \"filterBuilderPopup\":\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});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterBuilder: {\r\n groupOperationDescriptions: {\r\n and: _message.default.format(\"dxFilterBuilder-and\"),\r\n or: _message.default.format(\"dxFilterBuilder-or\"),\r\n notAnd: _message.default.format(\"dxFilterBuilder-notAnd\"),\r\n notOr: _message.default.format(\"dxFilterBuilder-notOr\")\r\n },\r\n filterOperationDescriptions: {\r\n between: _message.default.format(\"dxFilterBuilder-filterOperationBetween\"),\r\n equal: _message.default.format(\"dxFilterBuilder-filterOperationEquals\"),\r\n notEqual: _message.default.format(\"dxFilterBuilder-filterOperationNotEquals\"),\r\n lessThan: _message.default.format(\"dxFilterBuilder-filterOperationLess\"),\r\n lessThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationLessOrEquals\"),\r\n greaterThan: _message.default.format(\"dxFilterBuilder-filterOperationGreater\"),\r\n greaterThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationGreaterOrEquals\"),\r\n startsWith: _message.default.format(\"dxFilterBuilder-filterOperationStartsWith\"),\r\n contains: _message.default.format(\"dxFilterBuilder-filterOperationContains\"),\r\n notContains: _message.default.format(\"dxFilterBuilder-filterOperationNotContains\"),\r\n endsWith: _message.default.format(\"dxFilterBuilder-filterOperationEndsWith\"),\r\n isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n }\r\n },\r\n filterBuilderPopup: {}\r\n }\r\n },\r\n views: {\r\n filterBuilderView: FilterBuilderView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_panel.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 _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _utils = require(\"../filter_builder/utils\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _uiGrid_core3 = 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 FILTER_PANEL_CLASS = \"filter-panel\";\r\nvar FILTER_PANEL_TEXT_CLASS = FILTER_PANEL_CLASS + \"-text\";\r\nvar FILTER_PANEL_CHECKBOX_CLASS = FILTER_PANEL_CLASS + \"-checkbox\";\r\nvar FILTER_PANEL_CLEAR_FILTER_CLASS = FILTER_PANEL_CLASS + \"-clear-filter\";\r\nvar FILTER_PANEL_LEFT_CONTAINER = FILTER_PANEL_CLASS + \"-left\";\r\nvar FILTER_PANEL_TARGET = \"filterPanel\";\r\nvar FilterPanelView = _uiGrid_core.default.View.inherit({\r\n isVisible: function() {\r\n return this.option(\"filterPanel.visible\") && this.getController(\"data\").dataSource()\r\n },\r\n init: function() {\r\n var _this = this;\r\n this.getController(\"data\").dataSourceChanged.add(function() {\r\n return _this.render()\r\n })\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element();\r\n $element.empty().addClass(that.addWidgetPrefix(FILTER_PANEL_CLASS));\r\n var $leftContainer = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FILTER_PANEL_LEFT_CONTAINER)).appendTo($element);\r\n if (that.option(\"filterValue\") || that._filterValueBuffer) {\r\n $leftContainer.append(that._getCheckElement()).append(that._getFilterElement()).append(that._getTextElement());\r\n $element.append(that._getRemoveButtonElement())\r\n } else {\r\n $leftContainer.append(that._getFilterElement()).append(that._getTextElement())\r\n }\r\n },\r\n _getCheckElement: function() {\r\n var that = this;\r\n var $element = (0, _renderer.default)(\"
\").addClass(this.addWidgetPrefix(FILTER_PANEL_CHECKBOX_CLASS));\r\n that._createComponent($element, _check_box.default, {\r\n value: that.option(\"filterPanel.filterEnabled\"),\r\n onValueChanged: function(e) {\r\n that.option(\"filterPanel.filterEnabled\", e.value)\r\n }\r\n });\r\n $element.attr(\"title\", this.option(\"filterPanel.texts.filterEnabledHint\"));\r\n return $element\r\n },\r\n _getFilterElement: function() {\r\n var that = this;\r\n var $element = (0, _renderer.default)(\"
\").addClass(\"dx-icon-filter\");\r\n _events_engine.default.on($element, \"click\", function() {\r\n return that._showFilterBuilder()\r\n });\r\n (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", that, $element, void 0, function() {\r\n return that._showFilterBuilder()\r\n });\r\n that._addTabIndexToElement($element);\r\n return $element\r\n },\r\n _getTextElement: function() {\r\n var that = this;\r\n var $textElement = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FILTER_PANEL_TEXT_CLASS));\r\n var filterText;\r\n var filterValue = that.option(\"filterValue\");\r\n if (filterValue) {\r\n (0, _deferred.when)(that.getFilterText(filterValue, that.getController(\"filterSync\").getCustomFilterOperations())).done(function(filterText) {\r\n var customizeText = that.option(\"filterPanel.customizeText\");\r\n if (customizeText) {\r\n var customText = customizeText({\r\n component: that.component,\r\n filterValue: filterValue,\r\n text: filterText\r\n });\r\n if (\"string\" === typeof customText) {\r\n filterText = customText\r\n }\r\n }\r\n $textElement.text(filterText)\r\n })\r\n } else {\r\n filterText = that.option(\"filterPanel.texts.createFilter\");\r\n $textElement.text(filterText)\r\n }\r\n _events_engine.default.on($textElement, \"click\", function() {\r\n return that._showFilterBuilder()\r\n });\r\n (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", that, $textElement, void 0, function() {\r\n return that._showFilterBuilder()\r\n });\r\n that._addTabIndexToElement($textElement);\r\n return $textElement\r\n },\r\n _showFilterBuilder: function() {\r\n this.option(\"filterBuilderPopup.visible\", true)\r\n },\r\n _getRemoveButtonElement: function() {\r\n var that = this;\r\n var clearFilterValue = function() {\r\n return that.option(\"filterValue\", null)\r\n };\r\n var $element = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FILTER_PANEL_CLEAR_FILTER_CLASS)).text(that.option(\"filterPanel.texts.clearFilter\"));\r\n _events_engine.default.on($element, \"click\", clearFilterValue);\r\n (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", this, $element, void 0, clearFilterValue);\r\n that._addTabIndexToElement($element);\r\n return $element\r\n },\r\n _addTabIndexToElement: function($element) {\r\n if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n var tabindex = this.option(\"tabindex\") || 0;\r\n $element.attr(\"tabindex\", tabindex)\r\n }\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterValue\":\r\n this._invalidate();\r\n this.option(\"filterPanel.filterEnabled\", true);\r\n args.handled = true;\r\n break;\r\n case \"filterPanel\":\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 _getConditionText: function(fieldText, operationText, valueText) {\r\n var result = \"[\".concat(fieldText, \"] \").concat(operationText);\r\n if ((0, _type.isDefined)(valueText)) {\r\n result += valueText\r\n }\r\n return result\r\n },\r\n _getValueMaskedText: function(value) {\r\n return Array.isArray(value) ? \"('\".concat(value.join(\"', '\"), \"')\") : \" '\".concat(value, \"'\")\r\n },\r\n _getValueText: function(field, customOperation, value) {\r\n var _this2 = this;\r\n var deferred = new _deferred.Deferred;\r\n var hasCustomOperation = customOperation && customOperation.customizeText;\r\n if ((0, _type.isDefined)(value) || hasCustomOperation) {\r\n if (!hasCustomOperation && field.lookup) {\r\n (0, _utils.getCurrentLookupValueText)(field, value, function(data) {\r\n deferred.resolve(_this2._getValueMaskedText(data))\r\n })\r\n } else {\r\n var displayValue = Array.isArray(value) ? value : _uiGrid_core2.default.getDisplayValue(field, value);\r\n (0, _deferred.when)((0, _utils.getCurrentValueText)(field, displayValue, customOperation, FILTER_PANEL_TARGET)).done(function(data) {\r\n deferred.resolve(_this2._getValueMaskedText(data))\r\n })\r\n }\r\n } else {\r\n deferred.resolve(\"\")\r\n }\r\n return deferred.promise()\r\n },\r\n getConditionText: function(filterValue, options) {\r\n var that = this;\r\n var operation = filterValue[1];\r\n var deferred = new _deferred.Deferred;\r\n var customOperation = (0, _utils.getCustomOperation)(options.customOperations, operation);\r\n var operationText;\r\n var field = (0, _utils.getField)(filterValue[0], options.columns);\r\n var fieldText = field.caption || \"\";\r\n var value = filterValue[2];\r\n if (customOperation) {\r\n operationText = customOperation.caption || (0, _inflector.captionize)(customOperation.name)\r\n } else {\r\n if (null === value) {\r\n operationText = (0, _utils.getCaptionByOperation)(\"=\" === operation ? \"isblank\" : \"isnotblank\", options.filterOperationDescriptions)\r\n } else {\r\n operationText = (0, _utils.getCaptionByOperation)(operation, options.filterOperationDescriptions)\r\n }\r\n }\r\n this._getValueText(field, customOperation, value).done(function(valueText) {\r\n deferred.resolve(that._getConditionText(fieldText, operationText, valueText))\r\n });\r\n return deferred\r\n },\r\n getGroupText: function(filterValue, options, isInnerGroup) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n var textParts = [];\r\n var groupValue = (0, _utils.getGroupValue)(filterValue);\r\n filterValue.forEach(function(item) {\r\n if ((0, _utils.isCondition)(item)) {\r\n textParts.push(that.getConditionText(item, options))\r\n } else {\r\n if ((0, _utils.isGroup)(item)) {\r\n textParts.push(that.getGroupText(item, options, true))\r\n }\r\n }\r\n });\r\n _deferred.when.apply(this, textParts).done(function() {\r\n var text;\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n if (\"!\" === groupValue[0]) {\r\n var groupText = options.groupOperationDescriptions[\"not\" + groupValue.substring(1, 2).toUpperCase() + groupValue.substring(2)].split(\" \");\r\n text = \"\".concat(groupText[0], \" \").concat(args[0])\r\n } else {\r\n text = args.join(\" \".concat(options.groupOperationDescriptions[groupValue], \" \"))\r\n }\r\n if (isInnerGroup) {\r\n text = \"(\".concat(text, \")\")\r\n }\r\n result.resolve(text)\r\n });\r\n return result\r\n },\r\n getFilterText: function(filterValue, customOperations) {\r\n var that = this;\r\n var options = {\r\n customOperations: customOperations,\r\n columns: that.getController(\"columns\").getFilteringColumns(),\r\n filterOperationDescriptions: that.option(\"filterBuilder.filterOperationDescriptions\"),\r\n groupOperationDescriptions: that.option(\"filterBuilder.groupOperationDescriptions\")\r\n };\r\n return (0, _utils.isCondition)(filterValue) ? that.getConditionText(filterValue, options) : that.getGroupText(filterValue, options)\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterPanel: {\r\n visible: false,\r\n filterEnabled: true,\r\n texts: {\r\n createFilter: _message.default.format(\"dxDataGrid-filterPanelCreateFilter\"),\r\n clearFilter: _message.default.format(\"dxDataGrid-filterPanelClearFilter\"),\r\n filterEnabledHint: _message.default.format(\"dxDataGrid-filterPanelFilterEnabledHint\")\r\n }\r\n }\r\n }\r\n },\r\n views: {\r\n filterPanelView: FilterPanelView\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterPanel\":\r\n this._applyFilter();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\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.pager.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 _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _pager = _interopRequireDefault(require(\"../pager\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _window = require(\"../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PAGER_CLASS = \"pager\";\r\nvar MAX_PAGES_COUNT = 10;\r\nvar getPageIndex = function(dataController) {\r\n return 1 + (parseInt(dataController.pageIndex()) || 0)\r\n};\r\nvar PagerView = _uiGrid_core.default.View.inherit({\r\n init: function() {\r\n var _this = this;\r\n var dataController = this.getController(\"data\");\r\n dataController.changed.add(function(e) {\r\n if (e && e.repaintChangesOnly) {\r\n var pager = _this._getPager();\r\n if (pager) {\r\n pager.option({\r\n pageIndex: getPageIndex(dataController),\r\n pageSize: dataController.pageSize(),\r\n pageCount: dataController.pageCount(),\r\n totalCount: dataController.totalCount(),\r\n hasKnownLastPage: dataController.hasKnownLastPage()\r\n })\r\n } else {\r\n _this.render()\r\n }\r\n } else {\r\n if (!e || \"update\" !== e.changeType && \"updateSelection\" !== e.changeType) {\r\n _this.render()\r\n }\r\n }\r\n })\r\n },\r\n _getPager: function() {\r\n var $element = this.element();\r\n return $element && $element.data(\"dxPager\")\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element().addClass(that.addWidgetPrefix(PAGER_CLASS));\r\n var pagerOptions = that.option(\"pager\") || {};\r\n var dataController = that.getController(\"data\");\r\n var keyboardController = that.getController(\"keyboardNavigation\");\r\n var options = {\r\n maxPagesCount: MAX_PAGES_COUNT,\r\n pageIndex: getPageIndex(dataController),\r\n pageCount: dataController.pageCount(),\r\n pageSize: dataController.pageSize(),\r\n showPageSizes: pagerOptions.showPageSizeSelector,\r\n showInfo: pagerOptions.showInfo,\r\n displayMode: pagerOptions.displayMode,\r\n pagesNavigatorVisible: pagerOptions.visible,\r\n showNavigationButtons: pagerOptions.showNavigationButtons,\r\n pageSizes: that.getPageSizes(),\r\n totalCount: dataController.totalCount(),\r\n hasKnownLastPage: dataController.hasKnownLastPage(),\r\n pageIndexChanged: function(pageIndex) {\r\n if (dataController.pageIndex() !== pageIndex - 1) {\r\n setTimeout(function() {\r\n dataController.pageIndex(pageIndex - 1)\r\n })\r\n }\r\n },\r\n pageSizeChanged: function(pageSize) {\r\n setTimeout(function() {\r\n dataController.pageSize(pageSize)\r\n })\r\n },\r\n onKeyDown: function(e) {\r\n return keyboardController && keyboardController.executeAction(\"onKeyDown\", e)\r\n },\r\n useLegacyKeyboardNavigation: this.option(\"useLegacyKeyboardNavigation\"),\r\n useKeyboard: this.option(\"keyboardNavigation.enabled\")\r\n };\r\n if ((0, _type.isDefined)(pagerOptions.infoText)) {\r\n options.infoText = pagerOptions.infoText\r\n }\r\n that._createComponent($element, _pager.default, options)\r\n },\r\n getPageSizes: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var pagerOptions = that.option(\"pager\");\r\n var allowedPageSizes = pagerOptions && pagerOptions.allowedPageSizes;\r\n var pageSize = dataController.pageSize();\r\n if (!(0, _type.isDefined)(that._pageSizes) || (0, _array.inArray)(pageSize, that._pageSizes) === -1) {\r\n that._pageSizes = [];\r\n if (pagerOptions) {\r\n if (Array.isArray(allowedPageSizes)) {\r\n that._pageSizes = allowedPageSizes\r\n } else {\r\n if (allowedPageSizes && pageSize > 1) {\r\n that._pageSizes = [Math.floor(pageSize / 2), pageSize, 2 * pageSize]\r\n }\r\n }\r\n }\r\n }\r\n return that._pageSizes\r\n },\r\n isVisible: function() {\r\n var dataController = this.getController(\"data\");\r\n var pagerOptions = this.option(\"pager\");\r\n var pagerVisible = pagerOptions && pagerOptions.visible;\r\n var scrolling = this.option(\"scrolling\");\r\n if (\"auto\" === pagerVisible) {\r\n if (scrolling && (\"virtual\" === scrolling.mode || \"infinite\" === scrolling.mode)) {\r\n pagerVisible = false\r\n } else {\r\n pagerVisible = dataController.pageCount() > 1 || dataController.isLoaded() && !dataController.hasKnownLastPage()\r\n }\r\n }\r\n return pagerVisible\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n optionChanged: function(args) {\r\n var name = args.name;\r\n var isPager = \"pager\" === name;\r\n var isPaging = \"paging\" === name;\r\n var isDataSource = \"dataSource\" === name;\r\n var isScrolling = \"scrolling\" === name;\r\n var dataController = this.getController(\"data\");\r\n if (isPager || isPaging || isScrolling || isDataSource) {\r\n args.handled = true;\r\n if (dataController.skipProcessingPagingChange(args.fullName)) {\r\n return\r\n }\r\n if (isPager || isPaging) {\r\n this._pageSizes = null\r\n }\r\n if (!isDataSource) {\r\n this._invalidate();\r\n if ((0, _window.hasWindow)() && isPager && this.component) {\r\n this.component.resize()\r\n }\r\n }\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n pager: {\r\n visible: \"auto\",\r\n showPageSizeSelector: false,\r\n allowedPageSizes: \"auto\"\r\n }\r\n }\r\n },\r\n views: {\r\n pagerView: PagerView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.keyboard_navigation.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.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 _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar accessibility = _interopRequireWildcard(require(\"../shared/accessibility\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _short = require(\"../../events/short\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\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 ROWS_VIEW_CLASS = \"rowsview\";\r\nvar EDIT_FORM_CLASS = \"edit-form\";\r\nvar GROUP_FOOTER_CLASS = \"group-footer\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar MASTER_DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FREESPACE_ROW_CLASS = \"dx-freespace-row\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-virtual-row\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar COMMAND_SELECT_CLASS = \"dx-command-select\";\r\nvar COMMAND_EDIT_CLASS = \"dx-command-edit\";\r\nvar COMMAND_CELL_SELECTOR = \"[class^=dx-command]\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar DATEBOX_WIDGET_NAME = \"dxDateBox\";\r\nvar FOCUS_STATE_CLASS = \"dx-state-focused\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar REVERT_BUTTON_CLASS = \"dx-revert-button\";\r\nvar FAST_EDITING_DELETE_KEY = \"delete\";\r\nvar INTERACTIVE_ELEMENTS_SELECTOR = \"input:not([type='hidden']), textarea, a, select, button, [tabindex], .dx-checkbox\";\r\nvar NON_FOCUSABLE_ELEMENTS_SELECTOR = \"\".concat(INTERACTIVE_ELEMENTS_SELECTOR, \", .dx-dropdowneditor-icon\");\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar FOCUS_TYPE_ROW = \"row\";\r\nvar FOCUS_TYPE_CELL = \"cell\";\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\n\r\nfunction isGroupRow($row) {\r\n return $row && $row.hasClass(GROUP_ROW_CLASS)\r\n}\r\n\r\nfunction isDetailRow($row) {\r\n return $row && $row.hasClass(MASTER_DETAIL_ROW_CLASS)\r\n}\r\n\r\nfunction isDataRow($row) {\r\n return $row && !isGroupRow($row) && !isDetailRow($row)\r\n}\r\n\r\nfunction isNotFocusedRow($row) {\r\n return !$row || $row.hasClass(FREESPACE_ROW_CLASS) || $row.hasClass(VIRTUAL_ROW_CLASS)\r\n}\r\n\r\nfunction isCellElement($element) {\r\n return $element.length && \"TD\" === $element[0].tagName\r\n}\r\n\r\nfunction isEditorCell(that, $cell) {\r\n return !that._isRowEditMode() && $cell && !$cell.hasClass(COMMAND_SELECT_CLASS) && $cell.hasClass(EDITOR_CELL_CLASS)\r\n}\r\n\r\nfunction isElementDefined($element) {\r\n return (0, _type.isDefined)($element) && $element.length > 0\r\n}\r\n\r\nfunction isMobile() {\r\n return \"desktop\" !== _devices.default.current().deviceType\r\n}\r\n\r\nfunction isCellInHeaderRow($cell) {\r\n return !!$cell.parent(\".\".concat(HEADER_ROW_CLASS)).length\r\n}\r\n\r\nfunction isFixedColumnIndexOffsetRequired(that, column) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var result = false;\r\n if (rtlEnabled) {\r\n result = !(\"right\" === column.fixedPosition || (0, _type.isDefined)(column.command) && !(0, _type.isDefined)(column.fixedPosition))\r\n } else {\r\n result = !(!(0, _type.isDefined)(column.fixedPosition) || \"left\" === column.fixedPosition)\r\n }\r\n return result\r\n}\r\n\r\nfunction shouldPreventScroll(that) {\r\n var keyboardController = that.getController(\"keyboardNavigation\");\r\n return keyboardController._isVirtualScrolling() ? that.option(\"focusedRowIndex\") === keyboardController.getRowIndex() : false\r\n}\r\nvar KeyboardNavigationController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n var _this = this;\r\n this._dataController = this.getController(\"data\");\r\n this._selectionController = this.getController(\"selection\");\r\n this._editingController = this.getController(\"editing\");\r\n this._headerPanel = this.getView(\"headerPanel\");\r\n this._columnsController = this.getController(\"columns\");\r\n this._editorFactory = this.getController(\"editorFactory\");\r\n if (this.isKeyboardEnabled()) {\r\n accessibility.subscribeVisibilityChange();\r\n this._updateFocusTimeout = null;\r\n this._fastEditingStarted = false;\r\n this._focusedCellPosition = {};\r\n this._canceledCellPosition = null;\r\n var elementFocused = function($element) {\r\n _this.setupFocusedView();\r\n if (_this._isNeedScroll) {\r\n if ($element.is(\":visible\") && _this._focusedView && _this._focusedView.getScrollable) {\r\n _this._focusedView._scrollToElement($element);\r\n _this._isNeedScroll = false\r\n }\r\n }\r\n };\r\n this._editorFactory.focused.add(elementFocused);\r\n this._initViewHandlers();\r\n this._initDocumentHandlers();\r\n this.createAction(\"onKeyDown\")\r\n }\r\n },\r\n _initViewHandlers: function() {\r\n var _this2 = this;\r\n var rowsView = this.getView(\"rowsView\");\r\n var rowsViewFocusHandler = function(event) {\r\n var $element = (0, _renderer.default)(event.target);\r\n var isRelatedTargetInRowsView = (0, _renderer.default)(event.relatedTarget).closest(rowsView.element()).length;\r\n var isCommandButton = $element.hasClass(\"dx-link\");\r\n if (isCommandButton && !isRelatedTargetInRowsView && _this2._isEventInCurrentGrid(event)) {\r\n var $focusedCell = _this2._getFocusedCell();\r\n $focusedCell = !isElementDefined($focusedCell) ? rowsView.getCellElements(0).filter(\"[tabindex]\").eq(0) : $focusedCell;\r\n if (!$element.closest($focusedCell).length) {\r\n event.preventDefault();\r\n _events_engine.default.trigger($focusedCell, \"focus\")\r\n }\r\n }\r\n };\r\n rowsView.renderCompleted.add(function(e) {\r\n var $rowsView = rowsView.element();\r\n var isFullUpdate = !e || \"refresh\" === e.changeType;\r\n var isFocusedViewCorrect = _this2._focusedView && _this2._focusedView.name === rowsView.name;\r\n var needUpdateFocus = false;\r\n var isAppend = e && (\"append\" === e.changeType || \"prepend\" === e.changeType);\r\n var $focusedElement = (0, _renderer.default)(\":focus\");\r\n var isFocusedElementCorrect = !$focusedElement.length || $focusedElement.closest($rowsView).length || _browser.default.msie && $focusedElement.is(\"body\");\r\n _events_engine.default.off($rowsView, \"focusin\", rowsViewFocusHandler);\r\n _events_engine.default.on($rowsView, \"focusin\", rowsViewFocusHandler);\r\n _this2._initPointerEventHandler();\r\n _this2._initKeyDownHandler();\r\n _this2._setRowsViewAttributes();\r\n if (isFocusedViewCorrect && isFocusedElementCorrect) {\r\n needUpdateFocus = _this2._isNeedFocus ? !isAppend : _this2._isHiddenFocus && isFullUpdate;\r\n needUpdateFocus && _this2._updateFocus(true)\r\n }\r\n })\r\n },\r\n _initDocumentHandlers: function() {\r\n var _this3 = this;\r\n var document = _dom_adapter.default.getDocument();\r\n this._documentClickHandler = this.createAction(function(e) {\r\n var $target = (0, _renderer.default)(e.event.target);\r\n var isCurrentRowsViewClick = _this3._isEventInCurrentGrid(e.event) && $target.closest(\".\".concat(_this3.addWidgetPrefix(ROWS_VIEW_CLASS))).length;\r\n var isEditorOverlay = $target.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length;\r\n var columnsResizerController = _this3.getController(\"columnsResizer\");\r\n var isColumnResizing = !!columnsResizerController && columnsResizerController.isResizing();\r\n if (!isCurrentRowsViewClick && !isEditorOverlay && !isColumnResizing) {\r\n var targetInsideFocusedView = _this3._focusedView ? $target.parents().filter(_this3._focusedView.element()).length > 0 : false;\r\n !targetInsideFocusedView && _this3._resetFocusedCell(true);\r\n _this3._resetFocusedView()\r\n }\r\n });\r\n _events_engine.default.on(document, (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler)\r\n },\r\n _setRowsViewAttributes: function() {\r\n var $rowsView = this._getRowsViewElement();\r\n var isGridEmpty = !this._dataController.getVisibleRows().length;\r\n if (isGridEmpty) {\r\n this._applyTabIndexToElement($rowsView)\r\n }\r\n },\r\n _initPointerEventHandler: function() {\r\n var pointerEventName = !isMobile() ? _pointer.default.down : _click.name;\r\n var clickSelector = \".\".concat(ROW_CLASS, \" > td, .\").concat(ROW_CLASS);\r\n var $rowsView = this._getRowsViewElement();\r\n if (!(0, _type.isDefined)(this._pointerEventAction)) {\r\n this._pointerEventAction = this.createAction(this._pointerEventHandler)\r\n }\r\n _events_engine.default.off($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), this._pointerEventAction);\r\n _events_engine.default.on($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), clickSelector, this._pointerEventAction)\r\n },\r\n _initKeyDownHandler: function() {\r\n var _this4 = this;\r\n var $rowsView = this._getRowsViewElement();\r\n _short.keyboard.off(this._keyDownListener);\r\n this._keyDownListener = _short.keyboard.on($rowsView, null, function(e) {\r\n return _this4._keyDownHandler(e)\r\n })\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._resetFocusedView();\r\n _short.keyboard.off(this._keyDownListener);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler);\r\n clearTimeout(this._updateFocusTimeout);\r\n accessibility.unsubscribeVisibilityChange()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"keyboardNavigation\":\r\n case \"useLegacyKeyboardNavigation\":\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n isRowFocusType: function() {\r\n return this.focusType === FOCUS_TYPE_ROW\r\n },\r\n isCellFocusType: function() {\r\n return this.focusType === FOCUS_TYPE_CELL\r\n },\r\n setRowFocusType: function() {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this.focusType = FOCUS_TYPE_ROW\r\n }\r\n },\r\n setCellFocusType: function() {\r\n this.focusType = FOCUS_TYPE_CELL\r\n },\r\n _keyDownHandler: function(e) {\r\n var isEditing = this._editingController.isEditing();\r\n var needStopPropagation = true;\r\n var originalEvent = e.originalEvent;\r\n var isHandled = this._processOnKeyDown(e);\r\n if (originalEvent.isDefaultPrevented()) {\r\n return\r\n }\r\n this._isNeedFocus = true;\r\n this._isNeedScroll = true;\r\n this._updateFocusedCellPositionByTarget(originalEvent.target);\r\n if (!isHandled) {\r\n switch (e.keyName) {\r\n case \"leftArrow\":\r\n case \"rightArrow\":\r\n this._leftRightKeysHandler(e, isEditing);\r\n break;\r\n case \"upArrow\":\r\n case \"downArrow\":\r\n if (e.ctrl) {\r\n accessibility.selectView(\"rowsView\", this, originalEvent)\r\n } else {\r\n this._upDownKeysHandler(e, isEditing)\r\n }\r\n break;\r\n case \"pageUp\":\r\n case \"pageDown\":\r\n this._pageUpDownKeyHandler(e);\r\n break;\r\n case \"space\":\r\n this._spaceKeyHandler(e, isEditing);\r\n break;\r\n case \"A\":\r\n if (e.ctrl) {\r\n this._ctrlAKeyHandler(e, isEditing)\r\n } else {\r\n this._beginFastEditing(e.originalEvent)\r\n }\r\n break;\r\n case \"tab\":\r\n this._tabKeyHandler(e, isEditing);\r\n break;\r\n case \"enter\":\r\n this._enterKeyHandler(e, isEditing);\r\n break;\r\n case \"escape\":\r\n this._escapeKeyHandler(e, isEditing);\r\n break;\r\n case \"F\":\r\n if (e.ctrl) {\r\n this._ctrlFKeyHandler(e)\r\n } else {\r\n this._beginFastEditing(e.originalEvent)\r\n }\r\n break;\r\n case \"F2\":\r\n this._f2KeyHandler();\r\n break;\r\n case \"del\":\r\n case \"backspace\":\r\n if (this._isFastEditingAllowed() && !this._isFastEditingStarted()) {\r\n this._beginFastEditing(originalEvent, true)\r\n }\r\n break;\r\n default:\r\n if (!this._beginFastEditing(originalEvent)) {\r\n this._isNeedFocus = false;\r\n this._isNeedScroll = false;\r\n needStopPropagation = false\r\n }\r\n }\r\n if (needStopPropagation) {\r\n originalEvent.stopPropagation()\r\n }\r\n }\r\n },\r\n _processOnKeyDown: function(eventArgs) {\r\n var originalEvent = eventArgs.originalEvent;\r\n var args = {\r\n handled: false,\r\n event: originalEvent\r\n };\r\n this.executeAction(\"onKeyDown\", args);\r\n eventArgs.ctrl = originalEvent.ctrlKey;\r\n eventArgs.alt = originalEvent.altKey;\r\n eventArgs.shift = originalEvent.shiftKey;\r\n return !!args.handled\r\n },\r\n _closeEditCell: function() {\r\n var _this5 = this;\r\n setTimeout(function() {\r\n _this5._editingController.closeEditCell()\r\n })\r\n },\r\n _leftRightKeysHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $event = eventArgs.originalEvent;\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n var directionCode = this._getDirectionCodeByKey(eventArgs.keyName);\r\n var isEditingNavigationMode = this._isFastEditingStarted();\r\n var allowNavigate = (!isEditing || isEditingNavigationMode) && isDataRow($row);\r\n if (allowNavigate) {\r\n this.setCellFocusType();\r\n isEditingNavigationMode && this._closeEditCell();\r\n if (this._isVirtualColumnRender()) {\r\n this._processVirtualHorizontalPosition(directionCode)\r\n }\r\n var $cell = this._getNextCell(directionCode);\r\n if (isElementDefined($cell)) {\r\n this._arrowKeysHandlerFocusCell($event, $cell, directionCode)\r\n }\r\n $event && $event.preventDefault()\r\n }\r\n },\r\n _upDownKeysHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this._focusedCellPosition.rowIndex;\r\n var visibleRowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(visibleRowIndex);\r\n var $event = eventArgs.originalEvent;\r\n var isUpArrow = \"upArrow\" === eventArgs.keyName;\r\n var dataSource = this._dataController.dataSource();\r\n var isEditingNavigationMode = this._isFastEditingStarted();\r\n var allowNavigate = (!isEditing || isEditingNavigationMode) && $row && !isDetailRow($row);\r\n if (allowNavigate) {\r\n isEditingNavigationMode && this._closeEditCell();\r\n if (!this._navigateNextCell($event, eventArgs.keyName)) {\r\n if (this._isVirtualRowRender() && isUpArrow && dataSource && !dataSource.isLoading()) {\r\n var rowHeight = $row.outerHeight();\r\n rowIndex = this._focusedCellPosition.rowIndex - 1;\r\n this._scrollBy(0, -rowHeight, rowIndex, $event)\r\n }\r\n }\r\n $event && $event.preventDefault()\r\n }\r\n },\r\n _pageUpDownKeyHandler: function(eventArgs) {\r\n var pageIndex = this._dataController.pageIndex();\r\n var pageCount = this._dataController.pageCount();\r\n var pagingEnabled = this.option(\"paging.enabled\");\r\n var isPageUp = \"pageUp\" === eventArgs.keyName;\r\n var pageStep = isPageUp ? -1 : 1;\r\n var scrollable = this.getView(\"rowsView\").getScrollable();\r\n if (pagingEnabled && !this._isVirtualScrolling()) {\r\n if ((isPageUp ? pageIndex > 0 : pageIndex < pageCount - 1) && !this._isVirtualScrolling()) {\r\n this._dataController.pageIndex(pageIndex + pageStep);\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n } else {\r\n if (scrollable && scrollable._container().height() < scrollable.$content().height()) {\r\n this._scrollBy(0, scrollable._container().height() * pageStep);\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n }\r\n },\r\n _spaceKeyHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $target = (0, _renderer.default)(eventArgs.originalEvent && eventArgs.originalEvent.target);\r\n if (this.option(\"selection\") && \"none\" !== this.option(\"selection\").mode && !isEditing) {\r\n var isFocusedRowElement = \"row\" === this._getElementType($target) && this.isRowFocusType() && isDataRow($target);\r\n var isFocusedSelectionCell = $target.hasClass(COMMAND_SELECT_CLASS);\r\n if (isFocusedSelectionCell && \"onClick\" === this.option(\"selection.showCheckBoxesMode\")) {\r\n this._selectionController.startSelectionWithCheckboxes()\r\n }\r\n if (isFocusedRowElement || $target.parent().hasClass(DATA_ROW_CLASS) || $target.hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n this._selectionController.changeItemSelection(rowIndex, {\r\n shift: eventArgs.shift,\r\n control: eventArgs.ctrl\r\n });\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n } else {\r\n this._beginFastEditing(eventArgs.originalEvent)\r\n }\r\n },\r\n _ctrlAKeyHandler: function(eventArgs, isEditing) {\r\n if (!isEditing && eventArgs.ctrl && !eventArgs.alt && \"multiple\" === this.option(\"selection.mode\") && this.option(\"selection.allowSelectAll\")) {\r\n this._selectionController.selectAll();\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _tabKeyHandler: function(eventArgs, isEditing) {\r\n var editingOptions = this.option(\"editing\");\r\n var direction = eventArgs.shift ? \"previous\" : \"next\";\r\n var isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition);\r\n var isOriginalHandlerRequired = !isCellPositionDefined || !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition) || eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition);\r\n var eventTarget = eventArgs.originalEvent.target;\r\n var focusedViewElement = this._focusedView && this._focusedView.element();\r\n if (this._handleTabKeyOnMasterDetailCell(eventTarget, direction)) {\r\n return\r\n }(0, _renderer.default)(focusedViewElement).addClass(FOCUS_STATE_CLASS);\r\n if (editingOptions && eventTarget && !isOriginalHandlerRequired) {\r\n if ((0, _renderer.default)(eventTarget).hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n this._resetFocusedCell()\r\n }\r\n if (this._isVirtualColumnRender()) {\r\n this._processVirtualHorizontalPosition(direction)\r\n }\r\n if (isEditing) {\r\n if (!this._editingCellTabHandler(eventArgs, direction)) {\r\n return\r\n }\r\n } else {\r\n if (this._targetCellTabHandler(eventArgs, direction)) {\r\n isOriginalHandlerRequired = true\r\n }\r\n }\r\n }\r\n if (isOriginalHandlerRequired) {\r\n this._editorFactory.loseFocus();\r\n if (this._editingController.isEditing() && !this._isRowEditMode()) {\r\n this._resetFocusedCell(true);\r\n this._resetFocusedView();\r\n this._closeEditCell()\r\n }\r\n } else {\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _getMaxHorizontalOffset: function() {\r\n var scrollable = this.component.getScrollable();\r\n var rowsView = this.getView(\"rowsView\");\r\n var offset = scrollable ? scrollable.scrollWidth() - (0, _renderer.default)(rowsView.element()).width() : 0;\r\n return offset\r\n },\r\n _isColumnRendered: function(columnIndex) {\r\n var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n var renderedVisibleColumns = this._columnsController.getVisibleColumns();\r\n var column = allVisibleColumns[columnIndex];\r\n var result = false;\r\n if (column) {\r\n result = renderedVisibleColumns.indexOf(column) >= 0\r\n }\r\n return result\r\n },\r\n _isFixedColumn: function(columnIndex) {\r\n var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n var column = allVisibleColumns[columnIndex];\r\n return !!column && !!column.fixed\r\n },\r\n _isColumnVirtual: function(columnIndex) {\r\n var localColumnIndex = columnIndex - this._columnsController.getColumnIndexOffset();\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var column = visibleColumns[localColumnIndex];\r\n return !!column && \"virtual\" === column.command\r\n },\r\n _processVirtualHorizontalPosition: function(direction) {\r\n var scrollable = this.component.getScrollable();\r\n var columnIndex = this.getColumnIndex();\r\n var nextColumnIndex;\r\n var horizontalScrollPosition = 0;\r\n var needToScroll = false;\r\n switch (direction) {\r\n case \"next\":\r\n case \"nextInRow\":\r\n var columnsCount = this._getVisibleColumnCount();\r\n nextColumnIndex = columnIndex + 1;\r\n horizontalScrollPosition = this.option(\"rtlEnabled\") ? this._getMaxHorizontalOffset() : 0;\r\n if (\"next\" === direction) {\r\n needToScroll = columnsCount === nextColumnIndex || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n } else {\r\n needToScroll = columnsCount > nextColumnIndex && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n }\r\n break;\r\n case \"previous\":\r\n case \"previousInRow\":\r\n nextColumnIndex = columnIndex - 1;\r\n horizontalScrollPosition = this.option(\"rtlEnabled\") ? 0 : this._getMaxHorizontalOffset();\r\n if (\"previous\" === direction) {\r\n var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n var leftEdgePosition = nextColumnIndex < 0 && 0 === columnIndexOffset;\r\n needToScroll = leftEdgePosition || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n } else {\r\n needToScroll = nextColumnIndex >= 0 && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n }\r\n }\r\n if (needToScroll) {\r\n scrollable.scrollTo({\r\n left: horizontalScrollPosition\r\n })\r\n } else {\r\n if ((0, _type.isDefined)(nextColumnIndex) && (0, _type.isDefined)(direction) && this._isColumnVirtual(nextColumnIndex)) {\r\n horizontalScrollPosition = this._getHorizontalScrollPositionOffset(direction);\r\n 0 !== horizontalScrollPosition && scrollable.scrollBy({\r\n left: horizontalScrollPosition,\r\n top: 0\r\n })\r\n }\r\n }\r\n },\r\n _getHorizontalScrollPositionOffset: function(direction) {\r\n var positionOffset = 0;\r\n var $currentCell = this._getCell(this._focusedCellPosition);\r\n var currentCellWidth = $currentCell && $currentCell.outerWidth();\r\n if (currentCellWidth > 0) {\r\n var rtlMultiplier = this.option(\"rtlEnabled\") ? -1 : 1;\r\n positionOffset = \"nextInRow\" === direction || \"next\" === direction ? currentCellWidth * rtlMultiplier : currentCellWidth * rtlMultiplier * -1\r\n }\r\n return positionOffset\r\n },\r\n _editingCellTabHandler: function(eventArgs, direction) {\r\n var eventTarget = eventArgs.originalEvent.target;\r\n var $cell = this._getCellElementFromTarget(eventTarget);\r\n var isEditingAllowed;\r\n var $event = eventArgs.originalEvent;\r\n var elementType = this._getElementType(eventTarget);\r\n if ($cell.is(COMMAND_CELL_SELECTOR)) {\r\n return !this._targetCellTabHandler(eventArgs, direction)\r\n }\r\n this._updateFocusedCellPosition($cell);\r\n var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n $cell = nextCellInfo.$cell;\r\n if (!$cell || this._handleTabKeyOnMasterDetailCell($cell, direction)) {\r\n return false\r\n }\r\n var columnsController = this._columnsController;\r\n var cellIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n var columnIndex = cellIndex + columnsController.getColumnIndexOffset();\r\n var column = columnsController.getVisibleColumns(null, true)[columnIndex];\r\n var $row = $cell && $cell.parent();\r\n var rowIndex = this._getRowIndex($row);\r\n var row = this._dataController.items()[rowIndex];\r\n var editingController = this._editingController;\r\n if (column && column.allowEditing) {\r\n var _isDataRow = !row || \"data\" === row.rowType;\r\n isEditingAllowed = editingController.allowUpdating({\r\n row: row\r\n }) ? _isDataRow : row && row.isNewRow\r\n }\r\n if (!isEditingAllowed) {\r\n this._closeEditCell()\r\n }\r\n if (this._focusCell($cell, !nextCellInfo.isHighlighted)) {\r\n if (!this._isRowEditMode() && isEditingAllowed) {\r\n this._editFocusedCell()\r\n } else {\r\n this._focusInteractiveElement($cell, eventArgs.shift)\r\n }\r\n }\r\n return true\r\n },\r\n _targetCellTabHandler: function(eventArgs, direction) {\r\n var $event = eventArgs.originalEvent;\r\n var eventTarget = $event.target;\r\n var $cell = this._getCellElementFromTarget(eventTarget);\r\n var $lastInteractiveElement = this._getInteractiveElement($cell, !eventArgs.shift);\r\n var isOriginalHandlerRequired = false;\r\n var elementType;\r\n if (!isEditorCell(this, $cell) && $lastInteractiveElement.length && eventTarget !== $lastInteractiveElement.get(0)) {\r\n isOriginalHandlerRequired = true\r\n } else {\r\n if (void 0 === this._focusedCellPosition.rowIndex && (0, _renderer.default)(eventTarget).hasClass(ROW_CLASS)) {\r\n this._updateFocusedCellPosition($cell)\r\n }\r\n elementType = this._getElementType(eventTarget);\r\n if (this.isRowFocusType()) {\r\n this.setCellFocusType();\r\n if (\"row\" === elementType && isDataRow((0, _renderer.default)(eventTarget))) {\r\n eventTarget = this.getFirstValidCellInRow((0, _renderer.default)(eventTarget));\r\n elementType = this._getElementType(eventTarget)\r\n }\r\n }\r\n var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n $cell = nextCellInfo.$cell;\r\n if (!$cell) {\r\n return false\r\n }\r\n $cell = this._checkNewLineTransition($event, $cell);\r\n if (!$cell) {\r\n return false\r\n }\r\n this._focusCell($cell, !nextCellInfo.isHighlighted);\r\n if (!isEditorCell(this, $cell)) {\r\n this._focusInteractiveElement($cell, eventArgs.shift)\r\n }\r\n }\r\n return isOriginalHandlerRequired\r\n },\r\n _getNextCellByTabKey: function($event, direction, elementType) {\r\n var $cell = this._getNextCell(direction, elementType);\r\n var args = $cell && this._fireFocusedCellChanging($event, $cell, true);\r\n if (!args || args.cancel) {\r\n return {}\r\n }\r\n if (args.$newCellElement) {\r\n $cell = args.$newCellElement\r\n }\r\n return {\r\n $cell: $cell,\r\n isHighlighted: args.isHighlighted\r\n }\r\n },\r\n _checkNewLineTransition: function($event, $cell) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = $cell.parent();\r\n if (rowIndex !== this._getRowIndex($row)) {\r\n var cellPosition = this._getCellPosition($cell);\r\n var args = this._fireFocusedRowChanging($event, $row);\r\n if (args.cancel) {\r\n return\r\n }\r\n if (args.rowIndexChanged) {\r\n this.setFocusedColumnIndex(cellPosition.columnIndex);\r\n $cell = this._getFocusedCell()\r\n }\r\n }\r\n return $cell\r\n },\r\n _enterKeyHandler: function(eventArgs, isEditing) {\r\n var $cell = this._getFocusedCell();\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n if (this.option(\"grouping.allowCollapsing\") && isGroupRow($row) || this.option(\"masterDetail.enabled\") && $cell && $cell.hasClass(COMMAND_EXPAND_CLASS)) {\r\n var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n var item = this._dataController.items()[rowIndex];\r\n if (void 0 !== key && item && item.data && !item.data.isContinuation) {\r\n this._dataController.changeRowExpand(key)\r\n }\r\n } else {\r\n this._processEnterKeyForDataCell(eventArgs, isEditing)\r\n }\r\n },\r\n _processEnterKeyForDataCell: function(eventArgs, isEditing) {\r\n var direction = this._getEnterKeyDirection(eventArgs);\r\n var allowEditingOnEnterKey = this._allowEditingOnEnterKey();\r\n if (isEditing || !allowEditingOnEnterKey && direction) {\r\n this._handleEnterKeyEditingCell(eventArgs.originalEvent);\r\n if (\"next\" === direction || \"previous\" === direction) {\r\n this._targetCellTabHandler(eventArgs, direction)\r\n } else {\r\n if (\"upArrow\" === direction || \"downArrow\" === direction) {\r\n this._navigateNextCell(eventArgs.originalEvent, direction)\r\n }\r\n }\r\n } else {\r\n if (allowEditingOnEnterKey) {\r\n this._startEditing(eventArgs)\r\n }\r\n }\r\n },\r\n _getEnterKeyDirection: function(eventArgs) {\r\n var enterKeyDirection = this.option(\"keyboardNavigation.enterKeyDirection\");\r\n var isShift = eventArgs.shift;\r\n if (\"column\" === enterKeyDirection) {\r\n return isShift ? \"upArrow\" : \"downArrow\"\r\n }\r\n if (\"row\" === enterKeyDirection) {\r\n return isShift ? \"previous\" : \"next\"\r\n }\r\n },\r\n _handleEnterKeyEditingCell: function(event) {\r\n var target = event.target;\r\n var $cell = this._getCellElementFromTarget(target);\r\n var isRowEditMode = this._isRowEditMode();\r\n this._updateFocusedCellPosition($cell);\r\n if (isRowEditMode) {\r\n this._focusEditFormCell($cell);\r\n setTimeout(this._editingController.saveEditData.bind(this._editingController))\r\n } else {\r\n _events_engine.default.trigger((0, _renderer.default)(target), \"change\");\r\n this._closeEditCell();\r\n event.preventDefault()\r\n }\r\n },\r\n _escapeKeyHandler: function(eventArgs, isEditing) {\r\n var $cell = this._getCellElementFromTarget(eventArgs.originalEvent.target);\r\n if (isEditing) {\r\n this._updateFocusedCellPosition($cell);\r\n if (!this._isRowEditMode()) {\r\n if (\"cell\" === this._editingController.getEditMode()) {\r\n this._editingController.cancelEditData()\r\n } else {\r\n this._closeEditCell()\r\n }\r\n } else {\r\n this._focusEditFormCell($cell);\r\n this._editingController.cancelEditData();\r\n if (0 === this._dataController.items().length) {\r\n this._resetFocusedCell();\r\n this._editorFactory.loseFocus()\r\n }\r\n }\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _ctrlFKeyHandler: function(eventArgs) {\r\n if (this.option(\"searchPanel.visible\")) {\r\n var searchTextEditor = this._headerPanel.getSearchTextEditor();\r\n if (searchTextEditor) {\r\n searchTextEditor.focus();\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n }\r\n },\r\n _f2KeyHandler: function() {\r\n var isEditing = this._editingController.isEditing();\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n if (!isEditing && isDataRow($row)) {\r\n this._startEditing()\r\n }\r\n },\r\n _navigateNextCell: function($event, keyCode) {\r\n var $cell = this._getNextCell(keyCode);\r\n var directionCode = this._getDirectionCodeByKey(keyCode);\r\n var isCellValid = $cell && this._isCellValid($cell);\r\n var result = isCellValid ? this._arrowKeysHandlerFocusCell($event, $cell, directionCode) : false;\r\n return result\r\n },\r\n _arrowKeysHandlerFocusCell: function($event, $nextCell, direction) {\r\n var isVerticalDirection = \"prevRow\" === direction || \"nextRow\" === direction;\r\n var args = this._fireFocusChangingEvents($event, $nextCell, isVerticalDirection, true);\r\n $nextCell = args.$newCellElement;\r\n if (!args.cancel && this._isCellValid($nextCell)) {\r\n this._focus($nextCell, !args.isHighlighted);\r\n return true\r\n }\r\n return false\r\n },\r\n _beginFastEditing: function(originalEvent, isDeleting) {\r\n if (!this._isFastEditingAllowed() || originalEvent.altKey || originalEvent.ctrlKey || this._editingController.isEditing()) {\r\n return false\r\n }\r\n if (isDeleting) {\r\n this._startEditing(originalEvent, FAST_EDITING_DELETE_KEY)\r\n } else {\r\n var key = originalEvent.key;\r\n var keyCode = originalEvent.keyCode || originalEvent.which;\r\n var fastEditingKey = key || keyCode && String.fromCharCode(keyCode);\r\n if (fastEditingKey && (1 === fastEditingKey.length || fastEditingKey === FAST_EDITING_DELETE_KEY)) {\r\n this._startEditing(originalEvent, fastEditingKey)\r\n }\r\n }\r\n return true\r\n },\r\n _pointerEventHandler: function(e) {\r\n var event = e.event || e;\r\n var $target = (0, _renderer.default)(event.currentTarget);\r\n var rowsView = this.getView(\"rowsView\");\r\n var focusedViewElement = rowsView && rowsView.element();\r\n var $parent = $target.parent();\r\n var isInteractiveElement = (0, _renderer.default)(event.target).is(INTERACTIVE_ELEMENTS_SELECTOR);\r\n var isRevertButton = !!(0, _renderer.default)(event.target).closest(\".\".concat(REVERT_BUTTON_CLASS)).length;\r\n var isExpandCommandCell = $target.hasClass(COMMAND_EXPAND_CLASS);\r\n if (!this._isEventInCurrentGrid(event)) {\r\n return\r\n }\r\n if (!isRevertButton && (this._isCellValid($target, !isInteractiveElement) || isExpandCommandCell)) {\r\n $target = this._isInsideEditForm($target) ? (0, _renderer.default)(event.target) : $target;\r\n this._focusView();\r\n (0, _renderer.default)(focusedViewElement).removeClass(FOCUS_STATE_CLASS);\r\n if ($parent.hasClass(FREESPACE_ROW_CLASS)) {\r\n this._updateFocusedCellPosition($target);\r\n this._applyTabIndexToElement(this._focusedView.element());\r\n this._focusedView.focus()\r\n } else {\r\n if (!this._isMasterDetailCell($target)) {\r\n this._clickTargetCellHandler(event, $target)\r\n } else {\r\n this._updateFocusedCellPosition($target)\r\n }\r\n }\r\n } else {\r\n if ($target.is(\"td\")) {\r\n this._resetFocusedCell()\r\n }\r\n }\r\n },\r\n _clickTargetCellHandler: function(event, $cell) {\r\n var columnIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n var isCellEditMode = this._isCellEditMode();\r\n this.setCellFocusType();\r\n var args = this._fireFocusChangingEvents(event, $cell, true);\r\n $cell = args.$newCellElement;\r\n if (!args.cancel) {\r\n if (args.resetFocusedRow) {\r\n this.getController(\"focus\")._resetFocusedRow();\r\n return\r\n }\r\n if (args.rowIndexChanged) {\r\n $cell = this._getFocusedCell()\r\n }\r\n if (!args.isHighlighted && !isCellEditMode) {\r\n this.setRowFocusType()\r\n }\r\n this._updateFocusedCellPosition($cell);\r\n if (this._allowRowUpdating() && isCellEditMode && column && column.allowEditing) {\r\n this._isNeedFocus = false;\r\n this._isHiddenFocus = false\r\n } else {\r\n var $target = event && (0, _renderer.default)(event.target).closest(NON_FOCUSABLE_ELEMENTS_SELECTOR + \", td\");\r\n var skipFocusEvent = $target && $target.not($cell).is(NON_FOCUSABLE_ELEMENTS_SELECTOR);\r\n var isEditor = !!column && !column.command && $cell.hasClass(EDITOR_CELL_CLASS);\r\n var isDisabled = !isEditor && (!args.isHighlighted || skipFocusEvent);\r\n this._focus($cell, isDisabled, skipFocusEvent)\r\n }\r\n } else {\r\n this.setRowFocusType();\r\n this.setFocusedRowIndex(args.prevRowIndex);\r\n $cell = this._getFocusedCell();\r\n if (this._editingController.isEditing() && isCellEditMode) {\r\n this._closeEditCell()\r\n }\r\n }\r\n },\r\n _allowRowUpdating: function() {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var row = this._dataController.items()[rowIndex];\r\n return this._editingController.allowUpdating({\r\n row: row\r\n }, \"click\")\r\n },\r\n focus: function(element) {\r\n var activeElementSelector;\r\n var focusedRowEnabled = this.option(\"focusedRowEnabled\");\r\n var isHighlighted = isCellElement((0, _renderer.default)(element));\r\n if (!element) {\r\n activeElementSelector = \".dx-datagrid-rowsview .dx-row[tabindex]\";\r\n if (!focusedRowEnabled) {\r\n activeElementSelector += \", .dx-datagrid-rowsview .dx-row > td[tabindex]\"\r\n }\r\n element = this.component.$element().find(activeElementSelector).first()\r\n }\r\n element && this._focusElement((0, _renderer.default)(element), isHighlighted)\r\n },\r\n getFocusedView: function() {\r\n return this._focusedView\r\n },\r\n setupFocusedView: function() {\r\n if (this.isKeyboardEnabled() && !(0, _type.isDefined)(this._focusedView)) {\r\n this._focusView()\r\n }\r\n },\r\n _focusElement: function($element, isHighlighted) {\r\n var rowsViewElement = (0, _renderer.default)(this._getRowsViewElement());\r\n var $focusedView = $element.closest(rowsViewElement);\r\n var isRowFocusType = this.isRowFocusType();\r\n var args = {};\r\n if (!$focusedView.length || isCellElement($element) && !this._isCellValid($element)) {\r\n return\r\n }\r\n this._focusView();\r\n this._isNeedFocus = true;\r\n this._isNeedScroll = true;\r\n if (isCellElement($element) || isGroupRow($element)) {\r\n this.setCellFocusType();\r\n args = this._fireFocusChangingEvents(null, $element, false, isHighlighted);\r\n $element = args.$newCellElement;\r\n if (isRowFocusType && !args.isHighlighted) {\r\n this.setRowFocusType()\r\n }\r\n }\r\n if (!args.cancel) {\r\n this._focus($element, !args.isHighlighted);\r\n this._focusInteractiveElement($element)\r\n }\r\n },\r\n _getFocusedViewByElement: function($element) {\r\n var view = this.getFocusedView();\r\n var $view = view && (0, _renderer.default)(view.element());\r\n return $element && 0 !== $element.closest($view).length\r\n },\r\n _focusView: function() {\r\n this._focusedView = this.getView(\"rowsView\")\r\n },\r\n _resetFocusedView: function() {\r\n this.setRowFocusType();\r\n this._focusedView = null\r\n },\r\n _focusInteractiveElement: function($cell, isLast) {\r\n if (!$cell) {\r\n return\r\n }\r\n var $focusedElement = this._getInteractiveElement($cell, isLast);\r\n _uiGrid_core2.default.focusAndSelectElement(this, $focusedElement)\r\n },\r\n _focus: function($cell, disableFocus, skipFocusEvent) {\r\n var $row = $cell && !$cell.hasClass(ROW_CLASS) ? $cell.closest(\".\".concat(ROW_CLASS)) : $cell;\r\n if ($row && isNotFocusedRow($row)) {\r\n return\r\n }\r\n var focusedView = this._focusedView;\r\n var $focusViewElement = focusedView && focusedView.element();\r\n var $focusElement;\r\n this._isHiddenFocus = disableFocus;\r\n var isRowFocus = isGroupRow($row) || this.isRowFocusType();\r\n if (isRowFocus) {\r\n $focusElement = $row;\r\n if (focusedView) {\r\n this.setFocusedRowIndex(this._getRowIndex($row))\r\n }\r\n } else {\r\n if (isCellElement($cell)) {\r\n $focusElement = $cell;\r\n this._updateFocusedCellPosition($cell)\r\n }\r\n }\r\n if ($focusElement) {\r\n if ($focusViewElement) {\r\n $focusViewElement.find(\".dx-row[tabindex], .dx-row > td[tabindex]\").not($focusElement).removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabindex\")\r\n }\r\n _events_engine.default.one($focusElement, \"blur\", function(e) {\r\n if (e.relatedTarget) {\r\n $focusElement.removeClass(CELL_FOCUS_DISABLED_CLASS)\r\n }\r\n });\r\n if (!skipFocusEvent) {\r\n this._applyTabIndexToElement($focusElement);\r\n _events_engine.default.trigger($focusElement, \"focus\")\r\n }\r\n if (disableFocus) {\r\n $focusElement.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n if (isRowFocus) {\r\n $cell.addClass(CELL_FOCUS_DISABLED_CLASS)\r\n }\r\n } else {\r\n this._editorFactory.focus($focusElement)\r\n }\r\n }\r\n },\r\n _updateFocus: function(isRenderView) {\r\n var _this6 = this;\r\n this._updateFocusTimeout = setTimeout(function() {\r\n var editingController = _this6._editingController;\r\n var isCellEditMode = editingController.getEditMode() === EDIT_MODE_CELL;\r\n var isBatchEditMode = editingController.getEditMode() === EDIT_MODE_BATCH;\r\n if (isCellEditMode && editingController.hasChanges() || isBatchEditMode && editingController.isNewRowInEditMode()) {\r\n editingController._focusEditingCell();\r\n return\r\n }\r\n var $cell = _this6._getFocusedCell();\r\n var isEditing = editingController.isEditing();\r\n if ($cell && !(_this6._isMasterDetailCell($cell) && !_this6._isRowEditMode())) {\r\n if (_this6._hasSkipRow($cell.parent())) {\r\n var direction = _this6._focusedCellPosition && _this6._focusedCellPosition.rowIndex > 0 ? \"upArrow\" : \"downArrow\";\r\n $cell = _this6._getNextCell(direction)\r\n }\r\n if (isElementDefined($cell)) {\r\n if (isRenderView && !isEditing && _this6._checkCellOverlapped($cell)) {\r\n return\r\n }\r\n if ($cell.is(\"td\") || $cell.hasClass(_this6.addWidgetPrefix(EDIT_FORM_ITEM_CLASS))) {\r\n var isCommandCell = $cell.is(COMMAND_CELL_SELECTOR);\r\n var $focusedElementInsideCell = $cell.find(\":focus\");\r\n var isFocusedElementDefined = isElementDefined($focusedElementInsideCell);\r\n if ((isRenderView || !isCommandCell) && _this6._editorFactory.focus()) {\r\n if (isCommandCell && isFocusedElementDefined) {\r\n _uiGrid_core2.default.focusAndSelectElement(_this6, $focusedElementInsideCell);\r\n return\r\n }!isFocusedElementDefined && _this6._focus($cell)\r\n } else {\r\n if (!isFocusedElementDefined && (_this6._isNeedFocus || _this6._isHiddenFocus)) {\r\n _this6._focus($cell, _this6._isHiddenFocus)\r\n }\r\n }\r\n if (isEditing) {\r\n _this6._focusInteractiveElement.bind(_this6)($cell)\r\n }\r\n } else {\r\n _events_engine.default.trigger($cell, \"focus\")\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _checkCellOverlapped: function($cell) {\r\n var cellOffset = $cell.offset();\r\n var hasScrollable = this.component.getScrollable && this.component.getScrollable();\r\n var isOverlapped = false;\r\n if (hasScrollable) {\r\n if (cellOffset.left < 0) {\r\n isOverlapped = $cell.width() + cellOffset.left <= 0\r\n } else {\r\n if (cellOffset.top < 0) {\r\n isOverlapped = $cell.height() + cellOffset.top <= 0\r\n }\r\n }\r\n }\r\n return isOverlapped\r\n },\r\n _getFocusedCell: function() {\r\n return (0, _renderer.default)(this._getCell(this._focusedCellPosition))\r\n },\r\n _updateFocusedCellPositionByTarget: function(target) {\r\n var _this$_focusedCellPos;\r\n var elementType = this._getElementType(target);\r\n if (\"row\" === elementType && (0, _type.isDefined)(null === (_this$_focusedCellPos = this._focusedCellPosition) || void 0 === _this$_focusedCellPos ? void 0 : _this$_focusedCellPos.columnIndex)) {\r\n var $row = (0, _renderer.default)(target);\r\n this._focusedView && isGroupRow($row) && this.setFocusedRowIndex(this._getRowIndex($row))\r\n } else {\r\n this._updateFocusedCellPosition(this._getCellElementFromTarget(target))\r\n }\r\n },\r\n _updateFocusedCellPosition: function($cell, direction) {\r\n var position = this._getCellPosition($cell, direction);\r\n if (position) {\r\n if (!$cell.length || position.rowIndex >= 0 && position.columnIndex >= 0) {\r\n this.setFocusedCellPosition(position.rowIndex, position.columnIndex)\r\n }\r\n }\r\n return position\r\n },\r\n _getFocusedColumnIndexOffset: function(columnIndex) {\r\n var offset = 0;\r\n var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n if (column && column.fixed) {\r\n offset = this._getFixedColumnIndexOffset(column)\r\n } else {\r\n if (columnIndex >= 0) {\r\n offset = this._columnsController.getColumnIndexOffset()\r\n }\r\n }\r\n return offset\r\n },\r\n _getFixedColumnIndexOffset: function(column) {\r\n var offset = isFixedColumnIndexOffsetRequired(this, column) ? this._getVisibleColumnCount() - this._columnsController.getVisibleColumns().length : 0;\r\n return offset\r\n },\r\n _getCellPosition: function($cell, direction) {\r\n var columnIndex;\r\n var $row = isElementDefined($cell) && $cell.closest(\"tr\");\r\n var rowsView = this.getView(\"rowsView\");\r\n if (isElementDefined($row)) {\r\n var rowIndex = this._getRowIndex($row);\r\n columnIndex = rowsView.getCellIndex($cell, rowIndex);\r\n columnIndex += this._getFocusedColumnIndexOffset(columnIndex);\r\n if (direction) {\r\n columnIndex = \"previous\" === direction ? columnIndex - 1 : columnIndex + 1;\r\n columnIndex = this._applyColumnIndexBoundaries(columnIndex)\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }\r\n },\r\n _focusCell: function($cell, isDisabled) {\r\n if (this._isCellValid($cell)) {\r\n this._focus($cell, isDisabled);\r\n return true\r\n }\r\n },\r\n _focusEditFormCell: function($cell) {\r\n if ($cell.hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n this._editorFactory.focus($cell, true)\r\n }\r\n },\r\n _resetFocusedCell: function(preventScroll) {\r\n var _this$_focusedView;\r\n var $cell = this._getFocusedCell();\r\n isElementDefined($cell) && $cell.removeAttr(\"tabindex\");\r\n this._isNeedFocus = false;\r\n this._isNeedScroll = false;\r\n this._focusedCellPosition = {};\r\n clearTimeout(this._updateFocusTimeout);\r\n null === (_this$_focusedView = this._focusedView) || void 0 === _this$_focusedView ? void 0 : _this$_focusedView.renderFocusState(preventScroll)\r\n },\r\n restoreFocusableElement: function(rowIndex, $event) {\r\n var that = this;\r\n var args;\r\n var $rowElement;\r\n var isUpArrow = (0, _type.isDefined)(rowIndex);\r\n var rowsView = that.getView(\"rowsView\");\r\n var $rowsViewElement = rowsView.element();\r\n var columnIndex = that._focusedCellPosition.columnIndex;\r\n var rowIndexOffset = that._dataController.getRowIndexOffset();\r\n rowIndex = isUpArrow ? rowIndex : rowsView.getTopVisibleItemIndex() + rowIndexOffset;\r\n if (!isUpArrow) {\r\n that._editorFactory.loseFocus();\r\n that._applyTabIndexToElement($rowsViewElement);\r\n _events_engine.default.trigger($rowsViewElement, \"focus\")\r\n } else {\r\n $rowElement = rowsView.getRow(rowIndex - rowIndexOffset);\r\n args = that._fireFocusedRowChanging($event, $rowElement);\r\n if (!args.cancel && args.rowIndexChanged) {\r\n rowIndex = args.newRowIndex\r\n }\r\n }\r\n if (!isUpArrow || !args.cancel) {\r\n that.setFocusedCellPosition(rowIndex, columnIndex)\r\n }\r\n isUpArrow && that._updateFocus()\r\n },\r\n _getNewPositionByCode: function(cellPosition, elementType, code) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var rowIndex = cellPosition.rowIndex;\r\n var visibleColumnsCount;\r\n if (void 0 === cellPosition.rowIndex && \"next\" === code) {\r\n return {\r\n columnIndex: 0,\r\n rowIndex: 0\r\n }\r\n }\r\n switch (code) {\r\n case \"nextInRow\":\r\n case \"next\":\r\n visibleColumnsCount = this._getVisibleColumnCount();\r\n if (columnIndex < visibleColumnsCount - 1 && \"row\" !== elementType && this._hasValidCellAfterPosition({\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n })) {\r\n columnIndex++\r\n } else {\r\n if (!this._isLastRow(rowIndex) && \"next\" === code) {\r\n columnIndex = 0;\r\n rowIndex++\r\n }\r\n }\r\n break;\r\n case \"previousInRow\":\r\n case \"previous\":\r\n if (columnIndex > 0 && \"row\" !== elementType && this._hasValidCellBeforePosition({\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n })) {\r\n columnIndex--\r\n } else {\r\n if (rowIndex > 0 && \"previous\" === code) {\r\n rowIndex--;\r\n visibleColumnsCount = this._getVisibleColumnCount();\r\n columnIndex = visibleColumnsCount - 1\r\n }\r\n }\r\n break;\r\n case \"upArrow\":\r\n rowIndex = rowIndex > 0 ? rowIndex - 1 : rowIndex;\r\n break;\r\n case \"downArrow\":\r\n rowIndex = !this._isLastRow(rowIndex) ? rowIndex + 1 : rowIndex\r\n }\r\n return {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n }\r\n },\r\n setFocusedCellPosition: function(rowIndex, columnIndex) {\r\n this.setFocusedRowIndex(rowIndex);\r\n this.setFocusedColumnIndex(columnIndex)\r\n },\r\n setFocusedRowIndex: function(rowIndex) {\r\n if (!this._focusedCellPosition) {\r\n this._focusedCellPosition = {}\r\n }\r\n this._focusedCellPosition.rowIndex = rowIndex\r\n },\r\n setFocusedColumnIndex: function(columnIndex) {\r\n if (!this._focusedCellPosition) {\r\n this._focusedCellPosition = {}\r\n }\r\n this._focusedCellPosition.columnIndex = columnIndex\r\n },\r\n getRowIndex: function() {\r\n return this._focusedCellPosition ? this._focusedCellPosition.rowIndex : -1\r\n },\r\n getColumnIndex: function() {\r\n return this._focusedCellPosition ? this._focusedCellPosition.columnIndex : -1\r\n },\r\n getVisibleRowIndex: function() {\r\n var rowIndex = this._focusedCellPosition && this._focusedCellPosition.rowIndex;\r\n if (!(0, _type.isDefined)(rowIndex)) {\r\n return -1\r\n }\r\n return rowIndex - this._dataController.getRowIndexOffset()\r\n },\r\n getVisibleColumnIndex: function() {\r\n var columnIndex = this._focusedCellPosition && this._focusedCellPosition.columnIndex;\r\n if (!(0, _type.isDefined)(columnIndex)) {\r\n return -1\r\n }\r\n return columnIndex - this._columnsController.getColumnIndexOffset()\r\n },\r\n _applyColumnIndexBoundaries: function(columnIndex) {\r\n var visibleColumnsCount = this._getVisibleColumnCount();\r\n if (columnIndex < 0) {\r\n columnIndex = 0\r\n } else {\r\n if (columnIndex >= visibleColumnsCount) {\r\n columnIndex = visibleColumnsCount - 1\r\n }\r\n }\r\n return columnIndex\r\n },\r\n _isCellByPositionValid: function(cellPosition) {\r\n var $cell = (0, _renderer.default)(this._getCell(cellPosition));\r\n return this._isCellValid($cell)\r\n },\r\n _isLastRow: function(rowIndex) {\r\n var dataController = this._dataController;\r\n if (this._isVirtualRowRender()) {\r\n return rowIndex >= dataController.getMaxRowIndex()\r\n }\r\n return rowIndex === dataController.items().length - 1\r\n },\r\n _isFirstValidCell: function(cellPosition) {\r\n var isFirstValidCell = false;\r\n if (0 === cellPosition.rowIndex && cellPosition.columnIndex >= 0) {\r\n isFirstValidCell = isFirstValidCell || !this._hasValidCellBeforePosition(cellPosition)\r\n }\r\n return isFirstValidCell\r\n },\r\n _hasValidCellBeforePosition: function(cellPosition) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var hasValidCells = false;\r\n while (columnIndex > 0 && !hasValidCells) {\r\n var checkingPosition = {\r\n columnIndex: --columnIndex,\r\n rowIndex: cellPosition.rowIndex\r\n };\r\n hasValidCells = this._isCellByPositionValid(checkingPosition)\r\n }\r\n return hasValidCells\r\n },\r\n _hasValidCellAfterPosition: function(cellPosition) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var hasValidCells = false;\r\n var visibleColumnCount = this._getVisibleColumnCount();\r\n while (columnIndex < visibleColumnCount - 1 && !hasValidCells) {\r\n var checkingPosition = {\r\n columnIndex: ++columnIndex,\r\n rowIndex: cellPosition.rowIndex\r\n };\r\n hasValidCells = this._isCellByPositionValid(checkingPosition)\r\n }\r\n return hasValidCells\r\n },\r\n _isLastValidCell: function(cellPosition) {\r\n var nextColumnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex + 1 : 0;\r\n var rowIndex = cellPosition.rowIndex;\r\n var checkingPosition = {\r\n columnIndex: nextColumnIndex,\r\n rowIndex: rowIndex\r\n };\r\n var visibleRows = this._dataController.getVisibleRows();\r\n var row = visibleRows && visibleRows[rowIndex];\r\n var isLastRow = this._isLastRow(rowIndex);\r\n if (!isLastRow) {\r\n return false\r\n }\r\n if (row && \"group\" === row.rowType && cellPosition.columnIndex > 0) {\r\n return true\r\n }\r\n if (cellPosition.columnIndex === this._getVisibleColumnCount() - 1) {\r\n return true\r\n }\r\n if (this._isCellByPositionValid(checkingPosition)) {\r\n return false\r\n }\r\n return this._isLastValidCell(checkingPosition)\r\n },\r\n _isCellValid: function($cell, isClick) {\r\n if (isElementDefined($cell)) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var $row = $cell.parent();\r\n var columnsController = this._columnsController;\r\n var columnIndex = rowsView.getCellIndex($cell) + columnsController.getColumnIndexOffset();\r\n var column = columnsController.getVisibleColumns(null, true)[columnIndex];\r\n var visibleColumnCount = this._getVisibleColumnCount();\r\n var editingController = this._editingController;\r\n var isMasterDetailRow = isDetailRow($row);\r\n var isShowWhenGrouped = column && column.showWhenGrouped;\r\n var isDataCell = column && !$cell.hasClass(COMMAND_EXPAND_CLASS) && isDataRow($row);\r\n var isValidGroupSpaceColumn = function() {\r\n return !isMasterDetailRow && column && (!(0, _type.isDefined)(column.groupIndex) || isShowWhenGrouped && isDataCell) || parseInt($cell.attr(\"colspan\")) > 1\r\n };\r\n if (this._isMasterDetailCell($cell)) {\r\n return true\r\n }\r\n if (visibleColumnCount > columnIndex && isValidGroupSpaceColumn()) {\r\n var rowItems = this._dataController.items();\r\n var visibleRowIndex = rowsView.getRowIndex($row);\r\n var row = rowItems[visibleRowIndex];\r\n var isCellEditing = editingController && this._isCellEditMode() && editingController.isEditing();\r\n var isRowEditingInCurrentRow = editingController && editingController.isEditRow(visibleRowIndex);\r\n var isEditing = isRowEditingInCurrentRow || isCellEditing;\r\n if (column.command) {\r\n if (this._isLegacyNavigation()) {\r\n return !isEditing && \"expand\" === column.command\r\n }\r\n if (isCellEditing) {\r\n return false\r\n }\r\n if (isRowEditingInCurrentRow) {\r\n return \"select\" !== column.command\r\n }\r\n return !isEditing\r\n }\r\n if (isCellEditing && row && \"data\" !== row.rowType) {\r\n return false\r\n }\r\n return !isEditing || column.allowEditing || isClick\r\n }\r\n }\r\n },\r\n getFirstValidCellInRow: function($row, columnIndex) {\r\n var that = this;\r\n var $cells = $row.find(\"> td\");\r\n var $cell;\r\n var $result;\r\n columnIndex = columnIndex || 0;\r\n for (var i = columnIndex; i < $cells.length; ++i) {\r\n $cell = $cells.eq(i);\r\n if (that._isCellValid($cell)) {\r\n $result = $cell;\r\n break\r\n }\r\n }\r\n return $result\r\n },\r\n _getNextCell: function(keyCode, elementType, cellPosition) {\r\n var focusedCellPosition = cellPosition || this._focusedCellPosition;\r\n var isRowFocusType = this.isRowFocusType();\r\n var includeCommandCells = isRowFocusType || (0, _array.inArray)(keyCode, [\"next\", \"previous\"]) > -1;\r\n var $cell;\r\n var $row;\r\n if (this._focusedView && focusedCellPosition) {\r\n var newFocusedCellPosition = this._getNewPositionByCode(focusedCellPosition, elementType, keyCode);\r\n $cell = (0, _renderer.default)(this._getCell(newFocusedCellPosition));\r\n var isLastCellOnDirection = \"previous\" === keyCode ? this._isFirstValidCell(newFocusedCellPosition) : this._isLastValidCell(newFocusedCellPosition);\r\n if (isElementDefined($cell) && !this._isCellValid($cell) && this._isCellInRow(newFocusedCellPosition, includeCommandCells) && !isLastCellOnDirection) {\r\n if (isRowFocusType) {\r\n $cell = this.getFirstValidCellInRow($cell.parent(), newFocusedCellPosition.columnIndex)\r\n } else {\r\n $cell = this._getNextCell(keyCode, \"cell\", newFocusedCellPosition)\r\n }\r\n }\r\n $row = isElementDefined($cell) && $cell.parent();\r\n if (this._hasSkipRow($row)) {\r\n var rowIndex = this._getRowIndex($row);\r\n if (!this._isLastRow(rowIndex)) {\r\n $cell = this._getNextCell(keyCode, \"row\", {\r\n columnIndex: focusedCellPosition.columnIndex,\r\n rowIndex: rowIndex\r\n })\r\n } else {\r\n return null\r\n }\r\n }\r\n return isElementDefined($cell) ? $cell : null\r\n }\r\n return null\r\n },\r\n _startEditing: function(eventArgs, fastEditingKey) {\r\n var focusedCellPosition = this._focusedCellPosition;\r\n var visibleRowIndex = this.getVisibleRowIndex();\r\n var visibleColumnIndex = this.getVisibleColumnIndex();\r\n var row = this._dataController.items()[visibleRowIndex];\r\n var column = this._columnsController.getVisibleColumns()[visibleColumnIndex];\r\n if (this._isAllowEditing(row, column)) {\r\n if (this._isRowEditMode()) {\r\n this._editingController.editRow(visibleRowIndex)\r\n } else {\r\n if (focusedCellPosition) {\r\n this._startEditCell(eventArgs, fastEditingKey)\r\n }\r\n }\r\n }\r\n },\r\n _isAllowEditing: function(row, column) {\r\n return this._editingController.allowUpdating({\r\n row: row\r\n }) && column && column.allowEditing\r\n },\r\n _editFocusedCell: function() {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var colIndex = this.getVisibleColumnIndex();\r\n return this._editingController.editCell(rowIndex, colIndex)\r\n },\r\n _startEditCell: function(eventArgs, fastEditingKey) {\r\n var _this7 = this;\r\n this._fastEditingStarted = (0, _type.isDefined)(fastEditingKey);\r\n var editResult = this._editFocusedCell();\r\n if (this._isFastEditingStarted()) {\r\n if (true === editResult) {\r\n this._editingCellHandler(eventArgs, fastEditingKey)\r\n } else {\r\n if (editResult && editResult.done) {\r\n var editorValue = fastEditingKey !== FAST_EDITING_DELETE_KEY ? fastEditingKey : \"\";\r\n editResult.done(function() {\r\n return _this7._editingCellHandler(eventArgs, editorValue)\r\n })\r\n }\r\n }\r\n }\r\n },\r\n _editingCellHandler: function(eventArgs, editorValue) {\r\n var _$input$get$select, _$input$get;\r\n var $input = this._getFocusedCell().find(INTERACTIVE_ELEMENTS_SELECTOR).eq(0);\r\n var keyDownEvent = (0, _index.createEvent)(eventArgs, {\r\n type: \"keydown\",\r\n target: $input.get(0)\r\n });\r\n var keyPressEvent = (0, _index.createEvent)(eventArgs, {\r\n type: \"keypress\",\r\n target: $input.get(0)\r\n });\r\n var inputEvent = (0, _index.createEvent)(eventArgs, {\r\n type: \"input\",\r\n target: $input.get(0)\r\n });\r\n null === (_$input$get$select = (_$input$get = $input.get(0)).select) || void 0 === _$input$get$select ? void 0 : _$input$get$select.call(_$input$get);\r\n _events_engine.default.trigger($input, keyDownEvent);\r\n if (!keyDownEvent.isDefaultPrevented()) {\r\n _events_engine.default.trigger($input, keyPressEvent);\r\n if (!keyPressEvent.isDefaultPrevented()) {\r\n var timeout = _browser.default.mozilla ? 25 : 0;\r\n setTimeout(function() {\r\n $input.val(editorValue);\r\n if (_browser.default.msie) {\r\n _uiGrid_core2.default.setSelectionRange($input.get(0), {\r\n selectionStart: editorValue.length,\r\n selectionEnd: editorValue.length\r\n })\r\n }\r\n var $widgetContainer = $input.closest(\".\".concat(WIDGET_CLASS));\r\n _events_engine.default.off($widgetContainer, \"focusout\");\r\n _events_engine.default.one($widgetContainer, \"focusout\", function() {\r\n _events_engine.default.trigger($input, \"change\")\r\n });\r\n _events_engine.default.trigger($input, inputEvent)\r\n }, timeout)\r\n }\r\n }\r\n },\r\n _fireFocusChangingEvents: function($event, $cell, fireRowEvent, isHighlighted) {\r\n var args = {};\r\n var cellPosition = this._getCellPosition($cell) || {};\r\n if (this.isCellFocusType()) {\r\n args = this._fireFocusedCellChanging($event, $cell, isHighlighted);\r\n if (!args.cancel) {\r\n cellPosition.columnIndex = args.newColumnIndex;\r\n cellPosition.rowIndex = args.newRowIndex;\r\n isHighlighted = args.isHighlighted;\r\n $cell = (0, _renderer.default)(this._getCell(cellPosition))\r\n }\r\n }\r\n if (!args.cancel && fireRowEvent && $cell) {\r\n args = this._fireFocusedRowChanging($event, $cell.parent());\r\n if (!args.cancel) {\r\n cellPosition.rowIndex = args.newRowIndex;\r\n args.isHighlighted = isHighlighted\r\n }\r\n }\r\n args.$newCellElement = (0, _renderer.default)(this._getCell(cellPosition));\r\n if (!args.$newCellElement.length) {\r\n args.$newCellElement = $cell\r\n }\r\n return args\r\n },\r\n _fireFocusedCellChanging: function($event, $cellElement, isHighlighted) {\r\n var that = this;\r\n var prevCellIndex = that.option(\"focusedColumnIndex\");\r\n var prevRowIndex = that.option(\"focusedRowIndex\");\r\n var cellPosition = that._getCellPosition($cellElement);\r\n var columnIndex = cellPosition ? cellPosition.columnIndex : -1;\r\n var rowIndex = cellPosition ? cellPosition.rowIndex : -1;\r\n var args = {\r\n cellElement: $cellElement,\r\n prevColumnIndex: prevCellIndex,\r\n prevRowIndex: prevRowIndex,\r\n newColumnIndex: columnIndex,\r\n newRowIndex: rowIndex,\r\n rows: that._dataController.getVisibleRows(),\r\n columns: that._columnsController.getVisibleColumns(),\r\n event: $event,\r\n isHighlighted: isHighlighted || false,\r\n cancel: false\r\n };\r\n this._canceledCellPosition = null;\r\n that.executeAction(\"onFocusedCellChanging\", args);\r\n if (args.newColumnIndex !== columnIndex || args.newRowIndex !== rowIndex) {\r\n args.$newCellElement = (0, _renderer.default)(this._getCell({\r\n columnIndex: args.newColumnIndex,\r\n rowIndex: args.newRowIndex\r\n }))\r\n }\r\n if (args.cancel) {\r\n this._canceledCellPosition = {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }\r\n return args\r\n },\r\n _fireFocusedCellChanged: function($cellElement, prevCellIndex, prevRowIndex) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var columnIndex = that.getView(\"rowsView\").getCellIndex($cellElement);\r\n var rowIndex = this._getRowIndex($cellElement && $cellElement.parent());\r\n var localRowIndex = Math.min(rowIndex - dataController.getRowIndexOffset(), dataController.items().length - 1);\r\n var isEditingCell = that._editingController.isEditCell(localRowIndex, columnIndex);\r\n var row = dataController.items()[localRowIndex];\r\n if (!isEditingCell && (prevCellIndex !== columnIndex || prevRowIndex !== rowIndex)) {\r\n that.executeAction(\"onFocusedCellChanged\", {\r\n cellElement: $cellElement,\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex,\r\n row: row,\r\n column: that._columnsController.getVisibleColumns()[columnIndex]\r\n })\r\n }\r\n },\r\n _fireFocusedRowChanging: function(eventArgs, $newFocusedRow) {\r\n var newRowIndex = this._getRowIndex($newFocusedRow);\r\n var dataController = this._dataController;\r\n var prevFocusedRowIndex = this.option(\"focusedRowIndex\");\r\n var loadingOperationTypes = dataController.loadingOperationTypes();\r\n var args = {\r\n rowElement: $newFocusedRow,\r\n prevRowIndex: prevFocusedRowIndex,\r\n newRowIndex: newRowIndex,\r\n event: eventArgs,\r\n rows: dataController.getVisibleRows(),\r\n cancel: false\r\n };\r\n if (!dataController || dataController.isLoading() && (loadingOperationTypes.reload || loadingOperationTypes.paging)) {\r\n args.cancel = true;\r\n return args\r\n }\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this.executeAction(\"onFocusedRowChanging\", args);\r\n if (!args.cancel && args.newRowIndex !== newRowIndex) {\r\n args.resetFocusedRow = args.newRowIndex < 0;\r\n if (!args.resetFocusedRow) {\r\n this.setFocusedRowIndex(args.newRowIndex)\r\n }\r\n args.rowIndexChanged = true\r\n }\r\n }\r\n return args\r\n },\r\n _fireFocusedRowChanged: function($rowElement) {\r\n var row;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var focusController = this.getController(\"focus\");\r\n var focusedRowIndex = null === focusController || void 0 === focusController ? void 0 : focusController.getFocusedRowIndexByKey(focusedRowKey);\r\n if (this.option(\"focusedRowEnabled\")) {\r\n if (focusedRowIndex >= 0) {\r\n var dataController = this._dataController;\r\n row = focusedRowIndex >= 0 && dataController.getVisibleRows()[focusedRowIndex - dataController.getRowIndexOffset()]\r\n }\r\n this.executeAction(\"onFocusedRowChanged\", {\r\n rowElement: $rowElement,\r\n rowIndex: focusedRowIndex,\r\n row: row\r\n })\r\n }\r\n },\r\n _isEventInCurrentGrid: function(event) {\r\n return _uiGrid_core2.default.isElementInCurrentGrid(this, (0, _renderer.default)(event.target))\r\n },\r\n _isRowEditMode: function() {\r\n var editMode = this._editingController.getEditMode();\r\n return editMode === EDIT_MODE_ROW || editMode === EDIT_MODE_FORM\r\n },\r\n _isCellEditMode: function() {\r\n var editMode = this._editingController.getEditMode();\r\n return editMode === EDIT_MODE_CELL || editMode === EDIT_MODE_BATCH\r\n },\r\n _isFastEditingAllowed: function() {\r\n return this._isCellEditMode() && this.option(\"keyboardNavigation.editOnKeyPress\")\r\n },\r\n _getInteractiveElement: function($cell, isLast) {\r\n var $focusedElement = $cell.find(INTERACTIVE_ELEMENTS_SELECTOR).filter(\":visible\");\r\n return isLast ? $focusedElement.last() : $focusedElement.first()\r\n },\r\n _applyTabIndexToElement: function($element) {\r\n var tabIndex = this.option(\"tabIndex\") || 0;\r\n $element.attr(\"tabindex\", (0, _type.isDefined)(tabIndex) ? tabIndex : 0)\r\n },\r\n _getCell: function(cellPosition) {\r\n if (this._focusedView && cellPosition) {\r\n var rowIndexOffset = this._dataController.getRowIndexOffset();\r\n var column = this._columnsController.getVisibleColumns(null, true)[cellPosition.columnIndex];\r\n var columnIndexOffset = column && column.fixed ? this._getFixedColumnIndexOffset(column) : this._columnsController.getColumnIndexOffset();\r\n var rowIndex = cellPosition.rowIndex >= 0 ? cellPosition.rowIndex - rowIndexOffset : -1;\r\n var columnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex - columnIndexOffset : -1;\r\n return this._focusedView.getCell({\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n })\r\n }\r\n },\r\n _getRowIndex: function($row) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var rowIndex = rowsView.getRowIndex($row);\r\n if (rowIndex >= 0) {\r\n rowIndex += this._dataController.getRowIndexOffset()\r\n }\r\n return rowIndex\r\n },\r\n _hasSkipRow: function($row) {\r\n var row = $row && $row.get(0);\r\n return row && (\"none\" === row.style.display || $row.hasClass(this.addWidgetPrefix(GROUP_FOOTER_CLASS)) || isDetailRow($row) && !$row.hasClass(this.addWidgetPrefix(EDIT_FORM_CLASS)))\r\n },\r\n _allowEditingOnEnterKey: function() {\r\n return \"startEdit\" === this.option(\"keyboardNavigation.enterKeyAction\")\r\n },\r\n _isLegacyNavigation: function() {\r\n return this.option(\"useLegacyKeyboardNavigation\")\r\n },\r\n _getDirectionCodeByKey: function(key) {\r\n var directionCode;\r\n switch (key) {\r\n case \"upArrow\":\r\n directionCode = \"prevRow\";\r\n break;\r\n case \"downArrow\":\r\n directionCode = \"nextRow\";\r\n break;\r\n case \"leftArrow\":\r\n directionCode = this.option(\"rtlEnabled\") ? \"nextInRow\" : \"previousInRow\";\r\n break;\r\n case \"rightArrow\":\r\n directionCode = this.option(\"rtlEnabled\") ? \"previousInRow\" : \"nextInRow\"\r\n }\r\n return directionCode\r\n },\r\n _isVirtualScrolling: function() {\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n return \"virtual\" === scrollingMode || \"infinite\" === scrollingMode\r\n },\r\n _isVirtualRowRender: function() {\r\n return this._isVirtualScrolling() || \"virtual\" === this.option(\"scrolling.rowRenderingMode\")\r\n },\r\n _isVirtualColumnRender: function() {\r\n return \"virtual\" === this.option(\"scrolling.columnRenderingMode\")\r\n },\r\n _scrollBy: function(left, top, rowIndex, $event) {\r\n var that = this;\r\n var scrollable = this.getView(\"rowsView\").getScrollable();\r\n if (that._focusedCellPosition) {\r\n var scrollHandler = function scrollHandler() {\r\n scrollable.off(\"scroll\", scrollHandler);\r\n setTimeout(that.restoreFocusableElement.bind(that, rowIndex, $event))\r\n };\r\n scrollable.on(\"scroll\", scrollHandler)\r\n }\r\n return scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n },\r\n _isInsideEditForm: function(element) {\r\n return (0, _renderer.default)(element).closest(\".\" + this.addWidgetPrefix(EDIT_FORM_CLASS)).length > 0\r\n },\r\n _isMasterDetailCell: function(element) {\r\n var $masterDetailCell = (0, _renderer.default)(element).closest(\".\" + MASTER_DETAIL_CELL_CLASS);\r\n var $masterDetailGrid = $masterDetailCell.closest(\".\" + this.getWidgetContainerClass()).parent();\r\n return $masterDetailCell.length && $masterDetailGrid.is(this.component.$element())\r\n },\r\n _processNextCellInMasterDetail: function($nextCell) {\r\n if (!this._isInsideEditForm($nextCell) && $nextCell) {\r\n this._applyTabIndexToElement($nextCell)\r\n }\r\n },\r\n _handleTabKeyOnMasterDetailCell: function(target, direction) {\r\n if (this._isMasterDetailCell(target)) {\r\n this._updateFocusedCellPosition((0, _renderer.default)(target), direction);\r\n var $nextCell = this._getNextCell(direction, \"row\");\r\n this._processNextCellInMasterDetail($nextCell);\r\n return true\r\n }\r\n return false\r\n },\r\n _getElementType: function(target) {\r\n return (0, _renderer.default)(target).is(\"tr\") ? \"row\" : \"cell\"\r\n },\r\n _isFastEditingStarted: function() {\r\n return this._isFastEditingAllowed() && this._fastEditingStarted\r\n },\r\n _getVisibleColumnCount: function() {\r\n return this._columnsController.getVisibleColumns(null, true).length\r\n },\r\n _isCellInRow: function(cellPosition, includeCommandCells) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var visibleColumnsCount = this._getVisibleColumnCount();\r\n return includeCommandCells ? columnIndex >= 0 && columnIndex <= visibleColumnsCount - 1 : columnIndex > 0 && columnIndex < visibleColumnsCount - 1\r\n },\r\n _getCellElementFromTarget: function(target) {\r\n var elementType = this._getElementType(target);\r\n var $targetElement = (0, _renderer.default)(target);\r\n var $cell;\r\n if (\"cell\" === elementType) {\r\n $cell = $targetElement.closest(\".\".concat(ROW_CLASS, \" > td\"))\r\n } else {\r\n $cell = $targetElement.children().not(\".\" + COMMAND_EXPAND_CLASS).first()\r\n }\r\n return $cell\r\n },\r\n _getRowsViewElement: function() {\r\n var rowsView = this.getView(\"rowsView\");\r\n return rowsView && rowsView.element()\r\n },\r\n isKeyboardEnabled: function() {\r\n return this.option(\"keyboardNavigation.enabled\")\r\n },\r\n _processCanceledEditCellPosition: function(rowIndex, columnIndex) {\r\n if (this._canceledCellPosition) {\r\n var isCanceled = this._canceledCellPosition.rowIndex === rowIndex && this._canceledCellPosition.columnIndex === columnIndex;\r\n this._canceledCellPosition = null;\r\n return isCanceled\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n useLegacyKeyboardNavigation: false,\r\n keyboardNavigation: {\r\n enabled: true,\r\n enterKeyAction: \"startEdit\",\r\n enterKeyDirection: \"none\",\r\n editOnKeyPress: false\r\n }\r\n }\r\n },\r\n controllers: {\r\n keyboardNavigation: KeyboardNavigationController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _rowClick: function(e) {\r\n var editRowIndex = this.getController(\"editing\").getEditRowIndex();\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (editRowIndex === e.rowIndex) {\r\n keyboardController.setCellFocusType()\r\n }\r\n var needTriggerPointerEventHandler = isMobile() && this.option(\"focusedRowEnabled\");\r\n if (needTriggerPointerEventHandler) {\r\n this._triggerPointerDownEventHandler(e)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _triggerPointerDownEventHandler: function(e) {\r\n var originalEvent = e.event.originalEvent;\r\n if (originalEvent) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var $cell = (0, _renderer.default)(originalEvent.target);\r\n var columnIndex = this.getCellIndex($cell);\r\n var column = this.getController(\"columns\").getVisibleColumns()[columnIndex];\r\n var row = this.getController(\"data\").items()[e.rowIndex];\r\n if (keyboardController._isAllowEditing(row, column)) {\r\n var eventArgs = (0, _index.createEvent)(originalEvent, {\r\n currentTarget: originalEvent.target\r\n });\r\n keyboardController._pointerEventHandler(eventArgs)\r\n }\r\n }\r\n },\r\n renderFocusState: function(preventScroll) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var $rowsViewElement = this.element();\r\n if ($rowsViewElement && !(0, _selectors.focused)($rowsViewElement)) {\r\n $rowsViewElement.attr(\"tabindex\", null)\r\n }\r\n var rowIndex = keyboardController.getVisibleRowIndex();\r\n if (!(0, _type.isDefined)(rowIndex) || rowIndex < 0) {\r\n rowIndex = 0\r\n }\r\n var cellElements = this.getCellElements(rowIndex);\r\n if (keyboardController.isKeyboardEnabled() && cellElements.length) {\r\n this.updateFocusElementTabIndex(cellElements, preventScroll)\r\n }\r\n },\r\n updateFocusElementTabIndex: function(cellElements) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var $row = cellElements.eq(0).parent();\r\n if (isGroupRow($row)) {\r\n keyboardController._applyTabIndexToElement($row)\r\n } else {\r\n var columnIndex = keyboardController.getColumnIndex();\r\n if (!(0, _type.isDefined)(columnIndex) || columnIndex < 0) {\r\n columnIndex = 0\r\n }\r\n this._updateFocusedCellTabIndex(cellElements, columnIndex)\r\n }\r\n },\r\n _updateFocusedCellTabIndex: function(cellElements, columnIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var cellElementsLength = cellElements ? cellElements.length : -1;\r\n var updateCellTabIndex = function($cell) {\r\n var isMasterDetailCell = keyboardController._isMasterDetailCell($cell);\r\n var isValidCell = keyboardController._isCellValid($cell);\r\n if (!isMasterDetailCell && isValidCell && isCellElement($cell)) {\r\n keyboardController._applyTabIndexToElement($cell);\r\n keyboardController.setCellFocusType();\r\n return true\r\n }\r\n };\r\n var $cell = cellElements.filter(\"[aria-colindex='\".concat(columnIndex + 1, \"']\"));\r\n if ($cell.length) {\r\n updateCellTabIndex($cell)\r\n } else {\r\n if (cellElementsLength <= columnIndex) {\r\n columnIndex = cellElementsLength - 1\r\n }\r\n for (var i = columnIndex; i < cellElementsLength; ++i) {\r\n if (updateCellTabIndex((0, _renderer.default)(cellElements[i]))) {\r\n break\r\n }\r\n }\r\n }\r\n },\r\n renderDelayedTemplates: function(change) {\r\n this.callBase.apply(this, arguments);\r\n this._renderFocusByChange(change)\r\n },\r\n _renderFocusByChange: function(change) {\r\n if (!change || !change.repaintChangesOnly) {\r\n var preventScroll = shouldPreventScroll(this);\r\n this.renderFocusState(preventScroll)\r\n }\r\n },\r\n _renderCore: function(change) {\r\n this.callBase.apply(this, arguments);\r\n this._renderFocusByChange(change)\r\n },\r\n _editCellPrepared: function($cell) {\r\n var editorInstance = this._getEditorInstance($cell);\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var isEditingNavigationMode = keyboardController && keyboardController._isFastEditingStarted();\r\n if (editorInstance && isEditingNavigationMode) {\r\n this._handleEditingNavigationMode(editorInstance)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _handleEditingNavigationMode: function(editorInstance) {\r\n [\"downArrow\", \"upArrow\"].forEach(function(keyName) {\r\n var originalKeyHandler = editorInstance._supportedKeys()[keyName];\r\n editorInstance.registerKeyHandler(keyName, function(e) {\r\n var isDropDownOpened = \"true\" === editorInstance._input().attr(\"aria-expanded\");\r\n if (isDropDownOpened) {\r\n return originalKeyHandler && originalKeyHandler.call(editorInstance, e)\r\n }\r\n })\r\n });\r\n editorInstance.registerKeyHandler(\"leftArrow\", _common.noop);\r\n editorInstance.registerKeyHandler(\"rightArrow\", _common.noop);\r\n var isDateBoxWithMask = editorInstance.NAME === DATEBOX_WIDGET_NAME && editorInstance.option(\"useMaskBehavior\");\r\n if (isDateBoxWithMask) {\r\n editorInstance.registerKeyHandler(\"enter\", _common.noop)\r\n }\r\n },\r\n _getEditorInstance: function($cell) {\r\n var $editor = $cell.find(\".dx-texteditor\").eq(0);\r\n return _uiGrid_core2.default.getWidgetInstance($editor)\r\n }\r\n }\r\n },\r\n controllers: {\r\n editing: {\r\n editCell: function(rowIndex, columnIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (keyboardController._processCanceledEditCellPosition(rowIndex, columnIndex)) {\r\n return false\r\n }\r\n var isCellEditing = this.callBase(rowIndex, columnIndex);\r\n if (isCellEditing) {\r\n keyboardController.setupFocusedView()\r\n }\r\n return isCellEditing\r\n },\r\n editRow: function(rowIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var visibleColumnIndex = keyboardController.getVisibleColumnIndex();\r\n var column = this._columnsController.getVisibleColumns()[visibleColumnIndex];\r\n if (column && column.type || this.option(\"editing.mode\") === EDIT_MODE_FORM) {\r\n keyboardController._resetFocusedCell()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n addRow: function(parentKey) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n keyboardController.setupFocusedView();\r\n keyboardController.setCellFocusType();\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getFocusedCellInRow: function(rowIndex) {\r\n var keyboardNavigationController = this.getController(\"keyboardNavigation\");\r\n var $cell = this.callBase(rowIndex);\r\n if (keyboardNavigationController.isKeyboardEnabled() && keyboardNavigationController._focusedCellPosition.rowIndex === rowIndex) {\r\n var $focusedCell = keyboardNavigationController._getFocusedCell();\r\n if (isElementDefined($focusedCell) && !$focusedCell.hasClass(COMMAND_EDIT_CLASS)) {\r\n $cell = $focusedCell\r\n }\r\n }\r\n return $cell\r\n },\r\n _processCanceledEditingCell: function() {\r\n var _this8 = this;\r\n this.closeEditCell().done(function() {\r\n var keyboardNavigation = _this8.getController(\"keyboardNavigation\");\r\n keyboardNavigation._updateFocus()\r\n })\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._keyboardNavigationController = this.getController(\"keyboardNavigation\")\r\n },\r\n closeEditCell: function() {\r\n var keyboardNavigation = this._keyboardNavigationController;\r\n keyboardNavigation._fastEditingStarted = false;\r\n var result = this.callBase.apply(this, arguments);\r\n keyboardNavigation._updateFocus();\r\n return result\r\n },\r\n _delayedInputFocus: function() {\r\n this._keyboardNavigationController._isNeedScroll = true;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _isEditingStart: function() {\r\n var keyboardNavigation = this.getController(\"keyboardNavigation\");\r\n var cancel = this.callBase.apply(this, arguments);\r\n if (cancel && !keyboardNavigation._isNeedFocus) {\r\n var $cell = keyboardNavigation._getFocusedCell();\r\n keyboardNavigation._focus($cell, true)\r\n }\r\n return cancel\r\n }\r\n },\r\n data: {\r\n _correctRowIndices: function(getRowIndexCorrection) {\r\n var that = this;\r\n var keyboardNavigationController = that.getController(\"keyboardNavigation\");\r\n var editorFactory = that.getController(\"editorFactory\");\r\n var focusedCellPosition = keyboardNavigationController._focusedCellPosition;\r\n that.callBase.apply(that, arguments);\r\n if (focusedCellPosition && focusedCellPosition.rowIndex >= 0) {\r\n var focusedRowIndexCorrection = getRowIndexCorrection(focusedCellPosition.rowIndex);\r\n if (focusedRowIndexCorrection) {\r\n focusedCellPosition.rowIndex += focusedRowIndexCorrection;\r\n editorFactory.refocus()\r\n }\r\n }\r\n },\r\n getMaxRowIndex: function() {\r\n var result = this.items().length - 1;\r\n var virtualItemsCount = this.virtualItemsCount();\r\n if (virtualItemsCount) {\r\n result += virtualItemsCount.begin + virtualItemsCount.end\r\n }\r\n return result\r\n }\r\n },\r\n adaptiveColumns: {\r\n _showHiddenCellsInView: function(_ref) {\r\n var viewName = _ref.viewName,\r\n $cells = _ref.$cells,\r\n isCommandColumn = _ref.isCommandColumn;\r\n this.callBase.apply(this, arguments);\r\n viewName === COLUMN_HEADERS_VIEW && !isCommandColumn && $cells.each(function(_, cellElement) {\r\n var $cell = (0, _renderer.default)(cellElement);\r\n isCellInHeaderRow($cell) && $cell.attr(\"tabindex\", 0)\r\n })\r\n },\r\n _hideVisibleCellInView: function(_ref2) {\r\n var viewName = _ref2.viewName,\r\n $cell = _ref2.$cell,\r\n isCommandColumn = _ref2.isCommandColumn;\r\n this.callBase.apply(this, arguments);\r\n if (viewName === COLUMN_HEADERS_VIEW && !isCommandColumn && isCellInHeaderRow($cell)) {\r\n $cell.removeAttr(\"tabindex\")\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.export_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 _extend = require(\"../../core/utils/extend\");\r\nvar _default = {\r\n _getEmptyCell: function() {\r\n return {\r\n text: \"\",\r\n value: void 0,\r\n colspan: 1,\r\n rowspan: 1\r\n }\r\n },\r\n _defaultSetter: function(value) {\r\n return !value ? 1 : value\r\n },\r\n _cloneItem: function(item) {\r\n return (0, _extend.extend)({}, item, this._getEmptyCell())\r\n },\r\n _prepareItems: function(items) {\r\n var that = this;\r\n var resultItems = [];\r\n var cols = (items[0] || []).reduce(function(sum, item) {\r\n return sum + that._defaultSetter(item.colspan)\r\n }, 0);\r\n var getItem = function(items) {\r\n var rowIndex = 0;\r\n var cellIndex = 0;\r\n return function() {\r\n var row = items[rowIndex] || [];\r\n var item = row[cellIndex++];\r\n if (cellIndex >= row.length) {\r\n rowIndex++;\r\n cellIndex = 0\r\n }\r\n if (item) {\r\n item.colspan = that._defaultSetter(item.colspan);\r\n item.rowspan = that._defaultSetter(item.rowspan)\r\n }\r\n return item\r\n }\r\n }(items);\r\n\r\n function addItem(rowIndex, cellIndex, item) {\r\n var row = resultItems[rowIndex] = resultItems[rowIndex] || [];\r\n row[cellIndex] = item;\r\n if (item.colspan > 1 || item.rowspan > 1) {\r\n var clone = that._cloneItem(item);\r\n for (var c = 1; c < item.colspan; c++) {\r\n addItem(rowIndex, cellIndex + c, clone)\r\n }\r\n for (var r = 1; r < item.rowspan; r++) {\r\n for (var _c = 0; _c < item.colspan; _c++) {\r\n addItem(rowIndex + r, cellIndex + _c, clone)\r\n }\r\n }\r\n }\r\n }\r\n var item = getItem();\r\n var rowIndex = 0;\r\n while (item) {\r\n for (var cellIndex = 0; cellIndex < cols; cellIndex++) {\r\n if (!item) {\r\n break\r\n }\r\n if (resultItems[rowIndex] && resultItems[rowIndex][cellIndex]) {\r\n continue\r\n }\r\n addItem(rowIndex, cellIndex, item);\r\n cellIndex += item.colspan - 1;\r\n item = getItem()\r\n }\r\n rowIndex++\r\n }\r\n return resultItems\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.focus.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 _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\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 ROW_FOCUSED_CLASS = \"dx-row-focused\";\r\nvar FOCUSED_ROW_SELECTOR = \".dx-row.\" + ROW_FOCUSED_CLASS;\r\nvar TABLE_POSTFIX_CLASS = \"table\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FocusController = _uiGrid_core.default.ViewController.inherit(function() {\r\n return {\r\n init: function() {\r\n this._dataController = this.getController(\"data\");\r\n this._keyboardController = this.getController(\"keyboardNavigation\");\r\n this.component._optionsByReference.focusedRowKey = true\r\n },\r\n optionChanged: function(args) {\r\n if (\"focusedRowIndex\" === args.name) {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n this._focusRowByIndex(args.value);\r\n this._triggerFocusedRowChangedIfNeed(focusedRowKey, args.value);\r\n args.handled = true\r\n } else {\r\n if (\"focusedRowKey\" === args.name) {\r\n var focusedRowIndex = this.option(\"focusedRowIndex\");\r\n this._focusRowByKey(args.value);\r\n this._triggerFocusedRowChangedIfNeed(args.value, focusedRowIndex);\r\n args.handled = true\r\n } else {\r\n if (\"focusedColumnIndex\" === args.name) {\r\n args.handled = true\r\n } else {\r\n if (\"focusedRowEnabled\" === args.name) {\r\n args.handled = true\r\n } else {\r\n if (\"autoNavigateToFocusedRow\" === args.name) {\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _triggerFocusedRowChangedIfNeed: function(focusedRowKey, focusedRowIndex) {\r\n var focusedRowIndexByKey = this.getFocusedRowIndexByKey(focusedRowKey);\r\n if (focusedRowIndex === focusedRowIndexByKey) {\r\n var rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);\r\n if (rowIndex >= 0) {\r\n var $rowElement = (0, _renderer.default)(this.getView(\"rowsView\").getRowElement(rowIndex));\r\n this.getController(\"keyboardNavigation\")._fireFocusedRowChanged($rowElement, focusedRowIndex)\r\n }\r\n }\r\n },\r\n isAutoNavigateToFocusedRow: function() {\r\n return \"infinite\" !== this.option(\"scrolling.mode\") && this.option(\"autoNavigateToFocusedRow\")\r\n },\r\n _focusRowByIndex: function(index, operationTypes) {\r\n if (!this.option(\"focusedRowEnabled\")) {\r\n return\r\n }\r\n index = void 0 !== index ? index : this.option(\"focusedRowIndex\");\r\n if (index < 0) {\r\n if (this.isAutoNavigateToFocusedRow()) {\r\n this._resetFocusedRow()\r\n }\r\n } else {\r\n this._focusRowByIndexCore(index, operationTypes)\r\n }\r\n },\r\n _focusRowByIndexCore: function(index, operationTypes) {\r\n var _this = this;\r\n var dataController = this.getController(\"data\");\r\n var pageSize = dataController.pageSize();\r\n var setKeyByIndex = function() {\r\n if (_this._isValidFocusedRowIndex(index)) {\r\n var rowIndex = index - dataController.getRowIndexOffset(true);\r\n if (!operationTypes || operationTypes.paging && !operationTypes.filtering) {\r\n var lastItemIndex = dataController._getLastItemIndex();\r\n rowIndex = Math.min(rowIndex, lastItemIndex)\r\n }\r\n var focusedRowKey = dataController.getKeyByRowIndex(rowIndex, true);\r\n if ((0, _type.isDefined)(focusedRowKey) && !_this.isRowFocused(focusedRowKey)) {\r\n _this.option(\"focusedRowKey\", focusedRowKey)\r\n }\r\n }\r\n };\r\n if (pageSize >= 0) {\r\n if (!this._isLocalRowIndex(index)) {\r\n var pageIndex = Math.floor(index / dataController.pageSize());\r\n (0, _deferred.when)(dataController.pageIndex(pageIndex), dataController.waitReady()).done(function() {\r\n setKeyByIndex()\r\n })\r\n } else {\r\n setKeyByIndex()\r\n }\r\n }\r\n },\r\n _isLocalRowIndex: function(index) {\r\n var dataController = this.getController(\"data\");\r\n var isVirtualScrolling = this.getController(\"keyboardNavigation\")._isVirtualScrolling();\r\n if (isVirtualScrolling) {\r\n var pageIndex = Math.floor(index / dataController.pageSize());\r\n var virtualItems = dataController.virtualItemsCount();\r\n var virtualItemsBegin = virtualItems ? virtualItems.begin : -1;\r\n var visibleRowsCount = dataController.getVisibleRows().length + dataController.getRowIndexOffset();\r\n var visiblePagesCount = Math.ceil(visibleRowsCount / dataController.pageSize());\r\n return virtualItemsBegin <= index && visiblePagesCount > pageIndex\r\n }\r\n return true\r\n },\r\n _setFocusedRowKeyByIndex: function(index) {\r\n var dataController = this.getController(\"data\");\r\n if (this._isValidFocusedRowIndex(index)) {\r\n var rowIndex = Math.min(index - dataController.getRowIndexOffset(), dataController.items().length - 1);\r\n var focusedRowKey = dataController.getKeyByRowIndex(rowIndex);\r\n if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) {\r\n this.option(\"focusedRowKey\", focusedRowKey)\r\n }\r\n }\r\n },\r\n _focusRowByKey: function(key) {\r\n if (!(0, _type.isDefined)(key)) {\r\n this._resetFocusedRow()\r\n } else {\r\n this._navigateToRow(key, true)\r\n }\r\n },\r\n _resetFocusedRow: function() {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var isFocusedRowKeyDefined = (0, _type.isDefined)(focusedRowKey);\r\n if (!isFocusedRowKeyDefined && this.option(\"focusedRowIndex\") < 0) {\r\n return\r\n }\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (isFocusedRowKeyDefined) {\r\n this.option(\"focusedRowKey\", void 0)\r\n }\r\n keyboardController.setFocusedRowIndex(-1);\r\n this.option(\"focusedRowIndex\", -1);\r\n this.getController(\"data\").updateItems({\r\n changeType: \"updateFocusedRow\",\r\n focusedRowKey: void 0\r\n });\r\n keyboardController._fireFocusedRowChanged(void 0, -1)\r\n },\r\n _isValidFocusedRowIndex: function(rowIndex) {\r\n var dataController = this.getController(\"data\");\r\n var row = dataController.getVisibleRows()[rowIndex];\r\n return !row || \"data\" === row.rowType || \"group\" === row.rowType\r\n },\r\n publicMethods: function() {\r\n return [\"navigateToRow\", \"isRowFocused\"]\r\n },\r\n navigateToRow: function(key) {\r\n if (!this.isAutoNavigateToFocusedRow()) {\r\n this.option(\"focusedRowIndex\", -1)\r\n }\r\n this._navigateToRow(key)\r\n },\r\n _navigateToRow: function(key, needFocusRow) {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var isAutoNavigate = that.isAutoNavigateToFocusedRow();\r\n var d = new _deferred.Deferred;\r\n if (void 0 === key || !dataController.dataSource()) {\r\n return d.reject().promise()\r\n }\r\n var rowIndexByKey = that.getFocusedRowIndexByKey(key);\r\n if (!isAutoNavigate && needFocusRow || rowIndexByKey >= 0) {\r\n that._navigateTo(key, d, needFocusRow)\r\n } else {\r\n dataController.getPageIndexByKey(key).done(function(pageIndex) {\r\n if (pageIndex < 0) {\r\n d.resolve(-1);\r\n return\r\n }\r\n if (pageIndex === dataController.pageIndex()) {\r\n dataController.reload().done(function() {\r\n if (that.isRowFocused(key)) {\r\n d.resolve(that.getFocusedRowIndexByKey(key))\r\n } else {\r\n that._navigateTo(key, d, needFocusRow)\r\n }\r\n }).fail(d.reject)\r\n } else {\r\n dataController.pageIndex(pageIndex).done(function() {\r\n that._navigateTo(key, d, needFocusRow)\r\n }).fail(d.reject)\r\n }\r\n }).fail(d.reject)\r\n }\r\n return d.promise()\r\n },\r\n _navigateTo: function(key, deferred, needFocusRow) {\r\n var visibleRowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n var isVirtualRowRenderingMode = \"virtual\" === this.option(\"scrolling.rowRenderingMode\");\r\n var isAutoNavigate = this.isAutoNavigateToFocusedRow();\r\n if (isAutoNavigate && isVirtualRowRenderingMode && visibleRowIndex < 0) {\r\n this._navigateToVirtualRow(key, deferred, needFocusRow)\r\n } else {\r\n this._navigateToVisibleRow(key, deferred, needFocusRow)\r\n }\r\n },\r\n _navigateToVisibleRow: function(key, deferred, needFocusRow) {\r\n if (needFocusRow) {\r\n this._triggerUpdateFocusedRow(key, deferred)\r\n } else {\r\n this.getView(\"rowsView\").scrollToRowElement(key)\r\n }\r\n },\r\n _navigateToVirtualRow: function(key, deferred, needFocusRow) {\r\n var that = this;\r\n var dataController = this.getController(\"data\");\r\n var rowsScrollController = dataController._rowsScrollController;\r\n var rowIndex = _uiGrid_core2.default.getIndexByKey(key, dataController.items(true));\r\n var scrollable = that.getView(\"rowsView\").getScrollable();\r\n if (rowsScrollController && scrollable && rowIndex >= 0) {\r\n var focusedRowIndex = rowIndex + dataController.getRowIndexOffset(true);\r\n var offset = rowsScrollController.getItemOffset(focusedRowIndex);\r\n if (needFocusRow) {\r\n var triggerUpdateFocusedRow = function triggerUpdateFocusedRow() {\r\n that.component.off(\"contentReady\", triggerUpdateFocusedRow);\r\n that._triggerUpdateFocusedRow(key, deferred)\r\n };\r\n that.component.on(\"contentReady\", triggerUpdateFocusedRow)\r\n }\r\n scrollable.scrollTo({\r\n y: offset\r\n })\r\n }\r\n },\r\n _triggerUpdateFocusedRow: function(key, deferred) {\r\n var dataController = this.getController(\"data\");\r\n var focusedRowIndex = this.getFocusedRowIndexByKey(key);\r\n if (this._isValidFocusedRowIndex(focusedRowIndex)) {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n dataController.updateItems({\r\n changeType: \"updateFocusedRow\",\r\n focusedRowKey: key\r\n })\r\n } else {\r\n this.getView(\"rowsView\").scrollToRowElement(key)\r\n }\r\n this.getController(\"keyboardNavigation\").setFocusedRowIndex(focusedRowIndex);\r\n deferred && deferred.resolve(focusedRowIndex)\r\n } else {\r\n deferred && deferred.resolve(-1)\r\n }\r\n },\r\n getFocusedRowIndexByKey: function(key) {\r\n var dataController = this.getController(\"data\");\r\n var loadedRowIndex = dataController.getRowIndexByKey(key, true);\r\n return loadedRowIndex >= 0 ? loadedRowIndex + dataController.getRowIndexOffset(true) : -1\r\n },\r\n _focusRowByKeyOrIndex: function() {\r\n var _this2 = this;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var currentFocusedRowIndex = this.option(\"focusedRowIndex\");\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var dataController = this.getController(\"data\");\r\n if ((0, _type.isDefined)(focusedRowKey)) {\r\n var visibleRowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n if (visibleRowIndex >= 0) {\r\n if (keyboardController._isVirtualScrolling()) {\r\n currentFocusedRowIndex = visibleRowIndex + dataController.getRowIndexOffset()\r\n }\r\n keyboardController.setFocusedRowIndex(currentFocusedRowIndex);\r\n this._triggerUpdateFocusedRow(focusedRowKey)\r\n } else {\r\n this._navigateToRow(focusedRowKey, true).done(function(focusedRowIndex) {\r\n if (currentFocusedRowIndex >= 0 && focusedRowIndex < 0) {\r\n _this2._focusRowByIndex()\r\n } else {\r\n if (currentFocusedRowIndex < 0 && focusedRowIndex >= 0) {\r\n keyboardController.setFocusedRowIndex(focusedRowIndex)\r\n }\r\n }\r\n })\r\n }\r\n } else {\r\n if (currentFocusedRowIndex >= 0) {\r\n this.getController(\"focus\")._focusRowByIndex(currentFocusedRowIndex)\r\n }\r\n }\r\n },\r\n isRowFocused: function(key) {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n if ((0, _type.isDefined)(focusedRowKey)) {\r\n return (0, _common.equalByValue)(key, this.option(\"focusedRowKey\"))\r\n }\r\n },\r\n updateFocusedRow: function(change) {\r\n var that = this;\r\n var focusedRowIndex = that._dataController.getRowIndexByKey(change.focusedRowKey);\r\n var rowsView = that.getView(\"rowsView\");\r\n var $tableElement;\r\n (0, _iterator.each)(rowsView.getTableElements(), function(index, element) {\r\n var _change$items;\r\n var isMainTable = 0 === index;\r\n $tableElement = (0, _renderer.default)(element);\r\n that._clearPreviousFocusedRow($tableElement, focusedRowIndex);\r\n that._prepareFocusedRow({\r\n changedItem: null === change || void 0 === change ? void 0 : null === (_change$items = change.items) || void 0 === _change$items ? void 0 : _change$items[focusedRowIndex],\r\n $tableElement: $tableElement,\r\n focusedRowIndex: focusedRowIndex,\r\n isMainTable: isMainTable\r\n })\r\n })\r\n },\r\n _clearPreviousFocusedRow: function($tableElement, focusedRowIndex) {\r\n var _this3 = this;\r\n var isNotMasterDetailFocusedRow = function(_, focusedRow) {\r\n var $focusedRowTable = (0, _renderer.default)(focusedRow).closest(\".\".concat(_this3.addWidgetPrefix(TABLE_POSTFIX_CLASS)));\r\n return $tableElement.is($focusedRowTable)\r\n };\r\n var $prevRowFocusedElement = $tableElement.find(FOCUSED_ROW_SELECTOR).filter(isNotMasterDetailFocusedRow);\r\n $prevRowFocusedElement.removeClass(ROW_FOCUSED_CLASS).removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabindex\");\r\n $prevRowFocusedElement.children(\"td\").removeAttr(\"tabindex\");\r\n if (0 !== focusedRowIndex) {\r\n var $firstRow = (0, _renderer.default)(this.getView(\"rowsView\").getRowElement(0));\r\n $firstRow.removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabIndex\")\r\n }\r\n },\r\n _prepareFocusedRow: function(options) {\r\n var $row;\r\n var changedItem = options.changedItem;\r\n if (changedItem && (\"data\" === changedItem.rowType || \"group\" === changedItem.rowType)) {\r\n var focusedRowIndex = options.focusedRowIndex;\r\n var $tableElement = options.$tableElement;\r\n var isMainTable = options.isMainTable;\r\n var tabIndex = this.option(\"tabindex\") || 0;\r\n var rowsView = this.getView(\"rowsView\");\r\n $row = (0, _renderer.default)(rowsView._getRowElements($tableElement).eq(focusedRowIndex));\r\n $row.addClass(ROW_FOCUSED_CLASS).attr(\"tabindex\", tabIndex);\r\n if (isMainTable) {\r\n rowsView.scrollToElementVertically($row)\r\n }\r\n }\r\n return $row\r\n }\r\n }\r\n}());\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n focusedRowEnabled: false,\r\n autoNavigateToFocusedRow: true,\r\n focusedRowKey: void 0,\r\n focusedRowIndex: -1,\r\n focusedColumnIndex: -1\r\n }\r\n },\r\n controllers: {\r\n focus: FocusController\r\n },\r\n extenders: {\r\n controllers: {\r\n keyboardNavigation: {\r\n init: function() {\r\n var rowIndex = this.option(\"focusedRowIndex\");\r\n var columnIndex = this.option(\"focusedColumnIndex\");\r\n this.createAction(\"onFocusedRowChanging\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onFocusedRowChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onFocusedCellChanging\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onFocusedCellChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.callBase();\r\n this.setRowFocusType();\r\n this._focusedCellPosition = {};\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n this._focusedCellPosition.rowIndex = this.option(\"focusedRowIndex\")\r\n }\r\n if ((0, _type.isDefined)(columnIndex)) {\r\n this._focusedCellPosition.columnIndex = this.option(\"focusedColumnIndex\")\r\n }\r\n },\r\n setFocusedRowIndex: function(rowIndex) {\r\n var dataController = this.getController(\"data\");\r\n this.callBase(rowIndex);\r\n var visibleRowIndex = rowIndex - dataController.getRowIndexOffset();\r\n var visibleRow = dataController.getVisibleRows()[visibleRowIndex];\r\n if (!visibleRow || !visibleRow.isNewRow) {\r\n this.option(\"focusedRowIndex\", rowIndex)\r\n }\r\n },\r\n setFocusedColumnIndex: function(columnIndex) {\r\n this.callBase(columnIndex);\r\n this.option(\"focusedColumnIndex\", columnIndex)\r\n },\r\n _escapeKeyHandler: function(eventArgs, isEditing) {\r\n if (isEditing || !this.option(\"focusedRowEnabled\")) {\r\n this.callBase(eventArgs, isEditing);\r\n return\r\n }\r\n if (this.isCellFocusType()) {\r\n this.setRowFocusType();\r\n this._focus(this._getCellElementFromTarget(eventArgs.originalEvent.target), true)\r\n }\r\n },\r\n _updateFocusedCellPosition: function($cell, direction) {\r\n var prevRowIndex = this.option(\"focusedRowIndex\");\r\n var prevColumnIndex = this.option(\"focusedColumnIndex\");\r\n var position = this.callBase($cell, direction);\r\n if (position && position.columnIndex >= 0) {\r\n this._fireFocusedCellChanged($cell, prevColumnIndex, prevRowIndex)\r\n }\r\n }\r\n },\r\n editorFactory: {\r\n renderFocusOverlay: function($element, hideBorder) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var focusedRowEnabled = this.option(\"focusedRowEnabled\");\r\n var editingController = this.getController(\"editing\");\r\n var isRowElement = \"row\" === keyboardController._getElementType($element);\r\n var $cell;\r\n if (!focusedRowEnabled || !keyboardController.isRowFocusType() || editingController.isEditing()) {\r\n this.callBase($element, hideBorder)\r\n } else {\r\n if (focusedRowEnabled) {\r\n if (isRowElement && !$element.hasClass(ROW_FOCUSED_CLASS)) {\r\n $cell = keyboardController.getFirstValidCellInRow($element);\r\n keyboardController.focus($cell)\r\n }\r\n }\r\n }\r\n }\r\n },\r\n columns: {\r\n getSortDataSourceParameters: function(_, sortByKey) {\r\n var _this4 = this;\r\n var result = this.callBase.apply(this, arguments);\r\n var dataController = this.getController(\"data\");\r\n var dataSource = dataController._dataSource;\r\n var store = dataController.store();\r\n var key = store && store.key();\r\n var remoteOperations = dataSource && dataSource.remoteOperations() || {};\r\n var isLocalOperations = Object.keys(remoteOperations).every(function(operationName) {\r\n return !remoteOperations[operationName]\r\n });\r\n if (key && (this.option(\"focusedRowEnabled\") && false !== this.getController(\"focus\").isAutoNavigateToFocusedRow() || sortByKey)) {\r\n key = Array.isArray(key) ? key : [key];\r\n var notSortedKeys = key.filter(function(key) {\r\n return !_this4.columnOption(key, \"sortOrder\")\r\n });\r\n if (notSortedKeys.length) {\r\n result = result || [];\r\n if (isLocalOperations) {\r\n result.push({\r\n selector: dataSource.getDataIndexGetter(),\r\n desc: false\r\n })\r\n } else {\r\n notSortedKeys.forEach(function(notSortedKey) {\r\n return result.push({\r\n selector: notSortedKey,\r\n desc: false\r\n })\r\n })\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n data: {\r\n _applyChange: function(change) {\r\n if (change && \"updateFocusedRow\" === change.changeType) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _fireChanged: function(e) {\r\n this.callBase(e);\r\n if (this.option(\"focusedRowEnabled\") && this._dataSource) {\r\n var isPartialUpdate = \"update\" === e.changeType && e.repaintChangesOnly;\r\n var isPartialUpdateWithDeleting = isPartialUpdate && e.changeTypes && e.changeTypes.indexOf(\"remove\") >= 0;\r\n if (\"refresh\" === e.changeType && e.items.length || isPartialUpdateWithDeleting) {\r\n this._updatePageIndexes();\r\n this.processUpdateFocusedRow(e)\r\n } else {\r\n if (\"append\" === e.changeType || \"prepend\" === e.changeType) {\r\n this._updatePageIndexes()\r\n }\r\n }\r\n }\r\n },\r\n _updatePageIndexes: function() {\r\n var prevRenderingPageIndex = this._lastRenderingPageIndex || 0;\r\n var renderingPageIndex = this._rowsScrollController ? this._rowsScrollController.pageIndex() : 0;\r\n this._lastRenderingPageIndex = renderingPageIndex;\r\n this._isPagingByRendering = renderingPageIndex !== prevRenderingPageIndex\r\n },\r\n isPagingByRendering: function() {\r\n return this._isPagingByRendering\r\n },\r\n processUpdateFocusedRow: function(e) {\r\n var operationTypes = e.operationTypes || {};\r\n var focusController = this.getController(\"focus\");\r\n var reload = operationTypes.reload,\r\n fullReload = operationTypes.fullReload;\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var isVirtualScrolling = keyboardController._isVirtualScrolling();\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var isAutoNavigate = focusController.isAutoNavigateToFocusedRow();\r\n if (reload && !fullReload && (0, _type.isDefined)(focusedRowKey)) {\r\n focusController._navigateToRow(focusedRowKey, true).done(function(focusedRowIndex) {\r\n if (focusedRowIndex < 0) {\r\n focusController._focusRowByIndex(void 0, operationTypes)\r\n }\r\n })\r\n } else {\r\n if (operationTypes.paging && !isVirtualScrolling) {\r\n if (isAutoNavigate) {\r\n var rowIndexByKey = this.getRowIndexByKey(focusedRowKey);\r\n var isValidRowIndexByKey = rowIndexByKey >= 0;\r\n var focusedRowIndex = this.option(\"focusedRowIndex\");\r\n var needFocusRowByIndex = focusedRowIndex >= 0 && (focusedRowIndex === rowIndexByKey || !isValidRowIndexByKey);\r\n if (needFocusRowByIndex) {\r\n focusController._focusRowByIndex(void 0, operationTypes)\r\n }\r\n } else {\r\n if (this.getRowIndexByKey(focusedRowKey) < 0) {\r\n this.option(\"focusedRowIndex\", -1)\r\n }\r\n }\r\n } else {\r\n if (operationTypes.fullReload) {\r\n focusController._focusRowByKeyOrIndex()\r\n }\r\n }\r\n }\r\n },\r\n getPageIndexByKey: function(key) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n that.getGlobalRowIndexByKey(key).done(function(globalIndex) {\r\n d.resolve(globalIndex >= 0 ? Math.floor(globalIndex / that.pageSize()) : -1)\r\n }).fail(d.reject);\r\n return d.promise()\r\n },\r\n getGlobalRowIndexByKey: function(key) {\r\n if (this._dataSource.group()) {\r\n return this._calculateGlobalRowIndexByGroupedData(key)\r\n }\r\n return this._calculateGlobalRowIndexByFlatData(key)\r\n },\r\n _calculateGlobalRowIndexByFlatData: function(key, groupFilter, useGroup) {\r\n var that = this;\r\n var deferred = new _deferred.Deferred;\r\n var dataSource = that._dataSource;\r\n if (Array.isArray(key)) {\r\n return deferred.resolve(-1).promise()\r\n }\r\n var filter = that._generateFilterByKey(key);\r\n dataSource.load({\r\n filter: that._concatWithCombinedFilter(filter),\r\n skip: 0,\r\n take: 1\r\n }).done(function(data) {\r\n if (data.length > 0) {\r\n filter = that._generateOperationFilterByKey(key, data[0], useGroup);\r\n dataSource.load({\r\n filter: that._concatWithCombinedFilter(filter, groupFilter),\r\n skip: 0,\r\n take: 1,\r\n requireTotalCount: true\r\n }).done(function(_, extra) {\r\n deferred.resolve(extra.totalCount)\r\n })\r\n } else {\r\n deferred.resolve(-1)\r\n }\r\n });\r\n return deferred.promise()\r\n },\r\n _concatWithCombinedFilter: function(filter, groupFilter) {\r\n var combinedFilter = this.getCombinedFilter();\r\n return _uiGrid_core2.default.combineFilters([filter, combinedFilter, groupFilter])\r\n },\r\n _generateBooleanFilter: function(selector, value, sortInfo) {\r\n var result;\r\n if (false === value) {\r\n result = [selector, \"=\", sortInfo.desc ? true : null]\r\n } else {\r\n if (true === value ? !sortInfo.desc : sortInfo.desc) {\r\n result = [selector, \"<>\", value]\r\n }\r\n }\r\n return result\r\n },\r\n _generateOperationFilterByKey: function(key, rowData, useGroup) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var filter = that._generateFilterByKey(key, \"<\");\r\n var sort = that._columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().filtering, true);\r\n if (useGroup) {\r\n var group = that._columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().filtering);\r\n if (group) {\r\n sort = sort ? group.concat(sort) : group\r\n }\r\n }\r\n if (sort) {\r\n sort.slice().reverse().forEach(function(sortInfo) {\r\n var selector = sortInfo.selector;\r\n var getter;\r\n if (\"function\" === typeof selector) {\r\n getter = selector\r\n } else {\r\n getter = that._columnsController.columnOption(selector, \"selector\")\r\n }\r\n var value = getter ? getter(rowData) : rowData[selector];\r\n filter = [\r\n [selector, \"=\", value], \"and\", filter\r\n ];\r\n if (null === value || (0, _type.isBoolean)(value)) {\r\n var booleanFilter = that._generateBooleanFilter(selector, value, sortInfo);\r\n if (booleanFilter) {\r\n filter = [booleanFilter, \"or\", filter]\r\n }\r\n } else {\r\n var filterOperation = sortInfo.desc ? \">\" : \"<\";\r\n var sortFilter = [selector, filterOperation, value];\r\n if (!sortInfo.desc) {\r\n sortFilter = [sortFilter, \"or\", [selector, \"=\", null]]\r\n }\r\n filter = [sortFilter, \"or\", filter]\r\n }\r\n })\r\n }\r\n return filter\r\n },\r\n _generateFilterByKey: function(key, operation) {\r\n var dataSourceKey = this._dataSource.key();\r\n var filter = [];\r\n if (!operation) {\r\n operation = \"=\"\r\n }\r\n if (Array.isArray(dataSourceKey)) {\r\n for (var i = 0; i < dataSourceKey.length; ++i) {\r\n var keyPart = key[dataSourceKey[i]];\r\n if (keyPart) {\r\n if (filter.length > 0) {\r\n filter.push(\"and\")\r\n }\r\n filter.push([dataSourceKey[i], operation, keyPart])\r\n }\r\n }\r\n } else {\r\n filter = [dataSourceKey, operation, key]\r\n }\r\n return filter\r\n },\r\n _getLastItemIndex: function() {\r\n return this.items(true).length - 1\r\n }\r\n },\r\n editing: {\r\n _deleteRowCore: function(rowIndex) {\r\n var _this5 = this;\r\n var deferred = this.callBase.apply(this, arguments);\r\n var dataController = this.getController(\"data\");\r\n var rowKey = dataController.getKeyByRowIndex(rowIndex);\r\n deferred.done(function() {\r\n var rowIndex = dataController.getRowIndexByKey(rowKey);\r\n var visibleRows = dataController.getVisibleRows();\r\n if (rowIndex === -1 && !visibleRows.length) {\r\n _this5.getController(\"focus\")._resetFocusedRow()\r\n }\r\n })\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: {\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (this.option(\"focusedRowEnabled\") && row) {\r\n if (this.getController(\"focus\").isRowFocused(row.key)) {\r\n $row.addClass(ROW_FOCUSED_CLASS)\r\n }\r\n }\r\n return $row\r\n },\r\n _checkRowKeys: function(options) {\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"focusedRowEnabled\") && this.option(\"dataSource\")) {\r\n var store = this._dataController.store();\r\n if (store && !store.key()) {\r\n this._dataController.fireError(\"E1042\", \"Row focusing\")\r\n }\r\n }\r\n },\r\n _update: function(change) {\r\n if (\"updateFocusedRow\" === change.changeType) {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this.getController(\"focus\").updateFocusedRow(change)\r\n }\r\n } else {\r\n this.callBase(change)\r\n }\r\n },\r\n updateFocusElementTabIndex: function($cellElements, preventScroll) {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this._setFocusedRowElementTabIndex(preventScroll)\r\n } else {\r\n this.callBase($cellElements)\r\n }\r\n },\r\n _setFocusedRowElementTabIndex: function(preventScroll) {\r\n var _this6 = this;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var tabIndex = this.option(\"tabIndex\") || 0;\r\n var dataController = this._dataController;\r\n var columnsController = this._columnsController;\r\n var rowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n var columnIndex = this.option(\"focusedColumnIndex\");\r\n var $row = this._findRowElementForTabIndex();\r\n if (!(0, _type.isDefined)(this._scrollToFocusOnResize)) {\r\n this._scrollToFocusOnResize = function() {\r\n _this6.scrollToElementVertically(_this6._findRowElementForTabIndex());\r\n _this6.resizeCompleted.remove(_this6._scrollToFocusOnResize)\r\n }\r\n }\r\n $row.attr(\"tabIndex\", tabIndex);\r\n if (rowIndex >= 0 && !preventScroll) {\r\n if (columnIndex < 0) {\r\n columnIndex = 0\r\n }\r\n rowIndex += dataController.getRowIndexOffset();\r\n columnIndex += columnsController.getColumnIndexOffset();\r\n this.getController(\"keyboardNavigation\").setFocusedCellPosition(rowIndex, columnIndex);\r\n if (this.getController(\"focus\").isAutoNavigateToFocusedRow()) {\r\n var dataSource = dataController.dataSource();\r\n var operationTypes = dataSource && dataSource.operationTypes();\r\n if (operationTypes && !operationTypes.paging && !dataController.isPagingByRendering()) {\r\n this.resizeCompleted.remove(this._scrollToFocusOnResize);\r\n this.resizeCompleted.add(this._scrollToFocusOnResize)\r\n }\r\n }\r\n }\r\n },\r\n _findRowElementForTabIndex: function() {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);\r\n return (0, _renderer.default)(this.getRowElement(rowIndex >= 0 ? rowIndex : 0))\r\n },\r\n scrollToRowElement: function(key) {\r\n var rowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n var $row = (0, _renderer.default)(this.getRow(rowIndex));\r\n this.scrollToElementVertically($row)\r\n },\r\n scrollToElementVertically: function($row) {\r\n var scrollable = this.getScrollable();\r\n if (scrollable) {\r\n var position = scrollable.getScrollElementPosition($row, \"vertical\");\r\n scrollable.scrollTo({\r\n top: position\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.modules.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 _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _window = require(\"../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar WIDGET_WITH_LEGACY_CONTAINER_NAME = \"dxDataGrid\";\r\nvar ModuleItem = _class.default.inherit({\r\n _endUpdateCore: function() {},\r\n ctor: function(component) {\r\n var that = this;\r\n that._updateLockCount = 0;\r\n that.component = component;\r\n that._actions = {};\r\n that._actionConfigs = {};\r\n (0, _iterator.each)(this.callbackNames() || [], function(index, name) {\r\n var flags = that.callbackFlags(name) || {};\r\n flags.unique = true, flags.syncStrategy = true;\r\n that[this] = (0, _callbacks.default)(flags)\r\n })\r\n },\r\n init: function() {},\r\n callbackNames: function() {},\r\n callbackFlags: function() {},\r\n publicMethods: function() {},\r\n beginUpdate: function() {\r\n this._updateLockCount++\r\n },\r\n endUpdate: function() {\r\n if (this._updateLockCount > 0) {\r\n this._updateLockCount--;\r\n if (!this._updateLockCount) {\r\n this._endUpdateCore()\r\n }\r\n }\r\n },\r\n option: function(name) {\r\n var component = this.component;\r\n var optionCache = component._optionCache;\r\n if (1 === arguments.length && optionCache) {\r\n if (!(name in optionCache)) {\r\n optionCache[name] = component.option(name)\r\n }\r\n return optionCache[name]\r\n }\r\n return component.option.apply(component, arguments)\r\n },\r\n _silentOption: function(name, value) {\r\n var component = this.component;\r\n var optionCache = component._optionCache;\r\n if (optionCache) {\r\n optionCache[name] = value\r\n }\r\n return component._setOptionWithoutOptionChange(name, value)\r\n },\r\n localize: function(name) {\r\n var optionCache = this.component._optionCache;\r\n if (optionCache) {\r\n if (!(name in optionCache)) {\r\n optionCache[name] = _message.default.format(name)\r\n }\r\n return optionCache[name]\r\n }\r\n return _message.default.format(name)\r\n },\r\n on: function() {\r\n return this.component.on.apply(this.component, arguments)\r\n },\r\n off: function() {\r\n return this.component.off.apply(this.component, arguments)\r\n },\r\n optionChanged: function(args) {\r\n if (args.name in this._actions) {\r\n this.createAction(args.name, this._actionConfigs[args.name]);\r\n args.handled = true\r\n }\r\n },\r\n getAction: function(actionName) {\r\n return this._actions[actionName]\r\n },\r\n setAria: function(name, value, $target) {\r\n var target = $target.get(0);\r\n var prefix = \"role\" !== name && \"id\" !== name ? \"aria-\" : \"\";\r\n if (target.setAttribute) {\r\n target.setAttribute(prefix + name, value)\r\n } else {\r\n $target.attr(prefix + name, value)\r\n }\r\n },\r\n _createComponent: function() {\r\n return this.component._createComponent.apply(this.component, arguments)\r\n },\r\n getController: function(name) {\r\n return this.component._controllers[name]\r\n },\r\n createAction: function(actionName, config) {\r\n if ((0, _type.isFunction)(actionName)) {\r\n var action = this.component._createAction(actionName.bind(this), config);\r\n return function(e) {\r\n action({\r\n event: e\r\n })\r\n }\r\n } else {\r\n this._actions[actionName] = this.component._createActionByOption(actionName, config);\r\n this._actionConfigs[actionName] = config\r\n }\r\n },\r\n executeAction: function(actionName, options) {\r\n var action = this._actions[actionName];\r\n return action && action(options)\r\n },\r\n dispose: function() {\r\n var that = this;\r\n (0, _iterator.each)(that.callbackNames() || [], function() {\r\n that[this].empty()\r\n })\r\n },\r\n addWidgetPrefix: function(className) {\r\n var componentName = this.component.NAME;\r\n return \"dx-\" + componentName.slice(2).toLowerCase() + (className ? \"-\" + className : \"\")\r\n },\r\n getWidgetContainerClass: function() {\r\n var containerName = this.component.NAME === WIDGET_WITH_LEGACY_CONTAINER_NAME ? null : \"container\";\r\n return this.addWidgetPrefix(containerName)\r\n }\r\n});\r\nvar Controller = ModuleItem;\r\nvar ViewController = Controller.inherit({\r\n getView: function(name) {\r\n return this.component._views[name]\r\n },\r\n getViews: function() {\r\n return this.component._views\r\n }\r\n});\r\nvar View = ModuleItem.inherit({\r\n _isReady: function() {\r\n return this.component.isReady()\r\n },\r\n _endUpdateCore: function() {\r\n this.callBase();\r\n if (!this._isReady() && this._requireReady) {\r\n this._requireRender = false;\r\n this.component._requireResize = false\r\n }\r\n if (this._requireRender) {\r\n this._requireRender = false;\r\n this.render(this._$parent)\r\n }\r\n },\r\n _invalidate: function(requireResize, requireReady) {\r\n this._requireRender = true;\r\n this.component._requireResize = (0, _window.hasWindow)() && (this.component._requireResize || requireResize);\r\n this._requireReady = this._requireReady || requireReady\r\n },\r\n _renderCore: function() {},\r\n _resizeCore: function() {},\r\n _afterRender: function() {},\r\n _parentElement: function() {\r\n return this._$parent\r\n },\r\n ctor: function(component) {\r\n this.callBase(component);\r\n this.renderCompleted = (0, _callbacks.default)();\r\n this.resizeCompleted = (0, _callbacks.default)()\r\n },\r\n element: function() {\r\n return this._$element\r\n },\r\n getElementHeight: function() {\r\n var $element = this.element();\r\n if (!$element) {\r\n return 0\r\n }\r\n var marginTop = parseFloat($element.css(\"marginTop\")) || 0;\r\n var marginBottom = parseFloat($element.css(\"marginBottom\")) || 0;\r\n var offsetHeight = $element.get(0).offsetHeight;\r\n return offsetHeight + marginTop + marginBottom\r\n },\r\n isVisible: function() {\r\n return true\r\n },\r\n getTemplate: function(name) {\r\n return this.component._getTemplate(name)\r\n },\r\n render: function($parent, options) {\r\n var $element = this._$element;\r\n var isVisible = this.isVisible();\r\n if (!$element && !$parent) {\r\n return\r\n }\r\n this._requireReady = false;\r\n if (!$element) {\r\n $element = this._$element = (0, _renderer.default)(\"
\").appendTo($parent);\r\n this._$parent = $parent\r\n }\r\n $element.toggleClass(\"dx-hidden\", !isVisible);\r\n if (isVisible) {\r\n this.component._optionCache = {};\r\n this._renderCore(options);\r\n this.component._optionCache = void 0;\r\n this._afterRender($parent);\r\n this.renderCompleted.fire(options)\r\n }\r\n },\r\n resize: function() {\r\n this.isResizing = true;\r\n this._resizeCore();\r\n this.resizeCompleted.fire();\r\n this.isResizing = false\r\n },\r\n focus: function() {\r\n _events_engine.default.trigger(this.element(), \"focus\")\r\n }\r\n});\r\nvar MODULES_ORDER_MAX_INDEX = 1e6;\r\nvar processModules = function(that, componentClass) {\r\n var modules = componentClass.modules;\r\n var modulesOrder = componentClass.modulesOrder;\r\n var controllerTypes = componentClass.controllerTypes || {};\r\n var viewTypes = componentClass.viewTypes || {};\r\n if (!componentClass.controllerTypes) {\r\n if (modulesOrder) {\r\n modules.sort(function(module1, module2) {\r\n var orderIndex1 = (0, _array.inArray)(module1.name, modulesOrder);\r\n var orderIndex2 = (0, _array.inArray)(module2.name, modulesOrder);\r\n if (orderIndex1 < 0) {\r\n orderIndex1 = MODULES_ORDER_MAX_INDEX\r\n }\r\n if (orderIndex2 < 0) {\r\n orderIndex2 = MODULES_ORDER_MAX_INDEX\r\n }\r\n return orderIndex1 - orderIndex2\r\n })\r\n }(0, _iterator.each)(modules, function() {\r\n var controllers = this.controllers;\r\n var moduleName = this.name;\r\n var views = this.views;\r\n controllers && (0, _iterator.each)(controllers, function(name, type) {\r\n if (controllerTypes[name]) {\r\n throw _ui.default.Error(\"E1001\", moduleName, name)\r\n } else {\r\n if (!(type && type.subclassOf && type.subclassOf(Controller))) {\r\n type.subclassOf(Controller);\r\n throw _ui.default.Error(\"E1002\", moduleName, name)\r\n }\r\n }\r\n controllerTypes[name] = type\r\n });\r\n views && (0, _iterator.each)(views, function(name, type) {\r\n if (viewTypes[name]) {\r\n throw _ui.default.Error(\"E1003\", moduleName, name)\r\n } else {\r\n if (!(type && type.subclassOf && type.subclassOf(View))) {\r\n throw _ui.default.Error(\"E1004\", moduleName, name)\r\n }\r\n }\r\n viewTypes[name] = type\r\n })\r\n });\r\n (0, _iterator.each)(modules, function() {\r\n var extenders = this.extenders;\r\n if (extenders) {\r\n extenders.controllers && (0, _iterator.each)(extenders.controllers, function(name, extender) {\r\n if (controllerTypes[name]) {\r\n controllerTypes[name] = controllerTypes[name].inherit(extender)\r\n }\r\n });\r\n extenders.views && (0, _iterator.each)(extenders.views, function(name, extender) {\r\n if (viewTypes[name]) {\r\n viewTypes[name] = viewTypes[name].inherit(extender)\r\n }\r\n })\r\n }\r\n });\r\n componentClass.controllerTypes = controllerTypes;\r\n componentClass.viewTypes = viewTypes\r\n }\r\n var registerPublicMethods = function(that, name, moduleItem) {\r\n var publicMethods = moduleItem.publicMethods();\r\n if (publicMethods) {\r\n (0, _iterator.each)(publicMethods, function(index, methodName) {\r\n if (moduleItem[methodName]) {\r\n if (!that[methodName]) {\r\n that[methodName] = function() {\r\n return moduleItem[methodName].apply(moduleItem, arguments)\r\n }\r\n } else {\r\n throw _ui.default.Error(\"E1005\", methodName)\r\n }\r\n } else {\r\n throw _ui.default.Error(\"E1006\", name, methodName)\r\n }\r\n })\r\n }\r\n };\r\n var createModuleItems = function(moduleTypes) {\r\n var moduleItems = {};\r\n (0, _iterator.each)(moduleTypes, function(name, moduleType) {\r\n var moduleItem = new moduleType(that);\r\n moduleItem.name = name;\r\n registerPublicMethods(that, name, moduleItem);\r\n moduleItems[name] = moduleItem\r\n });\r\n return moduleItems\r\n };\r\n that._controllers = createModuleItems(controllerTypes);\r\n that._views = createModuleItems(viewTypes)\r\n};\r\nvar callModuleItemsMethod = function(that, methodName, args) {\r\n args = args || [];\r\n if (that._controllers) {\r\n (0, _iterator.each)(that._controllers, function() {\r\n this[methodName] && this[methodName].apply(this, args)\r\n })\r\n }\r\n if (that._views) {\r\n (0, _iterator.each)(that._views, function() {\r\n this[methodName] && this[methodName].apply(this, args)\r\n })\r\n }\r\n};\r\nvar _default = {\r\n modules: [],\r\n View: View,\r\n ViewController: ViewController,\r\n Controller: Controller,\r\n registerModule: function(name, module) {\r\n var modules = this.modules;\r\n for (var i = 0; i < modules.length; i++) {\r\n if (modules[i].name === name) {\r\n return\r\n }\r\n }\r\n module.name = name;\r\n modules.push(module);\r\n delete this.controllerTypes;\r\n delete this.viewTypes\r\n },\r\n registerModulesOrder: function(moduleNames) {\r\n this.modulesOrder = moduleNames\r\n },\r\n unregisterModule: function(name) {\r\n this.modules = (0, _common.grep)(this.modules, function(module) {\r\n return module.name !== name\r\n });\r\n delete this.controllerTypes;\r\n delete this.viewTypes\r\n },\r\n processModules: processModules,\r\n callModuleItemsMethod: callModuleItemsMethod\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_custom_operations.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.anyOf = anyOf;\r\nexports.noneOf = noneOf;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = require(\"../filter_builder/utils\");\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 baseOperation(grid) {\r\n var calculateFilterExpression = function(filterValue, field, fields) {\r\n var result = [];\r\n var lastIndex = filterValue.length - 1;\r\n filterValue && filterValue.forEach(function(value, index) {\r\n if ((0, _utils.isCondition)(value) || (0, _utils.isGroup)(value)) {\r\n var filterExpression = (0, _utils.getFilterExpression)(value, fields, [], \"headerFilter\");\r\n result.push(filterExpression)\r\n } else {\r\n result.push((0, _utils.getFilterExpression)([field.dataField, \"=\", value], fields, [], \"headerFilter\"))\r\n }\r\n index !== lastIndex && result.push(\"or\")\r\n });\r\n if (1 === result.length) {\r\n result = result[0]\r\n }\r\n return result\r\n };\r\n var getFullText = function(itemText, parentText) {\r\n return parentText ? parentText + \"/\" + itemText : itemText\r\n };\r\n var getSelectedItemsTexts = function getSelectedItemsTexts(items, parentText) {\r\n var result = [];\r\n items.forEach(function(item) {\r\n if (item.items) {\r\n var selectedItemsTexts = getSelectedItemsTexts(item.items, getFullText(item.text, parentText));\r\n result = result.concat(selectedItemsTexts)\r\n }\r\n item.selected && result.push(getFullText(item.text, parentText))\r\n });\r\n return result\r\n };\r\n var headerFilterController = grid && grid.getController(\"headerFilter\");\r\n var customizeText = function(fieldInfo, options) {\r\n options = options || {};\r\n var value = fieldInfo.value;\r\n var column = grid.columnOption(fieldInfo.field.dataField);\r\n var headerFilter = column && column.headerFilter;\r\n var lookup = column && column.lookup;\r\n var values = options.values || [value];\r\n if (headerFilter && headerFilter.dataSource || lookup && lookup.dataSource) {\r\n var result = new _deferred.Deferred;\r\n var itemsDeferred = options.items || new _deferred.Deferred;\r\n if (!options.items) {\r\n column = (0, _extend.extend)({}, column, {\r\n filterType: \"include\",\r\n filterValues: values\r\n });\r\n var dataSourceOptions = headerFilterController.getDataSource(column);\r\n dataSourceOptions.paginate = false;\r\n var dataSource = new _data_source.DataSource(dataSourceOptions);\r\n var key = dataSource.store().key();\r\n if (key) {\r\n var _options = options,\r\n _values = _options.values;\r\n if (_values && _values.length > 1) {\r\n var filter = _values.reduce(function(result, value) {\r\n if (result.length) {\r\n result.push(\"or\")\r\n }\r\n result.push([key, \"=\", value]);\r\n return result\r\n }, []);\r\n dataSource.filter(filter)\r\n } else {\r\n dataSource.filter([key, \"=\", fieldInfo.value])\r\n }\r\n }\r\n options.items = itemsDeferred;\r\n dataSource.load().done(itemsDeferred.resolve)\r\n }\r\n itemsDeferred.done(function(items) {\r\n var index = values.indexOf(fieldInfo.value);\r\n result.resolve(getSelectedItemsTexts(items)[index])\r\n });\r\n return result\r\n } else {\r\n var text = headerFilterController.getHeaderItemText(value, column, 0, grid.option(\"headerFilter\"));\r\n return text\r\n }\r\n };\r\n return {\r\n dataTypes: [\"string\", \"date\", \"datetime\", \"number\", \"boolean\", \"object\"],\r\n calculateFilterExpression: calculateFilterExpression,\r\n editorTemplate: function(conditionInfo, container) {\r\n var div = (0, _renderer.default)(\"
\").addClass(\"dx-filterbuilder-item-value-text\").appendTo(container);\r\n var column = (0, _extend.extend)(true, {}, grid.columnOption(conditionInfo.field.dataField));\r\n (0, _utils.renderValueText)(div, conditionInfo.text && conditionInfo.text.split(\"|\"));\r\n var setValue = function(value) {\r\n conditionInfo.setValue(value)\r\n };\r\n column.filterType = \"include\";\r\n column.filterValues = conditionInfo.value ? conditionInfo.value.slice() : [];\r\n headerFilterController.showHeaderFilterMenuBase({\r\n columnElement: div,\r\n column: column,\r\n apply: function() {\r\n setValue(this.filterValues);\r\n headerFilterController.hideHeaderFilterMenu();\r\n conditionInfo.closeEditor()\r\n },\r\n onHidden: function() {\r\n conditionInfo.closeEditor()\r\n },\r\n isFilterBuilder: true\r\n });\r\n return container\r\n },\r\n customizeText: customizeText\r\n }\r\n}\r\n\r\nfunction anyOf(grid) {\r\n return (0, _extend.extend)(baseOperation(grid), {\r\n name: \"anyof\",\r\n icon: \"selectall\",\r\n caption: _message.default.format(\"dxFilterBuilder-filterOperationAnyOf\")\r\n })\r\n}\r\n\r\nfunction noneOf(grid) {\r\n var baseOp = baseOperation(grid);\r\n return (0, _extend.extend)({}, baseOp, {\r\n calculateFilterExpression: function(filterValue, field, fields) {\r\n var baseFilter = baseOp.calculateFilterExpression(filterValue, field, fields);\r\n if (!baseFilter || 0 === baseFilter.length) {\r\n return null\r\n }\r\n return \"!\" === baseFilter[0] ? baseFilter : [\"!\", baseFilter]\r\n },\r\n name: \"noneof\",\r\n icon: \"unselectall\",\r\n caption: _message.default.format(\"dxFilterBuilder-filterOperationNoneOf\")\r\n })\r\n}\r\n"],"sourceRoot":""}